@anthropic-ai/sdk 0.119.0 → 0.120.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/helpers/beta/environments.d.mts +5 -4
  3. package/helpers/beta/environments.d.mts.map +1 -1
  4. package/helpers/beta/environments.d.ts +5 -4
  5. package/helpers/beta/environments.d.ts.map +1 -1
  6. package/helpers/beta/environments.js +5 -4
  7. package/helpers/beta/environments.js.map +1 -1
  8. package/helpers/beta/environments.mjs +5 -4
  9. package/helpers/beta/environments.mjs.map +1 -1
  10. package/internal/file-store.d.mts +136 -0
  11. package/internal/file-store.d.mts.map +1 -0
  12. package/internal/file-store.d.ts +136 -0
  13. package/internal/file-store.d.ts.map +1 -0
  14. package/internal/file-store.js +531 -0
  15. package/internal/file-store.js.map +1 -0
  16. package/internal/file-store.mjs +523 -0
  17. package/internal/file-store.mjs.map +1 -0
  18. package/lib/environments/poller.d.mts +6 -0
  19. package/lib/environments/poller.d.mts.map +1 -1
  20. package/lib/environments/poller.d.ts +6 -0
  21. package/lib/environments/poller.d.ts.map +1 -1
  22. package/lib/environments/poller.js +46 -1
  23. package/lib/environments/poller.js.map +1 -1
  24. package/lib/environments/poller.mjs +46 -1
  25. package/lib/environments/poller.mjs.map +1 -1
  26. package/lib/environments/worker.d.mts +89 -12
  27. package/lib/environments/worker.d.mts.map +1 -1
  28. package/lib/environments/worker.d.ts +89 -12
  29. package/lib/environments/worker.d.ts.map +1 -1
  30. package/lib/environments/worker.js +336 -67
  31. package/lib/environments/worker.js.map +1 -1
  32. package/lib/environments/worker.mjs +336 -68
  33. package/lib/environments/worker.mjs.map +1 -1
  34. package/package.json +1 -1
  35. package/resources/beta/agents/agents.d.mts +322 -27
  36. package/resources/beta/agents/agents.d.mts.map +1 -1
  37. package/resources/beta/agents/agents.d.ts +322 -27
  38. package/resources/beta/agents/agents.d.ts.map +1 -1
  39. package/resources/beta/agents/agents.js.map +1 -1
  40. package/resources/beta/agents/agents.mjs.map +1 -1
  41. package/resources/beta/agents/index.d.mts +1 -1
  42. package/resources/beta/agents/index.d.mts.map +1 -1
  43. package/resources/beta/agents/index.d.ts +1 -1
  44. package/resources/beta/agents/index.d.ts.map +1 -1
  45. package/resources/beta/agents/index.js.map +1 -1
  46. package/resources/beta/agents/index.mjs.map +1 -1
  47. package/resources/beta/beta.d.mts +2 -2
  48. package/resources/beta/beta.d.mts.map +1 -1
  49. package/resources/beta/beta.d.ts +2 -2
  50. package/resources/beta/beta.d.ts.map +1 -1
  51. package/resources/beta/beta.js.map +1 -1
  52. package/resources/beta/beta.mjs.map +1 -1
  53. package/resources/beta/environments/work.d.mts +5 -1
  54. package/resources/beta/environments/work.d.mts.map +1 -1
  55. package/resources/beta/environments/work.d.ts +5 -1
  56. package/resources/beta/environments/work.d.ts.map +1 -1
  57. package/resources/beta/environments/work.js +0 -17
  58. package/resources/beta/environments/work.js.map +1 -1
  59. package/resources/beta/environments/work.mjs +0 -17
  60. package/resources/beta/environments/work.mjs.map +1 -1
  61. package/resources/beta/index.d.mts +1 -1
  62. package/resources/beta/index.d.mts.map +1 -1
  63. package/resources/beta/index.d.ts +1 -1
  64. package/resources/beta/index.d.ts.map +1 -1
  65. package/resources/beta/index.js.map +1 -1
  66. package/resources/beta/index.mjs.map +1 -1
  67. package/resources/beta/messages/messages.d.mts +1 -1
  68. package/resources/beta/messages/messages.d.ts +1 -1
  69. package/resources/messages/messages.d.mts +1 -1
  70. package/resources/messages/messages.d.ts +1 -1
  71. package/src/helpers/beta/environments.ts +5 -4
  72. package/src/internal/file-store.ts +550 -0
  73. package/src/lib/environments/poller.ts +47 -1
  74. package/src/lib/environments/worker.ts +419 -79
  75. package/src/resources/beta/agents/agents.ts +435 -30
  76. package/src/resources/beta/agents/index.ts +17 -0
  77. package/src/resources/beta/beta.ts +34 -0
  78. package/src/resources/beta/environments/work.ts +7 -0
  79. package/src/resources/beta/index.ts +17 -0
  80. package/src/resources/beta/messages/messages.ts +1 -1
  81. package/src/resources/messages/messages.ts +1 -1
  82. package/src/tools/agent-toolset/fs-util.ts +40 -24
  83. package/src/tools/agent-toolset/memories.ts +1017 -0
  84. package/src/tools/agent-toolset/node.browser.ts +68 -0
  85. package/src/tools/agent-toolset/node.ts +139 -53
  86. package/src/tools/agent-toolset/skills.ts +29 -9
  87. package/src/tools/agent-toolset/sync-interval.ts +30 -0
  88. package/src/version.ts +1 -1
  89. package/tools/agent-toolset/fs-util.d.mts +23 -10
  90. package/tools/agent-toolset/fs-util.d.mts.map +1 -1
  91. package/tools/agent-toolset/fs-util.d.ts +23 -10
  92. package/tools/agent-toolset/fs-util.d.ts.map +1 -1
  93. package/tools/agent-toolset/fs-util.js +40 -25
  94. package/tools/agent-toolset/fs-util.js.map +1 -1
  95. package/tools/agent-toolset/fs-util.mjs +38 -25
  96. package/tools/agent-toolset/fs-util.mjs.map +1 -1
  97. package/tools/agent-toolset/memories.d.mts +173 -0
  98. package/tools/agent-toolset/memories.d.mts.map +1 -0
  99. package/tools/agent-toolset/memories.d.ts +173 -0
  100. package/tools/agent-toolset/memories.d.ts.map +1 -0
  101. package/tools/agent-toolset/memories.js +902 -0
  102. package/tools/agent-toolset/memories.js.map +1 -0
  103. package/tools/agent-toolset/memories.mjs +895 -0
  104. package/tools/agent-toolset/memories.mjs.map +1 -0
  105. package/tools/agent-toolset/node.browser.d.mts +31 -0
  106. package/tools/agent-toolset/node.browser.d.mts.map +1 -1
  107. package/tools/agent-toolset/node.browser.d.ts +31 -0
  108. package/tools/agent-toolset/node.browser.d.ts.map +1 -1
  109. package/tools/agent-toolset/node.browser.js +59 -1
  110. package/tools/agent-toolset/node.browser.js.map +1 -1
  111. package/tools/agent-toolset/node.browser.mjs +54 -0
  112. package/tools/agent-toolset/node.browser.mjs.map +1 -1
  113. package/tools/agent-toolset/node.d.mts +54 -22
  114. package/tools/agent-toolset/node.d.mts.map +1 -1
  115. package/tools/agent-toolset/node.d.ts +54 -22
  116. package/tools/agent-toolset/node.d.ts.map +1 -1
  117. package/tools/agent-toolset/node.js +83 -44
  118. package/tools/agent-toolset/node.js.map +1 -1
  119. package/tools/agent-toolset/node.mjs +77 -44
  120. package/tools/agent-toolset/node.mjs.map +1 -1
  121. package/tools/agent-toolset/skills.d.mts +16 -7
  122. package/tools/agent-toolset/skills.d.mts.map +1 -1
  123. package/tools/agent-toolset/skills.d.ts +16 -7
  124. package/tools/agent-toolset/skills.d.ts.map +1 -1
  125. package/tools/agent-toolset/skills.js +27 -9
  126. package/tools/agent-toolset/skills.js.map +1 -1
  127. package/tools/agent-toolset/skills.mjs +27 -9
  128. package/tools/agent-toolset/skills.mjs.map +1 -1
  129. package/tools/agent-toolset/sync-interval.d.mts +19 -0
  130. package/tools/agent-toolset/sync-interval.d.mts.map +1 -0
  131. package/tools/agent-toolset/sync-interval.d.ts +19 -0
  132. package/tools/agent-toolset/sync-interval.d.ts.map +1 -0
  133. package/tools/agent-toolset/sync-interval.js +29 -0
  134. package/tools/agent-toolset/sync-interval.js.map +1 -0
  135. package/tools/agent-toolset/sync-interval.mjs +25 -0
  136. package/tools/agent-toolset/sync-interval.mjs.map +1 -0
  137. package/version.d.mts +1 -1
  138. package/version.d.ts +1 -1
  139. package/version.js +1 -1
  140. package/version.mjs +1 -1
@@ -21,16 +21,24 @@ export {
21
21
  type BetaManagedAgentsAlwaysAskPolicy,
22
22
  type BetaManagedAgentsAnthropicSkill,
23
23
  type BetaManagedAgentsAnthropicSkillParams,
24
+ type BetaManagedAgentsBashToolConfig,
25
+ type BetaManagedAgentsBashToolConfigParams,
24
26
  type BetaManagedAgentsCustomSkill,
25
27
  type BetaManagedAgentsCustomSkillParams,
26
28
  type BetaManagedAgentsCustomTool,
27
29
  type BetaManagedAgentsCustomToolInputSchema,
28
30
  type BetaManagedAgentsCustomToolParams,
31
+ type BetaManagedAgentsEditToolConfig,
32
+ type BetaManagedAgentsEditToolConfigParams,
29
33
  type BetaManagedAgentsEffortHigh,
30
34
  type BetaManagedAgentsEffortLow,
31
35
  type BetaManagedAgentsEffortMax,
32
36
  type BetaManagedAgentsEffortMedium,
33
37
  type BetaManagedAgentsEffortXhigh,
38
+ type BetaManagedAgentsGlobToolConfig,
39
+ type BetaManagedAgentsGlobToolConfigParams,
40
+ type BetaManagedAgentsGrepToolConfig,
41
+ type BetaManagedAgentsGrepToolConfigParams,
34
42
  type BetaManagedAgentsMCPServerURLDefinition,
35
43
  type BetaManagedAgentsMCPToolConfig,
36
44
  type BetaManagedAgentsMCPToolConfigParams,
@@ -44,9 +52,18 @@ export {
44
52
  type BetaManagedAgentsMultiagentCoordinator,
45
53
  type BetaManagedAgentsMultiagentCoordinatorParams,
46
54
  type BetaManagedAgentsMultiagentSelfParams,
55
+ type BetaManagedAgentsReadToolConfig,
56
+ type BetaManagedAgentsReadToolConfigParams,
47
57
  type BetaManagedAgentsSessionThreadAgent,
48
58
  type BetaManagedAgentsSkillParams,
49
59
  type BetaManagedAgentsURLMCPServerParams,
60
+ type BetaManagedAgentsUserLocation,
61
+ type BetaManagedAgentsWebFetchToolConfig,
62
+ type BetaManagedAgentsWebFetchToolConfigParams,
63
+ type BetaManagedAgentsWebSearchToolConfig,
64
+ type BetaManagedAgentsWebSearchToolConfigParams,
65
+ type BetaManagedAgentsWriteToolConfig,
66
+ type BetaManagedAgentsWriteToolConfigParams,
50
67
  type AgentCreateParams,
51
68
  type AgentRetrieveParams,
52
69
  type AgentUpdateParams,
@@ -4280,7 +4280,7 @@ export interface BetaSkill {
4280
4280
  type: 'anthropic' | 'custom';
4281
4281
 
4282
4282
  /**
4283
- * Skill version or 'latest' for most recent version
4283
+ * The resolved version: a skill version ID for custom skills.
4284
4284
  */
4285
4285
  version: string;
4286
4286
  }
@@ -2196,7 +2196,7 @@ export interface ContainerSkill {
2196
2196
  type: 'anthropic' | 'custom';
2197
2197
 
2198
2198
  /**
2199
- * Skill version or 'latest' for most recent version
2199
+ * The resolved version: a skill version ID for custom skills.
2200
2200
  */
2201
2201
  version: string;
2202
2202
  }
@@ -15,13 +15,25 @@ export const DIR_CREATE_MODE = 0o755;
15
15
  /** Mode for files the file tools create. */
16
16
  export const FILE_CREATE_MODE = 0o644;
17
17
 
18
- /** `realpath` `p`, or return `p` unchanged when it cannot be resolved. */
19
- async function realpathOrSelf(p: string): Promise<string> {
20
- try {
21
- return await fs.realpath(p);
22
- } catch {
23
- return p;
18
+ /** True when `p` is `root` itself or lexically contained within it. */
19
+ export function isWithin(root: string, p: string): boolean {
20
+ const rel = path.relative(root, p);
21
+ return rel === '' || (!rel.startsWith('..' + path.sep) && rel !== '..' && !path.isAbsolute(rel));
22
+ }
23
+
24
+ /**
25
+ * The first entry of `roots` whose canonical form contains the
26
+ * already-canonical `target`, returned as configured; `undefined` when none
27
+ * does. Each root goes through {@link canonicalize} at check time, exactly like
28
+ * the workdir in {@link confineToRoot}, so granting access (`allowedRoots`)
29
+ * and refusing writes (`readOnlyRoots`) can never resolve the same entry two
30
+ * different ways.
31
+ */
32
+ export async function containingRoot(roots: readonly string[], target: string): Promise<string | undefined> {
33
+ for (const root of roots) {
34
+ if (isWithin(await canonicalize(path.resolve(root)), target)) return root;
24
35
  }
36
+ return undefined;
25
37
  }
26
38
 
27
39
  /** Matches Linux MAXSYMLINKS, the threshold at which `realpath` itself reports ELOOP. */
@@ -79,17 +91,19 @@ export async function canonicalize(abs: string): Promise<string> {
79
91
  }
80
92
 
81
93
  /**
82
- * Resolve `p` and confine it to `root`.
94
+ * Resolve `p` against `root` and confine it to `root` or one of `allowedRoots`
95
+ * (absolute paths, resolved at check time exactly like `root`).
83
96
  *
84
97
  * Absolute and relative inputs go through the same canonicalise-then-contain
85
- * check — an absolute path that lands inside `root` is permitted, only paths
86
- * that resolve *outside* are rejected. Every symlink in `p` (including the
87
- * leaf, even a dangling one) is resolved before the confinement check, and the
88
- * resolved path is what the caller then operates on, so a symlink inside `root`
89
- * that points outside it can neither pass the check nor be followed afterwards.
90
- * `..` is collapsed lexically before any symlink is followed. A path that cannot
91
- * be resolved (symlink loop, unreadable component) is rejected with a
92
- * `ToolError` naming `p`, never the host's absolute path.
98
+ * check — an absolute path that lands inside a permitted root is accepted,
99
+ * only paths that resolve *outside* all of them are rejected. Every symlink in
100
+ * `p` (including the leaf, even a dangling one) is resolved before the
101
+ * confinement check, and the resolved path is what the caller then operates
102
+ * on, so a symlink inside `root` that points outside it can neither pass the
103
+ * check nor be followed afterwards. `..` is collapsed lexically before any
104
+ * symlink is followed. A path that cannot be resolved (symlink loop, unreadable
105
+ * component) is rejected with a `ToolError` naming `p`, never the host's
106
+ * absolute path.
93
107
  *
94
108
  * Residual TOCTOU: a component could still be swapped for a symlink between this
95
109
  * call and the eventual `fs` operation. Closing that fully needs per-component
@@ -99,22 +113,24 @@ export async function canonicalize(abs: string): Promise<string> {
99
113
  export async function confineToRoot(
100
114
  root: string,
101
115
  p: string,
102
- opts?: { allowOutside?: boolean },
116
+ opts?: { allowedRoots?: readonly string[] },
103
117
  ): Promise<string> {
104
- const allowOutside = opts?.allowOutside ?? false;
105
- const realRoot = await realpathOrSelf(path.resolve(root));
106
- const abs = path.resolve(realRoot, p);
107
- if (allowOutside) return abs;
118
+ const allowedRoots = opts?.allowedRoots ?? [];
119
+ const realRoot = await canonicalize(path.resolve(root));
108
120
  let real: string;
109
121
  try {
110
- real = await canonicalize(abs);
122
+ real = await canonicalize(path.resolve(realRoot, p));
111
123
  } catch (err) {
112
124
  throw new ToolError(fsErrorMessage(err, `path ${JSON.stringify(p)}`));
113
125
  }
114
- if (real !== realRoot && !real.startsWith(realRoot + path.sep)) {
115
- throw new ToolError(`path ${JSON.stringify(p)} escapes workdir`);
126
+ if (isWithin(realRoot, real) || (await containingRoot(allowedRoots, real)) !== undefined) {
127
+ return real;
116
128
  }
117
- return real;
129
+ const permitted =
130
+ allowedRoots.length ?
131
+ "the session's working directory and its other permitted directories"
132
+ : "the session's working directory";
133
+ throw new ToolError(`path ${JSON.stringify(p)} is outside ${permitted}`);
118
134
  }
119
135
 
120
136
  /**