@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,169 +1,190 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
|
+
import { isBandId } from "./bands.js";
|
|
3
|
+
import { SEMA_DEFAULT_CATALOG } from "./catalog/index.js";
|
|
4
|
+
import { OVERLAY_OPS, PROMPT_TRAITS, isWordOf } from "./catalog/schema.js";
|
|
2
5
|
import { canonical } from "./epoch.js";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
import { sectionOfMessage, validateOverlay } from "./overlay.js";
|
|
7
|
+
export const ARTIFACT_LIMITS = Object.freeze({
|
|
8
|
+
maxOverlays: 64,
|
|
9
|
+
maxOverlayTextBytes: 32_000,
|
|
10
|
+
maxTotalTextBytes: 131_072,
|
|
11
|
+
maxIntentChars: 2_000,
|
|
12
|
+
maxRefs: 32,
|
|
13
|
+
maxRefChars: 500,
|
|
14
|
+
maxSourceRevisionChars: 500,
|
|
15
|
+
});
|
|
11
16
|
const DIGEST_RE = /^sha256:[0-9a-f]{64}$/;
|
|
12
|
-
const
|
|
13
|
-
|
|
17
|
+
const MESSAGE_IDS = new Set(SEMA_DEFAULT_CATALOG.messages.map((m) => m.id));
|
|
18
|
+
const SECTION_IDS = new Set(SEMA_DEFAULT_CATALOG.sections.map((s) => s.id));
|
|
19
|
+
function sha256Hex(text) {
|
|
14
20
|
return `sha256:${createHash("sha256").update(text, "utf8").digest("hex")}`;
|
|
15
21
|
}
|
|
16
|
-
export function computeCatalogDigest(catalog) {
|
|
17
|
-
return sha256Hex(canonical(catalog));
|
|
18
|
-
}
|
|
19
22
|
export function computeArtifactDigest(payload) {
|
|
20
23
|
return sha256Hex(canonical(payload));
|
|
21
24
|
}
|
|
22
|
-
function
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
25
|
+
export function requiresOf(overlays) {
|
|
26
|
+
const targets = new Map();
|
|
27
|
+
const need = (id, kind) => {
|
|
28
|
+
targets.set(`${kind}:${id}`, { id, kind });
|
|
29
|
+
};
|
|
30
|
+
const ops = new Set();
|
|
31
|
+
const traits = new Set();
|
|
32
|
+
const bindings = new Set();
|
|
33
|
+
for (const o of overlays) {
|
|
34
|
+
ops.add(o.op);
|
|
35
|
+
need(o.target, o.op === "add" ? "band" : o.op === "drop" ? "section" : "message");
|
|
36
|
+
if (o.message !== undefined)
|
|
37
|
+
need(o.message, "message");
|
|
38
|
+
for (const t of [...(o.when?.traits?.allOf ?? []), ...(o.when?.traits?.noneOf ?? [])])
|
|
39
|
+
traits.add(t);
|
|
40
|
+
if (o.scope?.binding !== undefined)
|
|
41
|
+
bindings.add(o.scope.binding);
|
|
42
|
+
}
|
|
43
|
+
const byText = (a, b) => (a < b ? -1 : a > b ? 1 : 0);
|
|
44
|
+
return {
|
|
45
|
+
targets: [...targets.values()].sort((a, b) => byText(`${a.kind}:${a.id}`, `${b.kind}:${b.id}`)),
|
|
46
|
+
ops: OVERLAY_OPS.filter((op) => ops.has(op)),
|
|
47
|
+
traits: PROMPT_TRAITS.filter((t) => traits.has(t)),
|
|
48
|
+
bindings: [...bindings].sort(byText),
|
|
49
|
+
};
|
|
27
50
|
}
|
|
28
|
-
function
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
51
|
+
export function unmetRequirements(requires) {
|
|
52
|
+
const unmet = [];
|
|
53
|
+
for (const t of requires.targets) {
|
|
54
|
+
const has = t.kind === "message" ? MESSAGE_IDS.has(t.id) : t.kind === "section" ? SECTION_IDS.has(t.id) : isBandId(t.id);
|
|
55
|
+
if (!has)
|
|
56
|
+
unmet.push(`${t.kind} "${t.id}"`);
|
|
32
57
|
}
|
|
33
|
-
|
|
58
|
+
for (const op of requires.ops)
|
|
59
|
+
if (!isWordOf(OVERLAY_OPS, op))
|
|
60
|
+
unmet.push(`op "${String(op)}"`);
|
|
61
|
+
for (const tr of requires.traits)
|
|
62
|
+
if (!isWordOf(PROMPT_TRAITS, tr))
|
|
63
|
+
unmet.push(`trait "${String(tr)}"`);
|
|
64
|
+
return unmet;
|
|
34
65
|
}
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
66
|
+
function isRecord(v) {
|
|
67
|
+
return v !== null && typeof v === "object" && !Array.isArray(v);
|
|
68
|
+
}
|
|
69
|
+
function requiresShaped(v) {
|
|
70
|
+
if (!isRecord(v))
|
|
71
|
+
return false;
|
|
72
|
+
const strings = (a) => Array.isArray(a) && a.every((s) => typeof s === "string");
|
|
73
|
+
return (Object.keys(v).every((k) => k === "targets" || k === "ops" || k === "traits" || k === "bindings") &&
|
|
74
|
+
Array.isArray(v.targets) &&
|
|
75
|
+
v.targets.every((t) => isRecord(t) && typeof t.id === "string" && (t.kind === "message" || t.kind === "section" || t.kind === "band") && Object.keys(t).every((k) => k === "id" || k === "kind")) &&
|
|
76
|
+
strings(v.ops) &&
|
|
77
|
+
strings(v.traits) &&
|
|
78
|
+
strings(v.bindings));
|
|
79
|
+
}
|
|
80
|
+
function replaceConflict(overlays) {
|
|
81
|
+
const seen = new Map();
|
|
82
|
+
for (const o of overlays) {
|
|
83
|
+
if (o.op !== "replace")
|
|
84
|
+
continue;
|
|
85
|
+
const key = canonical({ target: o.target, binding: o.scope?.binding ?? null, when: o.when ?? null });
|
|
86
|
+
const prior = seen.get(key);
|
|
87
|
+
if (prior !== undefined)
|
|
88
|
+
return `overlays "${prior}" and "${o.id}" both replace "${o.target}" under the same binding and condition`;
|
|
89
|
+
seen.set(key, o.id);
|
|
90
|
+
}
|
|
91
|
+
return undefined;
|
|
92
|
+
}
|
|
93
|
+
export function verifyPromptArtifact(raw) {
|
|
94
|
+
if (!isRecord(raw))
|
|
95
|
+
return { ok: false, code: "shape", reason: "the published artifact is not an object" };
|
|
96
|
+
if (typeof raw.sourceRevision !== "string" || raw.sourceRevision.length === 0 || raw.sourceRevision.length > ARTIFACT_LIMITS.maxSourceRevisionChars) {
|
|
97
|
+
return { ok: false, code: "shape", reason: "sourceRevision missing or oversized" };
|
|
42
98
|
}
|
|
43
|
-
const
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
99
|
+
const v = verifyPromptArtifactBody(raw);
|
|
100
|
+
return v.ok ? { ok: true, artifact: { ...v.artifact, sourceRevision: raw.sourceRevision } } : v;
|
|
101
|
+
}
|
|
102
|
+
export function verifyPromptArtifactBody(raw) {
|
|
103
|
+
const fail = (code, reason) => ({ ok: false, code, reason });
|
|
104
|
+
if (!isRecord(raw))
|
|
105
|
+
return fail("shape", "the artifact is not an object");
|
|
106
|
+
for (const k of Object.keys(raw))
|
|
107
|
+
if (k !== "payload" && k !== "artifactDigest" && k !== "sourceRevision")
|
|
108
|
+
return fail("shape", `the artifact carries ${JSON.stringify(k).slice(0, 60)}`);
|
|
109
|
+
if (typeof raw.artifactDigest !== "string" || !DIGEST_RE.test(raw.artifactDigest))
|
|
110
|
+
return fail("shape", "artifactDigest malformed");
|
|
111
|
+
const payload = raw.payload;
|
|
112
|
+
if (!isRecord(payload))
|
|
48
113
|
return fail("shape", "payload is not an object");
|
|
49
|
-
if (payload.schemaVersion !==
|
|
50
|
-
return fail("schema", `unsupported schemaVersion ${
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
if (payload.
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
const
|
|
70
|
-
if (
|
|
71
|
-
return fail("
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
114
|
+
if (payload.schemaVersion !== 2)
|
|
115
|
+
return fail("schema", `unsupported schemaVersion ${JSON.stringify(payload.schemaVersion)?.slice(0, 40)} (this engine reads schemaVersion 2 only)`);
|
|
116
|
+
for (const k of Object.keys(payload))
|
|
117
|
+
if (k !== "schemaVersion" && k !== "requires" && k !== "overlays" && k !== "evidence")
|
|
118
|
+
return fail("shape", `payload carries ${JSON.stringify(k).slice(0, 60)}`);
|
|
119
|
+
if (!Array.isArray(payload.overlays))
|
|
120
|
+
return fail("shape", "overlays is not an array");
|
|
121
|
+
if (payload.overlays.length === 0)
|
|
122
|
+
return fail("shape", "overlays is empty — publish at least one overlay, or disable the source instead");
|
|
123
|
+
if (payload.overlays.length > ARTIFACT_LIMITS.maxOverlays)
|
|
124
|
+
return fail("limits", `${payload.overlays.length} overlays > max ${ARTIFACT_LIMITS.maxOverlays}`);
|
|
125
|
+
const requires = payload.requires;
|
|
126
|
+
if (!requiresShaped(requires))
|
|
127
|
+
return fail("shape", "requires is not { targets: { id, kind }[], ops: string[], traits: string[], bindings: string[] }");
|
|
128
|
+
const unmet = unmetRequirements(requires);
|
|
129
|
+
if (unmet.length > 0)
|
|
130
|
+
return fail("requires", `this engine does not meet the artifact's requirements: ${unmet.slice(0, 6).join(", ")}${unmet.length > 6 ? ` and ${unmet.length - 6} more` : ""}`);
|
|
131
|
+
const overlays = [];
|
|
132
|
+
let totalBytes = 0;
|
|
133
|
+
for (const rawOverlay of payload.overlays) {
|
|
134
|
+
const v = validateOverlay(rawOverlay, { source: "center" });
|
|
135
|
+
if ("violation" in v)
|
|
136
|
+
return fail("overlay", v.violation);
|
|
137
|
+
const text = v.overlay.text;
|
|
138
|
+
if (text !== undefined) {
|
|
139
|
+
const bytes = Buffer.byteLength(text, "utf8");
|
|
140
|
+
if (bytes > ARTIFACT_LIMITS.maxOverlayTextBytes)
|
|
141
|
+
return fail("limits", `overlay "${v.overlay.id}" text ${bytes} bytes > max ${ARTIFACT_LIMITS.maxOverlayTextBytes}`);
|
|
142
|
+
totalBytes += bytes;
|
|
77
143
|
}
|
|
144
|
+
overlays.push(v.overlay);
|
|
78
145
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
146
|
+
if (totalBytes > ARTIFACT_LIMITS.maxTotalTextBytes)
|
|
147
|
+
return fail("limits", `overlay text ${totalBytes} bytes > max ${ARTIFACT_LIMITS.maxTotalTextBytes}`);
|
|
148
|
+
if (canonical(requiresOf(overlays)) !== canonical(requires))
|
|
149
|
+
return fail("requires", "requires differs from what the overlays require (build the artifact with buildPromptArtifact)");
|
|
150
|
+
const conflict = replaceConflict(overlays);
|
|
151
|
+
if (conflict !== undefined)
|
|
152
|
+
return fail("overlay", conflict);
|
|
153
|
+
const evidence = payload.evidence;
|
|
154
|
+
if (!isRecord(evidence) || typeof evidence.intent !== "string" || evidence.intent.trim() === "" || evidence.intent.length > ARTIFACT_LIMITS.maxIntentChars) {
|
|
155
|
+
return fail("evidence", `evidence.intent is a non-blank string of at most ${ARTIFACT_LIMITS.maxIntentChars} characters`);
|
|
84
156
|
}
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
return fail("shape", "promptCatalog is not an object");
|
|
88
|
-
if (typeof catalog.packId !== "string" || !catalog.packId.trim() || catalog.packId.length > ARTIFACT_LIMITS.maxPackIdLength) {
|
|
89
|
-
return fail("shape", "promptCatalog.packId missing/oversized");
|
|
157
|
+
if (!Array.isArray(evidence.refs) || evidence.refs.length > ARTIFACT_LIMITS.maxRefs || evidence.refs.some((r) => typeof r !== "string" || r.trim() === "" || r.length > ARTIFACT_LIMITS.maxRefChars)) {
|
|
158
|
+
return fail("evidence", `evidence.refs is a list of at most ${ARTIFACT_LIMITS.maxRefs} non-blank references`);
|
|
90
159
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
if (
|
|
96
|
-
return fail("
|
|
160
|
+
for (const k of Object.keys(evidence))
|
|
161
|
+
if (k !== "intent" && k !== "refs")
|
|
162
|
+
return fail("shape", `evidence carries ${JSON.stringify(k).slice(0, 60)}`);
|
|
163
|
+
const behaviorReplace = overlays.find((o) => o.op === "replace" && sectionOfMessage(o.target)?.band === "core-behavior");
|
|
164
|
+
if (behaviorReplace !== undefined && evidence.refs.length === 0) {
|
|
165
|
+
return fail("evidence", `overlay "${behaviorReplace.id}" replaces core-behavior text; evidence.refs names at least one evaluation or golden`);
|
|
97
166
|
}
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
return fail("shape", "section is not an object");
|
|
104
|
-
const s = rawSection;
|
|
105
|
-
if (typeof s.id !== "string" || s.id.startsWith("core/") || s.id.length > ARTIFACT_LIMITS.maxIdLength || !ID_RE.test(s.id)) {
|
|
106
|
-
return fail("shape", `invalid section id ${JSON.stringify(s.id).slice(0, 120)}`);
|
|
107
|
-
}
|
|
108
|
-
if (ids.has(s.id))
|
|
109
|
-
return fail("shape", `duplicate section id "${s.id}"`);
|
|
110
|
-
ids.add(s.id);
|
|
111
|
-
if (typeof s.slot !== "string" || !SLOTS.has(s.slot))
|
|
112
|
-
return fail("shape", `unknown slot ${JSON.stringify(s.slot).slice(0, 60)} ("${s.id}")`);
|
|
113
|
-
if (typeof s.text !== "string" || s.text.length === 0)
|
|
114
|
-
return fail("shape", `empty/missing text ("${s.id}")`);
|
|
115
|
-
const bytes = Buffer.byteLength(s.text, "utf8");
|
|
116
|
-
if (bytes > ARTIFACT_LIMITS.maxSectionBytes)
|
|
117
|
-
return fail("limits", `section "${s.id}" ${bytes} bytes > max ${ARTIFACT_LIMITS.maxSectionBytes}`);
|
|
118
|
-
totalBytes += bytes;
|
|
119
|
-
if (typeof s.contentHash !== "string" || !DIGEST_RE.test(s.contentHash))
|
|
120
|
-
return fail("shape", `contentHash missing/malformed ("${s.id}")`);
|
|
121
|
-
if (s.contentHash !== sha256Hex(s.text))
|
|
122
|
-
return fail("content-hash", `contentHash does not match text ("${s.id}")`);
|
|
123
|
-
sections.push({ id: s.id, slot: s.slot, text: s.text, contentHash: s.contentHash });
|
|
124
|
-
}
|
|
125
|
-
if (totalBytes > ARTIFACT_LIMITS.maxTotalBytes)
|
|
126
|
-
return fail("limits", `catalog ${totalBytes} bytes > max ${ARTIFACT_LIMITS.maxTotalBytes}`);
|
|
127
|
-
const normalizedCatalog = { packId: catalog.packId, sections };
|
|
128
|
-
const normalizedPayload = {
|
|
129
|
-
schemaVersion: 1,
|
|
130
|
-
assemblyApi: 1,
|
|
131
|
-
catalogDigest: payload.catalogDigest,
|
|
132
|
-
...(compatibleCore !== undefined ? { compatibleCore } : {}),
|
|
133
|
-
closure: { basePackId: "sema-default@1", promptCatalog: normalizedCatalog },
|
|
167
|
+
const normalized = {
|
|
168
|
+
schemaVersion: 2,
|
|
169
|
+
requires: requiresOf(overlays),
|
|
170
|
+
overlays,
|
|
171
|
+
evidence: { intent: evidence.intent, refs: [...evidence.refs] },
|
|
134
172
|
};
|
|
135
|
-
if (
|
|
136
|
-
return fail("digest", "catalogDigest does not match canonical(promptCatalog)");
|
|
137
|
-
}
|
|
138
|
-
if (typeof art.artifactDigest !== "string" || !DIGEST_RE.test(art.artifactDigest))
|
|
139
|
-
return fail("shape", "artifactDigest malformed");
|
|
140
|
-
if (computeArtifactDigest(normalizedPayload) !== art.artifactDigest) {
|
|
173
|
+
if (computeArtifactDigest(normalized) !== raw.artifactDigest)
|
|
141
174
|
return fail("digest", "artifactDigest does not match canonical(payload)");
|
|
142
|
-
}
|
|
143
|
-
return { ok: true, artifact: { payload: normalizedPayload, artifactDigest: art.artifactDigest } };
|
|
175
|
+
return { ok: true, artifact: { payload: normalized, artifactDigest: raw.artifactDigest } };
|
|
144
176
|
}
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
contentHash: s.contentHash,
|
|
151
|
-
}));
|
|
177
|
+
const CENTER_ORIGIN = Object.freeze({ source: "center", by: "center" });
|
|
178
|
+
export function centerOverlaysOf(adoption, binding) {
|
|
179
|
+
if (adoption === undefined)
|
|
180
|
+
return [];
|
|
181
|
+
return adoption.artifact.payload.overlays.filter((o) => o.scope?.binding === undefined || o.scope.binding === binding).map((overlay) => ({ overlay, origin: CENTER_ORIGIN }));
|
|
152
182
|
}
|
|
153
|
-
export function
|
|
154
|
-
const
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
const payload = {
|
|
159
|
-
|
|
160
|
-
assemblyApi: 1,
|
|
161
|
-
catalogDigest: computeCatalogDigest(catalog),
|
|
162
|
-
...(opts.compatibleCore !== undefined ? { compatibleCore: opts.compatibleCore } : {}),
|
|
163
|
-
closure: { basePackId: "sema-default@1", promptCatalog: catalog },
|
|
164
|
-
};
|
|
165
|
-
return {
|
|
166
|
-
artifact: { payload, artifactDigest: computeArtifactDigest(payload) },
|
|
167
|
-
sourceRevision: opts.sourceRevision,
|
|
168
|
-
};
|
|
183
|
+
export function adoptCenter(artifact, sourceRevision) {
|
|
184
|
+
const v = verifyPromptArtifactBody(artifact);
|
|
185
|
+
return v.ok ? { artifact: v.artifact, ...(sourceRevision !== undefined ? { sourceRevision } : {}) } : undefined;
|
|
186
|
+
}
|
|
187
|
+
export function buildPromptArtifact(opts) {
|
|
188
|
+
const payload = JSON.parse(JSON.stringify({ schemaVersion: 2, requires: requiresOf(opts.overlays), overlays: opts.overlays, evidence: opts.evidence }));
|
|
189
|
+
return verifyPromptArtifact({ payload, artifactDigest: sha256Hex(canonical(payload)), sourceRevision: opts.sourceRevision });
|
|
169
190
|
}
|
|
@@ -1,42 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prepare-side assembly adapter — the SINGLE entry that drives the Composer over the bundled catalog. Prepare
|
|
3
|
+
* hands it the run's facts and tails and the overlays of each source class (the task class: the request-body
|
|
4
|
+
* sugar's, then the task seat's mods; the center class; the deploy class: the deployment seat's mods); it
|
|
5
|
+
* orders the classes `task < center < deploy`, composes, and reports every overlay a later one superseded.
|
|
6
|
+
*
|
|
7
|
+
* There is no "provider" here: no source owns the whole prompt, the locked bands have no writer, and a role
|
|
8
|
+
* text that carries locked text never reaches this point (the sugar refuses it, a mods handler's answer is
|
|
9
|
+
* skipped).
|
|
10
|
+
*/
|
|
1
11
|
import type { AgentTool } from "../internal/harness-types.js";
|
|
2
|
-
import
|
|
12
|
+
import type { HostForm, HostRole } from "./catalog/schema.js";
|
|
13
|
+
import { type SourcedOverlay, type SupersededOverlay } from "./overlay.js";
|
|
3
14
|
import type { CompiledSection, CompiledSystemBlock, PromptRuntimeFacts } from "./types.js";
|
|
4
15
|
export interface AssembleInputs {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
16
|
+
/** The task class, in application order: the request-body sugar's overlays, then the task seat's mods. */
|
|
17
|
+
taskOverlays: readonly SourcedOverlay[];
|
|
18
|
+
/** The center class (the adopted center layer's overlays). */
|
|
19
|
+
centerOverlays: readonly SourcedOverlay[];
|
|
20
|
+
/** The deploy class: the deployment seat's mods, in chain order. */
|
|
21
|
+
deployOverlays: readonly SourcedOverlay[];
|
|
22
|
+
/** The host selector values (`TaskSpec.promptRole` / `TaskSpec.promptForm`). */
|
|
23
|
+
host?: {
|
|
24
|
+
role?: HostRole;
|
|
25
|
+
form?: HostForm;
|
|
26
|
+
};
|
|
27
|
+
tools: readonly AgentTool[];
|
|
12
28
|
facts: PromptRuntimeFacts;
|
|
29
|
+
/** The task's working directory (the Cowork role base's `{{workspaceFolder}}`). */
|
|
30
|
+
workspaceFolder?: string;
|
|
13
31
|
mcpInstructionsBlock?: string;
|
|
14
32
|
memoryBlock?: string;
|
|
15
33
|
/** Renders the environment tail for a given date (leg-frozen; date_change re-render seam). */
|
|
16
34
|
buildEnvBlock: (date: string) => string | undefined;
|
|
17
|
-
/** The leg's frozen date — the initial render input
|
|
35
|
+
/** The leg's frozen date — the initial render input. */
|
|
18
36
|
date: string;
|
|
19
|
-
/** The environment facts the tail renders from; a provider sees them without the date (`StablePromptContext.envFacts`). */
|
|
20
|
-
envFacts?: EnvironmentFacts;
|
|
21
37
|
modelGuidance?: string;
|
|
22
|
-
/** design/148 S1 — declarations compiled from a VERIFIED center prompt artifact (the adoption
|
|
23
|
-
* channel: core verifies the artifact, synthesizes these, and they ride the same mount loop as
|
|
24
|
-
* provider stableBlocks — same manifest/epoch/contentHash faces, zero new assembly machinery).
|
|
25
|
-
* Mounted ahead of provider declarations on every COMPOSED path; the provider-assembled
|
|
26
|
-
* pass-through path cannot mount them (operator-visible warn, never silent). */
|
|
27
|
-
centerDeclarations?: PromptTextDeclaration[];
|
|
28
38
|
/** Structured warning channel (maps to deps.onError with a phase). */
|
|
29
39
|
onWarn?: (message: string, phase: "prompt-constitution") => void;
|
|
30
40
|
}
|
|
31
41
|
export interface AssembledPrompt {
|
|
32
|
-
constitution: "core" | "replaced" | "provider-assembled";
|
|
33
|
-
/** design/148 S1: true ⇔ the supplied centerDeclarations were actually COMPILED into
|
|
34
|
-
* this prompt. The caller must never persist a center pin when this is false — a pin that claims
|
|
35
|
-
* an artifact the model never received is a durable lie (the assembled-identity pass-through path
|
|
36
|
-
* warns + false). */
|
|
37
|
-
centerMounted?: boolean;
|
|
38
42
|
/** Re-render the full prompt for a date. */
|
|
39
|
-
renderWithDate
|
|
43
|
+
renderWithDate: (date: string) => string;
|
|
40
44
|
/** The initially-rendered system prompt. */
|
|
41
45
|
systemPrompt: string;
|
|
42
46
|
/** The `prompt.assembled` block view (the id wordlist is a downstream contract). */
|
|
@@ -44,10 +48,11 @@ export interface AssembledPrompt {
|
|
|
44
48
|
id: string;
|
|
45
49
|
text: string;
|
|
46
50
|
}>;
|
|
47
|
-
/** Compiled IR of the last render — manifest
|
|
48
|
-
sections
|
|
49
|
-
/**
|
|
50
|
-
|
|
51
|
-
|
|
51
|
+
/** Compiled IR of the last render — the manifest's section source. */
|
|
52
|
+
sections: CompiledSection[];
|
|
53
|
+
/** Physical system blocks of the last render (one block, text === systemPrompt). */
|
|
54
|
+
systemBlocks: CompiledSystemBlock[];
|
|
55
|
+
/** The composition's {@link ComposedWithOverlays.superseded}, from the first render. */
|
|
56
|
+
superseded: readonly SupersededOverlay[];
|
|
52
57
|
}
|
|
53
58
|
export declare function assemblePrompt(inputs: AssembleInputs): AssembledPrompt;
|