agency-lang 0.7.0 → 0.7.2

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 (182) hide show
  1. package/dist/lib/agents/agency-agent/agent.agency +169 -28
  2. package/dist/lib/agents/agency-agent/agent.js +579 -152
  3. package/dist/lib/agents/agency-agent/lib/attachments.js +2 -2
  4. package/dist/lib/agents/agency-agent/lib/config.agency +5 -0
  5. package/dist/lib/agents/agency-agent/lib/config.js +11 -0
  6. package/dist/lib/agents/agency-agent/lib/defaultPolicy.agency +106 -0
  7. package/dist/lib/agents/agency-agent/lib/defaultPolicy.js +764 -3
  8. package/dist/lib/agents/agency-agent/lib/modelFilters.js +1 -1
  9. package/dist/lib/agents/agency-agent/lib/resolution.js +4 -4
  10. package/dist/lib/agents/agency-agent/lib/search.js +3 -3
  11. package/dist/lib/agents/agency-agent/lib/settings.js +1 -1
  12. package/dist/lib/agents/agency-agent/lib/utils.js +1 -1
  13. package/dist/lib/agents/agency-agent/shared.agency +22 -0
  14. package/dist/lib/agents/agency-agent/shared.js +160 -3
  15. package/dist/lib/agents/agency-agent/subagents/code.js +1 -1
  16. package/dist/lib/agents/agency-agent/subagents/explorer.js +1 -1
  17. package/dist/lib/agents/agency-agent/subagents/oracle.js +1 -1
  18. package/dist/lib/agents/agency-agent/subagents/research.js +1 -1
  19. package/dist/lib/agents/agency-agent/subagents/review.js +4 -4
  20. package/dist/lib/agents/agency-agent/tests/agentTurn.js +1 -1
  21. package/dist/lib/agents/agency-agent/tests/attachments.js +1 -1
  22. package/dist/lib/agents/agency-agent/tests/attachmentsTurn.js +2 -2
  23. package/dist/lib/agents/agency-agent/tests/gitPolicy.js +3 -3
  24. package/dist/lib/agents/agency-agent/tests/oneShotRounds.agency +20 -0
  25. package/dist/lib/agents/agency-agent/tests/oneShotRounds.js +555 -0
  26. package/dist/lib/agents/agency-agent/tests/oneShotRounds.test.json +9 -0
  27. package/dist/lib/agents/review/agent.js +3 -3
  28. package/dist/lib/cli/doctor.d.ts +8 -0
  29. package/dist/lib/cli/doctor.js +21 -13
  30. package/dist/lib/cli/doctor.test.js +34 -0
  31. package/dist/lib/cli/help.js +1 -5
  32. package/dist/lib/cli/runBundledAgent.d.ts +17 -1
  33. package/dist/lib/cli/runBundledAgent.js +73 -2
  34. package/dist/lib/cli/runBundledAgent.test.d.ts +1 -0
  35. package/dist/lib/cli/runBundledAgent.test.js +96 -0
  36. package/dist/lib/config.d.ts +42 -33
  37. package/dist/lib/config.js +108 -6
  38. package/dist/lib/config.test.js +121 -2
  39. package/dist/lib/ir/prettyPrint.js +25 -4
  40. package/dist/lib/parseCache.js +8 -13
  41. package/dist/lib/parseCache.test.js +5 -8
  42. package/dist/lib/parser.js +5 -12
  43. package/dist/lib/preprocessors/typescriptPreprocessor.d.ts +0 -28
  44. package/dist/lib/preprocessors/typescriptPreprocessor.js +0 -245
  45. package/dist/lib/runtime/configOverrides.d.ts +17 -16
  46. package/dist/lib/runtime/configOverrides.js +27 -16
  47. package/dist/lib/runtime/configOverrides.test.js +116 -2
  48. package/dist/lib/runtime/prompt.js +7 -3
  49. package/dist/lib/runtime/runner.d.ts +2 -2
  50. package/dist/lib/runtime/runner.js +26 -7
  51. package/dist/lib/runtime/state/context.js +9 -2
  52. package/dist/lib/stdlib/llm.d.ts +1 -0
  53. package/dist/lib/stdlib/version.d.ts +1 -1
  54. package/dist/lib/stdlib/version.js +1 -1
  55. package/dist/scripts/agency.d.ts +2 -0
  56. package/dist/scripts/agency.js +55 -12
  57. package/dist/scripts/agency.test.js +73 -1
  58. package/package.json +1 -1
  59. package/stdlib/agency/eval.js +1 -1
  60. package/stdlib/agency.js +1 -1
  61. package/stdlib/agent.agency +9 -9
  62. package/stdlib/agent.js +5 -5
  63. package/stdlib/data/tech/hackernews.js +1 -1
  64. package/stdlib/index.js +15 -15
  65. package/stdlib/llm.agency +2 -1
  66. package/stdlib/llm.js +3 -3
  67. package/stdlib/markdown.js +1 -1
  68. package/stdlib/memory.js +2 -2
  69. package/stdlib/object.js +5 -5
  70. package/stdlib/policy.agency +21 -7
  71. package/stdlib/policy.js +45 -16
  72. package/stdlib/skills.js +1 -1
  73. package/stdlib/strategy.js +3 -3
  74. package/stdlib/thread.js +3 -3
  75. package/stdlib/ui/chart.js +2 -2
  76. package/stdlib/ui/cli.agency +1 -1
  77. package/stdlib/ui/cli.js +1 -1
  78. package/stdlib/ui/layout.js +3 -3
  79. package/stdlib/ui/table.js +2 -2
  80. package/stdlib/ui.js +3 -3
  81. package/dist/lib/agents/docs/cli/cli/agent.md +0 -16
  82. package/dist/lib/agents/docs/cli/cli/compile.md +0 -21
  83. package/dist/lib/agents/docs/cli/cli/coverage.md +0 -112
  84. package/dist/lib/agents/docs/cli/cli/debug.md +0 -41
  85. package/dist/lib/agents/docs/cli/cli/doc.md +0 -98
  86. package/dist/lib/agents/docs/cli/cli/editor-integration.md +0 -44
  87. package/dist/lib/agents/docs/cli/cli/eval-judge.md +0 -72
  88. package/dist/lib/agents/docs/cli/cli/eval.md +0 -194
  89. package/dist/lib/agents/docs/cli/cli/format.md +0 -23
  90. package/dist/lib/agents/docs/cli/cli/index.md +0 -7
  91. package/dist/lib/agents/docs/cli/cli/local.md +0 -92
  92. package/dist/lib/agents/docs/cli/cli/models.md +0 -63
  93. package/dist/lib/agents/docs/cli/cli/optimize.md +0 -338
  94. package/dist/lib/agents/docs/cli/cli/pack.md +0 -56
  95. package/dist/lib/agents/docs/cli/cli/policy.md +0 -23
  96. package/dist/lib/agents/docs/cli/cli/preprocess-and-ast.md +0 -21
  97. package/dist/lib/agents/docs/cli/cli/review.md +0 -16
  98. package/dist/lib/agents/docs/cli/cli/run.md +0 -79
  99. package/dist/lib/agents/docs/cli/cli/schedule.md +0 -89
  100. package/dist/lib/agents/docs/cli/cli/serve.md +0 -52
  101. package/dist/lib/agents/docs/cli/cli/test.md +0 -44
  102. package/dist/lib/agents/docs/cli/cli/trace-and-bundle.md +0 -75
  103. package/dist/lib/agents/docs/cli/cli/typecheck.md +0 -19
  104. package/dist/lib/agents/docs/guide/guide/advanced-types.md +0 -26
  105. package/dist/lib/agents/docs/guide/guide/agency-config-file.md +0 -212
  106. package/dist/lib/agents/docs/guide/guide/agency-packages.md +0 -54
  107. package/dist/lib/agents/docs/guide/guide/agency-stdlib.md +0 -14
  108. package/dist/lib/agents/docs/guide/guide/agency-vs-typescript.md +0 -33
  109. package/dist/lib/agents/docs/guide/guide/attachments.md +0 -56
  110. package/dist/lib/agents/docs/guide/guide/basic-syntax.md +0 -350
  111. package/dist/lib/agents/docs/guide/guide/blocks.md +0 -134
  112. package/dist/lib/agents/docs/guide/guide/build-integration.md +0 -99
  113. package/dist/lib/agents/docs/guide/guide/builtins.md +0 -84
  114. package/dist/lib/agents/docs/guide/guide/callbacks.md +0 -169
  115. package/dist/lib/agents/docs/guide/guide/checkpointing.md +0 -101
  116. package/dist/lib/agents/docs/guide/guide/cli-args.md +0 -190
  117. package/dist/lib/agents/docs/guide/guide/common-functions.md +0 -36
  118. package/dist/lib/agents/docs/guide/guide/compiling-and-running.md +0 -62
  119. package/dist/lib/agents/docs/guide/guide/concurrency.md +0 -108
  120. package/dist/lib/agents/docs/guide/guide/cross-thread-context.md +0 -226
  121. package/dist/lib/agents/docs/guide/guide/custom-providers.md +0 -195
  122. package/dist/lib/agents/docs/guide/guide/debugging.md +0 -67
  123. package/dist/lib/agents/docs/guide/guide/developer-tools.md +0 -90
  124. package/dist/lib/agents/docs/guide/guide/effects-and-raises.md +0 -137
  125. package/dist/lib/agents/docs/guide/guide/effects.md +0 -100
  126. package/dist/lib/agents/docs/guide/guide/error-handling.md +0 -161
  127. package/dist/lib/agents/docs/guide/guide/exercise-1.md +0 -32
  128. package/dist/lib/agents/docs/guide/guide/functions.md +0 -94
  129. package/dist/lib/agents/docs/guide/guide/getting-started.md +0 -35
  130. package/dist/lib/agents/docs/guide/guide/global-var-initialization.md +0 -70
  131. package/dist/lib/agents/docs/guide/guide/global-vs-static.md +0 -76
  132. package/dist/lib/agents/docs/guide/guide/guards.md +0 -134
  133. package/dist/lib/agents/docs/guide/guide/handlers.md +0 -196
  134. package/dist/lib/agents/docs/guide/guide/image-generation.md +0 -113
  135. package/dist/lib/agents/docs/guide/guide/imports-and-packages.md +0 -100
  136. package/dist/lib/agents/docs/guide/guide/interrupts-from-typescript.md +0 -84
  137. package/dist/lib/agents/docs/guide/guide/interrupts-part-2.md +0 -54
  138. package/dist/lib/agents/docs/guide/guide/interrupts.md +0 -139
  139. package/dist/lib/agents/docs/guide/guide/llm-part-2.md +0 -111
  140. package/dist/lib/agents/docs/guide/guide/llm.md +0 -109
  141. package/dist/lib/agents/docs/guide/guide/mcp.md +0 -295
  142. package/dist/lib/agents/docs/guide/guide/memory.md +0 -401
  143. package/dist/lib/agents/docs/guide/guide/message-threads.md +0 -111
  144. package/dist/lib/agents/docs/guide/guide/nodes.md +0 -50
  145. package/dist/lib/agents/docs/guide/guide/observability.md +0 -99
  146. package/dist/lib/agents/docs/guide/guide/partial-application.md +0 -96
  147. package/dist/lib/agents/docs/guide/guide/pattern-matching.md +0 -366
  148. package/dist/lib/agents/docs/guide/guide/policies.md +0 -67
  149. package/dist/lib/agents/docs/guide/guide/schema-parameter-injection.md +0 -101
  150. package/dist/lib/agents/docs/guide/guide/schemas.md +0 -99
  151. package/dist/lib/agents/docs/guide/guide/serving.md +0 -165
  152. package/dist/lib/agents/docs/guide/guide/state-isolation.md +0 -139
  153. package/dist/lib/agents/docs/guide/guide/streaming.md +0 -28
  154. package/dist/lib/agents/docs/guide/guide/tags.md +0 -72
  155. package/dist/lib/agents/docs/guide/guide/testing.md +0 -187
  156. package/dist/lib/agents/docs/guide/guide/troubleshooting.md +0 -86
  157. package/dist/lib/agents/docs/guide/guide/ts-helpers.md +0 -559
  158. package/dist/lib/agents/docs/guide/guide/ts-interop.md +0 -72
  159. package/dist/lib/agents/docs/guide/guide/type-validation.md +0 -187
  160. package/dist/lib/agents/docs/guide/guide/types.md +0 -181
  161. package/dist/lib/agents/docs/guide/guide/unused.md +0 -178
  162. package/dist/lib/agents/docs/guide/guide/unused2.md +0 -258
  163. package/dist/lib/agents/docs/guide/guide/value-parameterized-types.md +0 -186
  164. package/dist/lib/agents/docs/guide/guide/vscode-extension.md +0 -33
  165. package/dist/lib/agents/docs/guide/guide/why-agency.md +0 -323
  166. package/dist/lib/preprocessors/typescriptPreprocessor.config.test.js +0 -327
  167. package/stdlib/browser.js +0 -421
  168. package/stdlib/chart.js +0 -983
  169. package/stdlib/cli.js +0 -1116
  170. package/stdlib/email.js +0 -1104
  171. package/stdlib/imessage.js +0 -377
  172. package/stdlib/keyring.js +0 -803
  173. package/stdlib/layout.js +0 -3657
  174. package/stdlib/oauth.js +0 -862
  175. package/stdlib/schemas.js +0 -223
  176. package/stdlib/search.js +0 -629
  177. package/stdlib/sms.js +0 -419
  178. package/stdlib/table.js +0 -1419
  179. package/stdlib/threads.js +0 -1041
  180. package/stdlib/types.js +0 -222
  181. package/stdlib/validators.js +0 -1606
  182. /package/dist/lib/{preprocessors/typescriptPreprocessor.config.test.d.ts → cli/doctor.test.d.ts} +0 -0
@@ -269,7 +269,7 @@ async function __detectAttachments_impl(msg, maxBytes = __UNSET) {
269
269
  await runner.step(3, async (runner2) => {
270
270
  __stack.locals.seen = [];
271
271
  });
272
- await runner.loop(4, await __call(_scanMediaPaths, {
272
+ await runner.loop(4, async () => await __call(_scanMediaPaths, {
273
273
  type: "positional",
274
274
  args: [__stack.args.msg]
275
275
  }), async (candidate, _, runner2) => {
@@ -641,7 +641,7 @@ async function __modalityFilter_impl(detected) {
641
641
  await runner.step(9, async (runner2) => {
642
642
  __stack.locals.skipped = [...__stack.args.detected.skipped];
643
643
  });
644
- await runner.loop(10, __stack.args.detected.attached, async (item, _, runner2) => {
644
+ await runner.loop(10, async () => __stack.args.detected.attached, async (item, _, runner2) => {
645
645
  await runner2.step(0, async (runner3) => {
646
646
  __stack.locals.noImageInput = __eq(item.attachment.type, `image`) && __eq(__stack.locals.imageOk, false);
647
647
  });
@@ -7,6 +7,11 @@ export static const POLICY_FILE = "policy.json"
7
7
  export static const HISTORY_FILE = "history"
8
8
  export static const POLICY_DIR = path.join(os.homedir(), ".agency-agent")
9
9
  export static const POLICY_PATH = path.join(POLICY_DIR, POLICY_FILE)
10
+ // A --policy built-in is materialized here (not to POLICY_PATH) so a
11
+ // one-off override never clobbers the user's saved policy, and a
12
+ // cwd-scoped built-in can't leak into a later run from another directory.
13
+ export static const SESSION_POLICY_FILE = "session-policy.json"
14
+ export static const SESSION_POLICY_PATH = path.join(POLICY_DIR, SESSION_POLICY_FILE)
10
15
  export static const HISTORY_PATH = path.join(POLICY_DIR, HISTORY_FILE)
11
16
  export static const SETTINGS_FILE = "settings.json"
12
17
  export static const SETTINGS_PATH = path.join(POLICY_DIR, SETTINGS_FILE)
@@ -153,6 +153,8 @@ let POLICY_FILE = __UNINIT_STATIC;
153
153
  let HISTORY_FILE = __UNINIT_STATIC;
154
154
  let POLICY_DIR = __UNINIT_STATIC;
155
155
  let POLICY_PATH = __UNINIT_STATIC;
156
+ let SESSION_POLICY_FILE = __UNINIT_STATIC;
157
+ let SESSION_POLICY_PATH = __UNINIT_STATIC;
156
158
  let HISTORY_PATH = __UNINIT_STATIC;
157
159
  let SETTINGS_FILE = __UNINIT_STATIC;
158
160
  let SETTINGS_PATH = __UNINIT_STATIC;
@@ -176,6 +178,11 @@ async function __initializeStatic(__ctx) {
176
178
  type: "positional",
177
179
  args: [__readStatic(POLICY_DIR, "POLICY_DIR", "dist/lib/agents/agency-agent/lib/config.agency"), __readStatic(POLICY_FILE, "POLICY_FILE", "dist/lib/agents/agency-agent/lib/config.agency")]
178
180
  }));
181
+ SESSION_POLICY_FILE = __deepFreeze(`session-policy.json`);
182
+ SESSION_POLICY_PATH = __deepFreeze(await __callMethod(path, "join", {
183
+ type: "positional",
184
+ args: [__readStatic(POLICY_DIR, "POLICY_DIR", "dist/lib/agents/agency-agent/lib/config.agency"), __readStatic(SESSION_POLICY_FILE, "SESSION_POLICY_FILE", "dist/lib/agents/agency-agent/lib/config.agency")]
185
+ }));
179
186
  HISTORY_PATH = __deepFreeze(await __callMethod(path, "join", {
180
187
  type: "positional",
181
188
  args: [__readStatic(POLICY_DIR, "POLICY_DIR", "dist/lib/agents/agency-agent/lib/config.agency"), __readStatic(HISTORY_FILE, "HISTORY_FILE", "dist/lib/agents/agency-agent/lib/config.agency")]
@@ -242,6 +249,8 @@ function __getStaticVars() {
242
249
  HISTORY_FILE,
243
250
  POLICY_DIR,
244
251
  POLICY_PATH,
252
+ SESSION_POLICY_FILE,
253
+ SESSION_POLICY_PATH,
245
254
  HISTORY_PATH,
246
255
  SETTINGS_FILE,
247
256
  SETTINGS_PATH,
@@ -272,6 +281,8 @@ export {
272
281
  POLICY_DIR,
273
282
  POLICY_FILE,
274
283
  POLICY_PATH,
284
+ SESSION_POLICY_FILE,
285
+ SESSION_POLICY_PATH,
275
286
  SETTINGS_FILE,
276
287
  SETTINGS_PATH,
277
288
  __getCheckpoints,
@@ -120,3 +120,109 @@ export static const recommendedAutoApprovePolicy = {
120
120
  action: "approve"
121
121
  }]
122
122
  }
123
+
124
+ // Glob that matches a directory and everything under it. This is the
125
+ // same convention `std::policy`'s `buildScopedMatch` uses for the
126
+ // interactive "approve-always-here" rule: the exact path OR any nested
127
+ // path. `baseDir` must be absolute (the agent pins it to the launch cwd
128
+ // via `setAgentCwd(cwd())`), so relative paths the model passes resolve
129
+ // into this range and outside paths fall through to prompting.
130
+ def dirScope(baseDir: string): string {
131
+ return "{${baseDir},${baseDir}/**}"
132
+ }
133
+
134
+ // `recommended` plus auto-approval of the mutating file-system and
135
+ // git-write effects, each scoped to `baseDir` and its children; anything
136
+ // outside still prompts. Matched on each effect's path field: `dir`
137
+ // (write/edit/mkdir), `target` (remove), `src`+`dest` (copy/move), `cwd`
138
+ // (git). Confinement is real: write/edit run `filename` through
139
+ // `resolvePath` (rejects `..`/absolute/`~`/symlink) and the scope glob
140
+ // won't match a `..`-containing path.
141
+ export def withWritesPolicy(baseDir: string) {
142
+ const scope = dirScope(baseDir)
143
+ const dirRule = [{ match: { dir: scope }, action: "approve" }]
144
+ const cwdRule = [{ match: { cwd: scope }, action: "approve" }]
145
+ return {
146
+ ...recommendedAutoApprovePolicy,
147
+ "std::write": dirRule,
148
+ "std::writeBinary": dirRule,
149
+ "std::edit": dirRule,
150
+ "std::mkdir": dirRule,
151
+ "std::remove": [{ match: { target: scope }, action: "approve" }],
152
+ "std::copy": [{ match: { src: scope, dest: scope }, action: "approve" }],
153
+ "std::move": [{ match: { src: scope, dest: scope }, action: "approve" }],
154
+ "std::git::add": cwdRule,
155
+ "std::git::commit": cwdRule,
156
+ "std::git::checkout": cwdRule,
157
+ "std::git::switch": cwdRule,
158
+ "std::git::branchCreate": cwdRule,
159
+ "std::git::branchDelete": cwdRule,
160
+ "std::git::stashPush": cwdRule,
161
+ "std::git::stashPop": cwdRule,
162
+ "std::git::restore": cwdRule
163
+ }
164
+ }
165
+
166
+ // `with-writes` plus auto-approval of `std::bash`, scoped to `baseDir`
167
+ // on the command's `cwd`. NOTE: a shell command can still reach outside
168
+ // `baseDir` via an absolute path or `cd` inside the command string —
169
+ // the policy matches the declared `cwd`, not the shell's actual effects,
170
+ // so this is best-effort confinement, not a hard sandbox. It exists so
171
+ // autonomous / sandbox runs (e.g. a benchmark container) can drive the
172
+ // shell without a human answering every approval.
173
+ export def withBashPolicy(baseDir: string) {
174
+ const scope = dirScope(baseDir)
175
+ return {
176
+ ...withWritesPolicy(baseDir),
177
+ "std::bash": [{ match: { cwd: scope }, action: "approve" }]
178
+ }
179
+ }
180
+
181
+ // Built-in policies accepted by the `--policy` flag (anything else is
182
+ // treated as a path to a policy JSON file), in display order with a
183
+ // one-line description each. Single source of truth for the flag's help
184
+ // text and its unknown-value error.
185
+ export static const BUILTIN_POLICIES = [
186
+ {
187
+ name: "recommended",
188
+ description: "Auto-approve reads and web/search; prompt for writes, shell, and git changes. (Default.)"
189
+ },
190
+ {
191
+ name: "minimal",
192
+ description: "Auto-approve only memory and the safe read-only agency subcommands; prompt for everything else."
193
+ },
194
+ {
195
+ name: "with-writes",
196
+ description: "recommended + auto-approve file writes and git changes, scoped to the current directory and its children."
197
+ },
198
+ {
199
+ name: "with-bash",
200
+ description: "with-writes + auto-approve shell commands, scoped to the current directory. Best-effort confinement — use in disposable/sandbox runs."
201
+ },
202
+ ]
203
+
204
+ // Just the built-in names, e.g. for the unknown-value error message.
205
+ export def builtinPolicyNames(): string[] {
206
+ return map(BUILTIN_POLICIES) as p {
207
+ return p.name
208
+ }
209
+ }
210
+
211
+ // Resolve a built-in policy name to a concrete `Policy`, scoping the
212
+ // cwd-relative variants to `baseDir`. Returns null for an unknown name
213
+ // so the caller can fall back to treating the argument as a file path.
214
+ export def builtinPolicy(name: string, baseDir: string) {
215
+ if (name == "minimal") {
216
+ return minimalAutoApprovePolicy
217
+ }
218
+ if (name == "recommended") {
219
+ return recommendedAutoApprovePolicy
220
+ }
221
+ if (name == "with-writes") {
222
+ return withWritesPolicy(baseDir)
223
+ }
224
+ if (name == "with-bash") {
225
+ return withBashPolicy(baseDir)
226
+ }
227
+ return null
228
+ }