{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/oJT97W8mIJvVr5VHaLKP/u8OZIAXdWUgcPXRJFIlc/Px5dOvWXF-4.js"],
  "sourcesContent": ["import{jsx as e,jsxs as t}from\"react/jsx-runtime\";import{ComponentPresetsConsumer as n,Link as o}from\"framer\";import{motion as i}from\"framer-motion\";import*as r from\"react\";import{Youtube as a}from\"https://framerusercontent.com/modules/NEd4VmDdsxM3StIUbddO/DDzyuYPF56TuI0bfUu2z/YouTube.js\";import l from\"https://framerusercontent.com/modules/pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js\";export const richText=/*#__PURE__*/t(r.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Today we are introducing \",/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/releases/tag/v0.13.0\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"version 0.13 of the Dagger Engine\"})}),\". In this release we focused on three very common user requests: better support for monorepos; support for modules hosted on private Git servers; and calling the core API from the command-line.\"]}),/*#__PURE__*/e(\"p\",{children:\"We\u2019re continuing to improve performance and usability - adding TypeScript SDK optimization and a backward compatibility checker, bringing significant performance boosts to those using TypeScript and reducing the time and risk for both module developers and module users when upgrading their Dagger Engines.\\xa0\"}),/*#__PURE__*/e(\"h3\",{children:\"First-class monorepo support\"}),/*#__PURE__*/e(\"p\",{children:\"Using Dagger in a monorepo is now faster and more convenient, thanks to two improvements: context directory access, and pre-call filtering.\"}),/*#__PURE__*/e(\"h4\",{children:\"Context directory access\"}),/*#__PURE__*/e(\"p\",{children:\"Dagger Functions can now access any files in the directory or Git repository their module is loaded from (also known as their \u201Ccontext\u201D).\"}),/*#__PURE__*/e(\"p\",{children:\"This makes the experience of calling a Dagger Function nicer for end users, because they don\u2019t have to explicitly pass every input directory as an argument. It also makes modules more self-contained, and easier to split up.\"}),/*#__PURE__*/e(\"p\",{children:\"For example instead of this:\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"dagger call build \u2013frontend=./frontend \u2013backend=./src/app/backend \u2013build-config=./tools/build/config/latest\",language:\"Shell\"})})}),/*#__PURE__*/e(\"p\",{children:\"User might instead call this:\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"dagger call build\",language:\"Shell\"})})}),/*#__PURE__*/e(\"p\",{children:\"This allows for a powerful new pattern: each logical component in your monorepo can get its own Dagger module, which cleanly encapsulates both the data and pipeline logic necessary to build, test and deploy it. Now each component can share its capabilities with other components in a standard way, regardless of the underlying stack. You can even use dependencies between Dagger modules to model the dependencies between your components.\"}),/*#__PURE__*/e(\"p\",{children:\"This is a powerful pattern which opens many possibilities. For example, Dagger can now be used as a general-purpose packaging and distribution system:\"}),/*#__PURE__*/e(\"p\",{children:\"Want to run a dev environment with the Dagger Engine built from source, ready to use? Try this command:\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"dagger call -m github.com/dagger/dagger dev terminal\",language:\"Shell\"})})}),/*#__PURE__*/e(\"p\",{children:\"Want to run a local instance of the Dagger documentation for a given pull request? Try this:\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"dagger call -m github.com/dagger/dagger@pull/8087/head docs server as-service up\",language:\"Shell\"})})}),/*#__PURE__*/t(\"p\",{children:[\"To learn more, see the \",/*#__PURE__*/e(o,{href:\"https://docs.dagger.io/manuals/developer/functions#directories-and-files\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"documentation\"})}),\". \"]}),/*#__PURE__*/e(\"h4\",{children:\"Pre-call filtering\"}),/*#__PURE__*/e(\"p\",{children:\"Dagger Functions filter the contents of directories they receive as arguments. Crucially, these filters are applied before the function is called. This leads to massive performance gains in monorepos, for two reasons:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Optimized uploads. Uploading local files into the Dagger Engine is a common performance bottleneck. Pre-call filtering allows the engine to only upload the files your function needs. The more files in your repository, the more drastic the speedup.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Better caching. Pre-call filtering means pre-cache filtering: local files that are not needed by your function, will not invalidate its cache if they change.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"Thanks to context directory access and pre-call filtering, it is now realistic to use Dagger even in very large monorepos. If you want to see how we at Dagger are adopting these features in our own monorepo, you can follow our progress here: \",/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/8284\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"https://github.com/dagger/dagger/pull/8284\"})})]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{\"--aspect-ratio\":\"560 / 315\",aspectRatio:\"560 / 315\",height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:NEd4VmDdsxM3StIUbddO/DDzyuYPF56TuI0bfUu2z/YouTube.js:Youtube\",children:t=>/*#__PURE__*/e(a,{...t,play:\"Off\",shouldMute:!0,thumbnail:\"Medium Quality\",url:\"https://youtu.be/3HilSxTlCIs\"})})}),/*#__PURE__*/e(\"h4\",{children:\"Examples\"}),/*#__PURE__*/e(\"p\",{children:\"Both features - context directory and pre-call filtering - are used by annotating arguments to your function. Here is an example:\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Golang\"})}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:'func (m *Example) Example(\\n  // +defaultPath=\"/\"\\n  // +ignore=[\u201C.git\u201D, \u201C*.env\u201D, \u201C.github\u201D]\\n  repo *dagger.Directory,\\n\\n  // +defaultPath=\".\"\\n  moduleDir *dagger.Directory,\\n\\n  // +defaultPath=\u201D/README.md\u201D\\n  readme *dagger.File\\n) (...) {...}',language:\"TypeScript\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Typescript\"})}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:' @func()\\n async example(\\n   @argument({ defaultPath: \"/\", ignore: [\u201C.git\u201D, \u201C*.env\u201D, \u201C.github\u201D] }) repo: Directory,\\n   @argument({ defaultPath: \".\" }) moduleDir: Directory,\\n   @argument({ defaultPath: \u201C/README.md\u201D}) readme: File,\\n ): any {...}',language:\"TypeScript\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Python \"})}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:'   @function\\n   async def example(\\n       self,\\n       repo: Annotated[dagger.Directory, DefaultPath(\"/\"), Ignore([\u201C.git\u201D, \u201C*.env\u201D, \u201C.github\u201D])],\\n       moduleDir: Annotated[dagger.Directory, DefaultPath(\".\")],\\n       readmeFile: Annotated[dagger.File, DefaultPath(\"/README.md\")]\\n   ) :',language:\"Python\"})})}),/*#__PURE__*/t(\"p\",{children:[\"To learn more, see the \",/*#__PURE__*/e(o,{href:\" https://docs.dagger.io/api/arguments/#directories-and-files\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"documentation\"})}),\". \"]}),/*#__PURE__*/e(\"h3\",{children:\"Private modules\"}),/*#__PURE__*/e(\"p\",{children:\"Dagger can now load modules from private Git servers. This makes it easier for engineering teams to embrace Dagger for cross-team collaboration in proprietary or sensitive codebases.\"}),/*#__PURE__*/e(\"p\",{children:\"Key benefits:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Access to private modules: Developers can now reference and use modules stored in private repositories\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Enhanced security: Leverages SSH's robust authentication mechanism\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Flexibility: Compatible with major Git hosting platforms like GitHub, GitLab, and BitBucket\"})})]}),/*#__PURE__*/e(\"p\",{children:\"Dagger modules can now be referenced using two new URL styles:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"SCP-like syntax: \",/*#__PURE__*/e(\"code\",{children:\"git@gitserver:username/repo.git[/subdir][@version]\"})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Explicit SSH: \",/*#__PURE__*/e(\"code\",{children:\"ssh://git@gitserver/username/repo.git[/subdir][@version]\"})]})})]}),/*#__PURE__*/e(\"p\",{children:\"This implementation uses your system's SSH agent, mounting the socket specified by the SSH_AUTH_SOCK environment variable to the Dagger engine. This approach ensures that your existing SSH keys and configurations are respected, maintaining a secure and familiar workflow.\"}),/*#__PURE__*/e(\"p\",{children:\"For developers and teams:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Simplifies integration of private, custom modules into Dagger pipelines\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Enables modular and reusable code patterns across private repositories\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Facilitates collaboration on proprietary tools and workflows\"})})]}),/*#__PURE__*/e(\"p\",{children:\"To get started, ensure your SSH keys are properly set up and added to your SSH agent. Then, simply use the SSH ref scheme when referencing your modules in Dagger:\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"dagger call -m ssh://git@gitserver/your-org/private-module.git@version\",language:\"Shell\"})})}),/*#__PURE__*/t(\"p\",{children:[\"To learn more, see the \",/*#__PURE__*/e(o,{href:\"https://docs.dagger.io/manuals/user/remote-repositories\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"documentation\"})}),\". \"]}),/*#__PURE__*/e(\"h3\",{children:\"New CLI command: dagger core\"}),/*#__PURE__*/t(\"p\",{children:[\"The Dagger CLI has a new command: \",/*#__PURE__*/e(\"code\",{children:\"dagger core\"}),\". It lets you call the Dagger Core API directly from the CLI.\"]}),/*#__PURE__*/t(\"p\",{children:[\"Dagger\u2019s core types (Container, Directory, File, etc) are very powerful, but couldn\u2019t be called directly from the CLI\u2026 until now! Using \",/*#__PURE__*/e(\"code\",{children:\"dagger core\"}),\", you can now call the core API directly without having to write any code. This is great for experimentation, prototyping and debugging.\"]}),/*#__PURE__*/e(\"p\",{children:\"It works the same as dagger call, the only difference is there\u2019s no flag to load a module:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"code\",{children:\"dagger call -m <module> <function>\"}),\": Execute a function from a Module\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"code\",{children:\"dagger core <function>\"}),\": Execute a function from the core API\"]})})]}),/*#__PURE__*/e(\"p\",{children:\"To see which functions are available, run the following:\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"dagger core --help\",language:\"Shell\"})})}),/*#__PURE__*/e(\"p\",{children:\"The list of available Functions shown, correspond to what you\u2019d use in code with dag. For example these are the same:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Go: \",/*#__PURE__*/e(\"code\",{children:\"dag.Container()\"})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Python: \",/*#__PURE__*/e(\"code\",{children:\"dag.container()\"})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"TypeScript: \",/*#__PURE__*/e(\"code\",{children:\"dag.container()\"})]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"CLI: \",/*#__PURE__*/e(\"code\",{children:\"dagger core container\"})]})})]}),/*#__PURE__*/e(\"p\",{children:\"Let\u2019s see a few usage examples.\"}),/*#__PURE__*/e(\"p\",{children:\"Pull a container image and inspect its contents:\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:'dagger core container from --address=alpine file --path=/etc/os-release contents\\nNAME=\"Alpine Linux\"\\nID=alpine\\nVERSION_ID=3.20.2\\nPRETTY_NAME=\"Alpine Linux v3.20\"\\nHOME_URL=\"https://alpinelinux.org/\"\\nBUG_REPORT_URL=\"https://gitlab.alpinelinux.org/alpine/aports/-/issues\"',language:\"Shell\"})})}),/*#__PURE__*/e(\"p\",{children:\"Run an ephemeral container with an interactive terminal:\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"dagger core container from --address=alpine terminal\\ndagger / $\",language:\"Shell\"})})}),/*#__PURE__*/e(\"p\",{children:\"Pull a Git repository and list all its contents:\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"dagger core git --url https://github.com/dagger/dagger branch --name=main tree glob --pattern='**'\",language:\"Shell\"})})}),/*#__PURE__*/e(\"p\",{children:\"Try it out and let us know what you think.\"}),/*#__PURE__*/e(\"p\",{children:\"Keep in mind:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"dagger core commands can run anywhere in the host because it doesn\u2019t load any module\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Not all core Functions are available because they may have a complex Function argument that is not supported by the CLI yet\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Some core Functions can be useful only in debugging scenarios\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Dagger functions are used for listing Functions in user modules (using the -m flag), so it doesn\u2019t list core API Functions\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"For more details, take a look at the PR: \",/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/issues/6947\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"6947\"})})]}),/*#__PURE__*/e(\"h3\",{children:\"Reliability and performance improvements\"}),/*#__PURE__*/e(\"h4\",{children:\"Backward Compatibility Checker\"}),/*#__PURE__*/e(\"p\",{children:\"We are introducing \u201Ccompatcheck\u201D, a tool that helps you ensure your Dagger modules are backwards compatible. Of course, this tool is itself a Dagger module! We initially built this module for our own use, and decided to release it when we realized it could be useful to the community. \"}),/*#__PURE__*/e(\"p\",{children:\"This module is particularly useful when upgrading Dagger, or when building modules that need to be compatible across different environments or engine versions.\"}),/*#__PURE__*/e(\"p\",{children:\"The compatcheck module works by comparing the schema of any provided remote module between two different versions of the Dagger engine. For example, to compare a hello world module between v0.12.0 and v0.13.0:\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"$ dagger call -m github.com/dagger/dagger/modules/compatcheck run --module github.com/shykes/daggerverse/hello --version-a v0.12.0 --version-b v0.13.0\",language:\"Shell\"})})}),/*#__PURE__*/e(\"p\",{children:\"Our goal is to ensure that any daggerverse-published module won\u2019t change schemas in a backwards incompatible way (since module compatibility introduced in v0.12.0 should emulate previous engine versions), but this module can be a helpful tool to help ensure this for users who are particularly interested in long-term stability.\"}),/*#__PURE__*/t(\"p\",{children:[\"For more details, take a look at the \",/*#__PURE__*/e(o,{href:\"https://daggerverse.dev/mod/github.com/dagger/dagger/modules/compatcheck@c3ab515efcb3409035fa01486ede16c059abad61\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"module in the daggerverse\"})}),\". \"]}),/*#__PURE__*/e(\"h4\",{children:\"Improved Python workflow\"}),/*#__PURE__*/t(\"p\",{children:[\"Now that Astral released \",/*#__PURE__*/e(o,{href:\"https://github.com/astral-sh/uv/releases/tag/0.3.0\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"uv 0.3.0\"})}),\", with production-ready support for \",/*#__PURE__*/e(o,{href:\"https://astral.sh/blog/uv-unified-python-packaging\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"end-to-end project management\"})}),\" (and more), we\u2019ve decided to switch the use of the lower level \",/*#__PURE__*/e(\"code\",{children:\"requirements.lock\"}),\" to install a Python module\u2019s dependencies, to the new \",/*#__PURE__*/e(\"code\",{children:\"uv.lock\"}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"This is a long time coming, and makes uv the best tool today for Python packaging!\\xa0The new default will make the workflow for developing a Python Dagger Module much simpler.\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"The only pre-requisite (apart from having the \",/*#__PURE__*/e(\"code\",{children:\"dagger\"}),\" CLI), is to have \",/*#__PURE__*/e(o,{href:\"https://docs.astral.sh/uv/getting-started/installation/#standalone-installer\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"uv installed\"})}),\". It\u2019s a single binary that doesn\u2019t depend on Python, can replace several tools today (\",/*#__PURE__*/e(\"code\",{children:\"pip\"}),\",\\xa0\",/*#__PURE__*/e(\"code\",{children:\"pip-tools\"}),\",\\xa0\",/*#__PURE__*/e(\"code\",{children:\"pipx\"}),\",\\xa0\",/*#__PURE__*/e(\"code\",{children:\"poetry\"}),\",\\xa0\",/*#__PURE__*/e(\"code\",{children:\"pyenv\"}),\",\\xa0\",/*#__PURE__*/e(\"code\",{children:\"virtualenv\"}),\" and more), and is very fast to run.\"]}),/*#__PURE__*/e(\"p\",{children:\"Here\u2019s an example for creating a new Python Module, and opening the NeoVim editor with autocompletions fully working:\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"dagger init --sdk=python my-module\\ncd my-module\\nuv run vim\",language:\"Shell\"})})}),/*#__PURE__*/t(\"p\",{children:[\"That\u2019s it! On \",/*#__PURE__*/e(\"code\",{children:\"dagger init\"}),\", Dagger creates a \",/*#__PURE__*/e(\"code\",{children:\"uv.lock\"}),\" file, and hooks the dagger-io dependency to the local \",/*#__PURE__*/e(\"code\",{children:\"./sdk\"}),\" directory. In turn, \",/*#__PURE__*/e(\"code\",{children:\"uv run\"}),\":\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Downloads an appropriate Python version, if necessary\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Creates the virtual environment (in \",/*#__PURE__*/e(\"code\",{children:\".venv\"}),\")\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Installs all dependencies\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Opens \",/*#__PURE__*/e(\"code\",{children:\"vim\"}),\" with the virtual environment activated\"]})})]}),/*#__PURE__*/t(\"p\",{children:[\"VSCode users can run \",/*#__PURE__*/e(\"code\",{children:\"uv run code\"}),\". from the terminal, or open one from inside the IDE and type:\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"uv sync\",language:\"Shell\"})})}),/*#__PURE__*/e(\"p\",{children:\"Assuming the newly created .venv is at the root of the VSCode workspace, it should pick up autocompletions automatically.\"}),/*#__PURE__*/e(\"p\",{children:\"It runs pretty fast too. Depending on Internet connection and other factors, and with an existing Python but empty uv cache, it takes onlyjust about 1 second!\"}),/*#__PURE__*/t(\"p\",{children:[\"To know more about project management with \",/*#__PURE__*/e(\"code\",{children:\"uv\"}),\" see \",/*#__PURE__*/e(o,{href:\"https://docs.astral.sh/uv/guides/projects/\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Working on Projects\"})}),\" from their documentation website. Also make sure to read Astral\u2019s \",/*#__PURE__*/e(o,{href:\"https://astral.sh/blog/uv-unified-python-packaging\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"uv: Unified Python packaging\"})}),\" blog post for more on what \",/*#__PURE__*/e(\"code\",{children:\"uv\"}),\" can do for Python users.\"]}),/*#__PURE__*/t(\"p\",{children:[\"For more details see the PR here: \",/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/8311\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"8311\"})})]}),/*#__PURE__*/e(\"h4\",{children:\"More reliable OpenTelemetry implementation\"}),/*#__PURE__*/e(\"p\",{children:'The telemetry pipeline that feeds the TUI and Cloud has been re-implemented to be less error-prone. Previously telemetry data was routed to clients \"on the fly\" and streaming would complete when all observed spans for that client completed. This could result in hangs in obtuse scenarios - mostly exercised by our own test suite - and generally was incredibly complicated and brittle to maintain. Now data is persisted temporarily in the engine for each client, thus publishing is decoupled from subscribing, allowing subscribers to simply read all the telemetry data until all the clients disconnect.'}),/*#__PURE__*/t(\"p\",{children:[\"For more details, see the PR: \",/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/7996\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"7996\"})})]}),/*#__PURE__*/e(\"h4\",{children:\"TypeScript SDK performance improvements (optimized caching)\"}),/*#__PURE__*/e(\"p\",{children:\"Transforming your CI into a bullet train journey is our top priority. In this release we saw an opportunity to improve TypeScript via improved caching:\"}),/*#__PURE__*/e(\"p\",{children:\"We refactored the runtime to cache more operations, specifically when you only update the code so you can increase the feedback loop when developing your Dagger module. We also re-enable package manager cache with a stronger namespace system to save your node_modules into cache volume.\"}),/*#__PURE__*/e(\"p\",{children:\"Sources are now mounted at the very last step, to allow more operations, such as dependency downloading, to be cached more easily.\"}),/*#__PURE__*/e(\"p\",{children:\"Several other enhancements made to the TypeScript runtime:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Configure the TS runtime to use your favorite package manager by setting the \",/*#__PURE__*/e(\"code\",{children:\"packageManager\"}),\" field in your package.json (\",/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/7864\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"https://github.com/dagger/dagger/pull/7864\"})}),\")\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Configure the version of your runtime with the \",/*#__PURE__*/e(\"code\",{children:\"dagger.runtime\"}),\" field in your package.json (\",/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/7852\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"https://github.com/dagger/dagger/pull/7852\"})}),\")\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The TS runtime now generates lockfiles to keep track of your dependencies and improve initialization time.\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"For more details, see the PR: \",/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/8236\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"8236\"})})]}),/*#__PURE__*/e(\"h4\",{children:\"Additional improvements\"}),/*#__PURE__*/e(\"p\",{children:\"We also made many small reliability and performance improvements, each of which is probably not worth noting, but collectively should be quite noticeable. \"}),/*#__PURE__*/e(\"h3\",{children:\"What\u2019s Next?\"}),/*#__PURE__*/t(\"p\",{children:[\"Thanks to our \",/*#__PURE__*/e(o,{href:\"https://dagger.io/community\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"amazing community of Daggernauts\"})}),\", we are drinking from a firehose of feedback, bug reports and feature requests. As a result we are busier than ever developing the next wave of improvements to Dagger. By the way, we are looking for a Senior Software Engineer to \",/*#__PURE__*/e(o,{href:\"https://www.linkedin.com/posts/samalba_senior-software-engineer-activity-7216517041883635712-BTC2\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"join our team\"})}),\"!\"]}),/*#__PURE__*/t(\"p\",{children:[\"If you have requests or feedback, or want to contribute, don\u2019t hesitate to \",/*#__PURE__*/e(o,{href:\"https://discord.gg/dagger-io\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"join our Discord server\"})}),\" and say hello. And \",/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"starring our GitHub repository\"})}),\" is always appreciated!\"]}),/*#__PURE__*/e(\"p\",{children:\"Thank you for your support, we look forward to Daggerizing many more pipelines with you!\"}),/*#__PURE__*/e(\"p\",{children:\"The Dagger team\"})]});export const richText1=/*#__PURE__*/t(r.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"We have something truly special in the Dagger Community: a level of engagement and collaboration beyond what we ever dreamed of. Every day, I am grateful to be a part of this incredible journey.\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{}),\"Thanks to everyone\u2019s continuous feedback and discussions, we were able to release \",/*#__PURE__*/e(o,{href:\"https://dagger.io/blog/introducing-dagger-functions\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Dagger Functions\"})}),\", \",/*#__PURE__*/e(o,{href:\"https://dagger.io/blog/introducing-the-daggerverse\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Daggerverse\"})}),\", \",/*#__PURE__*/e(o,{href:\"https://dagger.io/blog/dagger-0-12\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Dagger Engine 0.12\"})}),\"\u2026 and that\u2019s just in the last few months!\\xa0 We couldn\u2019t have done it without constant input and support from thousands of Daggernauts. Thank you!\"]}),/*#__PURE__*/t(\"p\",{children:[\"Since the collaboration within this community has been instrumental to our success, we want to recognize those Daggernauts who go above and beyond to contribute. \",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{}),\"I am excited to announce the launch of the Dagger Commanders program, with our 2024 Dagger Commanders to be revealed soon!\"]}),/*#__PURE__*/e(\"h4\",{children:\"Who are the Dagger Commanders?\"}),/*#__PURE__*/e(\"p\",{children:\"Once a year, we will select a small group of Daggernauts to represent Dagger in other communities, build bridges between the Dagger team and all Daggernauts, and lead by example in our own community.\"}),/*#__PURE__*/e(\"p\",{children:'In \u201CStar Trek,\u201D the rank of \"Commander\" is given to highly skilled officers who not only excel in their duties but also lead by example, guiding the crew and making critical decisions that shape the future of their missions. They are looked up to, trusted advisors to leadership, and advocates for the values of the Federation. We think this captures the spirit of this program perfectly. Dagger Commanders will not only be Dagger experts: they will also lead, support, and inspire others. They will play a pivotal role in advancing our shared goals. Just like in Star Trek, they are the backbone of our mission, and with their help we will explore many new frontiers together.'}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"750\",src:\"https://framerusercontent.com/images/35RH6MWt26xepTPT6vRIcgRs.png\",srcSet:\"https://framerusercontent.com/images/35RH6MWt26xepTPT6vRIcgRs.png?scale-down-to=512 512w,https://framerusercontent.com/images/35RH6MWt26xepTPT6vRIcgRs.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/35RH6MWt26xepTPT6vRIcgRs.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/35RH6MWt26xepTPT6vRIcgRs.png 2560w\",style:{aspectRatio:\"2560 / 1500\"},width:\"1280\"}),/*#__PURE__*/e(\"h4\",{children:\"How do I become a Dagger Commander?\"}),/*#__PURE__*/t(\"p\",{children:[\"To nominate someone as Dagger Commander, \",/*#__PURE__*/e(o,{href:\"https://docs.google.com/forms/d/e/1FAIpQLSeehzuxFUS_qM2LzR3_T5KWTWB9vIM5lJNmJzmSL4GQ16fL-g/viewform\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"you can fill out this form\"})}),\". It\u2019s totally fine to nominate yourself.\"]}),/*#__PURE__*/e(\"p\",{children:\"Each year, we will select Commanders and contact them prior to announcing the new batch. The 2024 batch will be announced shortly.\"}),/*#__PURE__*/e(\"h4\",{children:\"Commanders should\u2026\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Be highly knowledgeable about Dagger - recognized as experts in the Dagger tech and able to articulate the benefits and vision behind Dagger\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Have built an open-source module, Daggerized an open-source project, and/or be an active user of Dagger within their organization\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:'Be Technical and direct in tone, not \"salesy\" in any way'})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Not come across to other community members as pushing another product, service offering, or agenda\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Regularly produce technical content for the community such as presenting on community calls or contributing a blog post (at least once every six months)\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Represent Dagger at public events such as meetups or industry events (at least once every six months)\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Actively help other Daggernauts privately and on public forums\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Provide feedback on Dagger features and releases\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Be a model Daggernaut: respect our code of conduct, especially when critical of Dagger or defending Dagger against others' criticism, remains respectful, constructive, and fair.\"})})]}),/*#__PURE__*/e(\"h4\",{children:\"How long is the commitment?\"}),/*#__PURE__*/e(\"p\",{children:\"Commanders are selected for 12 month rotations, or \u201Cbatches\u201D.\"}),/*#__PURE__*/e(\"h4\",{children:\"What type of perks do Commanders get?\\xa0\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Special swag - trust me, it is good!\\xa0\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Visibility and recognition within the community via Discord role, and special badge to add to your various social accounts\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The opportunity to meet and collaborate with fun and brilliant pipeline engineers across domains and industries\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Integrated into the release process with the ability to provide early feedback before releases are out\\xa0\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Periodic call with the Dagger team to review roadmap ideas and provide feedback\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Invitation to exclusive events\\xa0\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Access to travel reimbursement program for Dagger-focused speaking engagements\\xa0\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"And now you are thinking, \u201Cthis sounds amazing! I want to be a Dagger Commander.\u201D \",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{}),\"Well, I am happy to hear it! The 2024 Dagger Commanders, each nominated by their peers, will be announced soon. In the meantime, we\u2019re excited to open nominations for the 2025 Dagger Commanders. You can nominate your fellow Daggernauts \",/*#__PURE__*/e(o,{href:\"https://docs.google.com/forms/d/e/1FAIpQLSeehzuxFUS_qM2LzR3_T5KWTWB9vIM5lJNmJzmSL4GQ16fL-g/viewform\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"here\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"Thank you again to everyone for making the Dagger community what it is today!\"})]});export const richText2=/*#__PURE__*/t(r.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"I\u2019ve been running Debian stable for a little while. I love it. But sometimes it\u2019s so stable that it hurts. This is particularly true if you\u2019re trying to also write code using the latest version of a programming language.\"}),/*#__PURE__*/e(\"p\",{children:\"In my particular case, I want to create new content for my Hugo powered blog. But this is not possible because my blog was originally written with go 1.21 and the latest version of Hugo. Debian stable comes with go 1.19 and Hugo 0.111.3-1, which is an entire generation behind the latest hugo. Attempting to generate a new file causes Hugo to crash and burn for me.\"}),/*#__PURE__*/t(\"p\",{children:[\"There are many ways to fix this. I could use \",/*#__PURE__*/e(o,{href:\"https://backports.debian.org/\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Debian backports\"})}),\" to bring in some newer versions of the software. I could also just install go manually outside of the package system. I could even run a VM or container for working with Hugo. All of these approaches have pros and cons.\"]}),/*#__PURE__*/e(\"p\",{children:\"The reason why I am running Debian stable is because I want the entire OS to just work for many years without needing to fiddle with anything. In my experience every time you add a new package outside of the comfort and safety of the stable packages things inevitably go wrong.\"}),/*#__PURE__*/e(\"p\",{children:\"Running a VM for Hugo feels like overkill, but a container would feel like a great solution. Especially if I could combine the power of containers with a real programming language and built-in CLI.\"}),/*#__PURE__*/e(\"h3\",{children:\"Enter Dagger\"}),/*#__PURE__*/e(\"p\",{children:\"I attempted to use Dagger to solve this since it's already the core part of my blog publishing pipeline. I chose Dagger because it's purpose-built for creating artifacts without messing with local dependencies. If you think about it, creating a new post in Hugo is creating a new file artifact based on a content template and your site-specific configuration. Dagger allows me to easily execute an arbitrary version of Hugo in a sandboxed environment and return the file that I need.\"}),/*#__PURE__*/t(\"p\",{children:[\"I wrote a function called \",/*#__PURE__*/e(\"code\",{children:\"Write\"}),\" that accepts a \",/*#__PURE__*/e(\"code\",{children:\"title\"}),\" and returns the generated \",/*#__PURE__*/e(\"code\",{children:\"File\"}),\" that Hugo creates.\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:'// create new post and return file\\nfunc (m *Publish) Write(ctx context.Context, title string) *File {\\n    file := fmt.Sprintf(\"%s.md\", title)\\n    path := fmt.Sprintf(\"archive/%s\", file)\\n    cmd := fmt.Sprintf(\"hugo new content %s\", path)\\n\\n    return m.base().\\n        WithMountedDirectory(\"/src\", m.Src).\\n        WithWorkdir(\"/src\").\\n        WithExec([]string{\"sh\", \"-c\", cmd}).\\n        Directory(\"content/archive\").\\n        File(file)\\n}',language:\"Go\"})})}),/*#__PURE__*/t(\"p\",{children:[\"Dagger gives me a CLI for free every time I write a function. For example, I can call the \",/*#__PURE__*/e(\"code\",{children:\"Write\"}),\" function like this:\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"dagger call --src . write --title <TITLE> -o content/archive/<TITLE>.md\",language:\"Go\"})})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"code\",{children:\"dagger call --src . write --title <TITLE>\"}),\" returns a file.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Adding \",/*#__PURE__*/e(\"code\",{children:\"-o content/archive/<TITLE>.md\"}),\" will write that file to my local computer at the specific path.\"]})})]}),/*#__PURE__*/t(\"p\",{children:[\"The only downside to this approach is that Dagger Functions can be \",/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/issues/6723\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"quite verbose\"})}),\". This relatively simple function isn\u2019t pretty to look at, and I need to type in \",/*#__PURE__*/e(\"code\",{children:\"<TITLE>\"}),\" twice.\"]}),/*#__PURE__*/t(\"p\",{children:[\"I already have a hard enough time remembering the standard Hugo sequence \",/*#__PURE__*/e(\"code\",{children:\"hugo new content archive/<TITLE>.md\"}),\" where I always mess up the order of \",/*#__PURE__*/e(\"code\",{children:\"new\"}),\" and \",/*#__PURE__*/e(\"code\",{children:\"content\"}),\". \"]}),/*#__PURE__*/e(\"h3\",{children:/*#__PURE__*/e(\"strong\",{children:\"Justfile to the rescue\"})}),/*#__PURE__*/t(\"p\",{children:[\"I am obsessed with \",/*#__PURE__*/e(o,{href:\"https://github.com/casey/just\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Justfile\"})}),\". It\u2019s like Make without all the baggage of the first 20 years since the UNIX epoch. It allows you to write elegant wrappers for verbose CLI commands and the DX is a joy to use. It feels like the author listened to everyone\u2019s complaints about Make for the last decade and wrote something that solves the pain.\"]}),/*#__PURE__*/e(\"p\",{children:\"Given this Just command:\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"# write new post with given title\\n[positional-arguments]\\nwrite title:dagger call --src . write --title $1 -o content/archive/$1.md\",language:\"Go\"})})}),/*#__PURE__*/e(\"p\",{children:\"I can turn the verbose Dagger call into this little gem:\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"just write $title\",language:\"Go\"})})}),/*#__PURE__*/e(\"p\",{children:\"It\u2019s simpler than both the Dagger call and the native Hugo function. The entire sequence of operations now looks like this:\"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"1428\",src:\"https://framerusercontent.com/images/z4393eOSH1y9PKGfoVwLYDo0lg.png\",srcSet:\"https://framerusercontent.com/images/z4393eOSH1y9PKGfoVwLYDo0lg.png?scale-down-to=512 512w,https://framerusercontent.com/images/z4393eOSH1y9PKGfoVwLYDo0lg.png?scale-down-to=1024 1024w,https://framerusercontent.com/images/z4393eOSH1y9PKGfoVwLYDo0lg.png?scale-down-to=2048 2048w,https://framerusercontent.com/images/z4393eOSH1y9PKGfoVwLYDo0lg.png?scale-down-to=4096 4096w,https://framerusercontent.com/images/z4393eOSH1y9PKGfoVwLYDo0lg.png 5119w\",style:{aspectRatio:\"5119 / 2857\"},width:\"2559\"}),/*#__PURE__*/e(\"p\",{children:\"Now whenever I am ready to write a new blog post, I simply type in that Just command and I get the new file in my local directory using the latest version of Hugo and go without having to worry about messing with my system dependencies or risking the long term stability of Debian. \"}),/*#__PURE__*/e(\"p\",{children:\"The approach described here works for any stack. In 2016, I wrote a post on my personal blog called \u201CWorking with chruby and nvm on Ubuntu\u201D. That was me using two different version managers to manage the versions of two different programming languages on my local machine. I was practically begging the universe to give me some \u201Cworks on my machine problems\u201D to share with my team. Whether you\u2019re trying to run the latest version of something to test an upgrade path, or the oldest version of something to support an important legacy customer (how is Java 6 still in production?), or if you\u2019re like 2016 me trying to run several versions of several languages. Dagger provides you with an elegant solution to the version mismatch problem. \"}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"em\",{children:\"Want to discuss these scenarios and solutions with us more? Join the \"}),/*#__PURE__*/e(o,{href:\"https://discord.gg/dagger-io\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:/*#__PURE__*/e(\"em\",{children:\"Dagger Discord\"})})}),/*#__PURE__*/e(\"em\",{children:\" to weigh in on all the community conversations!  \"})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"br\",{className:\"trailing-break\"})})]});export const richText3=/*#__PURE__*/t(r.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"Today we are introducing \",/*#__PURE__*/e(o,{href:\"https://docs.dagger.io/install\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"version 0.12 of the Dagger Engine\"})}),\". After several months of shipping bold new features at a breakneck pace (\",/*#__PURE__*/e(o,{href:\"https://dagger.io/blog/introducing-dagger-functions\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Functions\"})}),\", \",/*#__PURE__*/e(o,{href:\"https://dagger.io/blog/introducing-the-daggerverse\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Daggerverse\"})}),\", \",/*#__PURE__*/e(o,{href:\"https://dagger.io/blog/introducing-dagger-traces\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Traces\"})}),\") for this release we focused on usability, polish, and quality. This includes a delightful interactive debugger; a more polished terminal and web UI; improved reliability and performance; a backwards compatibility system to make upgrades easier; better support for corporate networks; the ability to host modules on any git server; and much more.\"]}),/*#__PURE__*/e(\"p\",{children:\"Let\u2019s dive in!\"}),/*#__PURE__*/e(\"h3\",{children:\"Interactive Debugging\"}),/*#__PURE__*/e(\"p\",{children:\"For as long as we can remember, Dagger users wanted to have an interactive shell when their pipeline failed, with all the context at the point of failure. This is similar to a debugger experience, but without needing to set breakpoints explicitly. Other users wanted explicit breakpoints, and the same interactive experience. All these new capabilities are an enrichment to the Terminal type which was first introduced in Dagger v0.10.\"}),/*#__PURE__*/t(\"p\",{children:[\"As of Dagger v0.12, running \",/*#__PURE__*/e(\"code\",{children:\"dagger call\"}),\" with the \",/*#__PURE__*/e(\"code\",{children:\"\u2013interactive\"}),\" (\",/*#__PURE__*/e(\"code\",{children:\"-i\"}),\" for short) flag will open a terminal in the context of a pipeline failure. No changes to your pipeline code required.\"]}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"372\",src:\"https://framerusercontent.com/images/XH3E5W63HW2q2sF7YNd1E5o74.gif\",srcSet:\"https://framerusercontent.com/images/XH3E5W63HW2q2sF7YNd1E5o74.gif?scale-down-to=512 512w,https://framerusercontent.com/images/XH3E5W63HW2q2sF7YNd1E5o74.gif?scale-down-to=1024 1024w,https://framerusercontent.com/images/XH3E5W63HW2q2sF7YNd1E5o74.gif 1357w\",style:{aspectRatio:\"1357 / 745\"},width:\"678\"}),/*#__PURE__*/t(\"p\",{children:[\"As an alternative to this convenient behavior, \",/*#__PURE__*/e(\"code\",{children:\"Terminal()\"}),\" can now be added anywhere in a pipeline and it will behave like a debugger breakpoint:\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Go\"})}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:'func (m *Interactive) Container(ctx context.Context) (string, error) {\\n    return dag.Container().\\n        From(\"alpine:latest\").\\n        Terminal().\\n        WithExec([]string{\"sh\", \"-c\", \"echo hello world > /foo && cat /foo\"}).\\n        Terminal().\\n        Stdout(ctx)\\n}',language:\"Go\"})})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Python\"}),\" \"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:'@function\\nasync def container(self) -> str:\\n    return await (\\n        dag.container()\\n        .from_(\"alpine:latest\")\\n        .terminal()\\n        .with_exec([\"sh\", \"-c\", \"echo hello world > /foo && cat /foo\"])\\n        .terminal()\\n        .stdout()\\n    )',language:\"Python\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"TypeScript \"})}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:'@func()\\nasync container(): Promise<string> {\\n  return dag\\n    .container()\\n    .from(\"alpine:latest\")\\n    .terminal()\\n    .withExec([\"sh\", \"-c\", \"echo hello world > /foo && cat /foo\"])\\n    .terminal()\\n    .stdout()\\n}',language:\"TypeScript\"})})}),/*#__PURE__*/e(\"p\",{children:\"Properties of this terminal can be customized, including reusing all the layers in a different container base image (e.g. Ubuntu instead of Alpine in the example below):\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Go \"})}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:'func (m *Interactive) Dir(ctx context.Context) (string, error) {\\n    return dag.\\n        Git(\"https://github.com/dagger/dagger.git\").\\n        Head().\\n        Tree().\\n        Terminal(dagger.DirectoryTerminalOpts{\\n            Container: dag.Container().From(\"ubuntu\"),\\n            Cmd:       []string{\"bash\"},\\n        }).\\n        Directory().\\n        File(\"README.md\").\\n        Contents(ctx)\\n}',language:\"Go\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Python \"})}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:'@function\\nasync def dir(self) -> str:\\n    return await (\\n        dag\\n        .git(\"https://github.com/dagger/dagger.git\")\\n        .head()\\n        .tree()\\n        .terminal(\\n            container=dag.container().from_(\"ubuntu\"),\\n            cmd=[\"bash\"]\\n         )\\n        .directory(\".\")\\n        .file(\"README.md\")\\n        .contents()\\n    )',language:\"Python\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"TypeScript \"})}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:'@func()\\nasync dir(): Promise<string> {\\n  return dag\\n    .git(\"https://github.com/dagger/dagger.git\")\\n    .head()\\n    .tree()\\n    .terminal({container: dag.container().from(\"ubuntu\"), cmd: [\"bash\"]})\\n    .directory(\".\")\\n    .file(\"README.md\")\\n    .contents()\\n}',language:\"TypeScript\"})})}),/*#__PURE__*/t(\"p\",{children:[\"For a longer demonstration of how this works in practice, check out \",/*#__PURE__*/e(o,{href:\"https://www.youtube.com/watch?v=iOVYdHDoocQ\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"this Community Call Demo\"})}),\".\"]}),/*#__PURE__*/e(\"p\",{children:\"If you are interested in the code changes, check out these pull requests:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/7586\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"https://github.com/dagger/dagger/pull/7586\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/7683\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"https://github.com/dagger/dagger/pull/7683\"})})})})]}),/*#__PURE__*/e(\"h3\",{children:\"UI Polish\"}),/*#__PURE__*/e(\"p\",{children:\"One of Dagger\u2019s most popular features is the ability to visualize your pipeline execution in a detailed trace view, both in the terminal, and in a web browser.\"}),/*#__PURE__*/e(\"p\",{children:\"This release includes many improvements to both our terminal and web user interfaces\"}),/*#__PURE__*/e(\"h4\",{children:\"Terminal UI: faster, now interactive\"}),/*#__PURE__*/e(\"p\",{children:\"The Terminal UI is now interactive, while still presenting a svelte interface that gets out of your way. You can now use your keyboard and mouse to navigate, zoom in to spans, switch to a web view, and adjust the verbosity at runtime. A keymap is now shown along the bottom that doubles as a divider between the trace tree and the logs of the currently-zoomed span, saving precious screen space.\"}),/*#__PURE__*/e(\"p\",{children:\"Additionally, the TUI has seen massive performance improvements. Previously viewing a large trace would burn a ton of CPU simply rendering the TUI and cropping it to fit the viewport. Now the TUI will only render the visible region, on top of many other optimizations.\"}),/*#__PURE__*/e(\"p\",{children:\"To see a demonstration of this new feature, check out the demo below: \"}),/*#__PURE__*/e(\"img\",{alt:\"\",className:\"framer-image\",height:\"372\",src:\"https://framerusercontent.com/images/0UzumsKK1HqhYR0aEtxDSf6z2OU.gif\",srcSet:\"https://framerusercontent.com/images/0UzumsKK1HqhYR0aEtxDSf6z2OU.gif?scale-down-to=512 512w,https://framerusercontent.com/images/0UzumsKK1HqhYR0aEtxDSf6z2OU.gif?scale-down-to=1024 1024w,https://framerusercontent.com/images/0UzumsKK1HqhYR0aEtxDSf6z2OU.gif 1357w\",style:{aspectRatio:\"1357 / 745\"},width:\"678\"}),/*#__PURE__*/t(\"p\",{children:[\"If you are interested in the code changes, see this pull request: \",/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/7671\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"https://github.com/dagger/dagger/pull/7671\"})}),\" \"]}),/*#__PURE__*/e(\"h4\",{children:\"Web UI: local view, CI view, flamecharts, async\u2026\"}),/*#__PURE__*/t(\"p\",{children:[\"A few months ago, \",/*#__PURE__*/e(o,{href:\"https://dagger.io/blog/introducing-dagger-traces\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"we announced Dagger Traces\"})}),\", a web counterpart to our popular terminal UI, to make it even easier to debug and monitor your Dagger pipelines. Since the initial release, we have added numerous improvements:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Local view\"}),\" shows all traces from your team\u2019s local dev environments. This is a great way to collaborate with your team, and catch problems early, before changes are even pushed or processed by the CI server\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"CI view\"}),\" shows all traces from your CI environment, grouped by branch and commit, and annotated with useful git metadata\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Traces include a new \",/*#__PURE__*/e(\"strong\",{children:\"flame chart\"}),\" \",/*#__PURE__*/e(\"strong\",{children:\"view\"}),\", which enables clicking on points of interest from the top of the trace. This is especially useful to navigate large and complex traces\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Better handling of \",/*#__PURE__*/e(\"strong\",{children:\"asynchronous operations\"}),\". Because of Dagger\u2019s lazy execution model, many function calls are asynchronous: the API call to schedule it completes right away, but the actual operation will be executed later. This can make it difficult to connect \u201Ccause\u201D from \u201Ceffect\u201D when viewing a complex trace. To improve readability, we now show \u201Ceffects\u201D alongside their \u201Ccause\u201D in the trace, which is more intuitive.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"We have made trace views faster overall, with even more performance improvements planned\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"General UI streamlining; less confusing lines, more noticeable focus indicator, less noise\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Fixed various paper cuts: text selection issues, better handling of timeouts, removed confusing git metadata from local traces\"})})]}),/*#__PURE__*/e(\"p\",{children:\"You can watch a demo of all the recent improvements & additions here: \"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{\"--aspect-ratio\":\"560 / 315\",aspectRatio:\"560 / 315\",height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:NEd4VmDdsxM3StIUbddO/DDzyuYPF56TuI0bfUu2z/YouTube.js:Youtube\",children:t=>/*#__PURE__*/e(a,{...t,play:\"Off\",shouldMute:!0,thumbnail:\"Medium Quality\",url:\"https://www.youtube.com/watch?v=iph_bzjomBE\"})})}),/*#__PURE__*/e(\"h3\",{children:\"Corporate Network Support\"}),/*#__PURE__*/e(\"p\",{children:\"Many users run their Dagger engines in corporate environments or other specialized networks that require use of custom certificate authorities or HTTP proxies.\"}),/*#__PURE__*/e(\"p\",{children:\"The engine now supports configuring these proxies and custom CAs. This applies to the engine\u2019s built-in operations (pulling container images, git repos, etc.), user containers created by `withExec` APIs and Module Function containers.\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/7255\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Proxy support\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/7067\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"CA support\"})})})})]}),/*#__PURE__*/e(\"p\",{children:\"This support unblocks users with these specialized needs who previously could often not use Dagger at all. In particular, the support for automatically applying these settings to user containers and Module Functions means that users get this support \u201Cautomagically\u201D in their pipelines without needing to customize their Dagger code or any external Dagger module dependencies.\"}),/*#__PURE__*/t(\"p\",{children:[\"Further improvements to these features \",/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/issues/6599\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"are planned\"})}),\", such as improved support for application specific proxy settings and configuration sourced from client machines.\"]}),/*#__PURE__*/e(\"p\",{children:\"You can learn more about how to configure these settings in our docs.\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(o,{href:\"https://docs.dagger.io/manuals/administrator/proxy\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Configure the Engine to use Proxies\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(o,{href:\"https://docs.dagger.io/manuals/administrator/custom-ca\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Configure the Engine to use Custom Certificate Authorities\"})})})})]}),/*#__PURE__*/e(\"h3\",{children:\"Reliability and Performance Improvements\"}),/*#__PURE__*/e(\"p\",{children:\"We have made Dagger faster and more reliable for large and complex pipelines.\"}),/*#__PURE__*/e(\"p\",{children:\"We have done this by fixing a long tail of issues in complex production pipelines, including the ones we use to develop Dagger itself. These issues are often difficult to reproduce, and typically involve\\xa0 64-192 vCPU hosts, heavy-duty caching, pipeline parallelism, and highly diverse workloads. It\u2019s painstaking work, but each production issue fixed makes the platform more robust for everyone. Thank you to our operators community for their invaluable feedback and collaboration! If you are running Dagger in production and have questions or feedback, we would love to hear from you on our Discord server.\"}),/*#__PURE__*/t(\"p\",{children:[\"We have been shipping these improvements gradually, in patch releases, typically a few releases per month. If you have been updating frequently, this may have gone unnoticed since the improvements were incremental, usually in the core of Dagger Engine, which is not something that many users notice in our \",/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/blob/main/CHANGELOG.md\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"changelog\"})}),\". Here is a more detailed list of relevant changes:\"]}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/7367\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Remove shim\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/7315\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Session Cleanup+Simplifications\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/7679\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Fix forced simplification infinite progress loop on high verbosity settings\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/7549\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"core: reduce module ID size by not including full schemas\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/7336\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"core: don't bust cache with random OTEL values in function calls\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/7452\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"OTel cleanups + better draining\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/7735\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"More OTel fixes, mostly service-related\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/7686\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"tui: associate effects to their origin, not their unlazier\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/7328\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"core: make Directory.diff logic less fragile\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/7543\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"fix(go): ensure idempotency on switch-case\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/7213\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"engine: nested exec simplifications and service fixes\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/7228\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"engine: remove ftp_proxy hack\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"(upstream Buildkit fix) \",/*#__PURE__*/e(o,{href:\"https://github.com/moby/buildkit/pull/4887\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"solver: prevent edge merge to inactive states\"})})]})})]}),/*#__PURE__*/e(\"h3\",{children:\"Compatibility Mode\"}),/*#__PURE__*/e(\"p\",{children:\"We are introducing Compatibility Mode, a new feature that improves backwards compatibility of the Dagger Engine by simulating the behavior of older engines. This allows you to upgrade to the latest version of Dagger with confidence, knowing that your dependencies will still work, even if they target older versions.\"}),/*#__PURE__*/e(\"p\",{children:\"At Dagger we believe that backwards compatibility is a crucial component of a successful software ecosystem. This is especially true for a young and fast-moving platform like Dagger: at our current rate of improvement, API changes cannot be entirely avoided. Compatibility Mode will allow us to improve backwards compatibility over time, without sacrificing the velocity which makes the Dagger community so special.\"}),/*#__PURE__*/e(\"p\",{children:\"Note that Compatibility Mode still has limitations. Most importantly, we don\u2019t guarantee 100% backwards compatibility, although we aim to get there eventually. We also don\u2019t provide feature granularity: modules can\u2019t pick and choose which API changes they upgrade, and which they don\u2019t. We plan on adding this feature later, when the scale and maturity of the platform justifies it.\"}),/*#__PURE__*/e(\"p\",{children:\"If you are interested in the code changes, check out these pull requests:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/7692\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"https://github.com/dagger/dagger/pull/7692\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/7031\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"https://github.com/dagger/dagger/pull/7031\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/7759\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"https://github.com/dagger/dagger/pull/7759\"})})})})]}),/*#__PURE__*/e(\"h3\",{children:\"Modules on any Git server\"}),/*#__PURE__*/e(\"p\",{children:\"We have removed a limitation which made it less practical to host Dagger Modules on some Git servers. Now, all Git servers are supported equally. This includes GitHub, GitLab, Bitbucket, and any other managed or self-hosted Git server.\"}),/*#__PURE__*/e(\"p\",{children:\"Here is an example of calling the familiar \u201Chello\u201D module, hosted on Codeberg by a Dagger team member:\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:\"dagger -m codeberg.org/gerhard/daggerverse/hello call hello\"})}),/*#__PURE__*/e(\"p\",{children:\"One of the benefits of Dagger is to free your CI/CD pipelines from excessive platform lock-in, whenever possible. This improvement gets us one step closer to achieving this goal.\"}),/*#__PURE__*/t(\"p\",{children:[\"If you are interested in the code changes, see this pull request: \",/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/7511\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"https://github.com/dagger/dagger/pull/7511\"})}),\"\\xa0\"]}),/*#__PURE__*/e(\"h3\",{children:\"Enum support\"}),/*#__PURE__*/t(\"p\",{children:[\"By \",/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/issues/6780\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"popular\"})}),\" \",/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/issues/7401\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"demand\"})}),\", Dagger SDKs now support custom enumeration types. This is useful for restricting possible values for an argument.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Go \"})}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:'// Vulnerability severity levels\\ntype Severity string\\n\\nconst (\\n    // Undetermined risk; analyze further.\\n    Unknown Severity = \"UNKNOWN\"\\n        \\n    // Minimal risk; routine fix.\\n    Low Severity = \"LOW\"\\n        \\n    // Moderate risk; timely fix.\\n    Medium Severity = \"MEDIUM\"\\n    \\n    // Serious risk; quick fix needed.\\n    High Severity = \"HIGH\"\\n    \\n    // Severe risk; immediate action.\\n    Critical Severity = \"CRITICAL\"\\n\\n)\\n\\nfunc (t *Trivy) Scan(\\n    ctx context.Context,\\n    severity Severity,\\n) (string, error) {\\n    // ...\\n}',language:\"Go\"})})}),/*#__PURE__*/t(\"p\",{children:[/*#__PURE__*/e(\"strong\",{children:\"Python\"}),\" \"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:'@dagger.enum_type\\nclass Severity(dagger.Enum):\\n    \"\"\"Vulnerability severity levels\"\"\"\\n\\n    UNKNOWN = \"UNKNOWN\", \"Undetermined risk; analyze further\"\\n    LOW = \"LOW\", \"Minimal risk; routine fix\"\\n    MEDIUM = \"MEDIUM\", \"Moderate risk; timely fix\"\\n    HIGH = \"HIGH\", \"Serious risk; quick fix needed.\"\\n    CRITICAL = \"CRITICAL\", \"Severe risk; immediate action.\"\\n\\n@dagger.object_type\\nclass Trivy:\\n    @dagger.function\\n    async def scan(self, severity: Severity) -> str:\\n        ...',language:\"Python\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"TypeScript \"})}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:'/**\\n * Vulnerability severity levels\\n */\\n@enumType()\\nclass Severity {\\n    /**\\n     * Undetermined risk; analyze further.\\n     */\\n    static readonly Unknown: string = \"UNKNOWN\"\\n        \\n    /**\\n     * Minimal risk; routine fix.\\n     */\\n    static readonly Low: string = \"LOW\"\\n        \\n    /**\\n     * Moderate risk; timely fix.\\n     */\\n    static readonly Medium: string = \"MEDIUM\"\\n    \\n    /**\\n     * Serious risk; quick fix needed.\\n     */\\n    static readonly High: string = \"HIGH\"\\n    \\n    /**\\n     * Severe risk; immediate action.\\n     */\\n    static readonly Critical: string = \"CRITICAL\"\\n)\\n\\n@object()\\nexport class Trivy {\\n  @func()\\n  scan(severity: Severity): string {\\n    // ...\\n  }\\n}',language:\"TypeScript\"})})}),/*#__PURE__*/t(\"p\",{children:[\"Check out all the code \",/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/7498\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"here\"})}),\".\"]}),/*#__PURE__*/e(\"h3\",{children:\"API Changes\"}),/*#__PURE__*/e(\"h4\",{children:\"Container.stdout, Container.stderr: ignore defaultArgs\"}),/*#__PURE__*/t(\"p\",{children:[\"On containers with no prior calls to \",/*#__PURE__*/e(\"code\",{children:\"withExec\"}),\", \",/*#__PURE__*/e(\"code\",{children:\"Container.stdout\"}),\" or \",/*#__PURE__*/e(\"code\",{children:\"Container.stderr\"}),\" will now return an error, instead of implicitly calling \",/*#__PURE__*/e(\"code\",{children:\"withExec\"}),\" with no arguments which in turn would execute \",/*#__PURE__*/e(\"code\",{children:\"defaultArgs\"}),\" (equivalent of \",/*#__PURE__*/e(\"code\",{children:\"CMD\"}),\" in Dockerfiles).\"]}),/*#__PURE__*/e(\"p\",{children:\"The old behavior caused confusion, especially for containers created from an OCI image configured to run a long-running service.\"}),/*#__PURE__*/t(\"p\",{children:[\"Check out the code \",/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/7857\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"here\"})}),\".\"]}),/*#__PURE__*/e(\"h4\",{children:\"Return absolute path on export instead of boolean\"}),/*#__PURE__*/t(\"p\",{children:[\"The core functions \",/*#__PURE__*/e(\"code\",{children:\"Container.export\"}),\", \",/*#__PURE__*/e(\"code\",{children:\"Directory.export\"}),\", or \",/*#__PURE__*/e(\"code\",{children:\"File.export\"}),\" returned a boolean value as the result of the operation. This was misleading because the boolean was never *false* as an unsuccessful export returns an error instead.\"]}),/*#__PURE__*/e(\"p\",{children:\"Now these functions return a more useful string with the absolute path on the host where the files were saved. It\u2019s a possible breaking change for users that may be mistakenly checking for the boolean in code:\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"// \u2705 ok, non-breaking!\\n_, err := ctr.Export(ctx)\\n\\n// \u274C breaking\\nok, err := ctr.Export(ctx)\\nif !ok { \\n    // never executed\\n}\",language:\"Go\"})})}),/*#__PURE__*/t(\"p\",{children:[\"Check out the code \",/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/7500\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"here\"})}),\". \"]}),/*#__PURE__*/e(\"h4\",{children:\"Remove deprecated schema fields\"}),/*#__PURE__*/t(\"p\",{children:[\"A number of deprecated schema fields have now been removed. We don\u2019t expect most users to be affected by this - these fields have been deprecated for several months - but in case you are, the code change in this \",/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/6934\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"pull request\"})}),\" has all the details.\"]}),/*#__PURE__*/t(\"h4\",{children:[\"Harmonize \",/*#__PURE__*/e(\"code\",{children:\"Container.withNewFile\"}),\" and \",/*#__PURE__*/e(\"code\",{children:\"Directory.withNewFile\"})]}),/*#__PURE__*/t(\"p\",{children:[\"Back in \",/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/releases/tag/sdk%2Fgo%2Fv0.4.1\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"v0.4.1\"})}),\" we changed \",/*#__PURE__*/e(\"code\",{children:\"Directory.withNewFile\"}),\" to make \",/*#__PURE__*/e(\"code\",{children:\"contents\"}),\" a required argument. This helped \",/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/issues/3884\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"reduce the verbosity of our Go SDK\"})}),\" for common operations. However, we omitted to change  \",/*#__PURE__*/e(\"code\",{children:\"Container.withNewFile\"}),\" in the same way, which created an inconsistency. We are correcting that inconsistency.\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:'// \u274C before\\nctr.\\n    WithNewFile(\"/foo\", ContainerWithNewFileOpts{\\n        Contents: \"some-content\",\\n    }).\\n    WithNewFile(\"/bar\")\\n\\n// \u2705 after\\nctr.\\n    WithNewFile(\"/foo\", \"some-content\").\\n    WithNewFile(\"/bar\", \"\")',language:\"Go\"})})}),/*#__PURE__*/e(\"p\",{children:\"This a breaking change for the Go SDK, and TypeScript as well:\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:'// \u274C before\\nctr\\n    .withNewFile(\"/foo\", { contents: \"some-content\" })\\n    .withNewFile(\"/bar\")\\n\\n// \u2705 after\\nctr\\n    .WithNewFile(\"/foo\", \"some-content\")\\n    .WithNewFile(\"/bar\", \"\")',language:\"TypeScript\"})})}),/*#__PURE__*/e(\"p\",{children:\"It\u2019s not breaking in Python because required arguments aren\u2019t forced to be positional, but that could change in the future so it\u2019s recommended to make the change anyway:\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:'# \u2705 before (non-breaking)\\nctr\\n    .with_new_file(\"/foo\", contents=\"some-content\")\\n    .with_new_file(\"/bar\")\\n\\n# \u2705 after\\nctr\\n    .with_new_file(\"/foo\", \"some-content\")\\n    .with_new_file(\"/bar\", \"\")',language:\"Python\"})})}),/*#__PURE__*/t(\"p\",{children:[\"See code \",/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/7293\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"here\"})}),\". \"]}),/*#__PURE__*/e(\"h4\",{children:\"Ignore OCI entrypoint by default\"}),/*#__PURE__*/t(\"p\",{children:[\"Following up on user feedback, the implicit behavior of \",/*#__PURE__*/e(\"code\",{children:\"Container.withExec\"}),\" using the OCI image entrypoint by default caused frequent confusion and frustration, especially when the \",/*#__PURE__*/e(\"code\",{children:\"withExec\"}),\" is far removed from where the entrypoint is set.\"]}),/*#__PURE__*/t(\"p\",{children:[\"To encourage more visibility, that default has been flipped. \",/*#__PURE__*/e(\"code\",{children:\"withExec\"}),\" won\u2019t use the entrypoint unless explicitly expressed with the option \",/*#__PURE__*/e(\"code\",{children:\"useEntrypoint\"}),\":\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"strong\",{children:\"Go\"})]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:'// \u274C before\\nctr := dag.Container().Build(src).\\n    WithExec([]string{\"git\", \"init\"}, ContainerWithExecOpts{\\n        SkipEntrypoint: true,\\n    }).\\n    WithExec([]string{\"init\"})\\n\\n// \u2705 after\\nctr := dag.Container().Build(src).\\n    WithExec([]string{\"git\", \"init\"}).\\n    WithExec([]string{\"init\"}, ContainerWithExecOpts{\\n        UseEntrypoint: true,\\n    })\\n',language:\"Go\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Python\"})}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:'// \u274C before\\nctr = (\\n    dag.container().build(src)\\n    .with_exec([\"git\", \"init\"], skip_entrypoint=True)\\n    .with_exec([\"init\"])\\n)\\n\\n// \u2705 after\\nctr = (\\n    dag.container().build(src)\\n    .with_exec([\"git\", \"init\"])\\n    .with_exec([\"init\"], use_entrypoint=True)\\n)',language:\"Python\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"TypeScript \"})}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:'// \u274C before\\nctr = dag.container().build(src)\\n  .withExec([\"git\", \"init\",{ skipEntrypoint: true })\\n  .withExec([\"init\")\\n\\n// \u2705 after\\nctr = dag.container().build(src)\\n  .withExec([\"git\", \"init\"])\\n  .withExec([\"init\"], { useEntrypoint: true })',language:\"TypeScript\"})})}),/*#__PURE__*/t(\"p\",{children:[\"We recommend avoiding the use of OCI entrypoints, unless you need to for compatibility with external systems. This will keep your code more readable:\",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"strong\",{children:\"Go \"})]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:'// \uD83D\uDE80 better\\nctr := dag.Container().Build(src).\\n    WithExec([]string{\"git\", \"init\"}).\\n    WithExec([]string{\"dagger\", \"init\"})',language:\"Go\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Python \"})}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:'// \uD83D\uDE80 better\\nctr = (\\n    dag.container().build(src)\\n    .with_exec([\"git\", \"init\"])\\n    .with_exec([\"dagger\", \"init\"])\\n)',language:\"Python\"})})}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"TypeScript \"})}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:'// \uD83D\uDE80 better\\nctr = dag.container().build(src)\\n  .withExec([\"git\", \"init\"])\\n  .withExec([\"dagger\", \"init\"])',language:\"TypeScript\"})})}),/*#__PURE__*/t(\"p\",{children:[\"Entrypoints are a relic of an era where the container engine was not fully programmable: they provide a rudimentary abstraction which becomes obsolete when you can create any abstraction you need, directly in your code \",/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/7136\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"here\"})}),\". \"]}),/*#__PURE__*/e(\"h4\",{children:\"Don\u2019t return Void\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"strong\",{children:\"Note: this is only a breaking change in the Go SDK.\"})}),/*#__PURE__*/t(\"p\",{children:[\"Dagger uses a special \",/*#__PURE__*/e(\"code\",{children:\"Void\"}),\" scalar as the return type for functions that don\u2019t return anything or return only an error:\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"func (m *SomeModule) DoSomething() error {\\n    // do something that may return an error\\n}\",language:\"Go\"})})}),/*#__PURE__*/e(\"p\",{children:'When used as a dependency, the generated client binding returned a useless empty string (\"\"):'}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"// \u274C before\\n_, err := dag.SomeModule().DoSomething(ctx)\",language:\"Go\"})})}),/*#__PURE__*/e(\"p\",{children:\"Now SDKs simply don\u2019t return the empty value:\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"// \u2705 after\\nerr := dag.SomeModule().DoSomething(ctx)\",language:\"Go\"})})}),/*#__PURE__*/t(\"p\",{children:[\"This is a breaking change only in the Go SDK because Go handles errors like values instead of raising exceptions. \",/*#__PURE__*/e(\"br\",{}),/*#__PURE__*/e(\"br\",{}),\"Check out the code \",/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/7773\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"here\"})}),\". \"]}),/*#__PURE__*/e(\"h3\",{children:\"Deprecations\"}),/*#__PURE__*/e(\"h4\",{children:\"Use @func instead of @field - TypeScript\"}),/*#__PURE__*/t(\"p\",{children:[\"If you are using the TypeScript module runtime and still have the \",/*#__PURE__*/e(\"code\",{children:\"@field\"}),\" annotation in your code, consider updating to \",/*#__PURE__*/e(\"code\",{children:\"@func\"}),\" so that you will avoid being forced to update it when we remove it in a future version. This pull request has more details: \",/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/7701\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!0,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"https://github.com/dagger/dagger/pull/7701\"})})]}),/*#__PURE__*/e(\"h3\",{children:\"What\u2019s Next?\"}),/*#__PURE__*/t(\"p\",{children:[\"Thanks to our \",/*#__PURE__*/e(o,{href:\"https://dagger.io/community\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"amazing community of Daggernauts\"})}),\", we are drinking from a firehose of feedback, bug reports and feature requests. As a result we are busier than ever developing the next wave of improvements to Dagger. By the way, we are looking for a Senior Software Engineer to \",/*#__PURE__*/e(o,{href:\"https://www.linkedin.com/posts/samalba_senior-software-engineer-activity-7216517041883635712-BTC2\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"join our team\"})}),\"!\"]}),/*#__PURE__*/e(\"p\",{children:\"Here is a preview of some of the improvements we are working on.\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/issues/7647\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Context directory\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/pull/7708\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Support for private git modules\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/issues/6605\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Dependency management polish\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/issues/7428\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Cache control\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Bring-your-own storage for distributed caching\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"More SDKs\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Better support for restricted networking environments\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Even more stability and performance improvements\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/issues/6486\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Improved production architecture\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Improved support for shell scripting\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"An official standard library of modules\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger/issues\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Lots and lots of polish\"})})})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"And more\u2026\"})})]}),/*#__PURE__*/t(\"p\",{children:[\"If you have requests or feedback, or want to contribute, don\u2019t hesitate to \",/*#__PURE__*/e(o,{href:\"https://discord.gg/dagger-io\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"join our Discord server\"})}),\" and say hello. And \",/*#__PURE__*/e(o,{href:\"https://github.com/dagger/dagger\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"starring our GitHub repository\"})}),\" is always appreciated!\"]}),/*#__PURE__*/e(\"p\",{children:\"Thank you for your support, we look forward to Daggerizing many more pipelines with you!\"}),/*#__PURE__*/e(\"p\",{children:\"The Dagger team\"})]});export const richText4=/*#__PURE__*/t(r.Fragment,{children:[/*#__PURE__*/e(\"p\",{children:\"We\u2019re always interested in hearing how our community is using Dagger \u2013 their use cases, their challenges, and their experiences with deploying Dagger in different environments. Our Discord is a great place to find these stories, and to benefit from the knowledge and experience of the Dagger community.\"}),/*#__PURE__*/t(\"p\",{children:[\"In this blog post, we\u2019ll share the story of Daggernaut M\\xe1rk S\\xe1gi-Kaz\\xe1r (aka @sagikazarmark on Discord). Mark is the Head of Open Source at \",/*#__PURE__*/e(o,{href:\"https://openmeter.io/\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"OpenMeter\"})}),\", which develops an open source product to help engineers monetize AI products and standardize usage metering. When Mark joined OpenMeter, he was already an active Dagger user and contributor to the Dagger project. He was determined not to rebuild the typical CI mess he'd seen elsewhere and so, he decided to build OpenMeter\u2019s delivery pipelines with Dagger. Today, OpenMeter is using Dagger Functions and Dagger Cloud in multiple production pipelines, and Mark is extremely happy with the results.\"]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:/*#__PURE__*/e(\"strong\",{children:'\"Dagger is going to be a market disruptor because it completely changes how software development works. It\\'s just completely different from all of the other approaches out there, and obviously superior in a lot of ways.\" - M\\xe1rk S\\xe1gi-Kaz\\xe1r, Head of Open Source, OpenMeter'})})}),/*#__PURE__*/e(\"h3\",{children:\"Exploring Solutions to Improve Developer Effectiveness\"}),/*#__PURE__*/e(\"p\",{children:\"Mark is a seasoned platform engineer, and has a deep understanding of the struggles and challenges with popular CI/CD tools. Some of the problems he has experienced in the past are:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"The \u201Cpush and pray\u201D problem: Mark said that to him, this is not a marketing slogan, but a very real problem that he sees developers experiencing every day. He has seen developers waste hours re-running their pipelines in CI, unable to figure out if the bug is in their code, their tests or the pipeline itself.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:'Inconsistent environments: Very often, tests succeed locally but fail in CI. This \"works on my machine\" problem is familiar to almost all developers and platform engineers, and the reason is that development and CI environments often differ drastically.'})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Onboarding friction: The previous problem also directly affects developer productivity. Manually configuring developer environments with all the required dependencies and tools can take days, increasing the time for developers to become productive and start contributing useful code.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Lack of reusability: Creating a bespoke pipeline for every application is time-consuming. Maintaining those pipelines as tools and needs evolve over time is an additional challenge.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"When Mark joined OpenMeter, he was keen to implement a platform that solved all these problems. He wanted a toolchain that eliminated push and pray for developers, made it easy to create standardized environments, and was compatible with DRY (Don't Repeat Yourself) principles so that he could quickly leverage existing pipelines to create new ones.\\xa0\"}),/*#__PURE__*/t(\"p\",{children:[\"This focus on improving the overall experience, for both OpenMeter's developers and platform engineers, first led him to Dagger in its \",/*#__PURE__*/e(o,{href:\"https://dagger.io/blog/dagger-0-2\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Europa release\"})}),\", and he has been a fan and early adopter of Dagger since then.\"]}),/*#__PURE__*/e(\"p\",{children:\"Mark was attracted to Dagger initially because of its ability to create completely self-contained project environments with all dependencies installed, regardless of operating system. Built-in caching, native-language SDKs, and fast local runs were also key factors in his selection of Dagger for OpenMeter's delivery pipelines.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:/*#__PURE__*/e(\"strong\",{children:'\"I know there are lots of struggles with tools and environments all the time. I\\'ve always been trying to minimize that struggle. When I discovered Dagger, I realized it was a huge step forward. Being able to write the pipeline in the language that you and your developers know - that\u2019s a very important and very underappreciated feature.\"\\xa0 '})})}),/*#__PURE__*/e(\"h3\",{children:\"Using Dagger in Production: Testing, Releasing, and Deploying\\xa0\"}),/*#__PURE__*/e(\"p\",{children:'To implement OpenMeter\\'s Daggerized pipelines, Mark followed a \"bottom up\" approach.\\xa0'}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"He first created a number of lower-order Dagger Functions, to handle individual tasks like linting, code formatting, compiling, running tests, and so on.\\xa0\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:'He then created higher-order Dagger Functions that sequenced the lower-order ones to \"run all linters\", \"run all tests\", \"build for all platforms\", and so on.\\xa0'})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Finally, he connected the higher-order Dagger Functions together to create a complete pipeline, also expressed as a Dagger Function.\"})})]}),/*#__PURE__*/e(\"p\",{children:\"The advantage of this approach is that developers can now run an entire pipeline with a single Dagger Function call instead of running each step individually. At the same time, they have the option to call the lower-order Dagger Functions individually to hunt down specific bugs or localized problems. To make debugging easier, Mark and his colleagues also use the Traces feature in Dagger Cloud to visualize Dagger Function calls and zoom into errors.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:/*#__PURE__*/e(\"strong\",{children:'\"When it comes to the actual software pipelines, everything is implemented in Dagger. So before I commit and push code, I can run everything locally. The caching is also great; I\u2019ve experienced a lot of improvements after converting some projects to Dagger.\u201D\\xa0 '})})}),/*#__PURE__*/e(\"p\",{children:\"In addition to Daggerizing OpenMeter\u2019s CI pipeline, Mark is using Dagger for:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Release management: Mark has implemented OpenMeter's release pipelines entirely in Dagger, for both its open source and private repositories. This Dagger pipeline is responsible for building containers, Helm charts and client SDKs, and then pushing these artifacts to various registries and application package repositories like PyPi and NPM.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Continuous delivery: Mark has recently updated OpenMeter's continuous delivery pipeline to use a combination of Dagger and Flux. Previously, OpenMeter used Flux to update its GitOps resources based on the latest versions in the container registry. Since releases are now managed through Dagger, Mark decided to Daggerize part of this pipeline and have Dagger update the GitOps resources on every release (Flux continues to manage the actual deployment process).\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Snapshotting: OpenMeter uses Dagger to snapshot its ongoing development, by automatically publishing container images for every commit made to its `main` branch.\"})})]}),/*#__PURE__*/e(\"h3\",{children:\"Benefits: Maximum Satisfaction for both Developers and Platform Engineers\"}),/*#__PURE__*/e(\"p\",{children:\"Mark is extremely happy with Dagger, for a number of reasons:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:'No \"push and pray\": With Dagger, developers are able to run tests and create builds locally in exactly the same way as the real CI environment. Failures, if any, are identified and fixed locally. Developers know that if the pipeline passes locally, it will also pass in CI, and this consistency eliminates both project risk and developer frustration.'})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Zero onboarding friction: When new developers join OpenMeter, the onboarding is almost an afterthought. The only thing they need is Dagger (and Docker) installed on their development machines, and everything else is installed or run automatically. Every developer operates in the same standardized environment.\"})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:/*#__PURE__*/e(\"strong\",{children:'\"Developers at OpenMeter are able to submit PRs on day one. Dagger plays a huge role in that.\"\\xa0 '})})}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Fast feedback loop: Streamlined pipelines, caching, and the ability to run pipelines locally mean that time waiting is minimized.\\xa0 For example, if a developer changes a dependency, he or she can run the pipeline locally to confirm it all still works, instead of having to wait for a remote CI runner to pick up the change. This is a huge benefit to the business, because the shorter feedback loop allows the team to develop and push code much faster.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Dagger modules are reusable and extensible, which means that Mark is able to create new Daggerized pipelines simply by chaining his existing battle-tested and proven Dagger Functions together in new combinations. This has improved his productivity significantly, and also allowed him to gain greater insights into how to optimize his Dagger Functions for different usage scenarios.\"})})]}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:/*#__PURE__*/e(\"strong\",{children:'\"I spend a fair bit of time on building Dagger modules or trying to find the right API and the right experience. A lot of people told me that they were going to build a certain module, but then found on the Daggerverse that I\\'d already built the module they needed.\"\\xa0 '})})}),/*#__PURE__*/e(\"h3\",{children:\"Leveraging Dagger Cloud to Analyze and Improve Performance\"}),/*#__PURE__*/e(\"p\",{children:\"Although Mark and the OpenMeter team are happy with their Daggerized pipelines, Mark is keen to improve them even further. For example, he plans to enhance the snapshotting workflow to also publish Helm charts and some of the SDK packages as build artifacts.\"}),/*#__PURE__*/e(\"p\",{children:\"Mark is also looking to Dagger Cloud to provide better observability and metrics. On his wishlist are metrics to better understand changes in build performance over time, improved visibility into cache hits and misses, and UX improvements to find the source of pipeline failures quicker.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"em\",{children:/*#__PURE__*/e(\"strong\",{children:'\"Dagger has never stopped amazing me. The first release of the language SDKs was revolutionary, and then there was the Zenith release with Dagger Functions. I really believe that Dagger is on the right path to revolutionize the whole developer environment and CI/CD space.\"\\xa0 '})})}),/*#__PURE__*/t(\"p\",{children:[\"Do you have a Dagger story you\u2019d like us to feature? Tell us all about it in \",/*#__PURE__*/e(o,{href:\"https://discord.gg/dagger-io\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Discord\"})}),\".\"]}),/*#__PURE__*/e(\"h3\",{children:\"Mark\u2019s Top Tips for Aspiring Daggernauts\"}),/*#__PURE__*/e(\"p\",{children:\"Mark is an active contributor to the Dagger community, and often provides feedback to the Dagger team on new features. He enjoys building and contributing Dagger modules, all of which are publicly available in the Daggerverse.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"So, we asked Mark for his top suggestions for platform engineers and DevOps professionals just getting started with Dagger. Here's what he said:\"}),/*#__PURE__*/t(\"ol\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"If you're like me and you like learning by example, start with the Dagger \",/*#__PURE__*/e(o,{href:\"http://docs.dagger.io/quickstart\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"quickstart\"})}),\". It shows you how to build a simple Dagger module and along the way, it introduces you to all the key components you need to know, including the Dagger CLI, the Dagger API, Dagger Functions, the Daggerverse, ...\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Take a look at my modules in the \",/*#__PURE__*/e(o,{href:\"https://daggerverse.dev/\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Daggerverse\"})}),\" to understand how Dagger works. A good one to start with if you have a Go project, is my \",/*#__PURE__*/e(o,{href:\"https://daggerverse.dev/mod/github.com/sagikazarmark/daggerverse/go@4341f097b207ddcb180817a6a3fe974947a47490\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Go builder module\"})}),\". It's built very similarly to how you would use the Go tool itself. So, for example, if you want to build a binary, I have a build function in my Go module and you can \u201Cdagger call\u201D it to build your Go project.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"Pick an existing project with a Dockerfile and convert it to Dagger. The API of Dagger is fairly similar to that of a Dockerfile. Producing the same container image with Dagger will give you an easy bridge to start understanding how Dagger works. Then, try to do something more complex: once you have your image, try using Dagger to push it to a registry or deploy it somewhere. The \",/*#__PURE__*/e(o,{href:\"http://docs.dagger.io/cookbook\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Dagger Cookbook\"})}),\" and the \",/*#__PURE__*/e(o,{href:\"http://daggerverse.dev/\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Daggerverse\"})}),\" have lots of example code you can use for inspiration.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"If you have questions, \",/*#__PURE__*/e(o,{href:\"https://discord.com/channels/707636530424053791/1030538312508776540\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"ping the Dagger team in the #help channel on Discord\"})}),\". They are super responsive and quick to help or provide advice.\"]})})]})]});export const richText5=/*#__PURE__*/t(r.Fragment,{children:[/*#__PURE__*/t(\"p\",{children:[\"A key challenge when working with AI models is to ensure that the information generated by the model is relevant, timely and context-sensitive. \",/*#__PURE__*/e(o,{href:\"https://en.wikipedia.org/wiki/Retrieval-augmented_generation\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Retrieval-Augmented Generation (RAG)\"})}),\" is a technique to achieve this, where generative AI models are linked with additional relevant data sources to improve the accuracy of answers generated by the model.\"]}),/*#__PURE__*/e(\"p\",{children:\"Since models have a limit on the context they can receive, it is necessary to split large data inputs into smaller chunks and send only the relevant chunks to the model. Relevancy is determined by generating vector representations of the data chunks and then using mathematical functions to determine which chunks are most relevant to the question being asked of the model.\"}),/*#__PURE__*/t(\"p\",{children:[\"A number of tools are available to do this, and a popular and easy-to-use example is the \",/*#__PURE__*/e(o,{href:\"https://www.llamaindex.ai/\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"LlamaIndex framework\"})}),\". This framework includes a \",/*#__PURE__*/e(o,{href:\"https://docs.llamaindex.ai/en/stable/getting_started/starter_tools/rag_cli/\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"RAG CLI\"})}),\", \",/*#__PURE__*/e(\"code\",{children:\"llamaindex-cli\"}),\", which does all the heavy lifting: indexing and vectorizing data, integrating with a language model, and handling queries and responses.\"]}),/*#__PURE__*/e(\"p\",{children:\"The RAG CLI doesn't live in isolation, though: it still needs a pipeline that delivers data to it.\\xa0 Building this data pipeline usually involves interacting with multiple tools and processes. The typical way to do this is messy and unreliable, using shell scripting \u201Cglue\u201D or by \u201Cshelling out\u201D from Python or another programming language. This is where Dagger can help!\"}),/*#__PURE__*/e(\"h3\",{children:\"Dagger for Data Pipelines\"}),/*#__PURE__*/e(\"p\",{children:\"Using Dagger ensures that your data pipeline always works consistently across operating systems and environments, by encapsulating all the workflows that make up a data pipeline - retrieving or extracting data, transforming data, storing data -\\xa0 into reusable, standardized Dagger Functions.\\xa0\"}),/*#__PURE__*/e(\"p\",{children:\"In a recent community call, Marcos Nils demonstrated how to use Dagger with LlamaIndex to build a RAG data pipeline for YouTube videos. His pipeline consists of two Dagger Functions:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"A lower-level Dagger Function named \",/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(o,{href:\"https://daggerverse.dev/mod/github.com/marcosnils/daggerverse/gptools@c3f85409f535112047ef609885e152648826b4ce#Gptools.rag\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"rag\"})})}),\" which accepts a collection of documents and internally calls \",/*#__PURE__*/e(\"code\",{children:\"llamaindex-cli\"}),\" to index and respond to queries on those documents.\"]})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/t(\"p\",{children:[\"A higher-level Dagger Function named \",/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(o,{href:\"https://daggerverse.dev/mod/github.com/marcosnils/daggerverse/gptools@c3f85409f535112047ef609885e152648826b4ce#Gptools.ytChat\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"ytChat\"})})}),\" that accepts a YouTube video URL as data source. This function internally calls \",/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(o,{href:\"https://github.com/ytdl-org/youtube-dl\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"youtube-dl\"})})}),\" to download the YouTube video, \",/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(o,{href:\"https://github.com/openai/whisper\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"whisper\"})})}),\" to transcribe the audio from the video, and \",/*#__PURE__*/e(\"code\",{children:/*#__PURE__*/e(o,{href:\"https://daggerverse.dev/mod/github.com/marcosnils/daggerverse/gptools@c3f85409f535112047ef609885e152648826b4ce#Gptools.rag\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"rag\"})})}),\" to index the transcript and respond to queries.\"]})})]}),/*#__PURE__*/e(\"h3\",{children:\"Benefits\"}),/*#__PURE__*/e(\"p\",{children:\"Why do it this way? Dagger Functions are programmable, reusable and run everything in containers, which means that:\"}),/*#__PURE__*/t(\"ul\",{children:[/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"You can interact with multiple tools and processes using containers and clean, maintainable Python code (or any of the other supported programming languages) instead of relying on messy YAML or unreliable shell scripts.\\xa0\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"You can expose a clean API to your different pipeline functions. This allows you to reuse the same functionality in other projects, or share your code with other users in your organization or community.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"You benefit from all the tooling, best practices and third-party libraries available in your language\u2019s ecosystem.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"Dagger\u2019s container-first approach ensures that your data pipeline runs the same way every time, unaffected by environment differences or operating system variability.\"})}),/*#__PURE__*/e(\"li\",{\"data-preset-tag\":\"p\",children:/*#__PURE__*/e(\"p\",{children:\"You get all the benefits of Dagger's caching, which accelerates pipeline runs significantly.\"})})]}),/*#__PURE__*/e(\"h3\",{children:\"Try It Out!\"}),/*#__PURE__*/e(\"p\",{children:\"Dagger Functions are reusable and can be called at will from anywhere that you can run the Dagger CLI, which means that you can use the same Dagger Functions to query your own local documents or YouTube videos. Here's how:\"}),/*#__PURE__*/t(\"p\",{children:[\"NOTE: The RAG CLI uses OpenAI, which means that \",/*#__PURE__*/e(\"strong\",{children:\"your data will be sent to the OpenAI API\"}),\". You will also need an OpenAI API key to use these Dagger Functions. \",/*#__PURE__*/e(o,{href:\"https://openai.com/api/\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Learn more about the OpenAI API\"})}),\".\"]}),/*#__PURE__*/e(\"h4\",{children:\"Query local documents\"}),/*#__PURE__*/e(\"p\",{children:\"1. Install the Dagger CLI.\"}),/*#__PURE__*/e(\"p\",{children:\"2. Set the OPENAI_API_KEY environment variable to the value of your OpenAI API key.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:\"export OPENAI_API_KEY=YOUR-API-KEY-HERE\"})}),/*#__PURE__*/e(\"p\",{children:\"3. Add all the documents (PDFs, images, text files, ...) you want to index to a local directory.\"}),/*#__PURE__*/e(\"p\",{children:\"4. Call the Dagger Function as below, replacing the placeholders with valid inputs.\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"dagger -m \\ngithub.com/marcosnils/daggerverse/gptools@c3f85409f535112047ef609885e152648826b4ce call rag \\\\\\n\\xa0\\xa0--openai-api-key=env:OPENAI_API_KEY \\\\\\n\\xa0\\xa0--source=YOUR-DOCUMENT-DIR-PATH-HERE \\\\\\n\\xa0\\xa0--question=YOUR-QUESTION-HERE\",language:\"Shell\"})})}),/*#__PURE__*/e(\"h4\",{children:\"Query YouTube videos\"}),/*#__PURE__*/e(\"p\",{children:\"1. Install the Dagger CLI.\"}),/*#__PURE__*/e(\"p\",{children:\"2. Set the OPENAI_API_KEY environment variable to the value of your OpenAI API key.\"}),/*#__PURE__*/e(\"p\",{children:/*#__PURE__*/e(\"code\",{children:\"export OPENAI_API_KEY=YOUR-API-KEY-HERE\"})}),/*#__PURE__*/e(\"p\",{children:\"3. Call the Dagger Function as below, replacing the placeholders with valid inputs.\"}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:pVk4QsoHxASnVtUBp6jr/HTBsNkEMAb7TUGaO3DBy/CodeBlock.js:default\",children:t=>/*#__PURE__*/e(l,{...t,code:\"dagger -m \\ngithub.com/marcosnils/daggerverse/gptools@c3f85409f535112047ef609885e152648826b4ce call yt-chat \\\\\\n\\xa0\\xa0\\xa0--openai-api-key=env:OPENAI_API_KEY \\\\\\n\\xa0\\xa0\\xa0--url=YOUR-YOUTUBE-VIDEO-URL-HERE \\\\\\n\\xa0\\xa0\\xa0--question=YOUR-QUESTION-HERE\",language:\"Shell\"})})}),/*#__PURE__*/t(\"p\",{children:[\"Watch Marcos\u2019 complete demo below, and let us know in \",/*#__PURE__*/e(o,{href:\"https://discord.com/invite/dagger-io\",motionChild:!0,nodeId:\"Px5dOvWXF\",openInNewTab:!1,scopeId:\"contentManagement\",smoothScroll:!1,children:/*#__PURE__*/e(i.a,{children:\"Discord\"})}),\" if you have any questions!\"]}),/*#__PURE__*/e(\"div\",{className:\"framer-text-module\",style:{\"--aspect-ratio\":\"560 / 315\",aspectRatio:\"560 / 315\",height:\"auto\",width:\"100%\"},children:/*#__PURE__*/e(n,{componentIdentifier:\"module:NEd4VmDdsxM3StIUbddO/DDzyuYPF56TuI0bfUu2z/YouTube.js:Youtube\",children:t=>/*#__PURE__*/e(a,{...t,play:\"Off\",shouldMute:!0,thumbnail:\"Medium Quality\",url:\"https://www.youtube.com/watch?v=XXu8JQxE1AU\"})})})]});\nexport const __FramerMetadata__ = {\"exports\":{\"richText4\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText2\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText1\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText5\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"richText3\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],
  "mappings": "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",
  "names": ["richText", "u", "x", "p", "Link", "motion", "ComponentPresetsConsumer", "t", "CodeBlock_default", "Youtube", "richText1", "richText2", "richText3", "richText4", "richText5", "__FramerMetadata__"]
}
