@sema-agent/core 1.410.0 → 1.413.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 (108) hide show
  1. package/dist/agents/roster-store.d.ts.map +1 -1
  2. package/dist/agents/roster-store.js +6 -5
  3. package/dist/agents/roster-store.js.map +1 -1
  4. package/dist/agents/subagent.d.ts.map +1 -1
  5. package/dist/agents/subagent.js +17 -11
  6. package/dist/agents/subagent.js.map +1 -1
  7. package/dist/core/auto-compaction.d.ts +5 -0
  8. package/dist/core/auto-compaction.d.ts.map +1 -1
  9. package/dist/core/auto-compaction.js +11 -5
  10. package/dist/core/auto-compaction.js.map +1 -1
  11. package/dist/core/exec-output-tail.d.ts.map +1 -1
  12. package/dist/core/exec-output-tail.js +1 -1
  13. package/dist/core/exec-output-tail.js.map +1 -1
  14. package/dist/core/mcp.d.ts.map +1 -1
  15. package/dist/core/mcp.js +8 -3
  16. package/dist/core/mcp.js.map +1 -1
  17. package/dist/core/runner/prepare-task.d.ts.map +1 -1
  18. package/dist/core/runner/prepare-task.js +37 -9
  19. package/dist/core/runner/prepare-task.js.map +1 -1
  20. package/dist/core/runner/runtask.d.ts +1 -0
  21. package/dist/core/runner/runtask.d.ts.map +1 -1
  22. package/dist/core/runner/runtask.js +50 -9
  23. package/dist/core/runner/runtask.js.map +1 -1
  24. package/dist/core/runner/turn-attachments.js +3 -0
  25. package/dist/core/runner/turn-attachments.js.map +1 -1
  26. package/dist/core/task-notification.d.ts +4 -0
  27. package/dist/core/task-notification.d.ts.map +1 -1
  28. package/dist/core/task-notification.js +43 -26
  29. package/dist/core/task-notification.js.map +1 -1
  30. package/dist/core/task-registry.d.ts.map +1 -1
  31. package/dist/core/task-registry.js +14 -5
  32. package/dist/core/task-registry.js.map +1 -1
  33. package/dist/core/tool-policy.d.ts.map +1 -1
  34. package/dist/core/tool-policy.js +98 -16
  35. package/dist/core/tool-policy.js.map +1 -1
  36. package/dist/core/tool-result-budget.d.ts +5 -0
  37. package/dist/core/tool-result-budget.d.ts.map +1 -1
  38. package/dist/core/tool-result-budget.js +58 -27
  39. package/dist/core/tool-result-budget.js.map +1 -1
  40. package/dist/core/tool-result-store.d.ts +4 -1
  41. package/dist/core/tool-result-store.d.ts.map +1 -1
  42. package/dist/core/tool-result-store.js +5 -3
  43. package/dist/core/tool-result-store.js.map +1 -1
  44. package/dist/core/types.d.ts +5 -0
  45. package/dist/core/types.d.ts.map +1 -1
  46. package/dist/core/untrusted-egress.d.ts.map +1 -1
  47. package/dist/core/untrusted-egress.js +5 -2
  48. package/dist/core/untrusted-egress.js.map +1 -1
  49. package/dist/core/untrusted-text.d.ts +1 -1
  50. package/dist/core/untrusted-text.d.ts.map +1 -1
  51. package/dist/core/untrusted-text.js +9 -3
  52. package/dist/core/untrusted-text.js.map +1 -1
  53. package/dist/engine/compaction/compaction.d.ts.map +1 -1
  54. package/dist/engine/compaction/compaction.js +0 -10
  55. package/dist/engine/compaction/compaction.js.map +1 -1
  56. package/dist/engine/compaction/utils.d.ts.map +1 -1
  57. package/dist/engine/compaction/utils.js +2 -1
  58. package/dist/engine/compaction/utils.js.map +1 -1
  59. package/dist/engine/harness/types.d.ts +16 -0
  60. package/dist/engine/harness/types.d.ts.map +1 -1
  61. package/dist/engine/harness/types.js +31 -0
  62. package/dist/engine/harness/types.js.map +1 -1
  63. package/dist/engine/session/import-validate.d.ts +1 -0
  64. package/dist/engine/session/import-validate.d.ts.map +1 -1
  65. package/dist/engine/session/import-validate.js +40 -3
  66. package/dist/engine/session/import-validate.js.map +1 -1
  67. package/dist/engine/session/repo-utils.d.ts.map +1 -1
  68. package/dist/engine/session/repo-utils.js +15 -2
  69. package/dist/engine/session/repo-utils.js.map +1 -1
  70. package/dist/engine/session/session.d.ts.map +1 -1
  71. package/dist/engine/session/session.js +26 -2
  72. package/dist/engine/session/session.js.map +1 -1
  73. package/dist/prompt-assembly/assemble.d.ts.map +1 -1
  74. package/dist/prompt-assembly/assemble.js +7 -6
  75. package/dist/prompt-assembly/assemble.js.map +1 -1
  76. package/dist/stores/file/background-agent-store.d.ts +1 -0
  77. package/dist/stores/file/background-agent-store.d.ts.map +1 -1
  78. package/dist/stores/file/background-agent-store.js +11 -7
  79. package/dist/stores/file/background-agent-store.js.map +1 -1
  80. package/dist/stores/file/checkpoint-store.d.ts +9 -4
  81. package/dist/stores/file/checkpoint-store.d.ts.map +1 -1
  82. package/dist/stores/file/checkpoint-store.js +56 -8
  83. package/dist/stores/file/checkpoint-store.js.map +1 -1
  84. package/dist/stores/file/fs-atomic.d.ts +1 -0
  85. package/dist/stores/file/fs-atomic.d.ts.map +1 -1
  86. package/dist/stores/file/fs-atomic.js +25 -2
  87. package/dist/stores/file/fs-atomic.js.map +1 -1
  88. package/dist/stores/file/mailbox-store.d.ts.map +1 -1
  89. package/dist/stores/file/mailbox-store.js +37 -13
  90. package/dist/stores/file/mailbox-store.js.map +1 -1
  91. package/dist/stores/file/memory-store.d.ts +3 -1
  92. package/dist/stores/file/memory-store.d.ts.map +1 -1
  93. package/dist/stores/file/memory-store.js +24 -2
  94. package/dist/stores/file/memory-store.js.map +1 -1
  95. package/dist/stores/file/session-store.d.ts.map +1 -1
  96. package/dist/stores/file/session-store.js +6 -5
  97. package/dist/stores/file/session-store.js.map +1 -1
  98. package/dist/stores/file/task-list-store.d.ts.map +1 -1
  99. package/dist/stores/file/task-list-store.js +4 -3
  100. package/dist/stores/file/task-list-store.js.map +1 -1
  101. package/dist/stores/file/workflow-run-store.d.ts +1 -0
  102. package/dist/stores/file/workflow-run-store.d.ts.map +1 -1
  103. package/dist/stores/file/workflow-run-store.js +7 -3
  104. package/dist/stores/file/workflow-run-store.js.map +1 -1
  105. package/dist/tools/fs/index.d.ts.map +1 -1
  106. package/dist/tools/fs/index.js +11 -8
  107. package/dist/tools/fs/index.js.map +1 -1
  108. package/package.json +1 -1
@@ -224,8 +224,8 @@ export async function prepareTask(spec, deps, sessions, resume, _memorySelector,
224
224
  ? resolveModel(spec.compactionModel, deps.models)
225
225
  : roleModelIfSet("summarize", spec, deps);
226
226
  const toolEffects = new Map();
227
- const toolNameForSafety = new Map();
228
- const safetyKeyOf = (raw) => toolNameForSafety.get(raw) ?? canonicalToolName(raw);
227
+ const ownToolNames = new Set((spec.tools ?? []).map((t) => t.name));
228
+ const claimedAliases = new Set();
229
229
  const egressTools = new Set();
230
230
  const irreversibleTools = new Set();
231
231
  const irreversibilityTier = new Map();
@@ -241,8 +241,6 @@ export async function prepareTask(spec, deps, sessions, resume, _memorySelector,
241
241
  if (t.effect) {
242
242
  toolEffects.set(t.name, t.effect);
243
243
  }
244
- for (const alias of t.aliases ?? [])
245
- toolNameForSafety.set(alias, t.name);
246
244
  const tier = t.irreversibility ?? (t.reversibilityProbe ? "maybe" : undefined);
247
245
  if (tier !== undefined) {
248
246
  irreversibilityTier.set(t.name, tier);
@@ -259,6 +257,24 @@ export async function prepareTask(spec, deps, sessions, resume, _memorySelector,
259
257
  }
260
258
  egressTools.add(t.name);
261
259
  }
260
+ for (const alias of t.aliases ?? []) {
261
+ if (alias === t.name || ownToolNames.has(alias))
262
+ continue;
263
+ if (claimedAliases.has(alias))
264
+ continue;
265
+ claimedAliases.add(alias);
266
+ if (t.effect)
267
+ toolEffects.set(alias, t.effect);
268
+ if (tier !== undefined) {
269
+ irreversibilityTier.set(alias, tier);
270
+ if (tier === "always" || tier === "maybe")
271
+ irreversibleTools.add(alias);
272
+ }
273
+ if (t.reversibilityProbe)
274
+ reversibilityProbes.set(alias, t.reversibilityProbe);
275
+ if (t.egress)
276
+ egressTools.add(alias);
277
+ }
262
278
  }
263
279
  toolEffects.set(OFFLOAD_TOOL_NAME, "read");
264
280
  if (deps.executionEnvFactory || deps.executionEnv) {
@@ -1772,6 +1788,7 @@ export async function prepareTask(spec, deps, sessions, resume, _memorySelector,
1772
1788
  }
1773
1789
  }
1774
1790
  let centerAdoption;
1791
+ let centerAdoptionFresh = false;
1775
1792
  {
1776
1793
  const failUnavailable = (digest, via) => {
1777
1794
  const e = new Error(`prompt snapshot unavailable: ${via} center prompt artifact ${digest.slice(0, 23)}… has no verified resolvable copy (artifact store miss/corrupt${deps.promptSource === undefined ? "; RunnerDeps.promptSource is not configured" : ""}) — refusing to recompose a hybrid prompt (protocol §9.2)`);
@@ -1799,6 +1816,7 @@ export async function prepareTask(spec, deps, sessions, resume, _memorySelector,
1799
1816
  const candidate = deps.promptSource?.current();
1800
1817
  if (candidate !== undefined && (await session.getBranch()).length === 0) {
1801
1818
  centerAdoption = { artifact: candidate.artifact, sourceRevision: candidate.sourceRevision };
1819
+ centerAdoptionFresh = true;
1802
1820
  }
1803
1821
  }
1804
1822
  }
@@ -1828,9 +1846,19 @@ export async function prepareTask(spec, deps, sessions, resume, _memorySelector,
1828
1846
  });
1829
1847
  const assembled = assemblePrompt(buildAssembleInputs(centerAdoption !== undefined ? artifactDeclarations(centerAdoption.artifact) : undefined));
1830
1848
  if (centerAdoption !== undefined && assembled.centerMounted !== true) {
1831
- const e = new Error(`center prompt artifact ${centerAdoption.artifact.artifactDigest.slice(0, 23)}… cannot mount: this PromptProvider owns the whole prompt (legacy system()/assembled-identity pass-through) — upgrade the provider to stableBlocks/stableSystem or remove RunnerDeps.promptSource for this deployment`);
1832
- e.code = "prompt.center_unmountable";
1833
- throw e;
1849
+ const ownsWholePrompt = assembled.constitution === "legacy" || assembled.constitution === "provider-assembled";
1850
+ const digest = centerAdoption.artifact.artifactDigest.slice(0, 23);
1851
+ if (!ownsWholePrompt && centerAdoptionFresh) {
1852
+ deps.onError?.(new Error(`prompt-constitution: center prompt artifact ${digest}… contributed NO section to this prompt — every section it declares collides with a PromptProvider stableBlocks declaration of the same id, and the deployment-local declaration wins. This session runs on the bundled prompt and is deliberately NOT pinned to the artifact (a pin claiming content the model never received would be durable and wrong). Rename the colliding section ids on either side to adopt it; the per-section collisions are reported individually on this channel.`), { phase: "prompt-constitution", sessionId });
1853
+ centerAdoption = undefined;
1854
+ }
1855
+ else {
1856
+ const e = new Error(ownsWholePrompt
1857
+ ? `center prompt artifact ${digest}… cannot mount: this PromptProvider owns the whole prompt (legacy system()/assembled-identity pass-through) — upgrade the provider to stableBlocks/stableSystem or remove RunnerDeps.promptSource for this deployment`
1858
+ : `center prompt artifact ${digest}… cannot mount: every one of its sections collides with a PromptProvider stableBlocks declaration of the same id, so zero center content would reach the model — but this session is ALREADY pinned to that artifact (or inherited it from a spawning parent), so quietly dropping it would rewrite what the session claims about itself. Rename the colliding section ids on either side, or start a fresh session`);
1859
+ e.code = "prompt.center_unmountable";
1860
+ throw e;
1861
+ }
1834
1862
  }
1835
1863
  let systemPrompt = assembled.systemPrompt;
1836
1864
  const renderWithDate = assembled.renderWithDate
@@ -3069,8 +3097,8 @@ export async function prepareTask(spec, deps, sessions, resume, _memorySelector,
3069
3097
  adjudicate,
3070
3098
  resolveAsk: resolveAskBound,
3071
3099
  suspendAsk,
3072
- egress: egressTools.has(safetyKeyOf(e.toolName)),
3073
- irreversibility: irreversibilityTier.get(safetyKeyOf(e.toolName)),
3100
+ egress: egressTools.has(e.toolName),
3101
+ irreversibility: irreversibilityTier.get(e.toolName),
3074
3102
  reversibilityProbe: reversibilityProbes.get(e.toolName),
3075
3103
  abortSignal: abortController.signal,
3076
3104
  ...(notifyPermissionDenied ? { permissionDenied: notifyPermissionDenied } : {}),