agency-lang 0.8.0 → 0.8.1

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 (118) hide show
  1. package/dist/lib/agents/agency-agent/agent.js +13 -11
  2. package/dist/lib/agents/agency-agent/lib/attachments.js +2 -1
  3. package/dist/lib/agents/agency-agent/lib/capabilities.js +19 -18
  4. package/dist/lib/agents/agency-agent/lib/models.js +4 -3
  5. package/dist/lib/agents/agency-agent/lib/resolution.js +5 -4
  6. package/dist/lib/agents/agency-agent/lib/search.js +3 -2
  7. package/dist/lib/agents/agency-agent/lib/settings.js +3 -2
  8. package/dist/lib/agents/agency-agent/lib/slots.js +5 -4
  9. package/dist/lib/agents/agency-agent/lib/utils.js +3 -2
  10. package/dist/lib/agents/agency-agent/prompts/codeSample.js +1 -0
  11. package/dist/lib/agents/agency-agent/shared.js +6 -5
  12. package/dist/lib/agents/agency-agent/subagents/code.agency +5 -0
  13. package/dist/lib/agents/agency-agent/subagents/code.js +13 -2
  14. package/dist/lib/agents/agency-agent/subagents/explorer.agency +2 -0
  15. package/dist/lib/agents/agency-agent/subagents/explorer.js +9 -2
  16. package/dist/lib/agents/agency-agent/subagents/oracle.agency +2 -0
  17. package/dist/lib/agents/agency-agent/subagents/oracle.js +9 -2
  18. package/dist/lib/agents/agency-agent/subagents/research.agency +4 -0
  19. package/dist/lib/agents/agency-agent/subagents/research.js +11 -2
  20. package/dist/lib/agents/agency-agent/subagents/review.js +1 -0
  21. package/dist/lib/agents/agency-agent/subagents/verify.js +4 -1
  22. package/dist/lib/agents/agency-agent/tests/agentTurn.js +12 -11
  23. package/dist/lib/agents/agency-agent/tests/attachments.js +2 -1
  24. package/dist/lib/agents/agency-agent/tests/capabilities.js +2 -1
  25. package/dist/lib/agents/agency-agent/tests/capabilities.test.json +1 -1
  26. package/dist/lib/agents/agency-agent/tests/imageTool.js +3 -2
  27. package/dist/lib/agents/agency-agent/tests/resolution.js +2 -1
  28. package/dist/lib/agents/agency-agent/tests/search.js +2 -1
  29. package/dist/lib/agents/agency-agent/tests/settings.js +8 -7
  30. package/dist/lib/agents/agency-agent/tests/settings.test.json +2 -2
  31. package/dist/lib/agents/agency-agent/tests/toolWiring.js +1 -0
  32. package/dist/lib/agents/eval/goalJudge.js +1 -0
  33. package/dist/lib/agents/eval/judge.js +1 -0
  34. package/dist/lib/agents/eval/judgePairwise.js +1 -0
  35. package/dist/lib/agents/optimize/gepaReflect.js +1 -0
  36. package/dist/lib/agents/optimize/mutatePrompt.js +1 -0
  37. package/dist/lib/agents/policy/agent.js +8 -5
  38. package/dist/lib/agents/review/agent.js +4 -2
  39. package/dist/lib/backends/typescriptBuilder/destructiveTracking.d.ts +63 -0
  40. package/dist/lib/backends/typescriptBuilder/destructiveTracking.js +109 -0
  41. package/dist/lib/backends/typescriptBuilder/destructiveTracking.test.d.ts +1 -0
  42. package/dist/lib/backends/typescriptBuilder/destructiveTracking.test.js +104 -0
  43. package/dist/lib/backends/typescriptBuilder/nameClassifier.js +7 -2
  44. package/dist/lib/backends/typescriptBuilder.d.ts +5 -7
  45. package/dist/lib/backends/typescriptBuilder.integration.test.js +4 -2
  46. package/dist/lib/backends/typescriptBuilder.js +87 -69
  47. package/dist/lib/cli/commands.d.ts +30 -0
  48. package/dist/lib/cli/commands.js +68 -0
  49. package/dist/lib/cli/commands.test.d.ts +1 -0
  50. package/dist/lib/cli/commands.test.js +115 -0
  51. package/dist/lib/cli/diagnosticsDocs.d.ts +8 -0
  52. package/dist/lib/cli/diagnosticsDocs.js +79 -0
  53. package/dist/lib/cli/diagnosticsDocs.test.d.ts +1 -0
  54. package/dist/lib/cli/diagnosticsDocs.test.js +61 -0
  55. package/dist/lib/cli/explain.d.ts +9 -0
  56. package/dist/lib/cli/explain.js +53 -0
  57. package/dist/lib/cli/explain.test.d.ts +1 -0
  58. package/dist/lib/cli/explain.test.js +44 -0
  59. package/dist/lib/compiler/buildSession.js +7 -1
  60. package/dist/lib/runtime/index.d.ts +1 -0
  61. package/dist/lib/runtime/index.js +1 -0
  62. package/dist/lib/runtime/nn.d.ts +13 -0
  63. package/dist/lib/runtime/nn.js +15 -0
  64. package/dist/lib/runtime/nn.test.d.ts +1 -0
  65. package/dist/lib/runtime/nn.test.js +20 -0
  66. package/dist/lib/runtime/prompt.d.ts +11 -0
  67. package/dist/lib/runtime/prompt.js +14 -8
  68. package/dist/lib/stdlib/skills.d.ts +1 -1
  69. package/dist/lib/templates/backends/typescriptGenerator/imports.d.ts +1 -1
  70. package/dist/lib/templates/backends/typescriptGenerator/imports.js +1 -1
  71. package/dist/lib/typeChecker/diagnosticExplanations.d.ts +23 -0
  72. package/dist/lib/typeChecker/diagnosticExplanations.js +326 -0
  73. package/dist/lib/typeChecker/diagnosticExplanations.test.d.ts +1 -0
  74. package/dist/lib/typeChecker/diagnosticExplanations.test.js +52 -0
  75. package/dist/lib/typeChecker/diagnostics.d.ts +40 -5
  76. package/dist/lib/typeChecker/diagnostics.js +23 -5
  77. package/dist/lib/typeChecker/diagnostics.test.js +11 -1
  78. package/dist/lib/typeChecker/formatErrors.test.js +25 -1
  79. package/dist/lib/typeChecker/index.d.ts +8 -0
  80. package/dist/lib/typeChecker/index.js +13 -0
  81. package/dist/scripts/agency.js +57 -50
  82. package/dist/scripts/generateDiagnosticsDocs.d.ts +1 -0
  83. package/dist/scripts/generateDiagnosticsDocs.js +28 -0
  84. package/package.json +1 -1
  85. package/stdlib/agency.agency +93 -20
  86. package/stdlib/agency.js +7 -4
  87. package/stdlib/agent.js +7 -5
  88. package/stdlib/data/finance/dbnomics.js +6 -5
  89. package/stdlib/data/finance/edgar.js +9 -8
  90. package/stdlib/data/finance/fred.js +4 -3
  91. package/stdlib/data/finance/gdelt.js +2 -1
  92. package/stdlib/data/people/littlesis.js +5 -4
  93. package/stdlib/data/tech/hackernews.js +7 -6
  94. package/stdlib/data/tech/yc.js +3 -2
  95. package/stdlib/data/usaspending.js +11 -10
  96. package/stdlib/data/wikidata.js +5 -4
  97. package/stdlib/docs/cli/typecheck.md +3 -1
  98. package/stdlib/docs/diagnostics/checking.md +154 -0
  99. package/stdlib/docs/diagnostics/effects.md +155 -0
  100. package/stdlib/docs/diagnostics/index.md +127 -0
  101. package/stdlib/docs/diagnostics/match.md +25 -0
  102. package/stdlib/docs/diagnostics/names.md +83 -0
  103. package/stdlib/docs/diagnostics/static-init.md +65 -0
  104. package/stdlib/docs/diagnostics/tools.md +305 -0
  105. package/stdlib/docs/diagnostics/types-aliases.md +125 -0
  106. package/stdlib/docs/guide/developer-tools.md +3 -3
  107. package/stdlib/index.js +5 -4
  108. package/stdlib/memory.js +2 -0
  109. package/stdlib/object.js +3 -2
  110. package/stdlib/policy.js +11 -10
  111. package/stdlib/shell.js +2 -1
  112. package/stdlib/skills.agency +6 -4
  113. package/stdlib/skills.js +10 -7
  114. package/stdlib/syntax.js +1 -1
  115. package/stdlib/thread.js +1 -0
  116. package/stdlib/ui/chart.js +2 -2
  117. package/stdlib/ui/layout.js +1 -1
  118. package/stdlib/ui.js +7 -6
@@ -77,6 +77,7 @@ import {
77
77
  stampFailureBoundary,
78
78
  __tryCall,
79
79
  __eq,
80
+ __nn,
80
81
  AgencyFunction as __AgencyFunction,
81
82
  UNSET as __UNSET,
82
83
  __call,
@@ -2341,7 +2342,7 @@ async function __mergedPalette_impl() {
2341
2342
  });
2342
2343
  await runner.loop(4, async () => __stack.locals.builtins, async (key, _, runner2) => {
2343
2344
  await runner2.step(0, async (runner3) => {
2344
- __stack.locals.out[key] = __stack.locals.builtins[key];
2345
+ __stack.locals.out[key] = __nn(__stack.locals.builtins[key]);
2345
2346
  });
2346
2347
  });
2347
2348
  await runner.step(5, async (runner2) => {
@@ -2490,7 +2491,7 @@ async function __switchModel_impl(prior, spec, ctx, before) {
2490
2491
  args: [__stack.args.prior.slots]
2491
2492
  }), async (key, _, runner2) => {
2492
2493
  await runner2.step(0, async (runner3) => {
2493
- __stack.locals.nextSlots[key] = __stack.args.prior.slots[key];
2494
+ __stack.locals.nextSlots[key] = __nn(__stack.args.prior.slots[key]);
2494
2495
  });
2495
2496
  });
2496
2497
  await runner.step(5, async (runner2) => {
@@ -5733,7 +5734,7 @@ async function ___runTurn_impl(msg) {
5733
5734
  await runner3.step(0, async (runner4) => {
5734
5735
  });
5735
5736
  await runner3.step(1, async (runner4) => {
5736
- __stack.locals.status = __globals().get("dist/lib/agents/agency-agent/agent.agency", "mcpServerStatus")[name];
5737
+ __stack.locals.status = __nn(__globals().get("dist/lib/agents/agency-agent/agent.agency", "mcpServerStatus")[name]);
5737
5738
  });
5738
5739
  await runner3.ifElse(2, [
5739
5740
  {
@@ -6011,7 +6012,7 @@ async function ___runTurn_impl(msg) {
6011
6012
  args: [__stack.locals.current]
6012
6013
  }), async (slot, _, runner4) => {
6013
6014
  await runner4.step(0, async (runner5) => {
6014
- __stack.locals.resolved = __stack.locals.current[slot];
6015
+ __stack.locals.resolved = __nn(__stack.locals.current[slot]);
6015
6016
  });
6016
6017
  await runner4.ifElse(1, [
6017
6018
  {
@@ -6131,7 +6132,7 @@ async function ___runTurn_impl(msg) {
6131
6132
  args: [__stack.locals.out.resolved]
6132
6133
  }), async (slot, _, runner3) => {
6133
6134
  await runner3.step(0, async (runner4) => {
6134
- __stack.locals.resolved = __stack.locals.out.resolved[slot];
6135
+ __stack.locals.resolved = __nn(__stack.locals.out.resolved[slot]);
6135
6136
  });
6136
6137
  await runner3.ifElse(1, [
6137
6138
  {
@@ -7938,6 +7939,7 @@ async function __mainAgent_impl(prompt) {
7938
7939
  },
7939
7940
  maxToolCallRounds: 10,
7940
7941
  removedTools: __self.__removedTools,
7942
+ destructiveSink: __self,
7941
7943
  checkpointInfo: runner3.getCheckpointInfo()
7942
7944
  });
7943
7945
  if (hasInterrupts(__stack.locals.result)) {
@@ -8711,13 +8713,13 @@ async function __sample_impl(arr) {
8711
8713
  });
8712
8714
  await runner.step(1, async (runner2) => {
8713
8715
  __functionCompleted = true;
8714
- runner2.halt(__stack.args.arr[await __callMethod(Math, "floor", {
8716
+ runner2.halt(__nn(__stack.args.arr[await __callMethod(Math, "floor", {
8715
8717
  type: "positional",
8716
8718
  args: [await __callMethod(Math, "random", {
8717
8719
  type: "positional",
8718
8720
  args: []
8719
8721
  }) * __stack.args.arr.length]
8720
- })]);
8722
+ })]));
8721
8723
  return;
8722
8724
  });
8723
8725
  });
@@ -9339,7 +9341,7 @@ async function __givePolicyChoice_impl() {
9339
9341
  ], void 0, { matchId: 1 });
9340
9342
  await runner.step(6, async (runner2) => {
9341
9343
  __functionCompleted = true;
9342
- runner2.halt(__stack.locals.__matchval_1);
9344
+ runner2.halt(__nn(__stack.locals.__matchval_1));
9343
9345
  return;
9344
9346
  });
9345
9347
  });
@@ -10584,7 +10586,7 @@ graph.node("main", async (__state) => {
10584
10586
  __globals().set("dist/lib/agents/agency-agent/agent.agency", "_policyArg", __stack.locals.args.flags.policy ?? ``);
10585
10587
  });
10586
10588
  await runner.step(8, async (runner2) => {
10587
- __stack.locals.localVal = __stack.locals.args.flags[`local`] ?? __stack.locals.args.flags[`local-model`];
10589
+ __stack.locals.localVal = __nn(__stack.locals.args.flags[`local`]) ?? __nn(__stack.locals.args.flags[`local-model`]);
10588
10590
  });
10589
10591
  await runner.step(9, async (runner2) => {
10590
10592
  __stack.locals.modelArg = __stack.locals.args.flags.model ?? ``;
@@ -11064,7 +11066,7 @@ graph.node("main", async (__state) => {
11064
11066
  await runner.step(22, async (runner2) => {
11065
11067
  __stack.locals.maxRounds = await __call(resolveMaxToolCallRounds, {
11066
11068
  type: "positional",
11067
- args: [__stack.locals.args.flags[`max-tool-call-rounds`] ?? null, __stack.locals.runningOneShot]
11069
+ args: [__nn(__stack.locals.args.flags[`max-tool-call-rounds`]) ?? null, __stack.locals.runningOneShot]
11068
11070
  });
11069
11071
  if (hasInterrupts(__stack.locals.maxRounds)) {
11070
11072
  await getRuntimeContext().ctx.pendingPromises.awaitAll();
@@ -11099,7 +11101,7 @@ graph.node("main", async (__state) => {
11099
11101
  }
11100
11102
  ]);
11101
11103
  await runner.step(24, async (runner2) => {
11102
- __stack.locals.maxResultChars = __stack.locals.args.flags[`max-tool-result-chars`];
11104
+ __stack.locals.maxResultChars = __nn(__stack.locals.args.flags[`max-tool-result-chars`]);
11103
11105
  });
11104
11106
  await runner.ifElse(25, [
11105
11107
  {
@@ -40,6 +40,7 @@ import {
40
40
  isFailure,
41
41
  stampFailureBoundary,
42
42
  __eq,
43
+ __nn,
43
44
  AgencyFunction as __AgencyFunction,
44
45
  UNSET as __UNSET,
45
46
  __call,
@@ -596,7 +597,7 @@ async function __modalityFilter_impl(detected) {
596
597
  }
597
598
  });
598
599
  await runner.step(4, async (runner2) => {
599
- __stack.locals.main = __stack.locals.slots[`main`];
600
+ __stack.locals.main = __nn(__stack.locals.slots[`main`]);
600
601
  });
601
602
  await runner.ifElse(5, [
602
603
  {
@@ -32,6 +32,7 @@ import {
32
32
  isFailure,
33
33
  stampFailureBoundary,
34
34
  __eq,
35
+ __nn,
35
36
  AgencyFunction as __AgencyFunction,
36
37
  __call,
37
38
  __callMethod,
@@ -285,7 +286,7 @@ async function __providerLacksEmbeddings_impl(provider) {
285
286
  });
286
287
  });
287
288
  await runner.step(1, async (runner2) => {
288
- __stack.locals.patch = __readStatic(PROVIDER_CAPABILITIES, "PROVIDER_CAPABILITIES", "dist/lib/agents/agency-agent/lib/capabilities.agency")[__stack.args.provider];
289
+ __stack.locals.patch = __nn(__readStatic(PROVIDER_CAPABILITIES, "PROVIDER_CAPABILITIES", "dist/lib/agents/agency-agent/lib/capabilities.agency")[__stack.args.provider]);
289
290
  });
290
291
  await runner.step(2, async (runner2) => {
291
292
  __functionCompleted = true;
@@ -648,7 +649,7 @@ async function __resolveCapabilities_impl(modelKey, provider, user) {
648
649
  await runner.step(2, async (runner2) => {
649
650
  __stack.locals.out = await __call(applyPatch, {
650
651
  type: "positional",
651
- args: [__stack.locals.out, __readStatic(PROVIDER_CAPABILITIES, "PROVIDER_CAPABILITIES", "dist/lib/agents/agency-agent/lib/capabilities.agency")[__stack.args.provider], `provider`]
652
+ args: [__stack.locals.out, __nn(__readStatic(PROVIDER_CAPABILITIES, "PROVIDER_CAPABILITIES", "dist/lib/agents/agency-agent/lib/capabilities.agency")[__stack.args.provider]), `provider`]
652
653
  });
653
654
  if (hasInterrupts(__stack.locals.out)) {
654
655
  await getRuntimeContext().ctx.pendingPromises.awaitAll();
@@ -659,7 +660,7 @@ async function __resolveCapabilities_impl(modelKey, provider, user) {
659
660
  await runner.step(3, async (runner2) => {
660
661
  __stack.locals.out = await __call(applyPatch, {
661
662
  type: "positional",
662
- args: [__stack.locals.out, __readStatic(MODEL_CAPABILITIES, "MODEL_CAPABILITIES", "dist/lib/agents/agency-agent/lib/capabilities.agency")[__stack.args.modelKey], `model`]
663
+ args: [__stack.locals.out, __nn(__readStatic(MODEL_CAPABILITIES, "MODEL_CAPABILITIES", "dist/lib/agents/agency-agent/lib/capabilities.agency")[__stack.args.modelKey]), `model`]
663
664
  });
664
665
  if (hasInterrupts(__stack.locals.out)) {
665
666
  await getRuntimeContext().ctx.pendingPromises.awaitAll();
@@ -695,7 +696,7 @@ async function __resolveCapabilities_impl(modelKey, provider, user) {
695
696
  await runner2.step(0, async (runner3) => {
696
697
  __stack.locals.out = await __call(applyPatch, {
697
698
  type: "positional",
698
- args: [__stack.locals.out, __stack.locals.userProviders[__stack.args.provider], `user-provider`]
699
+ args: [__stack.locals.out, __nn(__stack.locals.userProviders[__stack.args.provider]), `user-provider`]
699
700
  });
700
701
  if (hasInterrupts(__stack.locals.out)) {
701
702
  await getRuntimeContext().ctx.pendingPromises.awaitAll();
@@ -716,7 +717,7 @@ async function __resolveCapabilities_impl(modelKey, provider, user) {
716
717
  await runner2.step(0, async (runner3) => {
717
718
  __stack.locals.out = await __call(applyPatch, {
718
719
  type: "positional",
719
- args: [__stack.locals.out, __stack.locals.userModels[__stack.args.modelKey], `user-model`]
720
+ args: [__stack.locals.out, __nn(__stack.locals.userModels[__stack.args.modelKey]), `user-model`]
720
721
  });
721
722
  if (hasInterrupts(__stack.locals.out)) {
722
723
  await getRuntimeContext().ctx.pendingPromises.awaitAll();
@@ -1314,7 +1315,7 @@ async function __sanitizeCapabilitySettings_impl(user) {
1314
1315
  {
1315
1316
  condition: async () => !await __call(validCapabilityEntry, {
1316
1317
  type: "positional",
1317
- args: [modelKey, __stack.locals.models[modelKey], `models`]
1318
+ args: [modelKey, __nn(__stack.locals.models[modelKey]), `models`]
1318
1319
  }),
1319
1320
  body: async (runner4) => {
1320
1321
  await runner4.step(0, async (runner5) => {
@@ -1327,7 +1328,7 @@ async function __sanitizeCapabilitySettings_impl(user) {
1327
1328
  await runner3.step(1, async (runner4) => {
1328
1329
  __stack.locals.keptModels[modelKey] = await __call(sanitizePatch, {
1329
1330
  type: "positional",
1330
- args: [__stack.locals.models[modelKey], `models.${modelKey}`]
1331
+ args: [__nn(__stack.locals.models[modelKey]), `models.${modelKey}`]
1331
1332
  });
1332
1333
  if (hasInterrupts(__stack.locals.keptModels[modelKey])) {
1333
1334
  await getRuntimeContext().ctx.pendingPromises.awaitAll();
@@ -1360,7 +1361,7 @@ async function __sanitizeCapabilitySettings_impl(user) {
1360
1361
  {
1361
1362
  condition: async () => !await __call(validCapabilityEntry, {
1362
1363
  type: "positional",
1363
- args: [providerKey, __stack.locals.providers[providerKey], `providers`]
1364
+ args: [providerKey, __nn(__stack.locals.providers[providerKey]), `providers`]
1364
1365
  }),
1365
1366
  body: async (runner4) => {
1366
1367
  await runner4.step(0, async (runner5) => {
@@ -1373,7 +1374,7 @@ async function __sanitizeCapabilitySettings_impl(user) {
1373
1374
  await runner3.step(1, async (runner4) => {
1374
1375
  __stack.locals.keptProviders[providerKey] = await __call(sanitizePatch, {
1375
1376
  type: "positional",
1376
- args: [__stack.locals.providers[providerKey], `providers.${providerKey}`]
1377
+ args: [__nn(__stack.locals.providers[providerKey]), `providers.${providerKey}`]
1377
1378
  });
1378
1379
  if (hasInterrupts(__stack.locals.keptProviders[providerKey])) {
1379
1380
  await getRuntimeContext().ctx.pendingPromises.awaitAll();
@@ -1599,10 +1600,10 @@ async function __mergeCapabilityOverride_impl(user, scope, key, patch) {
1599
1600
  });
1600
1601
  await runner2.ifElse(3, [
1601
1602
  {
1602
- condition: async () => !__eq(__stack.locals.providers[__stack.args.key], null),
1603
+ condition: async () => !__eq(__nn(__stack.locals.providers[__stack.args.key]), null),
1603
1604
  body: async (runner3) => {
1604
1605
  await runner3.step(0, async (runner4) => {
1605
- __stack.locals.entry = __stack.locals.providers[__stack.args.key];
1606
+ __stack.locals.entry = __nn(__stack.locals.providers[__stack.args.key]);
1606
1607
  });
1607
1608
  }
1608
1609
  }
@@ -1644,10 +1645,10 @@ async function __mergeCapabilityOverride_impl(user, scope, key, patch) {
1644
1645
  });
1645
1646
  await runner.ifElse(7, [
1646
1647
  {
1647
- condition: async () => !__eq(__stack.locals.models[__stack.args.key], null),
1648
+ condition: async () => !__eq(__nn(__stack.locals.models[__stack.args.key]), null),
1648
1649
  body: async (runner2) => {
1649
1650
  await runner2.step(0, async (runner3) => {
1650
- __stack.locals.entry = __stack.locals.models[__stack.args.key];
1651
+ __stack.locals.entry = __nn(__stack.locals.models[__stack.args.key]);
1651
1652
  });
1652
1653
  }
1653
1654
  }
@@ -2103,7 +2104,7 @@ async function __recordWithout_impl(entries, dropKey) {
2103
2104
  condition: async () => !__eq(entryKey, __stack.args.dropKey),
2104
2105
  body: async (runner3) => {
2105
2106
  await runner3.step(0, async (runner4) => {
2106
- __stack.locals.kept[entryKey] = __stack.args.entries[entryKey];
2107
+ __stack.locals.kept[entryKey] = __nn(__stack.args.entries[entryKey]);
2107
2108
  });
2108
2109
  }
2109
2110
  }
@@ -2295,7 +2296,7 @@ async function __removeCapabilityField_impl(user, scope, key, field) {
2295
2296
  body: async (runner2) => {
2296
2297
  await runner2.ifElse(0, [
2297
2298
  {
2298
- condition: async () => __eq(__stack.locals.out.providers, null) || __eq(__stack.locals.out.providers[__stack.args.key], null),
2299
+ condition: async () => __eq(__stack.locals.out.providers, null) || __eq(__nn(__stack.locals.out.providers[__stack.args.key]), null),
2299
2300
  body: async (runner3) => {
2300
2301
  await runner3.step(0, async (runner4) => {
2301
2302
  __functionCompleted = true;
@@ -2313,7 +2314,7 @@ async function __removeCapabilityField_impl(user, scope, key, field) {
2313
2314
  await runner2.step(2, async (runner3) => {
2314
2315
  __stack.locals.newProviderEntry = await __call(patchFieldToNull, {
2315
2316
  type: "positional",
2316
- args: [__stack.locals.providers[__stack.args.key], __stack.args.field]
2317
+ args: [__nn(__stack.locals.providers[__stack.args.key]), __stack.args.field]
2317
2318
  });
2318
2319
  if (hasInterrupts(__stack.locals.newProviderEntry)) {
2319
2320
  await getRuntimeContext().ctx.pendingPromises.awaitAll();
@@ -2359,7 +2360,7 @@ async function __removeCapabilityField_impl(user, scope, key, field) {
2359
2360
  ]);
2360
2361
  await runner.ifElse(4, [
2361
2362
  {
2362
- condition: async () => __eq(__stack.locals.out.models, null) || __eq(__stack.locals.out.models[__stack.args.key], null),
2363
+ condition: async () => __eq(__stack.locals.out.models, null) || __eq(__nn(__stack.locals.out.models[__stack.args.key]), null),
2363
2364
  body: async (runner2) => {
2364
2365
  await runner2.step(0, async (runner3) => {
2365
2366
  __functionCompleted = true;
@@ -2377,7 +2378,7 @@ async function __removeCapabilityField_impl(user, scope, key, field) {
2377
2378
  await runner.step(6, async (runner2) => {
2378
2379
  __stack.locals.newModelEntry = await __call(patchFieldToNull, {
2379
2380
  type: "positional",
2380
- args: [__stack.locals.models[__stack.args.key], __stack.args.field]
2381
+ args: [__nn(__stack.locals.models[__stack.args.key]), __stack.args.field]
2381
2382
  });
2382
2383
  if (hasInterrupts(__stack.locals.newModelEntry)) {
2383
2384
  await getRuntimeContext().ctx.pendingPromises.awaitAll();
@@ -37,6 +37,7 @@ import {
37
37
  isFailure,
38
38
  stampFailureBoundary,
39
39
  __eq,
40
+ __nn,
40
41
  AgencyFunction as __AgencyFunction,
41
42
  __call,
42
43
  __callMethod,
@@ -302,7 +303,7 @@ async function __missingProviderEnvVar_impl(provider) {
302
303
  }
303
304
  ]);
304
305
  await runner.step(3, async (runner2) => {
305
- __stack.locals.baseVar = __readStatic(BASE_URL_PROVIDERS, "BASE_URL_PROVIDERS", "dist/lib/agents/agency-agent/lib/models.agency")[__stack.args.provider];
306
+ __stack.locals.baseVar = __nn(__readStatic(BASE_URL_PROVIDERS, "BASE_URL_PROVIDERS", "dist/lib/agents/agency-agent/lib/models.agency")[__stack.args.provider]);
306
307
  });
307
308
  await runner.ifElse(4, [
308
309
  {
@@ -884,7 +885,7 @@ async function __resolveDetected_impl(model, fast, slow, provider) {
884
885
  });
885
886
  await runner2.ifElse(1, [
886
887
  {
887
- condition: async () => __eq(__readStatic(MODELS, "MODELS", "dist/lib/agents/agency-agent/lib/models.agency")[__stack.args.provider], void 0) && (__stack.locals.needFast || __stack.locals.needSlow),
888
+ condition: async () => __eq(__nn(__readStatic(MODELS, "MODELS", "dist/lib/agents/agency-agent/lib/models.agency")[__stack.args.provider]), void 0) && (__stack.locals.needFast || __stack.locals.needSlow),
888
889
  body: async (runner3) => {
889
890
  await runner3.step(0, async (runner4) => {
890
891
  __stack.locals.known = await __callMethod(Object, "keys", {
@@ -1556,7 +1557,7 @@ async function __priceDefault_impl(provider, slot, price) {
1556
1557
  ]);
1557
1558
  await runner.ifElse(3, [
1558
1559
  {
1559
- condition: async () => __eq(__readStatic(MODELS, "MODELS", "dist/lib/agents/agency-agent/lib/models.agency")[__stack.args.provider], null),
1560
+ condition: async () => __eq(__nn(__readStatic(MODELS, "MODELS", "dist/lib/agents/agency-agent/lib/models.agency")[__stack.args.provider]), null),
1560
1561
  body: async (runner2) => {
1561
1562
  await runner2.step(0, async (runner3) => {
1562
1563
  __functionCompleted = true;
@@ -34,6 +34,7 @@ import {
34
34
  isFailure,
35
35
  stampFailureBoundary,
36
36
  __eq,
37
+ __nn,
37
38
  AgencyFunction as __AgencyFunction,
38
39
  __call,
39
40
  __callMethod,
@@ -412,7 +413,7 @@ async function __resolveSlot_impl(slot, layers, ctx) {
412
413
  });
413
414
  await runner.loop(1, async () => __stack.args.layers, async (layer, _, runner2) => {
414
415
  await runner2.step(0, async (runner3) => {
415
- __stack.locals.perSlotValue = layer.perSlot[__stack.args.slot];
416
+ __stack.locals.perSlotValue = __nn(layer.perSlot[__stack.args.slot]);
416
417
  });
417
418
  await runner2.ifElse(1, [
418
419
  {
@@ -987,7 +988,7 @@ async function __slotMapToValues_impl(slots, providers, providerEstablished) {
987
988
  await runner2.step(2, async (runner3) => {
988
989
  __stack.locals.output[__stack.locals.canonical] = await __call(parseSlotValue, {
989
990
  type: "positional",
990
- args: [__stack.args.slots[key], __stack.args.providers, __stack.locals.established]
991
+ args: [__nn(__stack.args.slots[key]), __stack.args.providers, __stack.locals.established]
991
992
  });
992
993
  if (hasInterrupts(__stack.locals.output[__stack.locals.canonical])) {
993
994
  await getRuntimeContext().ctx.pendingPromises.awaitAll();
@@ -1431,7 +1432,7 @@ async function __diffResolved_impl(before, after) {
1431
1432
  args: [__stack.args.after]
1432
1433
  }), async (slot, _, runner2) => {
1433
1434
  await runner2.step(0, async (runner3) => {
1434
- __stack.locals.beforeValue = __stack.args.before[slot];
1435
+ __stack.locals.beforeValue = __nn(__stack.args.before[slot]);
1435
1436
  });
1436
1437
  await runner2.ifElse(1, [
1437
1438
  {
@@ -1445,7 +1446,7 @@ async function __diffResolved_impl(before, after) {
1445
1446
  }
1446
1447
  ]);
1447
1448
  await runner2.step(2, async (runner3) => {
1448
- __stack.locals.afterValue = __stack.args.after[slot];
1449
+ __stack.locals.afterValue = __nn(__stack.args.after[slot]);
1449
1450
  });
1450
1451
  await runner2.ifElse(3, [
1451
1452
  {
@@ -37,6 +37,7 @@ import {
37
37
  isFailure,
38
38
  stampFailureBoundary,
39
39
  __eq,
40
+ __nn,
40
41
  AgencyFunction as __AgencyFunction,
41
42
  __call,
42
43
  __callMethod,
@@ -1946,7 +1947,7 @@ async function __withWebSearch_impl(opts) {
1946
1947
  }
1947
1948
  });
1948
1949
  await runner.step(2, async (runner2) => {
1949
- __stack.locals.tool = __readStatic(CLIENT_SEARCH_TOOLS_BY_BACKEND, "CLIENT_SEARCH_TOOLS_BY_BACKEND", "dist/lib/agents/agency-agent/lib/search.agency")[__stack.locals.name];
1950
+ __stack.locals.tool = __nn(__readStatic(CLIENT_SEARCH_TOOLS_BY_BACKEND, "CLIENT_SEARCH_TOOLS_BY_BACKEND", "dist/lib/agents/agency-agent/lib/search.agency")[__stack.locals.name]);
1950
1951
  });
1951
1952
  await runner.ifElse(3, [
1952
1953
  {
@@ -1967,7 +1968,7 @@ async function __withWebSearch_impl(opts) {
1967
1968
  }
1968
1969
  ]);
1969
1970
  await runner.step(4, async (runner2) => {
1970
- __stack.locals.hosted = __readStatic(HOSTED_SEARCH_CAPS_BY_BACKEND, "HOSTED_SEARCH_CAPS_BY_BACKEND", "dist/lib/agents/agency-agent/lib/search.agency")[__stack.locals.name];
1971
+ __stack.locals.hosted = __nn(__readStatic(HOSTED_SEARCH_CAPS_BY_BACKEND, "HOSTED_SEARCH_CAPS_BY_BACKEND", "dist/lib/agents/agency-agent/lib/search.agency")[__stack.locals.name]);
1971
1972
  });
1972
1973
  await runner.ifElse(5, [
1973
1974
  {
@@ -38,6 +38,7 @@ import {
38
38
  stampFailureBoundary,
39
39
  __tryCall,
40
40
  __eq,
41
+ __nn,
41
42
  AgencyFunction as __AgencyFunction,
42
43
  __call,
43
44
  __callMethod,
@@ -302,7 +303,7 @@ async function __sanitizeModelSettings_impl(settings) {
302
303
  {
303
304
  condition: async () => __eq(__stack.locals.canonical, `embedding`) && !await __call(embeddingSpecHasProvider, {
304
305
  type: "positional",
305
- args: [__stack.locals.slots[key]]
306
+ args: [__nn(__stack.locals.slots[key])]
306
307
  }),
307
308
  body: async (runner3) => {
308
309
  await runner3.step(0, async (runner4) => {
@@ -326,7 +327,7 @@ async function __sanitizeModelSettings_impl(settings) {
326
327
  }
327
328
  ]);
328
329
  await runner2.step(3, async (runner3) => {
329
- __stack.locals.kept[__stack.locals.canonical] = __stack.locals.slots[key];
330
+ __stack.locals.kept[__stack.locals.canonical] = __nn(__stack.locals.slots[key]);
330
331
  });
331
332
  });
332
333
  await runner.step(6, async (runner2) => {
@@ -32,6 +32,7 @@ import {
32
32
  isFailure,
33
33
  stampFailureBoundary,
34
34
  __eq,
35
+ __nn,
35
36
  AgencyFunction as __AgencyFunction,
36
37
  __call,
37
38
  __callMethod,
@@ -250,11 +251,11 @@ async function __canonicalSlot_impl(name) {
250
251
  });
251
252
  await runner.ifElse(1, [
252
253
  {
253
- condition: async () => !__eq(__readStatic(SLOT_ALIASES, "SLOT_ALIASES", "dist/lib/agents/agency-agent/lib/slots.agency")[__stack.args.name], null),
254
+ condition: async () => !__eq(__nn(__readStatic(SLOT_ALIASES, "SLOT_ALIASES", "dist/lib/agents/agency-agent/lib/slots.agency")[__stack.args.name]), null),
254
255
  body: async (runner2) => {
255
256
  await runner2.step(0, async (runner3) => {
256
257
  __functionCompleted = true;
257
- runner3.halt(__readStatic(SLOT_ALIASES, "SLOT_ALIASES", "dist/lib/agents/agency-agent/lib/slots.agency")[__stack.args.name]);
258
+ runner3.halt(__nn(__readStatic(SLOT_ALIASES, "SLOT_ALIASES", "dist/lib/agents/agency-agent/lib/slots.agency")[__stack.args.name]));
258
259
  return;
259
260
  });
260
261
  }
@@ -498,10 +499,10 @@ async function __slotKind_impl(name) {
498
499
  });
499
500
  await runner.step(1, async (runner2) => {
500
501
  __functionCompleted = true;
501
- runner2.halt(__readStatic(SLOT_KIND, "SLOT_KIND", "dist/lib/agents/agency-agent/lib/slots.agency")[await __call(canonicalSlot, {
502
+ runner2.halt(__nn(__readStatic(SLOT_KIND, "SLOT_KIND", "dist/lib/agents/agency-agent/lib/slots.agency")[await __call(canonicalSlot, {
502
503
  type: "positional",
503
504
  args: [__stack.args.name]
504
- })]);
505
+ })]));
505
506
  return;
506
507
  });
507
508
  });
@@ -29,6 +29,7 @@ import {
29
29
  isFailure,
30
30
  stampFailureBoundary,
31
31
  __eq,
32
+ __nn,
32
33
  AgencyFunction as __AgencyFunction,
33
34
  UNSET as __UNSET,
34
35
  __call,
@@ -320,7 +321,7 @@ async function __formatToolResponse_impl(data) {
320
321
  });
321
322
  });
322
323
  await runner.step(6, async (runner2) => {
323
- __stack.locals.head = __stack.locals.lines[0];
324
+ __stack.locals.head = __nn(__stack.locals.lines[0]);
324
325
  });
325
326
  await runner.step(7, async (runner2) => {
326
327
  __stack.locals.tail = await __call(indentStr, {
@@ -604,7 +605,7 @@ async function __formatArgs_impl(args) {
604
605
  });
605
606
  await runner.loop(2, async () => __stack.args.args, async (key, _, runner2) => {
606
607
  await runner2.step(0, async (runner3) => {
607
- __stack.locals.value = __stack.args.args[key];
608
+ __stack.locals.value = __nn(__stack.args.args[key]);
608
609
  });
609
610
  await runner2.step(1, async (runner3) => {
610
611
  await __callMethod(__stack.locals.parts, "push", {
@@ -325,6 +325,7 @@ graph.node("categorize", async (__state) => {
325
325
  clientConfig: {},
326
326
  maxToolCallRounds: 10,
327
327
  removedTools: __self.__removedTools,
328
+ destructiveSink: __self,
328
329
  checkpointInfo: runner2.getCheckpointInfo()
329
330
  });
330
331
  if (hasInterrupts(__stack.locals.category)) {
@@ -44,6 +44,7 @@ import {
44
44
  stampFailureBoundary,
45
45
  __tryCall,
46
46
  __eq,
47
+ __nn,
47
48
  AgencyFunction as __AgencyFunction,
48
49
  UNSET as __UNSET,
49
50
  __call,
@@ -1404,7 +1405,7 @@ async function __embeddingsOverride_impl(slots) {
1404
1405
  __functionCompleted = true;
1405
1406
  runner2.halt(await __call(overrideFromResolved, {
1406
1407
  type: "positional",
1407
- args: [__stack.args.slots[`embedding`]]
1408
+ args: [__nn(__stack.args.slots[`embedding`])]
1408
1409
  }));
1409
1410
  return;
1410
1411
  });
@@ -2689,7 +2690,7 @@ async function __promoteAll_impl(slots) {
2689
2690
  args: [__stack.args.slots]
2690
2691
  }), async (slot, _, runner2) => {
2691
2692
  await runner2.step(0, async (runner3) => {
2692
- __stack.locals.resolved = __stack.args.slots[slot];
2693
+ __stack.locals.resolved = __nn(__stack.args.slots[slot]);
2693
2694
  });
2694
2695
  await runner2.ifElse(1, [
2695
2696
  {
@@ -2855,7 +2856,7 @@ async function __applyResolved_impl(slots) {
2855
2856
  args: [__stack.args.slots]
2856
2857
  }), async (slot, _, runner2) => {
2857
2858
  await runner2.step(0, async (runner3) => {
2858
- __stack.locals.resolved = __stack.args.slots[slot];
2859
+ __stack.locals.resolved = __nn(__stack.args.slots[slot]);
2859
2860
  });
2860
2861
  await runner2.ifElse(1, [
2861
2862
  {
@@ -2918,7 +2919,7 @@ async function __applyResolved_impl(slots) {
2918
2919
  ]);
2919
2920
  });
2920
2921
  await runner.step(3, async (runner2) => {
2921
- __stack.locals.mainSlot = __stack.args.slots[`main`];
2922
+ __stack.locals.mainSlot = __nn(__stack.args.slots[`main`]);
2922
2923
  });
2923
2924
  await runner.ifElse(4, [
2924
2925
  {
@@ -3143,7 +3144,7 @@ async function __currentProvider_impl() {
3143
3144
  });
3144
3145
  });
3145
3146
  await runner.step(1, async (runner2) => {
3146
- __stack.locals.main = __globals().get("dist/lib/agents/agency-agent/shared.agency", "_resolved")[`main`];
3147
+ __stack.locals.main = __nn(__globals().get("dist/lib/agents/agency-agent/shared.agency", "_resolved")[`main`]);
3147
3148
  });
3148
3149
  await runner.ifElse(2, [
3149
3150
  {
@@ -52,6 +52,7 @@ static const superpowersSkill = skillsDir("./skills/superpowers", "flat") with a
52
52
  // startup approval interrupt — the docs ship with the stdlib).
53
53
  static const docSkill = docsSkill("guide")
54
54
  static const cliSkill = docsSkill("cli")
55
+ static const diagnosticsSkill = docsSkill("diagnostics")
55
56
 
56
57
  export def agencyCli(args: string[]): any {
57
58
  """
@@ -81,6 +82,9 @@ call the bundled docs tools — they are authoritative for Agency:
81
82
  * `docSkill` — the language guide (syntax, types, error handling,
82
83
  built-ins, callbacks, advanced types)
83
84
  * `cliSkill` — the CLI reference (`agency run`, `agency test`, ...)
85
+ * `diagnosticsSkill` — type-checker diagnostic codes (AG####) with
86
+ explanations and fixes; consult it when `typecheck` reports
87
+ an error code you want to understand or resolve
84
88
  Pick whichever matches the question rather than guessing.
85
89
 
86
90
  **Stay focused on the current task.** Most follow-ups ("can you make it
@@ -360,6 +364,7 @@ export static const codeTools: any[] = [
360
364
  superpowersSkill,
361
365
  docSkill,
362
366
  cliSkill,
367
+ diagnosticsSkill,
363
368
  todoWrite,
364
369
  todoList,
365
370
  oracleAgent.partial(allowHandoff: false),