{
  "@context": "https://schema.org",
  "@id": "https://aggr.aymericbeaumet.com/items/ampcode-com/2025-10-03-amp-typescript-sdk/#webpage",
  "@type": [
    "WebPage",
    "ArchiveComponent"
  ],
  "articleBody": "Today we've launched the Amp TypeScript SDK. It allows you to programmatically use the Amp agent in your TypeScript programs.\n\nHere is a program, for example, that instructs the Amp agent to find and list specific files in a folder using a [custom toolbox tool](https://ampcode.com/news/toolboxes):\n\n```typescript\nimport { AmpOptions, execute } from '@ampcode/sdk'\nimport path from 'path'\n\nconst prompt = `\n\tWhat files use authentication in this directory?\n\tGo through all the files and folders.\n\tUse the format_file_tree tool to format results.\n\tOnly output the file tree.\n`\n\nconst options: AmpOptions = {\n\tcwd: path.join(process.cwd(), 'src'), // Run in `./src` folder\n\tdangerouslyAllowAll: true, // Allow all tools, trust in Amp\n\ttoolbox: path.join(process.cwd(), 'toolbox'), // Location of custom toolbox\n}\n\n// execute starts the agent and streams messages\nconst messages = execute({ prompt, options })\n\nfor await (const message of messages) {\n\t// A system message contains information about the current session\n\tif (message.type === 'system') {\n\t\tconsole.log(`Started thread: ${message.session_id}`)\n\n\t\t// For example, the custom tools that were found in the toolbox\n\t\tconsole.log(\n\t\t\t'Available tools in Toolbox: ',\n\t\t\tmessage.tools.filter((tool) => tool.startsWith('tb__')).join(', '),\n\t\t)\n\t} else if (message.type === 'assistant') {\n\t\t// An assistant message contains the assistants text replies\n\t\t// or tool uses\n\t\tconsole.log('Assistant:', message)\n\t} else if (message.type === 'result') {\n\t\t// A result message contains the last message of the assistant\n\t\tconsole.log('Files using authentication:', message.result)\n\t}\n}\n```\n\nYou only need to install one package to get started:\n\n```shell-session\n$ npm install @ampcode/sdk\n```\n\nSince you can invoke Amp in any TypeScript program, there are very few limits to what you can build. Here are some ideas and examples of things we've built internally:\n\n- **Code Review Agent**: Automated pull request analysis and feedback\n- **Documentation Generator**: Create and maintain project documentation\n- **Test Automation**: Generate and execute test suites\n- **Migration Assistant**: Help upgrade codebases and refactor legacy code\n- **CI/CD Integration**: Smart build and deployment pipelines\n- **Issue Triage**: Automatically categorize and prioritize bug reports\n\nTo get more ideas and familiar with the SDK, take a look at the examples in the [manual](https://ampcode.com/manual/sdk#advanced-usage).\n",
  "authors": [],
  "captured_at": "2026-10-04T12:50:30.804479567+00:00",
  "category": "programming",
  "content_html": "<p>Today we've launched the Amp TypeScript SDK. It allows you to programmatically use the Amp agent in your TypeScript programs.</p>\n<p>Here is a program, for example, that instructs the Amp agent to find and list specific files in a folder using a <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://ampcode.com/news/toolboxes\">custom toolbox tool</a>:</p>\n<pre><code class=\"language-typescript\"><span class=\"code-snippet\" data-language=\"TypeScript\"><span class=\"syntax-source syntax-js\"><span class=\"syntax-meta syntax-import syntax-js\"><span class=\"syntax-keyword syntax-control syntax-import-export syntax-js\">import</span> <span class=\"syntax-meta syntax-block syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-js\">{</span> <span class=\"syntax-variable syntax-other syntax-readwrite syntax-js\">AmpOptions</span><span class=\"syntax-punctuation syntax-separator syntax-comma syntax-js\">,</span> <span class=\"syntax-variable syntax-other syntax-readwrite syntax-js\">execute</span> <span class=\"syntax-punctuation syntax-section syntax-block syntax-js\">}</span></span> <span class=\"syntax-keyword syntax-control syntax-import-export syntax-js\">from</span> <span class=\"syntax-string syntax-quoted syntax-single syntax-js\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-js\">&#39;</span>@ampcode/sdk<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-js\">&#39;</span></span>\n</span><span class=\"syntax-meta syntax-import syntax-js\"><span class=\"syntax-keyword syntax-control syntax-import-export syntax-js\">import</span> <span class=\"syntax-variable syntax-other syntax-readwrite syntax-js\">path</span> <span class=\"syntax-keyword syntax-control syntax-import-export syntax-js\">from</span> <span class=\"syntax-string syntax-quoted syntax-single syntax-js\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-js\">&#39;</span>path<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-js\">&#39;</span></span>\n\n</span><span class=\"syntax-storage syntax-type syntax-js\">const</span> <span class=\"syntax-variable syntax-other syntax-readwrite syntax-js\">prompt</span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-js\">=</span> <span class=\"syntax-string syntax-template syntax-js\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-template syntax-begin syntax-js\">`</span>\n\tWhat files use authentication in this directory?\n\tGo through all the files and folders.\n\tUse the format_file_tree tool to format results.\n\tOnly output the file tree.\n<span class=\"syntax-punctuation syntax-definition syntax-string syntax-template syntax-end syntax-js\">`</span></span>\n\n<span class=\"syntax-storage syntax-type syntax-js\">const</span> <span class=\"syntax-variable syntax-other syntax-readwrite syntax-js\">options</span>: <span class=\"syntax-variable syntax-other syntax-readwrite syntax-js\">AmpOptions</span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-js\">=</span> <span class=\"syntax-meta syntax-object-literal syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-js\">{</span>\n\t<span class=\"syntax-meta syntax-object-literal syntax-key syntax-js\">cwd</span><span class=\"syntax-punctuation syntax-separator syntax-key-value syntax-js\">:</span> <span class=\"syntax-variable syntax-other syntax-object syntax-js\">path</span><span class=\"syntax-punctuation syntax-accessor syntax-js\">.</span><span class=\"syntax-meta syntax-function-call syntax-method syntax-js\"><span class=\"syntax-variable syntax-function syntax-js\">join</span><span class=\"syntax-meta syntax-group syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">(</span><span class=\"syntax-meta syntax-function-call syntax-method syntax-js\"><span class=\"syntax-support syntax-type syntax-object syntax-process syntax-js\">process</span><span class=\"syntax-punctuation syntax-accessor syntax-js\">.</span><span class=\"syntax-support syntax-function syntax-process syntax-js\">cwd</span><span class=\"syntax-meta syntax-group syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">(</span></span><span class=\"syntax-meta syntax-group syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">)</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-comma syntax-js\">,</span> <span class=\"syntax-string syntax-quoted syntax-single syntax-js\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-js\">&#39;</span>src<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-js\">&#39;</span></span></span><span class=\"syntax-meta syntax-group syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">)</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-comma syntax-js\">,</span> <span class=\"syntax-comment syntax-line syntax-double-slash syntax-js\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-js\">//</span> Run in `./src` folder\n</span>\t<span class=\"syntax-meta syntax-object-literal syntax-key syntax-js\">dangerouslyAllowAll</span><span class=\"syntax-punctuation syntax-separator syntax-key-value syntax-js\">:</span> <span class=\"syntax-constant syntax-language syntax-boolean syntax-true syntax-js\">true</span><span class=\"syntax-punctuation syntax-separator syntax-comma syntax-js\">,</span> <span class=\"syntax-comment syntax-line syntax-double-slash syntax-js\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-js\">//</span> Allow all tools, trust in Amp\n</span>\t<span class=\"syntax-meta syntax-object-literal syntax-key syntax-js\">toolbox</span><span class=\"syntax-punctuation syntax-separator syntax-key-value syntax-js\">:</span> <span class=\"syntax-variable syntax-other syntax-object syntax-js\">path</span><span class=\"syntax-punctuation syntax-accessor syntax-js\">.</span><span class=\"syntax-meta syntax-function-call syntax-method syntax-js\"><span class=\"syntax-variable syntax-function syntax-js\">join</span><span class=\"syntax-meta syntax-group syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">(</span><span class=\"syntax-meta syntax-function-call syntax-method syntax-js\"><span class=\"syntax-support syntax-type syntax-object syntax-process syntax-js\">process</span><span class=\"syntax-punctuation syntax-accessor syntax-js\">.</span><span class=\"syntax-support syntax-function syntax-process syntax-js\">cwd</span><span class=\"syntax-meta syntax-group syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">(</span></span><span class=\"syntax-meta syntax-group syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">)</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-comma syntax-js\">,</span> <span class=\"syntax-string syntax-quoted syntax-single syntax-js\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-js\">&#39;</span>toolbox<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-js\">&#39;</span></span></span><span class=\"syntax-meta syntax-group syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">)</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-comma syntax-js\">,</span> <span class=\"syntax-comment syntax-line syntax-double-slash syntax-js\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-js\">//</span> Location of custom toolbox\n</span><span class=\"syntax-punctuation syntax-section syntax-block syntax-js\">}</span></span>\n\n<span class=\"syntax-comment syntax-line syntax-double-slash syntax-js\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-js\">//</span> execute starts the agent and streams messages\n</span><span class=\"syntax-storage syntax-type syntax-js\">const</span> <span class=\"syntax-variable syntax-other syntax-readwrite syntax-js\">messages</span> <span class=\"syntax-keyword syntax-operator syntax-assignment syntax-js\">=</span> <span class=\"syntax-meta syntax-function-call syntax-js\"><span class=\"syntax-variable syntax-function syntax-js\">execute</span><span class=\"syntax-meta syntax-group syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">(</span><span class=\"syntax-meta syntax-object-literal syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-js\">{</span> <span class=\"syntax-variable syntax-other syntax-readwrite syntax-js\">prompt</span><span class=\"syntax-punctuation syntax-separator syntax-comma syntax-js\">,</span> <span class=\"syntax-variable syntax-other syntax-readwrite syntax-js\">options</span> <span class=\"syntax-punctuation syntax-section syntax-block syntax-js\">}</span></span></span><span class=\"syntax-meta syntax-group syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">)</span></span></span>\n\n<span class=\"syntax-meta syntax-for syntax-js\"><span class=\"syntax-keyword syntax-control syntax-loop syntax-js\">for</span> </span><span class=\"syntax-keyword syntax-control syntax-flow syntax-js\">await</span> <span class=\"syntax-meta syntax-group syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">(</span><span class=\"syntax-variable syntax-other syntax-readwrite syntax-js\">const</span> <span class=\"syntax-variable syntax-other syntax-readwrite syntax-js\">message</span> <span class=\"syntax-keyword syntax-operator syntax-js\">of</span> <span class=\"syntax-variable syntax-other syntax-readwrite syntax-js\">messages</span><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">)</span></span> <span class=\"syntax-meta syntax-block syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-js\">{</span>\n\t<span class=\"syntax-comment syntax-line syntax-double-slash syntax-js\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-js\">//</span> A system message contains information about the current session\n</span>\t<span class=\"syntax-meta syntax-conditional syntax-js\"><span class=\"syntax-keyword syntax-control syntax-conditional syntax-js\">if</span> <span class=\"syntax-meta syntax-group syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">(</span><span class=\"syntax-variable syntax-other syntax-object syntax-js\">message</span><span class=\"syntax-punctuation syntax-accessor syntax-js\">.</span><span class=\"syntax-meta syntax-property syntax-object syntax-js\">type</span> <span class=\"syntax-keyword syntax-operator syntax-comparison syntax-js\">===</span> <span class=\"syntax-string syntax-quoted syntax-single syntax-js\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-js\">&#39;</span>system<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-js\">&#39;</span></span><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">)</span></span> <span class=\"syntax-meta syntax-block syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-js\">{</span>\n\t\t<span class=\"syntax-meta syntax-function-call syntax-method syntax-js\"><span class=\"syntax-support syntax-type syntax-object syntax-console syntax-js\">console</span><span class=\"syntax-punctuation syntax-accessor syntax-js\">.</span><span class=\"syntax-support syntax-function syntax-console syntax-js\">log</span><span class=\"syntax-meta syntax-group syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">(</span><span class=\"syntax-string syntax-template syntax-js\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-template syntax-begin syntax-js\">`</span>Started thread: </span><span class=\"syntax-meta syntax-template syntax-expression syntax-js\"><span class=\"syntax-punctuation syntax-definition syntax-template-expression syntax-begin syntax-js\">${</span></span><span class=\"syntax-meta syntax-template syntax-expression syntax-js\"><span class=\"syntax-source syntax-js syntax-embedded syntax-expression\"><span class=\"syntax-variable syntax-other syntax-object syntax-js\">message</span><span class=\"syntax-punctuation syntax-accessor syntax-js\">.</span><span class=\"syntax-meta syntax-property syntax-object syntax-js\">session_id</span></span><span class=\"syntax-punctuation syntax-definition syntax-template-expression syntax-end syntax-js\">}</span></span><span class=\"syntax-string syntax-template syntax-js\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-template syntax-end syntax-js\">`</span></span></span><span class=\"syntax-meta syntax-group syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">)</span></span></span>\n\n\t\t<span class=\"syntax-comment syntax-line syntax-double-slash syntax-js\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-js\">//</span> For example, the custom tools that were found in the toolbox\n</span>\t\t<span class=\"syntax-meta syntax-function-call syntax-method syntax-js\"><span class=\"syntax-support syntax-type syntax-object syntax-console syntax-js\">console</span><span class=\"syntax-punctuation syntax-accessor syntax-js\">.</span><span class=\"syntax-support syntax-function syntax-console syntax-js\">log</span><span class=\"syntax-meta syntax-group syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">(</span>\n\t\t\t<span class=\"syntax-string syntax-quoted syntax-single syntax-js\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-js\">&#39;</span>Available tools in Toolbox: <span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-js\">&#39;</span></span><span class=\"syntax-punctuation syntax-separator syntax-comma syntax-js\">,</span>\n\t\t\t<span class=\"syntax-variable syntax-other syntax-object syntax-js\">message</span><span class=\"syntax-punctuation syntax-accessor syntax-js\">.</span><span class=\"syntax-meta syntax-property syntax-object syntax-js\">tools</span><span class=\"syntax-punctuation syntax-accessor syntax-js\">.</span><span class=\"syntax-meta syntax-function-call syntax-method syntax-js\"><span class=\"syntax-variable syntax-function syntax-js\">filter</span><span class=\"syntax-meta syntax-group syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">(</span><span class=\"syntax-meta syntax-function syntax-declaration syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-begin syntax-js\">(</span><span class=\"syntax-variable syntax-parameter syntax-function syntax-js\">tool</span><span class=\"syntax-punctuation syntax-section syntax-group syntax-end syntax-js\">)</span><span class=\"syntax-meta syntax-function syntax-declaration syntax-js\"> </span><span class=\"syntax-storage syntax-type syntax-function syntax-arrow syntax-js\">=&gt;</span></span> <span class=\"syntax-meta syntax-block syntax-js\"><span class=\"syntax-variable syntax-other syntax-object syntax-js\">tool</span><span class=\"syntax-punctuation syntax-accessor syntax-js\">.</span><span class=\"syntax-meta syntax-function-call syntax-method syntax-js\"><span class=\"syntax-variable syntax-function syntax-js\">startsWith</span><span class=\"syntax-meta syntax-group syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">(</span><span class=\"syntax-string syntax-quoted syntax-single syntax-js\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-js\">&#39;</span>tb__<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-js\">&#39;</span></span></span><span class=\"syntax-meta syntax-group syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">)</span></span></span></span></span><span class=\"syntax-meta syntax-group syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">)</span></span></span><span class=\"syntax-punctuation syntax-accessor syntax-js\">.</span><span class=\"syntax-meta syntax-function-call syntax-method syntax-js\"><span class=\"syntax-variable syntax-function syntax-js\">join</span><span class=\"syntax-meta syntax-group syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">(</span><span class=\"syntax-string syntax-quoted syntax-single syntax-js\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-js\">&#39;</span>, <span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-js\">&#39;</span></span></span><span class=\"syntax-meta syntax-group syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">)</span></span></span><span class=\"syntax-punctuation syntax-separator syntax-comma syntax-js\">,</span>\n\t\t</span><span class=\"syntax-meta syntax-group syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">)</span></span></span>\n\t</span><span class=\"syntax-meta syntax-block syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-js\">}</span></span></span> <span class=\"syntax-meta syntax-conditional syntax-js\"><span class=\"syntax-keyword syntax-control syntax-conditional syntax-js\">else if</span> <span class=\"syntax-meta syntax-group syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">(</span><span class=\"syntax-variable syntax-other syntax-object syntax-js\">message</span><span class=\"syntax-punctuation syntax-accessor syntax-js\">.</span><span class=\"syntax-meta syntax-property syntax-object syntax-js\">type</span> <span class=\"syntax-keyword syntax-operator syntax-comparison syntax-js\">===</span> <span class=\"syntax-string syntax-quoted syntax-single syntax-js\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-js\">&#39;</span>assistant<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-js\">&#39;</span></span><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">)</span></span> <span class=\"syntax-meta syntax-block syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-js\">{</span>\n\t\t<span class=\"syntax-comment syntax-line syntax-double-slash syntax-js\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-js\">//</span> An assistant message contains the assistants text replies\n</span>\t\t<span class=\"syntax-comment syntax-line syntax-double-slash syntax-js\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-js\">//</span> or tool uses\n</span>\t\t<span class=\"syntax-meta syntax-function-call syntax-method syntax-js\"><span class=\"syntax-support syntax-type syntax-object syntax-console syntax-js\">console</span><span class=\"syntax-punctuation syntax-accessor syntax-js\">.</span><span class=\"syntax-support syntax-function syntax-console syntax-js\">log</span><span class=\"syntax-meta syntax-group syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">(</span><span class=\"syntax-string syntax-quoted syntax-single syntax-js\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-js\">&#39;</span>Assistant:<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-js\">&#39;</span></span><span class=\"syntax-punctuation syntax-separator syntax-comma syntax-js\">,</span> <span class=\"syntax-variable syntax-other syntax-readwrite syntax-js\">message</span></span><span class=\"syntax-meta syntax-group syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">)</span></span></span>\n\t</span><span class=\"syntax-meta syntax-block syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-js\">}</span></span></span> <span class=\"syntax-meta syntax-conditional syntax-js\"><span class=\"syntax-keyword syntax-control syntax-conditional syntax-js\">else if</span> <span class=\"syntax-meta syntax-group syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">(</span><span class=\"syntax-variable syntax-other syntax-object syntax-js\">message</span><span class=\"syntax-punctuation syntax-accessor syntax-js\">.</span><span class=\"syntax-meta syntax-property syntax-object syntax-js\">type</span> <span class=\"syntax-keyword syntax-operator syntax-comparison syntax-js\">===</span> <span class=\"syntax-string syntax-quoted syntax-single syntax-js\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-js\">&#39;</span>result<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-js\">&#39;</span></span><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">)</span></span> <span class=\"syntax-meta syntax-block syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-js\">{</span>\n\t\t<span class=\"syntax-comment syntax-line syntax-double-slash syntax-js\"><span class=\"syntax-punctuation syntax-definition syntax-comment syntax-js\">//</span> A result message contains the last message of the assistant\n</span>\t\t<span class=\"syntax-meta syntax-function-call syntax-method syntax-js\"><span class=\"syntax-support syntax-type syntax-object syntax-console syntax-js\">console</span><span class=\"syntax-punctuation syntax-accessor syntax-js\">.</span><span class=\"syntax-support syntax-function syntax-console syntax-js\">log</span><span class=\"syntax-meta syntax-group syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">(</span><span class=\"syntax-string syntax-quoted syntax-single syntax-js\"><span class=\"syntax-punctuation syntax-definition syntax-string syntax-begin syntax-js\">&#39;</span>Files using authentication:<span class=\"syntax-punctuation syntax-definition syntax-string syntax-end syntax-js\">&#39;</span></span><span class=\"syntax-punctuation syntax-separator syntax-comma syntax-js\">,</span> <span class=\"syntax-variable syntax-other syntax-object syntax-js\">message</span><span class=\"syntax-punctuation syntax-accessor syntax-js\">.</span><span class=\"syntax-meta syntax-property syntax-object syntax-js\">result</span></span><span class=\"syntax-meta syntax-group syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-group syntax-js\">)</span></span></span>\n\t</span><span class=\"syntax-meta syntax-block syntax-js\"><span class=\"syntax-punctuation syntax-section syntax-block syntax-js\">}</span></span></span>\n<span class=\"syntax-punctuation syntax-section syntax-block syntax-js\">}</span></span>\n</span></span></code></pre>\n<p>You only need to install one package to get started:</p>\n<pre><code class=\"language-shell-session\"><span class=\"code-snippet\" data-language=\"Shell-session\">$ npm install @ampcode/sdk\n</span></code></pre>\n<p>Since you can invoke Amp in any TypeScript program, there are very few limits to what you can build. Here are some ideas and examples of things we've built internally:</p>\n<ul>\n<li><strong>Code Review Agent</strong>: Automated pull request analysis and feedback</li>\n<li><strong>Documentation Generator</strong>: Create and maintain project documentation</li>\n<li><strong>Test Automation</strong>: Generate and execute test suites</li>\n<li><strong>Migration Assistant</strong>: Help upgrade codebases and refactor legacy code</li>\n<li><strong>CI/CD Integration</strong>: Smart build and deployment pipelines</li>\n<li><strong>Issue Triage</strong>: Automatically categorize and prioritize bug reports</li>\n</ul>\n<p>To get more ideas and familiar with the SDK, take a look at the examples in the <a target=\"_blank\" rel=\"noopener noreferrer\" href=\"https://ampcode.com/manual/sdk#advanced-usage\">manual</a>.</p>\n",
  "content_markdown": "Today we've launched the Amp TypeScript SDK. It allows you to programmatically use the Amp agent in your TypeScript programs.\n\nHere is a program, for example, that instructs the Amp agent to find and list specific files in a folder using a [custom toolbox tool](https://ampcode.com/news/toolboxes):\n\n```typescript\nimport { AmpOptions, execute } from '@ampcode/sdk'\nimport path from 'path'\n\nconst prompt = `\n\tWhat files use authentication in this directory?\n\tGo through all the files and folders.\n\tUse the format_file_tree tool to format results.\n\tOnly output the file tree.\n`\n\nconst options: AmpOptions = {\n\tcwd: path.join(process.cwd(), 'src'), // Run in `./src` folder\n\tdangerouslyAllowAll: true, // Allow all tools, trust in Amp\n\ttoolbox: path.join(process.cwd(), 'toolbox'), // Location of custom toolbox\n}\n\n// execute starts the agent and streams messages\nconst messages = execute({ prompt, options })\n\nfor await (const message of messages) {\n\t// A system message contains information about the current session\n\tif (message.type === 'system') {\n\t\tconsole.log(`Started thread: ${message.session_id}`)\n\n\t\t// For example, the custom tools that were found in the toolbox\n\t\tconsole.log(\n\t\t\t'Available tools in Toolbox: ',\n\t\t\tmessage.tools.filter((tool) => tool.startsWith('tb__')).join(', '),\n\t\t)\n\t} else if (message.type === 'assistant') {\n\t\t// An assistant message contains the assistants text replies\n\t\t// or tool uses\n\t\tconsole.log('Assistant:', message)\n\t} else if (message.type === 'result') {\n\t\t// A result message contains the last message of the assistant\n\t\tconsole.log('Files using authentication:', message.result)\n\t}\n}\n```\n\nYou only need to install one package to get started:\n\n```shell-session\n$ npm install @ampcode/sdk\n```\n\nSince you can invoke Amp in any TypeScript program, there are very few limits to what you can build. Here are some ideas and examples of things we've built internally:\n\n- **Code Review Agent**: Automated pull request analysis and feedback\n- **Documentation Generator**: Create and maintain project documentation\n- **Test Automation**: Generate and execute test suites\n- **Migration Assistant**: Help upgrade codebases and refactor legacy code\n- **CI/CD Integration**: Smart build and deployment pipelines\n- **Issue Triage**: Automatically categorize and prioritize bug reports\n\nTo get more ideas and familiar with the SDK, take a look at the examples in the [manual](https://ampcode.com/manual/sdk#advanced-usage).\n",
  "dateCreated": "2026-10-04T12:50:30.804479567+00:00",
  "date_created": "2025-10-03T00:00:00+00:00",
  "date_modified": "2025-10-03T00:00:00+00:00",
  "date_published": "2025-10-03T00:00:00+00:00",
  "description": "Today we've launched the Amp TypeScript SDK. It allows you to programmatically use the Amp agent in your TypeScript programs. Here is a program, for example, that instructs the Amp agent to find and list specific files in a folder using a…",
  "external_url": "https://ampcode.com/news/typescript-sdk",
  "git": {
    "commit": "ebb0941c5c06a2ab2377342d607535262a3e969e",
    "path": "items/ampcode-com/2025/10/2025-10-03-amp-typescript-sdk.md",
    "permalink": "https://github.com/aymericbeaumet/aggr-instance/blob/ebb0941c5c06a2ab2377342d607535262a3e969e/items/ampcode-com/2025/10/2025-10-03-amp-typescript-sdk.md"
  },
  "id": "urn:aggr:item:4c88e68c94fd839db14c1526ff4577a3562cd4e0",
  "isBasedOn": {
    "@id": "https://ampcode.com/news/typescript-sdk"
  },
  "mainEntity": {
    "@id": "https://ampcode.com/news/typescript-sdk",
    "@type": "CreativeWork",
    "archivedAt": {
      "@id": "https://aggr.aymericbeaumet.com/items/ampcode-com/2025-10-03-amp-typescript-sdk/#webpage"
    },
    "dateModified": "2025-10-03T00:00:00+00:00",
    "datePublished": "2025-10-03T00:00:00+00:00",
    "headline": "Amp TypeScript SDK",
    "timeRequired": "PT2M",
    "url": "https://ampcode.com/news/typescript-sdk",
    "wordCount": 312
  },
  "name": "Archived snapshot: Amp TypeScript SDK",
  "preview": null,
  "reading_minutes": 2,
  "replicated_at": null,
  "source": "ampcode-com",
  "source_name": "Amp News",
  "summary": "Today we've launched the Amp TypeScript SDK. It allows you to programmatically use the Amp agent in your TypeScript programs. Here is a program, for example, that instructs the Amp agent to find and list specific files in a folder using a custom toolbox tool: import { AmpOptions, execute } from '@ampcode/sdk' import path from 'path' const prompt = ` What files use authentication in this directory? Go through all the files and folders. Use the format_file_tree tool to format results. Only output the file tree. ` const options: AmpOptions = { cwd: path.join(process.cwd(), 'src'), // Run in `./src` folder dangerouslyAllowAll: true, // Allow all tools, trust in Amp toolbox: path.join(process.cwd(), 'toolbox'), // Location of custom toolbox } // execute starts the agent and streams messages const messages = execute({ prompt, options }) for await (const message of messages) { // A system message contains information about the current session if (message.type === 'system') { console.log(`Started thread: ${message.session_id}`) // For example, the custom tools that were found in the toolbox console.log( 'Available tools in Toolbox: ', message.tools.filter((tool) => tool.startsWith('tb__')).join(', '), ) } else if (message.type === 'assistant') { // An assistant message contains the assistants text replies // or tool uses console.log('Assistant:', message) } else if (message.type === 'result') { // A result message contains the last message of the assistant console.log('Files using authentication:', message.result) } } You only need to install one package to get started: $ npm install @ampcode/sdk Since you can invoke Amp in any TypeScript program, there are very few limits to what you can build. Here are some ideas and examples of things we've built internally: Code Review Agent: Automated pull request analysis and feedback Documentation Generator: Create and maintain project documentation Test Automation: Generate and execute test suites Migration Assistant: Help upgrade codebases and refactor legacy code CI/CD Integration: Smart build and deployment pipelines Issue Triage: Automatically categorize and prioritize bug reports To get more ideas and familiar with the SDK, take a look at the examples in the manual.",
  "tags": [],
  "temporalCoverage": "2026-10-04T12:50:30.804479567+00:00",
  "title": "Amp TypeScript SDK",
  "url": "https://aggr.aymericbeaumet.com/items/ampcode-com/2025-10-03-amp-typescript-sdk/",
  "word_count": 312
}