@sema-agent/core 7.51.1 → 7.52.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.
- package/CHANGELOG.md +550 -2
- package/dist/agents/agent-transcript-tool.d.ts +1 -1
- package/dist/agents/cascade.js +4 -0
- package/dist/agents/cumulative-stats.d.ts +3 -0
- package/dist/agents/cumulative-stats.js +3 -0
- package/dist/agents/list-agents-tool.d.ts +1 -1
- package/dist/agents/read-inbox-tool.d.ts +1 -1
- package/dist/agents/repair-loop.js +4 -0
- package/dist/agents/send-message-tool.d.ts +11 -16
- package/dist/agents/send-message-tool.js +11 -13
- package/dist/agents/subagent.d.ts +5 -0
- package/dist/agents/subagent.js +7 -4
- package/dist/agents/tool-filter.d.ts +40 -13
- package/dist/agents/tool-filter.js +28 -14
- package/dist/bench/metrics.d.ts +1 -0
- package/dist/brain/anthropic.js +16 -12
- package/dist/brain/model-presets.d.ts +4 -5
- package/dist/brain/model-presets.js +4 -4
- package/dist/brain/open-responses.js +16 -12
- package/dist/brain/openai.js +16 -12
- package/dist/brain/request-params.d.ts +12 -33
- package/dist/brain/request-params.js +5 -2
- package/dist/brain/request-route.d.ts +9 -8
- package/dist/brain/request-route.js +1 -0
- package/dist/brain/route-adjudicator.d.ts +117 -47
- package/dist/brain/route-adjudicator.js +171 -42
- package/dist/brain/route-conformance.js +2 -2
- package/dist/brain/status-sink.d.ts +18 -0
- package/dist/brain/status-sink.js +7 -0
- package/dist/core/allow-entry.d.ts +42 -8
- package/dist/core/allow-entry.js +24 -17
- package/dist/core/auto-compaction.d.ts +23 -20
- package/dist/core/auto-compaction.js +37 -16
- package/dist/core/auto-promote.d.ts +2 -1
- package/dist/core/auto-promote.js +2 -2
- package/dist/core/caller-tool-name.d.ts +9 -0
- package/dist/core/caller-tool-name.js +13 -0
- package/dist/core/checkpoint-requirements.d.ts +7 -1
- package/dist/core/checkpoint-requirements.js +2 -0
- package/dist/core/checkpoint-store.d.ts +36 -12
- package/dist/core/checkpoint-store.js +1 -1
- package/dist/core/child-clamp-seats.d.ts +6 -0
- package/dist/core/child-clamp-seats.js +2 -1
- package/dist/core/credential-vocabulary.d.ts +33 -8
- package/dist/core/credential-vocabulary.js +32 -7
- package/dist/core/decision-receipt.d.ts +2 -2
- package/dist/core/delegation-frames.d.ts +9 -2
- package/dist/core/delegation-name.d.ts +18 -0
- package/dist/core/delegation-name.js +47 -0
- package/dist/core/engine-capabilities.d.ts +8 -1
- package/dist/core/engine-capabilities.js +1 -1
- package/dist/core/engine-notice.d.ts +36 -19
- package/dist/core/frontmatter-fence.d.ts +10 -0
- package/dist/core/frontmatter-fence.js +6 -0
- package/dist/core/gate-fold.js +5 -23
- package/dist/core/gate-lanes.js +356 -270
- package/dist/core/governance-codes.d.ts +9 -4
- package/dist/core/governance-codes.js +9 -3
- package/dist/core/hooks.d.ts +276 -734
- package/dist/core/hooks.js +97 -192
- package/dist/{tools/fs → core}/image-admission.d.ts +21 -3
- package/dist/{tools/fs → core}/image-admission.js +24 -6
- package/dist/core/locked-config.d.ts +26 -5
- package/dist/core/locked-config.js +31 -6
- package/dist/core/mcp-connection-pool.d.ts +4 -1
- package/dist/core/mcp-connection-pool.js +7 -2
- package/dist/core/mcp-probe.d.ts +12 -9
- package/dist/core/mcp-probe.js +2 -2
- package/dist/core/mcp-server-spec.d.ts +53 -7
- package/dist/core/mcp-server-spec.js +84 -1
- package/dist/core/mcp.d.ts +11 -7
- package/dist/core/mcp.js +27 -9
- package/dist/core/memory-engine/data-plane.js +5 -1
- package/dist/core/memory-engine/distiller.js +16 -2
- package/dist/core/memory-engine/engine.d.ts +8 -11
- package/dist/core/memory-engine/engine.js +9 -5
- package/dist/core/memory-engine/frontmatter.d.ts +6 -0
- package/dist/core/memory-engine/frontmatter.js +19 -16
- package/dist/core/memory.d.ts +2 -2
- package/dist/core/mode-policy.d.ts +4 -0
- package/dist/core/mode-policy.js +7 -5
- package/dist/core/model-seat.d.ts +4 -1
- package/dist/core/mods/dollar.d.ts +109 -0
- package/dist/core/mods/dollar.js +154 -0
- package/dist/core/mods/host.d.ts +23 -0
- package/dist/core/mods/host.js +21 -0
- package/dist/core/mods/kernel/budget.d.ts +43 -0
- package/dist/core/mods/kernel/budget.js +83 -0
- package/dist/core/mods/kernel/dispatch.d.ts +100 -0
- package/dist/core/mods/kernel/dispatch.js +701 -0
- package/dist/core/mods/kernel/events.d.ts +242 -0
- package/dist/core/mods/kernel/events.js +210 -0
- package/dist/core/mods/kernel/index.d.ts +6 -0
- package/dist/core/mods/kernel/index.js +5 -0
- package/dist/core/mods/kernel/receive.d.ts +65 -0
- package/dist/core/mods/kernel/receive.js +123 -0
- package/dist/core/mods/kernel/registration.d.ts +131 -0
- package/dist/core/mods/kernel/registration.js +102 -0
- package/dist/core/mods/kernel/site-rules.d.ts +84 -0
- package/dist/core/mods/kernel/site-rules.js +104 -0
- package/dist/core/mods/stations.d.ts +350 -0
- package/dist/core/mods/stations.js +444 -0
- package/dist/core/own-property-receipt.js +11 -23
- package/dist/core/parent-spec-seat.d.ts +18 -7
- package/dist/core/parent-spec-seat.js +6 -2
- package/dist/core/path-identity.js +2 -1
- package/dist/core/permission-rule-syntax.d.ts +15 -0
- package/dist/core/permission-rule-syntax.js +24 -16
- package/dist/core/permission-rules.d.ts +7 -1
- package/dist/core/permission-rules.js +26 -15
- package/dist/core/prompt-section-seat.d.ts +15 -27
- package/dist/core/prompt-section-seat.js +73 -40
- package/dist/core/protocol-http-auth.d.ts +3 -1
- package/dist/core/protocol-http-auth.js +2 -0
- package/dist/core/reminder-mint.d.ts +2 -2
- package/dist/core/remote-env.d.ts +24 -12
- package/dist/core/remote-env.js +1 -0
- package/dist/core/resume-startup-cause.d.ts +16 -1
- package/dist/core/resume-startup-cause.js +4 -1
- package/dist/core/retired-keys.d.ts +4 -0
- package/dist/core/retired-keys.js +3 -0
- package/dist/core/runner/announce-once-ledger.d.ts +31 -1
- package/dist/core/runner/announce-once-ledger.js +22 -0
- package/dist/core/runner/assemble-result.d.ts +9 -0
- package/dist/core/runner/assemble-result.js +3 -1
- package/dist/core/runner/call-hook-stations.d.ts +23 -27
- package/dist/core/runner/call-hook-stations.js +58 -42
- package/dist/core/runner/caller-stop-gate.d.ts +25 -0
- package/dist/core/runner/caller-stop-gate.js +7 -0
- package/dist/core/runner/compaction-seams.d.ts +8 -22
- package/dist/core/runner/compaction-seams.js +28 -53
- package/dist/core/runner/construction-doors.js +11 -1
- package/dist/core/runner/contracts.d.ts +85 -83
- package/dist/core/runner/credential-origin-seat.d.ts +2 -0
- package/dist/core/runner/credential-origin-seat.js +19 -0
- package/dist/core/runner/extra-body-dropped-seat.d.ts +2 -6
- package/dist/core/runner/gate-exit.d.ts +47 -36
- package/dist/core/runner/gate-exit.js +8 -2
- package/dist/core/runner/image.js +1 -2
- package/dist/core/runner/inline-image.js +1 -1
- package/dist/core/runner/notice-seat-input.d.ts +11 -0
- package/dist/core/runner/notice-seat-input.js +1 -0
- package/dist/core/runner/person-path-rows.js +1 -0
- package/dist/core/runner/prepare-acquire-reconcile.js +5 -1
- package/dist/core/runner/prepare-ask-lane.d.ts +5 -7
- package/dist/core/runner/prepare-ask-lane.js +6 -15
- package/dist/core/runner/prepare-caps-and-workflow.d.ts +4 -2
- package/dist/core/runner/prepare-caps-and-workflow.js +25 -8
- package/dist/core/runner/prepare-config-doors.d.ts +5 -0
- package/dist/core/runner/prepare-config-doors.js +9 -0
- package/dist/core/runner/prepare-defer-classify.js +3 -4
- package/dist/core/runner/prepare-gate-stations.d.ts +8 -11
- package/dist/core/runner/prepare-gate-stations.js +11 -10
- package/dist/core/runner/prepare-inherited-gate.d.ts +8 -12
- package/dist/core/runner/prepare-inherited-gate.js +8 -21
- package/dist/core/runner/prepare-memory-engine-session.js +1 -1
- package/dist/core/runner/prepare-park-ask.js +10 -14
- package/dist/core/runner/prepare-policy-chain.d.ts +18 -16
- package/dist/core/runner/prepare-policy-chain.js +98 -101
- package/dist/core/runner/prepare-project-context.js +7 -10
- package/dist/core/runner/prepare-prompt-assembly.d.ts +45 -40
- package/dist/core/runner/prepare-prompt-assembly.js +134 -101
- package/dist/core/runner/prepare-prompt-inputs.d.ts +18 -19
- package/dist/core/runner/prepare-prompt-inputs.js +5 -7
- package/dist/core/runner/prepare-protocol-tools.d.ts +6 -4
- package/dist/core/runner/prepare-protocol-tools.js +2 -2
- package/dist/core/runner/prepare-safety-scan.js +6 -10
- package/dist/core/runner/prepare-suspend-saga.d.ts +6 -0
- package/dist/core/runner/prepare-suspend-saga.js +7 -5
- package/dist/core/runner/prepare-task.js +33 -15
- package/dist/core/runner/prepare-turn-wiring.d.ts +13 -15
- package/dist/core/runner/prepare-turn-wiring.js +29 -27
- package/dist/core/runner/prepare-wiring-manifest.d.ts +5 -6
- package/dist/core/runner/prepare-wiring-manifest.js +7 -7
- package/dist/core/runner/resume-apply.d.ts +5 -2
- package/dist/core/runner/resume-apply.js +24 -42
- package/dist/core/runner/resume-checkpoint-screen.d.ts +1 -0
- package/dist/core/runner/resume-checkpoint-screen.js +9 -1
- package/dist/core/runner/resume-preflight.js +38 -16
- package/dist/core/runner/retired-runner-deps.js +3 -1
- package/dist/core/runner/run-brain-sinks.d.ts +3 -2
- package/dist/core/runner/run-brain-sinks.js +5 -1
- package/dist/core/runner/run-compaction-machinery.d.ts +7 -1
- package/dist/core/runner/run-compaction-machinery.js +7 -33
- package/dist/core/runner/run-harness-handlers.js +4 -2
- package/dist/core/runner/run-identity-wiring.d.ts +3 -1
- package/dist/core/runner/run-identity-wiring.js +3 -2
- package/dist/core/runner/run-leg.js +62 -84
- package/dist/core/runner/run-notification-lane.js +1 -0
- package/dist/core/runner/run-recovery-lanes.d.ts +3 -0
- package/dist/core/runner/run-recovery-lanes.js +11 -10
- package/dist/core/runner/run-settle-and-teardown.js +9 -28
- package/dist/core/runner/run-stop-and-final-verify.js +18 -25
- package/dist/core/runner/run-terminal-adoption.d.ts +3 -0
- package/dist/core/runner/run-terminal-adoption.js +33 -22
- package/dist/core/runner/run-tool-mount-facts.js +5 -3
- package/dist/core/runner/run-turn-boundary.js +23 -34
- package/dist/core/runner/runtask.d.ts +6 -7
- package/dist/core/runner/runtask.js +14 -72
- package/dist/core/runner/session-rule-policy.d.ts +6 -4
- package/dist/core/runner/session-rule-policy.js +17 -10
- package/dist/core/runner/side-call-account.d.ts +68 -0
- package/dist/core/runner/side-call-account.js +61 -0
- package/dist/core/runner/stream-halt-verbs.js +12 -17
- package/dist/core/runner/stream-lifecycle-verbs.js +8 -5
- package/dist/core/runner/stream-steer-verb.d.ts +1 -1
- package/dist/core/runner/stream-steer-verb.js +20 -38
- package/dist/core/runner/sub-agent-deny-lists.d.ts +121 -22
- package/dist/core/runner/sub-agent-deny-lists.js +228 -71
- package/dist/core/runner/tool-end-body.d.ts +5 -6
- package/dist/core/runner/tool-end-body.js +6 -4
- package/dist/core/runner/tool-not-executed.d.ts +15 -0
- package/dist/core/runner/tool-not-executed.js +30 -0
- package/dist/core/runner/tool-occurrence.d.ts +8 -7
- package/dist/core/runner/tool-occurrence.js +5 -5
- package/dist/core/runner/tool-result-media-seat.d.ts +1 -1
- package/dist/core/runner-deps.d.ts +20 -28
- package/dist/core/safety-merge-corpus.js +18 -2
- package/dist/core/secret-env.d.ts +93 -20
- package/dist/core/secret-env.js +192 -38
- package/dist/core/session-policy-store.d.ts +93 -17
- package/dist/core/session-policy-store.js +178 -25
- package/dist/core/session-reconcile.d.ts +4 -0
- package/dist/core/session-reconcile.js +2 -1
- package/dist/core/shell-read-silence.js +3 -32
- package/dist/core/side-query.d.ts +5 -3
- package/dist/core/skill-grant.d.ts +3 -2
- package/dist/core/skill-grant.js +17 -9
- package/dist/core/skills-directory.d.ts +31 -11
- package/dist/core/skills-directory.js +655 -104
- package/dist/core/task-event.d.ts +13 -3
- package/dist/core/task-result.d.ts +8 -0
- package/dist/core/task-spec.d.ts +20 -19
- package/dist/core/task-stream.d.ts +14 -4
- package/dist/core/tighten-task-spec.d.ts +4 -3
- package/dist/core/tighten-task-spec.js +2 -4
- package/dist/core/tool-check-reading.d.ts +74 -0
- package/dist/core/tool-check-reading.js +80 -0
- package/dist/core/tool-policy.d.ts +59 -18
- package/dist/core/tool-policy.js +77 -12
- package/dist/core/tool-registry.d.ts +20 -0
- package/dist/core/tool-registry.js +4 -0
- package/dist/core/tool-spec.d.ts +10 -6
- package/dist/core/tools.js +2 -0
- package/dist/core/trace.d.ts +51 -32
- package/dist/core/types.d.ts +2 -1
- package/dist/core/types.js +1 -0
- package/dist/core/unc-spelling.d.ts +10 -0
- package/dist/core/unc-spelling.js +3 -0
- package/dist/core/untrusted-egress.d.ts +8 -0
- package/dist/core/untrusted-egress.js +4 -1
- package/dist/core/user-attachment.d.ts +12 -2
- package/dist/core/user-attachment.js +17 -2
- package/dist/core/wiring-manifest.d.ts +14 -13
- package/dist/core/wiring-manifest.js +2 -2
- package/dist/engine/compaction/utils.js +1 -2
- package/dist/engine/execution-env/node-execution-env.d.ts +4 -3
- package/dist/engine/execution-env/symlink-chain.js +1 -1
- package/dist/engine/harness/agent-harness.d.ts +1 -1
- package/dist/engine/harness/agent-harness.js +3 -3
- package/dist/engine/harness/types.d.ts +17 -16
- package/dist/engine/harness/types.js +7 -1
- package/dist/engine/llm/types.d.ts +12 -7
- package/dist/engine/loop/agent-loop.js +1 -1
- package/dist/engine/loop/types.d.ts +1 -1
- package/dist/engine/lsp/node-lsp-manager.d.ts +2 -2
- package/dist/engine/session/import-validate.js +3 -10
- package/dist/engine/session/session.d.ts +4 -4
- package/dist/engine/session/session.js +4 -4
- package/dist/index.d.ts +24 -17
- package/dist/index.js +15 -12
- package/dist/internal/harness.d.ts +1 -1
- package/dist/internal/harness.js +1 -1
- package/dist/orchestration/run-spec.d.ts +4 -6
- package/dist/orchestration/run-spec.js +39 -63
- package/dist/orchestration/run-workflow-tool.js +1 -2
- package/dist/orchestration/workflow.d.ts +11 -3
- package/dist/orchestration/workflow.js +11 -2
- package/dist/prompt-assembly/artifact-store.d.ts +37 -56
- package/dist/prompt-assembly/artifact-store.js +31 -49
- package/dist/prompt-assembly/artifact.d.ts +89 -76
- package/dist/prompt-assembly/artifact.js +167 -146
- package/dist/prompt-assembly/assemble.d.ts +34 -29
- package/dist/prompt-assembly/assemble.js +33 -220
- package/dist/prompt-assembly/bands.d.ts +20 -0
- package/dist/prompt-assembly/bands.js +18 -0
- package/dist/prompt-assembly/catalog/constitution.d.ts +23 -0
- package/dist/prompt-assembly/catalog/constitution.js +69 -0
- package/dist/prompt-assembly/catalog/core-behavior.d.ts +9 -0
- package/dist/prompt-assembly/catalog/core-behavior.js +85 -0
- package/dist/prompt-assembly/catalog/index.d.ts +11 -0
- package/dist/prompt-assembly/catalog/index.js +59 -0
- package/dist/prompt-assembly/catalog/modes.d.ts +15 -0
- package/dist/prompt-assembly/catalog/modes.js +137 -0
- package/dist/prompt-assembly/catalog/role.d.ts +10 -0
- package/dist/prompt-assembly/catalog/role.js +157 -0
- package/dist/prompt-assembly/catalog/schema.d.ts +124 -0
- package/dist/prompt-assembly/catalog/schema.js +25 -0
- package/dist/prompt-assembly/catalog/sections.d.ts +9 -0
- package/dist/prompt-assembly/catalog/sections.js +98 -0
- package/dist/prompt-assembly/catalog/team.d.ts +4 -0
- package/dist/prompt-assembly/catalog/team.js +258 -0
- package/dist/prompt-assembly/composer.d.ts +24 -28
- package/dist/prompt-assembly/composer.js +124 -46
- package/dist/prompt-assembly/epoch.d.ts +89 -79
- package/dist/prompt-assembly/epoch.js +115 -142
- package/dist/prompt-assembly/explain.d.ts +58 -34
- package/dist/prompt-assembly/explain.js +21 -24
- package/dist/prompt-assembly/overlay.d.ts +127 -0
- package/dist/prompt-assembly/overlay.js +301 -0
- package/dist/prompt-assembly/renderers.d.ts +21 -0
- package/dist/prompt-assembly/renderers.js +39 -0
- package/dist/prompt-assembly/section-usage.d.ts +3 -3
- package/dist/prompt-assembly/section-usage.js +1 -1
- package/dist/prompt-assembly/select.d.ts +56 -0
- package/dist/prompt-assembly/select.js +69 -0
- package/dist/prompt-assembly/sugar.d.ts +31 -0
- package/dist/prompt-assembly/sugar.js +20 -0
- package/dist/prompt-assembly/turn-snapshot.d.ts +3 -2
- package/dist/prompt-assembly/types.d.ts +45 -148
- package/dist/prompts/coordinator.d.ts +2 -21
- package/dist/prompts/coordinator.js +3 -255
- package/dist/prompts/cowork.d.ts +27 -16
- package/dist/prompts/cowork.js +2 -23
- package/dist/prompts/default.d.ts +38 -500
- package/dist/prompts/default.js +20 -285
- package/dist/prompts/supervisor.d.ts +6 -71
- package/dist/prompts/supervisor.js +6 -117
- package/dist/stores/file/session-policy-store.d.ts +3 -3
- package/dist/tools/fs/bash-readonly-classifier.d.ts +6 -5
- package/dist/tools/fs/dir-entries.d.ts +4 -2
- package/dist/tools/fs/dir-entries.js +16 -4
- package/dist/tools/fs/fs-bash.d.ts +1 -1
- package/dist/tools/fs/fs-bash.js +22 -11
- package/dist/tools/fs/fs-pdf.js +17 -13
- package/dist/tools/fs/fs-read.js +4 -3
- package/dist/tools/fs/fs-shared.d.ts +1 -10
- package/dist/tools/fs/fs-shared.js +3 -4
- package/dist/tools/fs/fs-write.js +2 -1
- package/dist/tools/fs/notebook.js +1 -1
- package/dist/tools/fs/pdf.d.ts +20 -10
- package/dist/tools/fs/pdf.js +19 -10
- package/dist/tools/fs/program-read-model.d.ts +68 -8
- package/dist/tools/fs/program-read-model.js +112 -33
- package/dist/tools/fs/program-read-model.rows.js +30 -10
- package/dist/tools/fs/read-deny-home.d.ts +25 -9
- package/dist/tools/fs/read-deny-home.js +28 -27
- package/dist/tools/fs/read-deny.d.ts +41 -11
- package/dist/tools/fs/read-deny.js +51 -5
- package/dist/tools/fs/safety.d.ts +4 -26
- package/dist/tools/fs/safety.js +10 -32
- package/dist/tools/fs/search.js +15 -10
- package/dist/tools/fs/shell-read-argv.d.ts +3 -2
- package/dist/tools/fs/shell-read-argv.js +118 -38
- package/dist/tools/fs/shell-read-establish.d.ts +5 -5
- package/dist/tools/fs/shell-read-establish.js +11 -61
- package/dist/tools/fs/shell-read-identity.js +6 -3
- package/dist/tools/fs/shell-read-judge.d.ts +13 -15
- package/dist/tools/fs/shell-read-judge.js +18 -4
- package/dist/tools/fs/shell-read-plan.d.ts +2 -2
- package/dist/tools/web.js +1 -1
- package/package.json +13 -1
- package/test/export-surface.snapshot.json +256 -99
- package/wire-changes/core@7.51.1.json +5 -5
- package/wire-changes/core@7.51.2.json +293 -0
- package/wire-changes/core@7.52.0.json +5859 -0
- package/dist/core/hook-seats.d.ts +0 -66
- package/dist/core/hook-seats.js +0 -37
- package/dist/prompt-assembly/packs/sema-default.d.ts +0 -2
- package/dist/prompt-assembly/packs/sema-default.js +0 -147
- package/dist/prompts/simple-sections.d.ts +0 -58
- package/dist/prompts/simple-sections.js +0 -43
|
@@ -1,29 +1,25 @@
|
|
|
1
1
|
import { mkdirSync, promises as fs } from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
import { verifyPromptArtifact
|
|
4
|
-
function
|
|
5
|
-
|
|
3
|
+
import { verifyPromptArtifact } from "./artifact.js";
|
|
4
|
+
function verifiedRead(bytes, artifactDigest) {
|
|
5
|
+
let parsed;
|
|
6
|
+
try {
|
|
7
|
+
parsed = JSON.parse(bytes);
|
|
8
|
+
}
|
|
9
|
+
catch {
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
|
+
const v = verifyPromptArtifact(parsed);
|
|
13
|
+
return v.ok && v.artifact.artifactDigest === artifactDigest ? v.artifact : undefined;
|
|
6
14
|
}
|
|
7
15
|
export class MemoryPromptArtifactStore {
|
|
8
16
|
byDigest = new Map();
|
|
9
|
-
async get(artifactDigest
|
|
17
|
+
async get(artifactDigest) {
|
|
10
18
|
const bytes = this.byDigest.get(artifactDigest);
|
|
11
|
-
|
|
12
|
-
return undefined;
|
|
13
|
-
let parsed;
|
|
14
|
-
try {
|
|
15
|
-
parsed = JSON.parse(bytes);
|
|
16
|
-
}
|
|
17
|
-
catch {
|
|
18
|
-
return undefined;
|
|
19
|
-
}
|
|
20
|
-
const v = verifyPromptArtifact(parsed, opts);
|
|
21
|
-
if (!v.ok || v.artifact.artifactDigest !== artifactDigest)
|
|
22
|
-
return undefined;
|
|
23
|
-
return normalizedEnvelope(parsed, v.artifact);
|
|
19
|
+
return bytes === undefined ? undefined : verifiedRead(bytes, artifactDigest);
|
|
24
20
|
}
|
|
25
|
-
async put(
|
|
26
|
-
this.byDigest.set(
|
|
21
|
+
async put(artifact) {
|
|
22
|
+
this.byDigest.set(artifact.artifactDigest, JSON.stringify(artifact));
|
|
27
23
|
}
|
|
28
24
|
}
|
|
29
25
|
export class FilePromptArtifactStore {
|
|
@@ -36,7 +32,7 @@ export class FilePromptArtifactStore {
|
|
|
36
32
|
const m = /^sha256:([0-9a-f]{64})$/.exec(artifactDigest);
|
|
37
33
|
return m ? path.join(this.dir, "artifacts", `${m[1]}.json`) : undefined;
|
|
38
34
|
}
|
|
39
|
-
async get(artifactDigest
|
|
35
|
+
async get(artifactDigest) {
|
|
40
36
|
const file = this.fileFor(artifactDigest);
|
|
41
37
|
if (file === undefined)
|
|
42
38
|
return undefined;
|
|
@@ -47,24 +43,14 @@ export class FilePromptArtifactStore {
|
|
|
47
43
|
catch {
|
|
48
44
|
return undefined;
|
|
49
45
|
}
|
|
50
|
-
|
|
51
|
-
try {
|
|
52
|
-
parsed = JSON.parse(bytes);
|
|
53
|
-
}
|
|
54
|
-
catch {
|
|
55
|
-
return undefined;
|
|
56
|
-
}
|
|
57
|
-
const v = verifyPromptArtifact(parsed, opts);
|
|
58
|
-
if (!v.ok || v.artifact.artifactDigest !== artifactDigest)
|
|
59
|
-
return undefined;
|
|
60
|
-
return normalizedEnvelope(parsed, v.artifact);
|
|
46
|
+
return verifiedRead(bytes, artifactDigest);
|
|
61
47
|
}
|
|
62
|
-
async put(
|
|
63
|
-
const file = this.fileFor(
|
|
48
|
+
async put(artifact) {
|
|
49
|
+
const file = this.fileFor(artifact.artifactDigest);
|
|
64
50
|
if (file === undefined)
|
|
65
|
-
throw new Error(`prompt-artifact store: malformed digest ${JSON.stringify(
|
|
51
|
+
throw new Error(`prompt-artifact store: malformed digest ${JSON.stringify(artifact.artifactDigest).slice(0, 120)}`);
|
|
66
52
|
const tmp = `${file}.tmp-${process.pid}-${Date.now()}`;
|
|
67
|
-
await fs.writeFile(tmp, JSON.stringify(
|
|
53
|
+
await fs.writeFile(tmp, JSON.stringify(artifact), "utf8");
|
|
68
54
|
await fs.rename(tmp, file);
|
|
69
55
|
}
|
|
70
56
|
}
|
|
@@ -113,7 +99,6 @@ export class FilePromptSourceStateStore {
|
|
|
113
99
|
export class CenterPromptSource {
|
|
114
100
|
store;
|
|
115
101
|
stateStore;
|
|
116
|
-
engineVersion;
|
|
117
102
|
candidate;
|
|
118
103
|
state = "unavailable";
|
|
119
104
|
tail = Promise.resolve();
|
|
@@ -125,16 +110,14 @@ export class CenterPromptSource {
|
|
|
125
110
|
constructor(opts) {
|
|
126
111
|
this.store = opts.store;
|
|
127
112
|
this.stateStore = opts.stateStore ?? new MemoryPromptSourceStateStore();
|
|
128
|
-
this.engineVersion = opts.engineVersion;
|
|
129
113
|
}
|
|
130
114
|
current() {
|
|
131
115
|
return this.candidate;
|
|
132
116
|
}
|
|
133
117
|
async get(artifactDigest) {
|
|
134
|
-
if (this.candidate?.
|
|
135
|
-
return this.candidate
|
|
136
|
-
|
|
137
|
-
return env?.artifact;
|
|
118
|
+
if (this.candidate?.artifactDigest === artifactDigest)
|
|
119
|
+
return this.candidate;
|
|
120
|
+
return this.store.get(artifactDigest);
|
|
138
121
|
}
|
|
139
122
|
async restore() {
|
|
140
123
|
return this.exclusive(async () => {
|
|
@@ -149,23 +132,22 @@ export class CenterPromptSource {
|
|
|
149
132
|
this.state = "unavailable";
|
|
150
133
|
return;
|
|
151
134
|
}
|
|
152
|
-
const
|
|
153
|
-
this.candidate =
|
|
154
|
-
this.state =
|
|
135
|
+
const stored = await this.store.get(state.artifactDigest);
|
|
136
|
+
this.candidate = stored !== undefined ? { ...stored, sourceRevision: state.sourceRevision } : undefined;
|
|
137
|
+
this.state = stored !== undefined ? "active" : "unavailable";
|
|
155
138
|
});
|
|
156
139
|
}
|
|
157
140
|
sourceState() {
|
|
158
141
|
return this.state;
|
|
159
142
|
}
|
|
160
143
|
async applySnapshot(raw) {
|
|
161
|
-
const v = verifyPromptArtifact(raw
|
|
144
|
+
const v = verifyPromptArtifact(raw);
|
|
162
145
|
if (!v.ok)
|
|
163
146
|
return v;
|
|
164
|
-
const envelope = raw;
|
|
165
147
|
return this.exclusive(async () => {
|
|
166
|
-
await this.store.put(
|
|
167
|
-
await this.stateStore.save({ state: "active", artifactDigest: v.artifact.artifactDigest, sourceRevision:
|
|
168
|
-
this.candidate =
|
|
148
|
+
await this.store.put(v.artifact);
|
|
149
|
+
await this.stateStore.save({ state: "active", artifactDigest: v.artifact.artifactDigest, sourceRevision: v.artifact.sourceRevision });
|
|
150
|
+
this.candidate = v.artifact;
|
|
169
151
|
this.state = "active";
|
|
170
152
|
return { ok: true, artifactDigest: v.artifact.artifactDigest };
|
|
171
153
|
});
|
|
@@ -1,92 +1,105 @@
|
|
|
1
|
-
import type
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
import { type OverlayOp, type PromptTrait } from "./catalog/schema.js";
|
|
2
|
+
import { type PromptOverlay, type SourcedOverlay } from "./overlay.js";
|
|
3
|
+
/** What an artifact needs from the engine that composes it: the targets it names (each with what kind of target it
|
|
4
|
+
* is), the operations it uses, the traits its `when` conditions read, and the bindings its overlays are scoped to. */
|
|
5
|
+
export interface PromptArtifactRequires {
|
|
6
|
+
readonly targets: readonly {
|
|
7
|
+
readonly id: string;
|
|
8
|
+
readonly kind: "message" | "section" | "band";
|
|
9
|
+
}[];
|
|
10
|
+
readonly ops: readonly OverlayOp[];
|
|
11
|
+
readonly traits: readonly PromptTrait[];
|
|
12
|
+
readonly bindings: readonly string[];
|
|
13
13
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
14
|
+
/** Why the artifact exists: an intent sentence (required) and references to the evaluations or goldens behind it. */
|
|
15
|
+
export interface PromptArtifactEvidence {
|
|
16
|
+
readonly intent: string;
|
|
17
|
+
readonly refs: readonly string[];
|
|
18
18
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
/** The digested part of an artifact. */
|
|
20
|
+
export interface PromptArtifactPayload {
|
|
21
|
+
readonly schemaVersion: 2;
|
|
22
|
+
readonly requires: PromptArtifactRequires;
|
|
23
|
+
/** Every overlay is of the `center` class; `scope.binding` absent ⇒ applies under every binding. */
|
|
24
|
+
readonly overlays: readonly PromptOverlay[];
|
|
25
|
+
readonly evidence: PromptArtifactEvidence;
|
|
23
26
|
}
|
|
24
|
-
/**
|
|
25
|
-
export interface
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
/** An artifact's identity: the payload and its digest (what a session pins and a store holds by digest). */
|
|
28
|
+
export interface PromptArtifact {
|
|
29
|
+
readonly payload: PromptArtifactPayload;
|
|
30
|
+
readonly artifactDigest: string;
|
|
28
31
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
catalogDigest: string;
|
|
33
|
-
compatibleCore?: CoreCompatRange;
|
|
34
|
-
closure: PromptDependencyClosure;
|
|
32
|
+
/** The published form: the artifact plus its opaque source revision (never ordered, never compared for recency). */
|
|
33
|
+
export interface PublishedPromptArtifact extends PromptArtifact {
|
|
34
|
+
readonly sourceRevision: string;
|
|
35
35
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
readonly maxSectionBytes: 32000;
|
|
53
|
-
readonly maxTotalBytes: 131072;
|
|
54
|
-
readonly maxIdLength: 128;
|
|
55
|
-
readonly maxPackIdLength: 200;
|
|
56
|
-
};
|
|
57
|
-
export declare function sha256Hex(text: string): string;
|
|
58
|
-
export declare function computeCatalogDigest(catalog: PromptCatalogSnapshot): string;
|
|
59
|
-
export declare function computeArtifactDigest(payload: PromptEpochArtifactPayload): string;
|
|
36
|
+
/** Validator bounds: they bound abuse and runaway publishes, not legitimate artifacts. */
|
|
37
|
+
export declare const ARTIFACT_LIMITS: Readonly<{
|
|
38
|
+
maxOverlays: 64;
|
|
39
|
+
maxOverlayTextBytes: 32000;
|
|
40
|
+
maxTotalTextBytes: 131072;
|
|
41
|
+
maxIntentChars: 2000;
|
|
42
|
+
maxRefs: 32;
|
|
43
|
+
maxRefChars: 500;
|
|
44
|
+
maxSourceRevisionChars: 500;
|
|
45
|
+
}>;
|
|
46
|
+
export declare function computeArtifactDigest(payload: PromptArtifactPayload): string;
|
|
47
|
+
/** The requirement set an overlay list implies — the one derivation the builder stores and the verifier recomputes. */
|
|
48
|
+
export declare function requiresOf(overlays: readonly PromptOverlay[]): PromptArtifactRequires;
|
|
49
|
+
/** The requirements this engine does not meet (empty ⇒ all met): a target its catalog lacks, an op or a trait outside
|
|
50
|
+
* its vocabulary. Bindings are the deployment's open vocabulary and are always met. */
|
|
51
|
+
export declare function unmetRequirements(requires: PromptArtifactRequires): string[];
|
|
60
52
|
export type ArtifactVerifyResult = {
|
|
61
53
|
ok: true;
|
|
62
|
-
artifact:
|
|
54
|
+
artifact: PublishedPromptArtifact;
|
|
55
|
+
} | {
|
|
56
|
+
ok: false;
|
|
57
|
+
code: ArtifactVerifyCode;
|
|
58
|
+
reason: string;
|
|
59
|
+
};
|
|
60
|
+
type BodyVerifyResult = {
|
|
61
|
+
ok: true;
|
|
62
|
+
artifact: PromptArtifact;
|
|
63
63
|
} | {
|
|
64
64
|
ok: false;
|
|
65
|
-
code:
|
|
65
|
+
code: ArtifactVerifyCode;
|
|
66
66
|
reason: string;
|
|
67
67
|
};
|
|
68
|
+
/** Why an artifact is invalid (docs/CLOSED-SETS.md). */
|
|
69
|
+
export type ArtifactVerifyCode = "shape" | "schema" | "limits" | "requires" | "overlay" | "evidence" | "digest";
|
|
68
70
|
/**
|
|
69
|
-
*
|
|
70
|
-
*
|
|
71
|
-
*
|
|
71
|
+
* Verify an UNTRUSTED published artifact (a network body or stored bytes — a store re-verifies on read). Pure. Any
|
|
72
|
+
* failure invalidates the whole artifact: shape, schema version, bounds, each overlay under the center class's band
|
|
73
|
+
* columns and the locked-text guard, the stored requirement list (recomputed, then checked against this engine),
|
|
74
|
+
* same-target replace conflicts, the evidence rule, and the digest.
|
|
72
75
|
*/
|
|
73
|
-
export declare function verifyPromptArtifact(raw: unknown
|
|
74
|
-
|
|
75
|
-
|
|
76
|
+
export declare function verifyPromptArtifact(raw: unknown): ArtifactVerifyResult;
|
|
77
|
+
/**
|
|
78
|
+
* The same verifier over an artifact without its provenance — what a run re-checks when it adopts an artifact from
|
|
79
|
+
* its source (a candidate, a pinned digest, a parent's layer): requirements are met by THIS engine, every overlay is
|
|
80
|
+
* legal here, the digest holds. A source is a deployment seat; what it hands the run is checked, not trusted.
|
|
81
|
+
*/
|
|
82
|
+
export declare function verifyPromptArtifactBody(raw: unknown): BodyVerifyResult;
|
|
83
|
+
/** The center layer a run composes under: the adopted artifact and, when the source stamped one, its revision. */
|
|
84
|
+
export type CenterAdoption = {
|
|
85
|
+
artifact: PromptArtifact;
|
|
86
|
+
sourceRevision?: string;
|
|
87
|
+
};
|
|
88
|
+
/**
|
|
89
|
+
* The center class's overlays for an adopted artifact under a binding: every overlay with no `scope.binding`, and
|
|
90
|
+
* every one whose `scope.binding` equals the run's binding, in the artifact's order.
|
|
91
|
+
*/
|
|
92
|
+
export declare function centerOverlaysOf(adoption: CenterAdoption | undefined, binding: string | undefined): readonly SourcedOverlay[];
|
|
93
|
+
/** An artifact a source handed a run, re-checked by this engine before the run adopts it; undefined when it fails. */
|
|
94
|
+
export declare function adoptCenter(artifact: PromptArtifact, sourceRevision: string | undefined): CenterAdoption | undefined;
|
|
76
95
|
/**
|
|
77
|
-
*
|
|
78
|
-
*
|
|
96
|
+
* Build a published artifact from overlays and evidence — the one builder (a center's publish pipeline calls it):
|
|
97
|
+
* `requires` is derived, the digest computed over the payload's JSON form (what travels), and the result goes
|
|
98
|
+
* through the verifier, so the caller holds either a valid artifact or the reason it is not one.
|
|
79
99
|
*/
|
|
80
|
-
export declare function
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
export declare function buildPromptArtifactEnvelope(opts: {
|
|
84
|
-
packId: string;
|
|
85
|
-
sections: ReadonlyArray<{
|
|
86
|
-
id: string;
|
|
87
|
-
slot: CenterOverlaySlot;
|
|
88
|
-
text: string;
|
|
89
|
-
}>;
|
|
100
|
+
export declare function buildPromptArtifact(opts: {
|
|
101
|
+
overlays: readonly PromptOverlay[];
|
|
102
|
+
evidence: PromptArtifactEvidence;
|
|
90
103
|
sourceRevision: string;
|
|
91
|
-
|
|
92
|
-
}
|
|
104
|
+
}): ArtifactVerifyResult;
|
|
105
|
+
export {};
|