@sema-agent/core 7.15.0 → 7.17.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 +202 -0
- package/dist/agents/builtin-agents.d.ts +3 -3
- package/dist/agents/cross-session-envelope.d.ts +0 -1
- package/dist/agents/cross-session-envelope.js +0 -1
- package/dist/agents/peer-notices.d.ts +0 -9
- package/dist/agents/peer-notices.js +0 -63
- package/dist/agents/subagent.js +7 -15
- package/dist/brain/request-params.d.ts +2 -2
- package/dist/config/defaults.d.ts +0 -7
- package/dist/config/defaults.js +0 -2
- package/dist/core/artifact-host.d.ts +218 -0
- package/dist/core/artifact-host.js +92 -0
- package/dist/core/ask-origin.d.ts +29 -3
- package/dist/core/ask-origin.js +17 -9
- package/dist/core/ask-question.d.ts +25 -0
- package/dist/core/ask-question.js +4 -0
- package/dist/core/ask-unresolvable-notice.d.ts +30 -21
- package/dist/core/ask-unresolvable-notice.js +16 -8
- package/dist/core/auto-compaction.d.ts +10 -10
- package/dist/core/auto-mode-arming.d.ts +2 -2
- package/dist/core/background-agent-store.d.ts +5 -5
- package/dist/core/background-shell.d.ts +1 -1
- package/dist/core/checkpoint-execution-record.d.ts +0 -3
- package/dist/core/checkpoint-execution-record.js +0 -4
- package/dist/core/checkpoint-store.d.ts +71 -99
- package/dist/core/checkpoint-store.js +9 -16
- package/dist/core/context-edit.d.ts +36 -104
- package/dist/core/context-edit.js +37 -60
- package/dist/core/effective-path-target.d.ts +68 -8
- package/dist/core/effective-path-target.js +42 -30
- package/dist/core/engine-notice.d.ts +46 -32
- package/dist/core/env-budget.d.ts +31 -0
- package/dist/core/env-budget.js +39 -0
- package/dist/core/exec-output-tail.d.ts +5 -5
- package/dist/core/file-history-store.js +3 -6
- package/dist/core/fs-write-gate-policy.d.ts +1 -1
- package/dist/core/fs-write-gate-policy.js +3 -3
- package/dist/core/gate-lanes.js +9 -15
- package/dist/core/governance-codes.d.ts +1 -1
- package/dist/core/governance-codes.js +4 -0
- package/dist/core/hands-band.d.ts +1 -1
- package/dist/core/hooks.d.ts +18 -17
- package/dist/core/lsp-session.d.ts +1 -1
- package/dist/core/lsp.d.ts +1 -1
- package/dist/core/lsp.js +5 -4
- package/dist/core/mcp.d.ts +5 -5
- package/dist/core/mcp.js +4 -48
- package/dist/core/memory-engine/delegation-settlement.d.ts +37 -12
- package/dist/core/memory-engine/delegation-settlement.js +128 -39
- package/dist/core/memory-engine/engine.d.ts +9 -8
- package/dist/core/memory-engine/engine.js +115 -120
- package/dist/core/memory-engine/file-backend.d.ts +17 -5
- package/dist/core/memory-engine/file-backend.js +78 -34
- package/dist/core/memory-engine/index.d.ts +2 -2
- package/dist/core/memory-engine/index.js +2 -2
- package/dist/core/memory-engine/layout.d.ts +152 -54
- package/dist/core/memory-engine/layout.js +441 -104
- package/dist/core/memory-engine/types.d.ts +8 -3
- package/dist/core/memory-engine/types.js +5 -0
- package/dist/core/memory-recall.d.ts +0 -8
- package/dist/core/memory.d.ts +1 -1
- package/dist/core/oracle-isolation.js +2 -2
- package/dist/core/parent-spec-seat.d.ts +66 -0
- package/dist/core/parent-spec-seat.js +47 -0
- package/dist/core/permission-rule-model.d.ts +11 -6
- package/dist/core/permission-rule-model.js +53 -37
- package/dist/core/permission-rules.js +8 -3
- package/dist/core/protocol-naming.d.ts +2 -2
- package/dist/core/remote-env.d.ts +1 -1
- package/dist/core/retired-keys.d.ts +19 -0
- package/dist/core/retired-keys.js +15 -0
- package/dist/core/runner/abort-race.d.ts +3 -3
- package/dist/core/runner/active-skill-scope.d.ts +2 -2
- package/dist/core/runner/active-skill-scope.js +3 -3
- package/dist/core/runner/assemble-result.d.ts +42 -40
- package/dist/core/runner/assemble-result.js +5 -4
- package/dist/core/runner/checkpoint-scope.d.ts +4 -4
- package/dist/core/runner/clock-and-limits.d.ts +3 -3
- package/dist/core/runner/compaction-call-options.d.ts +35 -99
- package/dist/core/runner/compaction-knobs.d.ts +4 -4
- package/dist/core/runner/compaction-seams.d.ts +5 -5
- package/dist/core/runner/contracts.d.ts +232 -233
- package/dist/core/runner/decide-continuation.d.ts +6 -6
- package/dist/core/runner/denial-limit-arms.d.ts +8 -8
- package/dist/core/runner/derived-route-fallback.d.ts +2 -2
- package/dist/core/runner/gate-exit.d.ts +6 -6
- package/dist/core/runner/gate-exit.js +15 -1
- package/dist/core/runner/git-status-frame.d.ts +7 -7
- package/dist/core/runner/halt-attribution.d.ts +35 -0
- package/dist/core/runner/halt-attribution.js +16 -0
- package/dist/core/runner/inherited-ask-grants.d.ts +6 -6
- package/dist/core/runner/memory-capture-optout.d.ts +1 -1
- package/dist/core/runner/memory-consolidation-driver.d.ts +4 -4
- package/dist/core/runner/memory-consolidation.d.ts +6 -8
- package/dist/core/runner/memory-consolidation.js +0 -1
- package/dist/core/runner/park-commit.d.ts +6 -6
- package/dist/core/runner/permission-rule-lanes.d.ts +19 -19
- package/dist/core/runner/prepare-acquire-reconcile.d.ts +4 -4
- package/dist/core/runner/prepare-artifact.d.ts +53 -0
- package/dist/core/runner/prepare-artifact.js +77 -0
- package/dist/core/runner/prepare-ask-lane.d.ts +3 -3
- package/dist/core/runner/prepare-boundary-parks.d.ts +3 -3
- package/dist/core/runner/prepare-caps-and-workflow.d.ts +9 -7
- package/dist/core/runner/prepare-caps-and-workflow.js +2 -3
- package/dist/core/runner/prepare-config-doors.d.ts +24 -24
- package/dist/core/runner/prepare-config-doors.js +5 -2
- package/dist/core/runner/prepare-context-lane.d.ts +8 -8
- package/dist/core/runner/prepare-context-lane.js +2 -13
- package/dist/core/runner/prepare-defer-classify.d.ts +2 -2
- package/dist/core/runner/prepare-delegation-surface.d.ts +1 -1
- package/dist/core/runner/prepare-file-history.d.ts +3 -3
- package/dist/core/runner/prepare-file-history.js +3 -52
- package/dist/core/runner/prepare-gate-stations.d.ts +5 -5
- package/dist/core/runner/prepare-hands-readface.d.ts +35 -38
- package/dist/core/runner/prepare-hands-readface.js +3 -2
- package/dist/core/runner/prepare-inherited-gate.d.ts +9 -6
- package/dist/core/runner/prepare-inherited-gate.js +7 -8
- package/dist/core/runner/prepare-listings.d.ts +3 -3
- package/dist/core/runner/prepare-lsp.d.ts +3 -3
- package/dist/core/runner/prepare-memory-engine-session.d.ts +5 -5
- package/dist/core/runner/prepare-memory.d.ts +4 -6
- package/dist/core/runner/prepare-memory.js +10 -9
- package/dist/core/runner/prepare-offload-wrappers.d.ts +2 -2
- package/dist/core/runner/prepare-park-ask.d.ts +6 -6
- package/dist/core/runner/prepare-policy-chain.d.ts +7 -7
- package/dist/core/runner/prepare-policy-chain.js +15 -30
- package/dist/core/runner/prepare-prompt-assembly.js +1 -1
- package/dist/core/runner/prepare-prompt-inputs.d.ts +5 -5
- package/dist/core/runner/prepare-protocol-tools.d.ts +1 -1
- package/dist/core/runner/prepare-question-face.d.ts +4 -4
- package/dist/core/runner/prepare-run-refs.d.ts +11 -11
- package/dist/core/runner/prepare-safety-scan.d.ts +2 -2
- package/dist/core/runner/prepare-suspend-saga.d.ts +4 -4
- package/dist/core/runner/prepare-suspend-saga.js +0 -2
- package/dist/core/runner/prepare-task.d.ts +12 -12
- package/dist/core/runner/prepare-task.js +10 -9
- package/dist/core/runner/prepare-tool-disclosure-mount.d.ts +2 -3
- package/dist/core/runner/prepare-wiring-manifest.d.ts +4 -4
- package/dist/core/runner/prepare-wiring-manifest.js +9 -7
- package/dist/core/runner/prepare-workspace-restore.d.ts +1 -1
- package/dist/core/runner/remote-env-retry.d.ts +3 -3
- package/dist/core/runner/resume-admission.d.ts +1 -1
- package/dist/core/runner/resume-admission.js +2 -1
- package/dist/core/runner/resume-claim.d.ts +1 -1
- package/dist/core/runner/resume-internals-and-config.d.ts +1 -1
- package/dist/core/runner/resume-internals-and-config.js +4 -0
- package/dist/core/runner/resume-policy-outcome.d.ts +1 -1
- package/dist/core/runner/resume-preflight.d.ts +1 -1
- package/dist/core/runner/resume-review-outcome.d.ts +1 -1
- package/dist/core/runner/retired-runner-deps.d.ts +3 -0
- package/dist/core/runner/retired-runner-deps.js +7 -0
- package/dist/core/runner/run-brain-sinks.d.ts +1 -1
- package/dist/core/runner/run-clock-and-content.d.ts +4 -4
- package/dist/core/runner/run-compaction-machinery.d.ts +3 -3
- package/dist/core/runner/run-git-lane.d.ts +1 -1
- package/dist/core/runner/run-harness-handlers.d.ts +2 -2
- package/dist/core/runner/run-harness-handlers.js +2 -3
- package/dist/core/runner/run-identity-wiring.d.ts +4 -4
- package/dist/core/runner/run-leg.d.ts +3 -3
- package/dist/core/runner/run-notification-lane.d.ts +2 -2
- package/dist/core/runner/run-reasoning-seat.d.ts +2 -2
- package/dist/core/runner/run-settle-and-teardown.d.ts +5 -5
- package/dist/core/runner/run-settle-and-teardown.js +3 -1
- package/dist/core/runner/run-telemetry-and-budget-seats.d.ts +2 -2
- package/dist/core/runner/run-terminal-adoption.d.ts +5 -5
- package/dist/core/runner/runtask.d.ts +14 -14
- package/dist/core/runner/session-file-state-replay.d.ts +3 -3
- package/dist/core/runner/session-file-state-replay.js +3 -3
- package/dist/core/runner/session-rule-policy.d.ts +2 -2
- package/dist/core/runner/session-rule-policy.js +3 -4
- package/dist/core/runner/steer-admission.d.ts +2 -2
- package/dist/core/runner/stream-halt-verbs.d.ts +1 -1
- package/dist/core/runner/stream-halt-verbs.js +1 -1
- package/dist/core/runner/stream-reap.d.ts +1 -1
- package/dist/core/runner/stream-steer-verb.js +1 -4
- package/dist/core/runner/synthetic-tools.d.ts +8 -8
- package/dist/core/runner/teardown-bounded.d.ts +2 -2
- package/dist/core/runner/tool-defer-gate.d.ts +1 -1
- package/dist/core/runner/tool-disclosure.d.ts +33 -33
- package/dist/core/runner/tool-end-body.d.ts +3 -3
- package/dist/core/runner/tool-face-overlay.d.ts +2 -2
- package/dist/core/runner/tool-output-projection.d.ts +2 -2
- package/dist/core/runner/turn-attachments.d.ts +53 -53
- package/dist/core/runner/usage-accounting.d.ts +4 -4
- package/dist/core/runner/workspace-path.d.ts +1 -1
- package/dist/core/runner/workspace-path.js +3 -0
- package/dist/core/runner-deps.d.ts +30 -49
- package/dist/core/safe-notify.d.ts +1 -1
- package/dist/core/sensitive-path-policy.d.ts +1 -1
- package/dist/core/sensitive-path-policy.js +4 -4
- package/dist/core/session.d.ts +2 -2
- package/dist/core/skill-tool-specifier.d.ts +1 -1
- package/dist/core/skills-directory.d.ts +1 -1
- package/dist/core/store-contracts/checkpoint-store-contract.js +1 -1
- package/dist/core/strategy-store.d.ts +8 -11
- package/dist/core/task-event.d.ts +20 -17
- package/dist/core/task-limits.d.ts +1 -1
- package/dist/core/task-notification.d.ts +5 -5
- package/dist/core/task-registry-agent.d.ts +5 -5
- package/dist/core/task-registry-monitor.d.ts +2 -2
- package/dist/core/task-registry-shared.d.ts +27 -27
- package/dist/core/task-registry-shared.js +3 -13
- package/dist/core/task-registry.d.ts +8 -8
- package/dist/core/task-result.d.ts +37 -37
- package/dist/core/task-spec.d.ts +5 -5
- package/dist/core/task-stream.d.ts +16 -11
- package/dist/core/tool-catalog-entries.d.ts +1 -0
- package/dist/core/tool-catalog-entries.js +5 -0
- package/dist/core/tool-conformance.d.ts +0 -2
- package/dist/core/tool-conformance.js +1 -3
- package/dist/core/tool-errors.d.ts +5 -0
- package/dist/core/tool-errors.js +1 -0
- package/dist/core/tool-policy.d.ts +51 -22
- package/dist/core/tool-policy.js +28 -5
- package/dist/core/tool-result-budget.d.ts +1 -1
- package/dist/core/tool-result-store.d.ts +11 -11
- package/dist/core/tool-spec.d.ts +34 -38
- package/dist/core/tools.d.ts +2 -2
- package/dist/core/trace.d.ts +12 -15
- package/dist/core/untrusted-text.d.ts +1 -1
- package/dist/core/wiring-manifest.d.ts +4 -3
- package/dist/core/workflow-journal-store.d.ts +11 -11
- package/dist/engine/execution-env/node-execution-env.d.ts +3 -2
- package/dist/engine/execution-env/node-execution-env.js +4 -2
- package/dist/engine/harness/agent-harness.d.ts +47 -4
- package/dist/engine/harness/agent-harness.js +52 -9
- package/dist/engine/llm/types.d.ts +1 -1
- package/dist/engine/loop/agent-loop.js +15 -8
- package/dist/engine/loop/types.d.ts +5 -0
- package/dist/index.d.ts +21 -16
- package/dist/index.js +17 -12
- package/dist/internal/harness.d.ts +1 -0
- package/dist/orchestration/run-spec.d.ts +3 -0
- package/dist/orchestration/run-spec.js +3 -3
- package/dist/orchestration/run-workflow-tool.d.ts +12 -6
- package/dist/orchestration/run-workflow-tool.js +23 -5
- package/dist/orchestration/workflow-primitives.d.ts +4 -2
- package/dist/orchestration/workflow-primitives.js +1 -4
- package/dist/orchestration/workflow-types.d.ts +34 -4
- package/dist/orchestration/workflow-types.js +2 -0
- package/dist/orchestration/workflow.d.ts +39 -7
- package/dist/orchestration/workflow.js +234 -113
- package/dist/prompt-assembly/assemble.d.ts +2 -2
- package/dist/prompt-assembly/assemble.js +9 -9
- package/dist/prompt-assembly/composer.d.ts +6 -7
- package/dist/prompt-assembly/composer.js +10 -10
- package/dist/prompt-assembly/epoch.js +1 -1
- package/dist/prompt-assembly/event-registry.d.ts +0 -21
- package/dist/prompt-assembly/packs/sema-default.js +30 -30
- package/dist/prompt-assembly/types.d.ts +14 -14
- package/dist/prompts/coordinator.d.ts +0 -13
- package/dist/prompts/coordinator.js +0 -3
- package/dist/stores/file/checkpoint-store.js +1 -5
- package/dist/stores/file/file-history-store.js +2 -2
- package/dist/stores/file/permission-rule-store.d.ts +4 -35
- package/dist/stores/file/permission-rule-store.js +4 -148
- package/dist/tools/artifact/artifact-text.d.ts +62 -0
- package/dist/tools/artifact/artifact-text.js +68 -0
- package/dist/tools/artifact/artifact-tool.d.ts +52 -0
- package/dist/tools/artifact/artifact-tool.js +351 -0
- package/dist/tools/artifact/local-stub.d.ts +26 -0
- package/dist/tools/artifact/local-stub.js +296 -0
- package/dist/tools/fs/bash-readonly-classifier.d.ts +114 -48
- package/dist/tools/fs/bash-readonly-classifier.js +171 -60
- package/dist/tools/fs/encoding.d.ts +31 -40
- package/dist/tools/fs/fs-bash.d.ts +49 -45
- package/dist/tools/fs/fs-bash.js +19 -27
- package/dist/tools/fs/fs-pdf.d.ts +8 -8
- package/dist/tools/fs/fs-search-tools.d.ts +4 -4
- package/dist/tools/fs/fs-search-tools.js +5 -2
- package/dist/tools/fs/fs-shared.d.ts +146 -158
- package/dist/tools/fs/fs-shared.js +3 -11
- package/dist/tools/fs/fs-write.d.ts +8 -8
- package/dist/tools/fs/gh-rate-limit.d.ts +13 -14
- package/dist/tools/fs/index.d.ts +78 -78
- package/dist/tools/fs/index.js +4 -1
- package/dist/tools/fs/notebook.d.ts +24 -25
- package/dist/tools/fs/pdf.d.ts +3 -3
- package/dist/tools/fs/read-deny.d.ts +22 -22
- package/dist/tools/fs/read-face.d.ts +21 -24
- package/dist/tools/fs/repo-map.d.ts +8 -8
- package/dist/tools/fs/safety.d.ts +233 -130
- package/dist/tools/fs/safety.js +131 -31
- package/dist/tools/fs/search.d.ts +63 -71
- package/dist/tools/fs/search.js +8 -6
- package/package.json +6 -2
- package/test/export-surface.snapshot.json +119 -39
package/dist/index.js
CHANGED
|
@@ -9,6 +9,9 @@ export { REPORT_FINDINGS_TOOL_NAME } from "./core/runner/synthetic-tools.js";
|
|
|
9
9
|
export { formatToolError, formatZodValidationError, formatValidationPath, truncateError, errorClassOf } from "./core/tool-errors.js";
|
|
10
10
|
export { createWebFetchTool, webFetchToolSpec, htmlToText, createWebSearchTool, createSearxngSearchBackend, probeSearchBackend, createWebFetchSummarizer, WEBFETCH_SUMMARY_MAX_CONTENT, WEBFETCH_SUMMARY_GUIDELINES, } from "./tools/web.js";
|
|
11
11
|
export { createTodoWriteTool } from "./tools/todo.js";
|
|
12
|
+
export { ARTIFACT_ACTIONS, ARTIFACT_PLANES, ARTIFACT_PUBLISH_CONTEXTS, ARTIFACT_LIST_SCOPES, ARTIFACT_PLANE_CONTENT_ORIGIN, ARTIFACT_ACTION_HOST_METHOD, ARTIFACT_HOST_FAILURE_CODES, ARTIFACT_FAILURE_RESULT_CODE, ARTIFACT_HOST_ERROR_CODE, ARTIFACT_CARD, readArtifactHostCapabilities, } from "./core/artifact-host.js";
|
|
13
|
+
export { createArtifactTool, artifactAttemptId, normalizePublishedPath, mediaTypeOf } from "./tools/artifact/artifact-tool.js";
|
|
14
|
+
export { localArtifactStub, LocalArtifactStub, EVAL_STUB_URL_PREFIX, LOCAL_STUB_MAX_FILE_BYTES, LOCAL_STUB_MAX_TOTAL_BYTES } from "./tools/artifact/local-stub.js";
|
|
12
15
|
export { createTaskListTools, createMemoryTaskListStore, assertJsonMetadata } from "./tools/task-list.js";
|
|
13
16
|
export { assembleCodeTools, CODE_ROLE } from "./scenarios/full-body.js";
|
|
14
17
|
export { TOOL_MODEL_GATE_CLASSES, isModelGatedForClass } from "./core/tool-model-gate.js";
|
|
@@ -26,7 +29,7 @@ export { resolveModel, resolveTaskModel, parseModelMention, expandTiers, DEFAULT
|
|
|
26
29
|
export { selectModel, selectModelOrThrow } from "./core/select-model.js";
|
|
27
30
|
export { BrainError, classifyHttp } from "./brain/errors.js";
|
|
28
31
|
export { looksDegenerate, inspectDegenerate, trimDegenerateTail } from "./brain/repetition.js";
|
|
29
|
-
export { computeCostMicroUsd, modelCostToPricing, } from "./core/pricing.js";
|
|
32
|
+
export { computeCostMicroUsd, isModelPriced, modelCostToPricing, } from "./core/pricing.js";
|
|
30
33
|
export { cacheFamilyOf, promptTokensOf, uncachedInputTokensOf } from "./core/runner/usage-accounting.js";
|
|
31
34
|
export { emitTrace } from "./core/trace.js";
|
|
32
35
|
export { InMemoryStrategyStore, seedStrategies, } from "./core/strategy-store.js";
|
|
@@ -79,8 +82,8 @@ export { READ_FACE_DEFAULT_DENY_ENTRIES, READ_FACE_BUILTIN_DENY_TABLE, READ_DENY
|
|
|
79
82
|
export { deploymentReadFaceClampNotice, resolveReadFace } from "./tools/fs/index.js";
|
|
80
83
|
export { WRITE_PROTECTED_DEFAULT_TABLE, resolveWriteProtectedTable, compileWriteProtection, } from "./core/write-protect.js";
|
|
81
84
|
export { InMemoryToolResultStore, OFFLOAD_TOOL_NAME, DEFAULT_TOOL_RESULT_THRESHOLD_CHARS, assertSafeToolResultRef, buildToolResultRef, toolResultContentSegment, MAX_MINTED_TOOL_RESULT_REF_CHARS, assertToolResultProvenanceMatch, normalizeToolResultProvenance, toolResultProvenanceOf, ToolResultRefConflictError, TOOL_RESULT_REF_CONFLICT_CODE, } from "./core/tool-result-store.js";
|
|
82
|
-
export { InMemoryCheckpointStore, CheckpointError, mintCheckpointId, mintCheckpointToken, checkpointVersionOf, CURRENT_CHECKPOINT_VERSION, MAX_SUPPORTED_CHECKPOINT_VERSION, ORG_ADMISSION_CHECKPOINT_VERSION, F012_CHECKPOINT_VERSION, REAL_APPROVAL_CHECKPOINT_VERSION, RESOURCE_CHECKPOINT_VERSION, TOKEN_CHECKPOINT_VERSION, debitLedger, remainingBudgetMicroUsd, remainingTokens, winnerFromOutcome, validatePendingSteer, readPendingSteerQueue, appendPendingSteer, MAX_PENDING_STEER_CHARS, MAX_PENDING_STEER_ENTRIES, PENDING_STEER_QUEUE_BYTE_BUDGET_BYTES, PENDING_STEER_FROZEN_FIELDS, ACTOR_ASSERTION_FROZEN_FIELDS, MAX_ACTOR_FIELD_CHARS, MAX_STEER_INPUT_ID_CHARS,
|
|
83
|
-
export { EXECUTION_OUTCOME_RECORD_WORDS, EXECUTION_RECORD_LEAVES_ROW_UNRECORDED,
|
|
85
|
+
export { InMemoryCheckpointStore, CheckpointError, mintCheckpointId, mintCheckpointToken, checkpointVersionOf, CURRENT_CHECKPOINT_VERSION, MAX_SUPPORTED_CHECKPOINT_VERSION, ORG_ADMISSION_CHECKPOINT_VERSION, F012_CHECKPOINT_VERSION, REAL_APPROVAL_CHECKPOINT_VERSION, RESOURCE_CHECKPOINT_VERSION, TOKEN_CHECKPOINT_VERSION, debitLedger, remainingBudgetMicroUsd, remainingTokens, winnerFromOutcome, validatePendingSteer, readPendingSteerQueue, appendPendingSteer, MAX_PENDING_STEER_CHARS, MAX_PENDING_STEER_ENTRIES, PENDING_STEER_QUEUE_BYTE_BUDGET_BYTES, PENDING_STEER_FROZEN_FIELDS, ACTOR_ASSERTION_FROZEN_FIELDS, MAX_ACTOR_FIELD_CHARS, MAX_STEER_INPUT_ID_CHARS, riskSeverity, buildRiskDescriptor, summarizeCheckpoint, realApprovalOrgFact, resolveCheckpointStore, checkpointStoreExecutionUndeclared, } from "./core/checkpoint-store.js";
|
|
86
|
+
export { EXECUTION_OUTCOME_RECORD_WORDS, EXECUTION_RECORD_LEAVES_ROW_UNRECORDED, ExecutionOutcomeConflictError, checkpointExecutionRecorded, executionRecordDisposition, sameExecutionRecord, executionVerdict, } from "./core/checkpoint-execution-record.js";
|
|
84
87
|
export { PAUSE_REGISTRY, isGateKind, resumeGateMatches, pauseOf, checkpointFrom } from "./core/pause-registry.js";
|
|
85
88
|
export { InMemoryUsageWindowStore, GLOBAL_USAGE_KEY, EMPTY_USAGE_WINDOW_RECORD, chargeUsageRecord, readUsageRecord, usageRetryAfterMs, resolveUsageWindows, } from "./core/usage-window-store.js";
|
|
86
89
|
export { FileUsageWindowStore } from "./stores/file/usage-window-store.js";
|
|
@@ -88,10 +91,10 @@ export { ENV_LIFETIME_SUSPEND_MARGIN_MS, USAGE_WINDOW_REAP_MARGIN_MS } from "./c
|
|
|
88
91
|
export { InMemoryFileHistoryStore, boundaryPublishVerdict } from "./core/file-history-store.js";
|
|
89
92
|
export { captureFileBackupViaEnv, applyFileRestoreViaEnv } from "./core/file-history-store.js";
|
|
90
93
|
export { modeProvenDifferent as fileHistoryModeProvenDifferent } from "./core/file-history-store.js";
|
|
91
|
-
export {
|
|
94
|
+
export { countRestoreLineDiff, FILE_HISTORY_DIFF_LINE_BUDGET } from "./core/file-history-store.js";
|
|
92
95
|
export { worldStillMatchesMint } from "./core/file-history-store.js";
|
|
93
96
|
export { trackKeyOf as fileHistoryTrackKeyOf, resolveTrackKey as fileHistoryResolveTrackKey } from "./core/file-history-store.js";
|
|
94
|
-
export { describeTrackKey as fileHistoryDescribeTrackKey,
|
|
97
|
+
export { describeTrackKey as fileHistoryDescribeTrackKey, fileHistoryExportDigest, validateFileHistoryExport } from "./core/file-history-store.js";
|
|
95
98
|
export { DEFAULT_FILE_HISTORY_BOUNDARY_KEEP, resolveFileHistoryRetention, fileHistoryBoundariesToKeep } from "./core/file-history-retention.js";
|
|
96
99
|
export { FileStorageBackend, FileSessionRepo, FileCheckpointStore, FileMemoryStore, FileToolResultStore, FileSessionPolicyStore, FileStrategyStore, FileFileHistoryStore, FileWorkflowJournalStore, MAX_JOURNAL_RESULT_BYTES, oversizeJournalResult, resolveDataRoot, sanitizeScope, sanitizePathComponent, createFileConsolidationLock, atomicWriteFile, writeThenLink, ensureDir, readJsonlRecords, AppendLog, FileStoreLockError, processFingerprint, isProcessLive, } from "./stores/file/index.js";
|
|
97
100
|
export { CacheBreakDetector } from "./core/cache-break-detector.js";
|
|
@@ -107,7 +110,8 @@ export { describeToolCatalog, catalogEntriesNamed, catalogToolNames, catalogRule
|
|
|
107
110
|
export { ToolRosterEntry, ToolRoster, ToolRosterDelta, ToolRosterRenderHints, ROSTER_SOURCES, toolIdentityOf, mintCapabilityId, diffToolRoster, judgeParkedToolIdentity, ruleFacesFromRoster, toolCallFaceOf, inputKeysOf, ruleFaceOfInstance, rosterMemberBoundProblem, ToolRosterDeltaSeat, } from "./core/tool-roster.js";
|
|
108
111
|
export {} from "./core/tool-policy.js";
|
|
109
112
|
export { effectivePathTargetOf, pathTargetBaseOf } from "./core/effective-path-target.js";
|
|
110
|
-
export {
|
|
113
|
+
export { pathFamilyOf, isAbsoluteForFamily, pathIdentityOf, win32NamespaceScreen, WIN32_NAMESPACE_REFUSALS } from "./tools/fs/safety.js";
|
|
114
|
+
export { TOOL_CONFORMANCE_VECTORS } from "./core/tool-conformance.js";
|
|
111
115
|
export { applyMcpToolFaces, toolFaceProblem, APPROVAL_CARD_REQUIRED_KEYS } from "./core/runner/tool-face-overlay.js";
|
|
112
116
|
export { createStructuredProjector } from "./core/runner/tool-output-projection.js";
|
|
113
117
|
export { parkedToolIdentity } from "./core/tool-roster.js";
|
|
@@ -167,12 +171,12 @@ export { AdoptionError, assertAdoptionBootGate, readRootAdoptionFile, writeRootA
|
|
|
167
171
|
export { adoptLocalDataRoot, ackAdoptionConfig, witnessAdoptionConfig, listAdoptionQuarantine, readAdoptionStatus, } from "./stores/file/adoption/adopt.js";
|
|
168
172
|
export { formatHookFeedback, runToolGate, createHookEnvCapabilities, createPreToolUseConstraintPolicy, normalizePersistedRuleHit, } from "./core/hooks.js";
|
|
169
173
|
export { InMemoryMemoryStore, composeMemoryBlock, composeLayeredMemoryBlock, normalizeMemorySpec, supportsConsolidation, supportsPeriodicConsolidation, firstSentence, expandLexicalTerms, lexicalSearchMatch, classifyPromotable, enforcePromotableWriteGate, guardedMemoryStore, MemoryGateError, detectSecret, enforceSecretWriteGate, enforceStructuredNoteSecretGate, } from "./core/memory.js";
|
|
170
|
-
export { MemoryEngine, FileMemoryEngineBackend, memoryBackendContract, assertMemoryBackendSearchEquivalence, buildMemoryInstruction, truncateIndex, scanEntryFiles, deriveRepoKey, deriveRepoMemoryDir, deriveControlPlaneDir, deriveRepoControlPlaneDir, resolveMemoryEngineRoot, scopeDirName, ControlPlaneCorruptError, parseEntryFile, serializeEntryFile, computeEntryRev, entryFromFile, MEMORY_ORIGIN_CAUSES, committedOriginOf, originEquals, consolidationExposedFrontmatter, ambiguousOriginRepresentation, committedDistilledOf, distilledEquals, CONSOLIDATION_DEFAULTS, ConsolidationRefusedError, MEMORY_SEARCH_SUPERSEDED_TAG, consolidationTypeEligible, deriveSupersededSet, memorySupersededNote, readIntentCredentials, supersessionFuseCeiling, memoryConsolidationRecommendedNotice, memoryConsolidationCommittedNotice, memoryConsolidationConflictNotice, memoryConsolidationIncompleteNotice, memoryConsolidationRefusedNotice, memoryConsolidationWithheldNotice, DISTILLER_DEFAULT_MAX_INPUTS_PER_PRODUCT, LLM_DISTILLER_CONTRACT, LLM_DISTILLER_CONTRACT_DL2, LLM_DISTILLER_CONTRACT_DL3, LLM_DISTILLER_CONTRACTS, MEMORY_DISTILLER_CONTRACT_V1, contractGroupingDiff, driveConsolidationToFixpoint, isAliasModelId, llmPlanDistiller, mintExposurePartitionedPlan, mintLlmConsolidationPlan, MEMORY_DISTILLER_PURITY_CONTRACT_V1, detectCleanArmVerbatimLeak, openAiCompatChatSeat, parseJsonAnswer, planParseRepairs, sanitizeLlmGroups, scheduleUnderFuse, CONSOLIDATION_DRIVER_PLANS_DIR, CONSOLIDATION_DRIVER_RUNS_FILE, CONSOLIDATION_RUN_STOP_REASONS, archiveDistillerPlan, readConsolidationDriverRun, runMemoryConsolidationDriver, isInstructionEntry, MEMORY_INSTRUCTION_TEMPLATE, MEMORY_RECALL_DISCIPLINE, MEMORY_PREFERENCE_DISCIPLINE, MEMORY_READONLY_NOTICE, MEMORY_CAPTURE_OPTOUT_NOTICE, memoryCaptureOptedOutNotice, memoryCaptureOptOutUnpersistedNotice, SESSION_CAPTURE_OPTOUT_DIR, markSessionCaptureOptOut, readSessionCaptureOptOut, listSessionCaptureOptOut, fileSessionCaptureRecordStore, readV2HeaderHints, LINEAGE_FILE, CHALLENGES_FILE, CHALLENGED_HISTORY_FILE, CHALLENGE_LEDGER_MAX_EVENTS, rebuildStrictControlPlaneLedger, MEMORY_INDEX_FILENAME, MEMORY_INDEX_MAX_LINES, MEMORY_INDEX_MAX_BYTES, MEMORY_SEARCH_TOOL_NAME, MEMORY_GET_TOOL_NAME, MEMORY_INDEX_TOOL_NAME, MEMORY_ENGINE_TOOL_NAMES, MEMORY_EXPOSURE_BANNER, MEMORY_EXPOSURE_HANDLE_TAG, memoryExposureIndexRow, STUB_ARCHIVED_LINE, DEFAULT_MAX_MEMORY_FILES, DEFAULT_MAX_ENTRY_DEPTH, DEFAULT_HARVEST_DEADLINE_MS, DEFAULT_HARVEST_FILE_BUDGET, MASS_DELETION_FUSE_RATIO, scanMemoryWrite, scanMemoryFileName, scanRemediation, MEMORY_FILENAME_SEGMENT_RE, renderAnnouncements, enqueueMemoryAnnouncement, drainMemoryAnnouncements, peekMemoryAnnouncements, bumpScanFuse, scanFuseCount, clearScanFuse, ANNOUNCEMENTS_FILE, MEMORY_ANNOUNCEMENTS_MAX, SCAN_FUSE_FILE, SCAN_FUSE_THRESHOLD, erasureSelectHash, computeMemoryBundleHash, SCOPE_SEGMENT_MAX_ENCODED, PROJECT_MARKER_PATH, encodeScopeSegment, decodeScopeSegment, parseScopeKey, formatUserScope, formatOrgScope, formatProjScope, formatUserProjScope, isPersonalScope, assertScopeContractPlacement, formatProjectMarker, parseProjectMarker, resolveProjectId, PROJECT_ID_REGEX, migrateScope, materializeEntriesToFiles, harvestFilesToPatches, projectionsToWriteBack, screenInboundEntries, REMOTE_HARVEST_PER_FILE_BYTES, REMOTE_MASS_DELETION_FUSE_RATIO, deriveProjectMemoryDir, deriveProjectControlDir, recordProjectIdHint, lookupProjectIdHint, PROJECT_ID_HINTS_FILE, reconcileMemoryEntries, nextSyncBaseline, mergeRecallHits, syncMemoryScope, } from "./core/memory-engine/index.js";
|
|
174
|
+
export { MemoryEngine, FileMemoryEngineBackend, memoryBackendContract, assertMemoryBackendSearchEquivalence, buildMemoryInstruction, writableRootOf, truncateIndex, scanEntryFiles, deriveRepoKey, deriveRepoMemoryDir, deriveControlPlaneDir, deriveRepoControlPlaneDir, resolveMemoryEngineRoot, scopeDirName, ControlPlaneCorruptError, parseEntryFile, serializeEntryFile, computeEntryRev, entryFromFile, MEMORY_ORIGIN_CAUSES, committedOriginOf, originEquals, consolidationExposedFrontmatter, ambiguousOriginRepresentation, committedDistilledOf, distilledEquals, CONSOLIDATION_DEFAULTS, ConsolidationRefusedError, MEMORY_SEARCH_SUPERSEDED_TAG, consolidationTypeEligible, deriveSupersededSet, memorySupersededNote, readIntentCredentials, supersessionFuseCeiling, memoryConsolidationRecommendedNotice, memoryConsolidationCommittedNotice, memoryConsolidationConflictNotice, memoryConsolidationIncompleteNotice, memoryConsolidationRefusedNotice, memoryConsolidationWithheldNotice, DISTILLER_DEFAULT_MAX_INPUTS_PER_PRODUCT, LLM_DISTILLER_CONTRACT, LLM_DISTILLER_CONTRACT_DL2, LLM_DISTILLER_CONTRACT_DL3, LLM_DISTILLER_CONTRACTS, MEMORY_DISTILLER_CONTRACT_V1, contractGroupingDiff, driveConsolidationToFixpoint, isAliasModelId, llmPlanDistiller, mintExposurePartitionedPlan, mintLlmConsolidationPlan, MEMORY_DISTILLER_PURITY_CONTRACT_V1, detectCleanArmVerbatimLeak, openAiCompatChatSeat, parseJsonAnswer, planParseRepairs, sanitizeLlmGroups, scheduleUnderFuse, CONSOLIDATION_DRIVER_PLANS_DIR, CONSOLIDATION_DRIVER_RUNS_FILE, CONSOLIDATION_RUN_STOP_REASONS, archiveDistillerPlan, readConsolidationDriverRun, runMemoryConsolidationDriver, isInstructionEntry, MEMORY_INSTRUCTION_TEMPLATE, MEMORY_RECALL_DISCIPLINE, MEMORY_PREFERENCE_DISCIPLINE, MEMORY_READONLY_NOTICE, MEMORY_CAPTURE_OPTOUT_NOTICE, memoryCaptureOptedOutNotice, memoryCaptureOptOutUnpersistedNotice, SESSION_CAPTURE_OPTOUT_DIR, markSessionCaptureOptOut, readSessionCaptureOptOut, listSessionCaptureOptOut, fileSessionCaptureRecordStore, readV2HeaderHints, LINEAGE_FILE, CHALLENGES_FILE, CHALLENGED_HISTORY_FILE, CHALLENGE_LEDGER_MAX_EVENTS, rebuildStrictControlPlaneLedger, MEMORY_INDEX_FILENAME, MEMORY_INDEX_MAX_LINES, MEMORY_INDEX_MAX_BYTES, MEMORY_SEARCH_TOOL_NAME, MEMORY_GET_TOOL_NAME, MEMORY_INDEX_TOOL_NAME, MEMORY_ENGINE_TOOL_NAMES, MEMORY_EXPOSURE_BANNER, MEMORY_EXPOSURE_HANDLE_TAG, memoryExposureIndexRow, STUB_ARCHIVED_LINE, DEFAULT_MAX_MEMORY_FILES, DEFAULT_MAX_ENTRY_DEPTH, DEFAULT_HARVEST_DEADLINE_MS, DEFAULT_HARVEST_FILE_BUDGET, MASS_DELETION_FUSE_RATIO, scanMemoryWrite, scanMemoryFileName, scanRemediation, MEMORY_FILENAME_SEGMENT_RE, renderAnnouncements, enqueueMemoryAnnouncement, drainMemoryAnnouncements, peekMemoryAnnouncements, bumpScanFuse, scanFuseCount, clearScanFuse, ANNOUNCEMENTS_FILE, MEMORY_ANNOUNCEMENTS_MAX, SCAN_FUSE_FILE, SCAN_FUSE_THRESHOLD, erasureSelectHash, computeMemoryBundleHash, SCOPE_SEGMENT_MAX_ENCODED, PROJECT_MARKER_PATH, encodeScopeSegment, decodeScopeSegment, parseScopeKey, formatUserScope, formatOrgScope, formatProjScope, formatUserProjScope, isPersonalScope, assertScopeContractPlacement, formatProjectMarker, parseProjectMarker, resolveProjectId, PROJECT_ID_REGEX, migrateScope, materializeEntriesToFiles, harvestFilesToPatches, projectionsToWriteBack, screenInboundEntries, REMOTE_HARVEST_PER_FILE_BYTES, REMOTE_MASS_DELETION_FUSE_RATIO, deriveProjectMemoryDir, deriveProjectControlDir, recordProjectIdHint, lookupProjectIdHint, PROJECT_ID_HINTS_FILE, reconcileMemoryEntries, nextSyncBaseline, mergeRecallHits, syncMemoryScope, } from "./core/memory-engine/index.js";
|
|
171
175
|
export { SHARED_MEMORY_READ_CAP_BYTES, SHARED_MEMORY_LIST_PAGE_SIZE, SharedMemoryStoreError, } from "./core/shared-memory/types.js";
|
|
172
176
|
export { sharedMemoryStoreContract, } from "./core/shared-memory/contract.js";
|
|
173
177
|
export { termSet, jaccardDistance, cosineDistance } from "./core/memory-vector.js";
|
|
174
178
|
export { encodeSurfacedKey, buildManifestText, validateSelectedIds, composeSelectiveBody, formatMemoryAge, resolveLinkedIds, RECALL_CAVEAT, DEFAULT_MAX_SELECTED, DEFAULT_MAX_LINKED, } from "./core/memory-recall.js";
|
|
175
|
-
export { runMemoryConsolidation, CONSOLIDATION_SYSTEM_PROMPT, DEFAULT_CONSOLIDATION_BAND, DEFAULT_CONSOLIDATION_SEARCH_LIMIT, DEFAULT_CONSOLIDATION_MAX_NOTES,
|
|
179
|
+
export { runMemoryConsolidation, CONSOLIDATION_SYSTEM_PROMPT, DEFAULT_CONSOLIDATION_BAND, DEFAULT_CONSOLIDATION_SEARCH_LIMIT, DEFAULT_CONSOLIDATION_MAX_NOTES, normalizeForExactMatch, } from "./core/runner/memory-consolidation.js";
|
|
176
180
|
export { consolidateScope, advanceCursorAfterInline, } from "./core/consolidate-scope.js";
|
|
177
181
|
export { resolveMemoryConsolidationDriver, } from "./core/runner/memory-consolidation-driver.js";
|
|
178
182
|
export { DEFAULT_COMPACTION_INSTRUCTIONS } from "./core/auto-compaction.js";
|
|
@@ -206,6 +210,7 @@ export { WorkflowMaxAgentsError, WorkflowResultTooLargeError, WorkflowJournalInc
|
|
|
206
210
|
export { createFileWorkflowScriptStore, mergeWorkflowArgs, } from "./orchestration/workflow-script-store.js";
|
|
207
211
|
export { DISCUSSION_WORKFLOW_NAME, DISCUSSION_SCRIPT, TEAM_DISCUSSION_WORKFLOW_NAME, TEAM_DISCUSSION_SCRIPT, canonicalWorkflowName, retiredWorkflowNameAliases, builtinWorkflowDefinitions, builtinWorkflowListings, resolveBuiltinWorkflow, } from "./orchestration/builtin-workflows.js";
|
|
208
212
|
export { WORKFLOW_AGENT_STALL_MS, WORKFLOW_AGENT_MAX_RETRIES, WORKFLOW_AGENT_THROTTLE_BACKOFF_MS } from "./orchestration/workflow.js";
|
|
213
|
+
export { parentSpecSeatOf, applyParentSpecSeat } from "./core/parent-spec-seat.js";
|
|
209
214
|
export { createRunWorkflowTool, RUN_WORKFLOW_TOOL_NAME, workflowWhenToUseText, renderNamedWorkflowListing, } from "./orchestration/run-workflow-tool.js";
|
|
210
215
|
export { runSideQuery } from "./core/side-query.js";
|
|
211
216
|
export { PRESENT_PLAN_TOOL_NAME, ENTER_PLAN_MODE_TOOL_NAME } from "./core/present-plan-tool.js";
|
|
@@ -232,13 +237,13 @@ export { summarizeRedactions } from "./core/untrusted-egress.js";
|
|
|
232
237
|
export { MemoryRosterStore, FileRosterStore } from "./agents/roster-store.js";
|
|
233
238
|
export { CONFIG_CATALOG_VERSION, describeConfigCatalog, resolveEffectiveConfig, } from "./config/catalog.js";
|
|
234
239
|
export { normalizeAgentName } from "./core/task-registry.js";
|
|
235
|
-
export { DELEGATION_MAX_CONCURRENT_DEFAULT, DELEGATION_MAX_PER_SESSION_DEFAULT,
|
|
236
|
-
export { COORDINATOR_ROLE_PROMPT, TEAMMATE_COMMUNICATION_ADDENDUM
|
|
240
|
+
export { DELEGATION_MAX_CONCURRENT_DEFAULT, DELEGATION_MAX_PER_SESSION_DEFAULT, SUBAGENT_TRANSCRIPT_RETENTION_DAYS_DEFAULT, } from "./config/defaults.js";
|
|
241
|
+
export { COORDINATOR_ROLE_PROMPT, TEAMMATE_COMMUNICATION_ADDENDUM } from "./prompts/coordinator.js";
|
|
237
242
|
export { createSubagentTool, FORK_SUBAGENT_TYPE, GENERAL_PURPOSE_SUBAGENT_TYPE, agentWhenToUseText, FORK_DIRECTIVE_FRAME, SUBAGENT_SYSTEM_NOTE, resolveDelegationEntryCaps, } from "./agents/subagent.js";
|
|
238
243
|
export { getSessionRetainLedger, releaseSessionRetainLedger, } from "./agents/retain-ledger.js";
|
|
239
244
|
export { createSendMessageTool, createAgentContinuationVerb, SEND_MESSAGE_TOOL_NAME } from "./agents/send-message-tool.js";
|
|
240
245
|
export { createPeerAdmission, peerAdmissionFor, judgePeerAdmission, resolvePeerAdmissionConfig, PEER_ADMISSION_DEFAULTS, PEER_HOP_CHAIN_WINDOW, PEER_MESSAGE_NOTICE, createPeerSelfRef, createPeerInboundChainRef, peerAxisToken, appendHopToken, } from "./agents/peer-admission.js";
|
|
241
|
-
export { CROSS_SESSION_MESSAGE_TAG, CROSS_SESSION_MESSAGE_NOTICE, PERMISSION_MODE_CLASSES, isPermissionModeClass, CrossSessionCodecError,
|
|
246
|
+
export { CROSS_SESSION_MESSAGE_TAG, CROSS_SESSION_MESSAGE_NOTICE, PERMISSION_MODE_CLASSES, isPermissionModeClass, CrossSessionCodecError, PEER_HOP_CHAIN_CARRY_WINDOW, encodePeerAddress, isCanonicalPeerAddress, encodeScopeAttribute, decodeScopeAttribute, canonicalPeerDisplayName, buildCrossSessionEnvelope, parseCrossSessionEnvelope, clampHopChain, encodeCcPeerFrame, decodeCcPeerFrame, } from "./agents/cross-session-envelope.js";
|
|
242
247
|
export { CROSS_SESSION_INBOUND_SETTINGS, isCrossSessionInboundSetting, resolveCrossSessionInboundSetting, CROSS_SESSION_HOLD_CAUSES, describeCrossSessionHoldCause, judgeCrossSessionInbound, foldPermissionModeClass, PEER_SEND_VERDICT_CODES, peerSendVerdictSeverity, } from "./agents/cross-session-judge.js";
|
|
243
248
|
export { PEER_REF_MIN, PEER_REF_MAX, PEER_REF_RE, mintPeerRef, formatPeerNameRef, parsePeerNameRef, normalizePeerName, PEER_ADDRESS_PREFIXES, reservedPeerNameReason, } from "./agents/cross-session-ref.js";
|
|
244
249
|
export { PEER_SESSION_RECORD_SCHEMA_VERSION, PEER_SESSION_RECORD_MAX_BYTES, SESSION_BOX_PREFIX, peerSessionBoxHandle, isPeerSessionId, PEER_SESSION_ID_GRAMMAR, parsePeerSessionAddress, readPeerSessionRecord, defaultPeerLivenessProbe, isPeerSessionProcessAlive, mintPeerSessionCandidates, resolvePeerSessions, createInMemoryPeerDirectory, vetPeerRegistryDirectory, judgePeerRecordFile, } from "./agents/peer-directory.js";
|
|
@@ -246,7 +251,7 @@ export { createListAgentsTool, LIST_AGENTS_TOOL_NAME, LIST_AGENTS_TOOL_ALIAS, LI
|
|
|
246
251
|
export { CROSS_SESSION_CLASSIFIER_RULE } from "./agents/cross-session-envelope.js";
|
|
247
252
|
export { PEER_SESSION_ID_UNGRAMMATICAL_CODE } from "./agents/peer-session-drain.js";
|
|
248
253
|
export { renderCrossSessionMessageFrame, renderCrossSessionNoticeLine } from "./core/task-notification.js";
|
|
249
|
-
export { PEER_HELD_QUEUE_CAP, PEER_IDLE_SUBSCRIPTION_TTL_MS, PEER_IDLE_SUBSCRIBER_TABLE_CAP, PEER_IDLE_OUTSTANDING_CAP, PEER_IDLE_PRIORS_KEPT, PEER_IDLE_FIRE_DEBOUNCE_MS, PEER_IDLE_HELD_BACKOFF_MS, PEER_IDLE_LABEL_MAX, CROSS_SESSION_DIALOG_EXPIRY_VALUES, CROSS_SESSION_DIALOG_EXPIRY_DEFAULT, resolveCrossSessionDialogExpiry, PEER_HELD_REVIEW_CAUSES, PEER_DELIVERY_RECEIPT_STATES, isPeerDeliveryReceiptState, PEER_DROP_REASONS,
|
|
254
|
+
export { PEER_HELD_QUEUE_CAP, PEER_IDLE_SUBSCRIPTION_TTL_MS, PEER_IDLE_SUBSCRIBER_TABLE_CAP, PEER_IDLE_OUTSTANDING_CAP, PEER_IDLE_PRIORS_KEPT, PEER_IDLE_FIRE_DEBOUNCE_MS, PEER_IDLE_HELD_BACKOFF_MS, PEER_IDLE_LABEL_MAX, CROSS_SESSION_DIALOG_EXPIRY_VALUES, CROSS_SESSION_DIALOG_EXPIRY_DEFAULT, resolveCrossSessionDialogExpiry, PEER_HELD_REVIEW_CAUSES, PEER_DELIVERY_RECEIPT_STATES, isPeerDeliveryReceiptState, PEER_DROP_REASONS, peerRecipientSuffix, renderCrossSessionDeliveryNotice, describePeerDropReasons, renderCrossSessionDroppedNotice, PEER_IDLE_NOTICE_KINDS, isPeerIdleNoticeKind, PEER_IDLE_UNAVAILABLE_CAUSES, peerIdleNoticeLabel, formatPeerNoticeClock, renderCrossSessionIdleNotice, describePeerIdleSubscription, } from "./agents/peer-notices.js";
|
|
250
255
|
export { createPeerHeldQueue, peerHeldQueueFor, peerHeldQueueIfAny, peerHeldQueueKey, realPeerClock, } from "./agents/peer-held-queue.js";
|
|
251
256
|
export { createPeerIdleTarget, createPeerIdleRequester, peerIdleMachineFor, peerIdleMachineIfAny, peerIdleMachineKey, } from "./agents/peer-idle.js";
|
|
252
257
|
export { routePeerDeliveryReceipt, routePeerDroppedReceipt, routePeerIdleNotice } from "./agents/peer-notice-route.js";
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
*/
|
|
12
12
|
export * from "./harness-types.js";
|
|
13
13
|
export { AgentHarness } from "../engine/harness/agent-harness.js";
|
|
14
|
+
export type { HaltConsumption, SeatCutSource, StopRequestSource } from "../engine/harness/agent-harness.js";
|
|
14
15
|
export { CompactionError, ExecutionError, FileError, ok, err } from "../engine/harness/types.js";
|
|
15
16
|
export { DEFAULT_CHARS_PER_TOKEN, DEFAULT_CLAMP_TOLERANCE, DEFAULT_COMPACTION_SETTINGS, compact, computeFileLists, dryRunSummarizationClamp, estimateContextTokens, estimateTokens, prepareCompaction, shouldCompact, summaryOutputBudgetTokens, } from "../engine/compaction/compaction.js";
|
|
16
17
|
export { SKILL_RETENTION_PER_SKILL_MAX_CHARS, SKILL_RETENTION_TOTAL_MAX_CHARS, SKILL_RETENTION_TRUNCATION_MARKER, formatFileOperations, formatPersistedOutputRefs, readCompactionActiveTools, readRetainedInvokedSkills, renderInvokedSkillsRetention, } from "../engine/compaction/utils.js";
|
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
*/
|
|
28
28
|
import type { RunnerSelfSeat } from "../core/runner/contracts.js";
|
|
29
29
|
import type { TaskResult, TaskSpec } from "../core/types.js";
|
|
30
|
+
import { type ToolPolicy } from "../core/tool-policy.js";
|
|
30
31
|
import type { TaskOutcome } from "../core/task-outcome.js";
|
|
31
32
|
import { type OracleBaseline, type OracleGateResult, type OracleVerdict, type SpecContract } from "../core/spec-contract.js";
|
|
32
33
|
export interface RunSpecOptions {
|
|
@@ -51,6 +52,8 @@ export interface RunSpecResult {
|
|
|
51
52
|
/** How many frozen files were byte-restored after tampering (stop gates + terminal sweep). */
|
|
52
53
|
guardRestores: number;
|
|
53
54
|
}
|
|
55
|
+
/** Exported for direct unit pinning (the path-identity family matrix). */
|
|
56
|
+
export declare function frozenDenyPolicy(rootDir: string, frozenResolved: string[]): ToolPolicy;
|
|
54
57
|
/**
|
|
55
58
|
* Run one task under a {@link SpecContract}. 🔴 CODE-tier input contract (fable-M3): `contract` must come
|
|
56
59
|
* from the deployment author / a trusted code path — its oracle commands are executed verbatim.
|
|
@@ -5,7 +5,7 @@ import { combinePolicies } from "../core/tool-policy.js";
|
|
|
5
5
|
import { delimitUntrusted } from "../core/untrusted-text.js";
|
|
6
6
|
import { isDurablePause } from "../agents/suspend-guard.js";
|
|
7
7
|
import { terminalProjection } from "../core/runner/terminal-projection.js";
|
|
8
|
-
import {
|
|
8
|
+
import { isAbsoluteForFamily, pathFamilyOf, writeTargetPath } from "../tools/fs/safety.js";
|
|
9
9
|
import { captureBaseline, resolveFrozenPaths, restoreFrozenPaths, runOracle, snapshotFrozenPaths, specError, } from "../core/spec-contract.js";
|
|
10
10
|
import { isProtectedWrite } from "../core/tool-registry.js";
|
|
11
11
|
const CASE_INSENSITIVE_FS = process.platform === "darwin" || process.platform === "win32";
|
|
@@ -15,7 +15,7 @@ const pathKey = (p) => {
|
|
|
15
15
|
n = n[0].toLowerCase() + n.slice(1);
|
|
16
16
|
return CASE_INSENSITIVE_FS ? n.toLowerCase() : n;
|
|
17
17
|
};
|
|
18
|
-
function frozenDenyPolicy(rootDir, frozenResolved) {
|
|
18
|
+
export function frozenDenyPolicy(rootDir, frozenResolved) {
|
|
19
19
|
const frozen = new Set(frozenResolved.map(pathKey));
|
|
20
20
|
return {
|
|
21
21
|
check(req) {
|
|
@@ -24,7 +24,7 @@ function frozenDenyPolicy(rootDir, frozenResolved) {
|
|
|
24
24
|
const raw = writeTargetPath(req);
|
|
25
25
|
if (typeof raw !== "string" || raw.length === 0)
|
|
26
26
|
return { action: "allow" };
|
|
27
|
-
const absForm =
|
|
27
|
+
const absForm = isAbsoluteForFamily(pathFamilyOf({ root: rootDir, cwd: req.cwd }), raw);
|
|
28
28
|
const abs = pathKey(absForm ? raw : resolve(req.cwd || rootDir, raw));
|
|
29
29
|
if (frozen.has(abs)) {
|
|
30
30
|
return { action: "deny", message: `${raw} is part of the frozen specification surface (read-only).` };
|
|
@@ -219,12 +219,18 @@ export interface RunWorkflowToolDeps {
|
|
|
219
219
|
sizeGuideline?: WorkflowSizeGuideline;
|
|
220
220
|
/** The originating task id + principal, threaded to the notifier. */
|
|
221
221
|
sourceTaskId?: string;
|
|
222
|
-
principal
|
|
223
|
-
|
|
224
|
-
*
|
|
225
|
-
* (
|
|
226
|
-
*
|
|
227
|
-
|
|
222
|
+
/** The HOST run's parent SPEC seat ({@link import("../core/parent-spec-seat.js").ParentSpecSeat}: principal / oneShot /
|
|
223
|
+
* clientContext / the frozen question face / the fs-fence widening / envFacts / the declared persistence statement),
|
|
224
|
+
* minted once by the host's prepare and threaded as a MOUNT dep because this auto-mount's execute ctx is minimal
|
|
225
|
+
* (`ctx.parentSpecSeat` wins when a wrapping path provides it). Applied onto every spawned agent at the launch site
|
|
226
|
+
* (`RunWorkflowOptions.parentSpecSeat` → `applyParentSpecSeat`, the Task lane's one law); the tool also reads its
|
|
227
|
+
* `principal` for the registry/notify scope and its `oneShot` for the launch receipt's guidance branch (a one-shot
|
|
228
|
+
* caller has no later turn for a notification to land in, so "end your turn and wait" is wrong for it). */
|
|
229
|
+
parentSpecSeat?: import("../core/parent-spec-seat.js").ParentSpecSeat;
|
|
230
|
+
/** The HOST run's own per-request question face was already stripped by the engine (`RunInternals.questionFaceStripped`
|
|
231
|
+
* of the host leg): the fact inherits onto every agent this workflow spawns (`ctx.questionFaceStripped` wins on a rich-ctx
|
|
232
|
+
* mount; the dep covers the auto-mount), beside the strip this tool performs on the seat itself. */
|
|
233
|
+
parentQuestionFaceStripped?: true;
|
|
228
234
|
/** design/173 §8.3 (r3-F1) — the HOST run's RESOLVED interaction posture, threaded as a MOUNT
|
|
229
235
|
* dep because prepare-task's auto-mount seals this tool without the rich-ctx wrapper (the same
|
|
230
236
|
* reason `forwardEvent`/`inheritedGateForChildren` ride deps); `ctx.interactionPosture` still
|
|
@@ -6,7 +6,15 @@ import { withDelegationProvenance } from "../core/tool-policy.js";
|
|
|
6
6
|
import { LAUNCH_RECEIPT_OWN_WORDS_CLAUSE, launchReceiptNoQuoteClause } from "../agents/launch-receipt-contract.js";
|
|
7
7
|
import { startWorkflow } from "./workflow.js";
|
|
8
8
|
import { WORKFLOW_AGENT_PARKED_ERROR_CODE } from "./workflow-types.js";
|
|
9
|
+
import { checkpointStoreOfSeat } from "../core/checkpoint-seat.js";
|
|
9
10
|
import { buildWorkflowPrimitives } from "./workflow-primitives.js";
|
|
11
|
+
import { stripSpawnTurnQuestionFace } from "../core/ask-question.js";
|
|
12
|
+
import { parentSpecSeatOfCtx } from "../core/parent-spec-seat.js";
|
|
13
|
+
import { assertNoRetiredKeys } from "../core/retired-keys.js";
|
|
14
|
+
const RETIRED_RUN_WORKFLOW_TOOL_DEPS_KEYS = {
|
|
15
|
+
principal: "the host run's principal rides `RunWorkflowToolDeps.parentSpecSeat.principal` (the parent SPEC seat the host's prepare mints), never a seat of its own",
|
|
16
|
+
oneShot: "the host run's one-shot fact rides `RunWorkflowToolDeps.parentSpecSeat.oneShot` (only `true` travels), never a seat of its own",
|
|
17
|
+
};
|
|
10
18
|
import { parseWorkflowMeta, splitWorkflowMeta, workflowScriptReadsClockOrRandom } from "./workflow-meta.js";
|
|
11
19
|
import { mergeWorkflowArgs, normalizeStringArg } from "./workflow-script-store.js";
|
|
12
20
|
import { builtinWorkflowListings, canonicalWorkflowName, resolveBuiltinWorkflow, workflowNameProbeOrder } from "./builtin-workflows.js";
|
|
@@ -169,6 +177,7 @@ async function collectNamedWorkflowListings(store, builtinsEnabled) {
|
|
|
169
177
|
return [...byName.values()];
|
|
170
178
|
}
|
|
171
179
|
export async function createRunWorkflowTool(d) {
|
|
180
|
+
assertNoRetiredKeys(d, RETIRED_RUN_WORKFLOW_TOOL_DEPS_KEYS, "RunWorkflowToolDeps");
|
|
172
181
|
if (d.scriptRunner.safeForUntrustedScripts !== true) {
|
|
173
182
|
throw new Error("createRunWorkflowTool: refusing to mount run_workflow on a runner that is not safeForUntrustedScripts (design/98 fail-closed)");
|
|
174
183
|
}
|
|
@@ -304,7 +313,8 @@ export async function createRunWorkflowTool(d) {
|
|
|
304
313
|
"concurrent agents WRITE THE SAME FILES/REPO and must not clobber each other — even as a parallel fan-out " +
|
|
305
314
|
"(plain parallel would clobber); this takes precedence over plain parallel. A separate-working-copy need, " +
|
|
306
315
|
"NOT merely 'several agents'.\n" +
|
|
307
|
-
"• resumeFromRunId (this tool's arg): RESUME a prior/crashed run — replay its completed agents, run only new work
|
|
316
|
+
"• resumeFromRunId (this tool's arg): RESUME a prior/crashed run — replay its completed agents, run only new work " +
|
|
317
|
+
"(a run that could park must have finished — a crashed park-capable run is decided through the deployment's approval channel, not resumed).\n" +
|
|
308
318
|
"• scriptPath / name (this tool's args): when a script store is wired, every run persists its script and " +
|
|
309
319
|
"returns its scriptPath — to iterate, EDIT that file and re-invoke with {scriptPath} instead of resending " +
|
|
310
320
|
"the full script; {name} runs a saved workflow.\n" +
|
|
@@ -392,7 +402,10 @@ export async function createRunWorkflowTool(d) {
|
|
|
392
402
|
const rawResume = rawArgs.resumeFromRunId;
|
|
393
403
|
const resumeFromRunId = typeof rawResume === "string" && rawResume.length > 0 ? rawResume : undefined;
|
|
394
404
|
const sourceTaskId = ctx.taskId ?? d.sourceTaskId;
|
|
395
|
-
const
|
|
405
|
+
const hostSeat = parentSpecSeatOfCtx(ctx) ?? d.parentSpecSeat;
|
|
406
|
+
const detachedSeat = hostSeat !== undefined ? stripSpawnTurnQuestionFace(hostSeat) : undefined;
|
|
407
|
+
const parentSpecSeat = detachedSeat?.spec;
|
|
408
|
+
const principal = parentSpecSeat?.principal;
|
|
396
409
|
const taskScope = ctx.principal ?? d.scope;
|
|
397
410
|
let script;
|
|
398
411
|
let registeredDefaultArgs;
|
|
@@ -487,8 +500,10 @@ export async function createRunWorkflowTool(d) {
|
|
|
487
500
|
},
|
|
488
501
|
}
|
|
489
502
|
: governance;
|
|
503
|
+
const childParkSeat = ctx.checkpointStoreForChildren ?? d.parentCheckpointStore;
|
|
504
|
+
const parkStore = checkpointStoreOfSeat(childParkSeat);
|
|
490
505
|
const scriptFn = (wfCtx) => {
|
|
491
|
-
const primitives = buildWorkflowPrimitives(wfCtx, runGovernance, d.onAgentSpawn,
|
|
506
|
+
const primitives = buildWorkflowPrimitives(wfCtx, runGovernance, d.onAgentSpawn, childParkSeat, d.parentReadFace, d.parentReadDenyPatterns, ctx.handsReadOnly === true || d.parentHandsReadOnly === true, ctx.interactiveTools === false || d.parentInteractiveTools === false);
|
|
492
507
|
return d.scriptRunner.run({ scriptSource: script, primitives, scriptArgs: effectiveArgs, signal: wfCtx.signal }).then((r) => r.result);
|
|
493
508
|
};
|
|
494
509
|
if (ctx.signal?.aborted) {
|
|
@@ -503,6 +518,7 @@ export async function createRunWorkflowTool(d) {
|
|
|
503
518
|
try {
|
|
504
519
|
handle = startWorkflow(d.runner, scriptFn, {
|
|
505
520
|
store: d.store,
|
|
521
|
+
...(parkStore !== undefined ? { checkpointStore: parkStore } : {}),
|
|
506
522
|
...(d.agents !== undefined ? { agents: d.agents } : {}),
|
|
507
523
|
...(d.builtinAgents !== undefined ? { builtinAgents: d.builtinAgents } : {}),
|
|
508
524
|
name: meta.name,
|
|
@@ -548,7 +564,9 @@ export async function createRunWorkflowTool(d) {
|
|
|
548
564
|
...(d.parentModel !== undefined ? { defaultModel: d.parentModel } : {}),
|
|
549
565
|
...(d.parentThinking !== undefined ? { defaultThinking: d.parentThinking } : {}),
|
|
550
566
|
...(d.parentGetApiKeyAndHeaders !== undefined ? { defaultGetApiKeyAndHeaders: d.parentGetApiKeyAndHeaders } : {}),
|
|
551
|
-
...(
|
|
567
|
+
...(parentSpecSeat !== undefined ? { parentSpecSeat } : {}),
|
|
568
|
+
...(detachedSeat?.internalsFlag.questionFaceStripped === true || ctx.questionFaceStripped === true || d.parentQuestionFaceStripped === true ? { questionFaceStripped: true } : {}),
|
|
569
|
+
...(hostDurableApproval !== undefined && d.store !== undefined && parkStore !== undefined ? { defaultDurableApproval: { ...hostDurableApproval } } : {}),
|
|
552
570
|
...(resumeFromRunId !== undefined && d.parkedResume !== undefined && d.parkedResume(resumeFromRunId) !== undefined ? { parkedResume: d.parkedResume(resumeFromRunId) } : {}),
|
|
553
571
|
...(parentCenterArtifactDigest !== undefined ? { parentCenterArtifactDigest } : {}),
|
|
554
572
|
...(parentCenterSourceRevision !== undefined ? { parentCenterSourceRevision } : {}),
|
|
@@ -662,7 +680,7 @@ export async function createRunWorkflowTool(d) {
|
|
|
662
680
|
const carries = pollExpr
|
|
663
681
|
? ` A terminal ${pollExpr} reply carries its result AND per-agent rows — read them${journalRef !== undefined ? ` (full journal: ${journalRef})` : ""} before assuming an empty or unexpected result.`
|
|
664
682
|
: "";
|
|
665
|
-
if (
|
|
683
|
+
if (parentSpecSeat?.oneShot === true) {
|
|
666
684
|
return blockingPollExpr
|
|
667
685
|
? `This is a ONE-SHOT submission (e.g. headless \`-p\`) — there is no later turn for a background notification to land in, so do NOT end your turn expecting one. Actively wait instead: ${blockingPollExpr}. If it is still running after the wait, wait again (bounded) rather than ending the turn, or write out your best available answer now if you are near your own time budget.${carries}`
|
|
668
686
|
: "This is a one-shot submission (e.g. headless `-p`) and no poll path is available — the workflow's outcome may not be recoverable after this turn ends.";
|
|
@@ -34,9 +34,11 @@ export interface WorkflowGovernance {
|
|
|
34
34
|
* `agent` primitive is GOVERNED when `governance` is set (LLM-authored), else a trusted pass-through.
|
|
35
35
|
* The host's model and thinking are NOT injected here: both are seats the launch site (`workflow.ts`,
|
|
36
36
|
* `withWorkflowChildSeats`) fills AFTER the agentType fold, so a definition's own value is the explicit rung
|
|
37
|
-
* — filling them here ran ahead of the fold and made the fold's "when unset" guard permanently false.
|
|
37
|
+
* — filling them here ran ahead of the fold and made the fold's "when unset" guard permanently false. The parent
|
|
38
|
+
* SPEC seat (principal, oneShot, clientContext, the question face, the fs-fence widening, envFacts, the persistence
|
|
39
|
+
* statement) is applied there for the same reason (`applyParentSpecSeat`).
|
|
38
40
|
*/
|
|
39
|
-
export declare function buildWorkflowPrimitives(ctx: WorkflowRunContext, governance?: WorkflowGovernance, onAgentSpawn?: (handle: WorkflowAgentHandle) => void,
|
|
41
|
+
export declare function buildWorkflowPrimitives(ctx: WorkflowRunContext, governance?: WorkflowGovernance, onAgentSpawn?: (handle: WorkflowAgentHandle) => void,
|
|
40
42
|
/** The host run's RESOLVED checkpoint seat — the store object it parks in, else the word `"disabled"`.
|
|
41
43
|
* Every agent this workflow spawns inherits it; see the injection below. */
|
|
42
44
|
parentCheckpointStore?: CheckpointStore | "disabled",
|
|
@@ -65,7 +65,7 @@ function formatResourceClampNote(notes) {
|
|
|
65
65
|
const parts = notes.map((n) => `${n.field}: requested ${n.requested === undefined ? "unset" : n.requested} → applied ${n.applied}`);
|
|
66
66
|
return `workflow governance tightened this agent's resource limits (${parts.join("; ")})`;
|
|
67
67
|
}
|
|
68
|
-
export function buildWorkflowPrimitives(ctx, governance, onAgentSpawn,
|
|
68
|
+
export function buildWorkflowPrimitives(ctx, governance, onAgentSpawn, parentCheckpointStore, parentReadFace, parentReadDenyPatterns, parentHandsReadOnly, parentInteractiveToolsOff) {
|
|
69
69
|
const agent = (spec, opts) => {
|
|
70
70
|
if (typeof spec === "string")
|
|
71
71
|
spec = { objective: spec };
|
|
@@ -74,9 +74,6 @@ export function buildWorkflowPrimitives(ctx, governance, onAgentSpawn, parentPri
|
|
|
74
74
|
const childSpec = governance
|
|
75
75
|
? buildGovernedChildSpec(spec, effectiveBaseline(governance.baseline), governance.models, governance.caps, (notes) => ctx.log(formatResourceClampNote(notes)), governance.onNotice)
|
|
76
76
|
: { ...spec };
|
|
77
|
-
if (childSpec.principal === undefined && parentPrincipal !== undefined) {
|
|
78
|
-
childSpec.principal = parentPrincipal;
|
|
79
|
-
}
|
|
80
77
|
if (parentCheckpointStore !== undefined && (parentCheckpointStore === "disabled" || childSpec.checkpointStore === undefined)) {
|
|
81
78
|
childSpec.checkpointStore = parentCheckpointStore;
|
|
82
79
|
}
|
|
@@ -4,6 +4,17 @@ export type WorkflowRunStatus = "running" | "completed" | "failed";
|
|
|
4
4
|
* agent durably paused at an approval gate and the run suspended on it (the row carries the token, see
|
|
5
5
|
* {@link WorkflowAgentRun.parkedCheckpointToken}); a phase or group never parks (a parked agent ends the run). */
|
|
6
6
|
export type WorkflowItemStatus = "running" | "completed" | "failed" | "parked";
|
|
7
|
+
/** The arm a `workflow.park_truth_unreadable` resume refusal fired on (`detail.reason`): the prior run's record could not
|
|
8
|
+
* be read (`store_threw`), is absent under this scope (`record_missing`), is not terminal (`record_not_terminal`) or
|
|
9
|
+
* carries no `parks` array (`parks_unreadable`); a candidate's checkpoint could not be read (`checkpoint_store_threw`);
|
|
10
|
+
* or the record/journal name parks while this workflow holds no checkpoint seat to prove them (`capability_not_armed`).
|
|
11
|
+
* Registered in docs/CLOSED-SETS.md with a mint obligation: every throw site spells its word. */
|
|
12
|
+
export declare const PARK_TRUTH_UNREADABLE_REASONS: readonly ["store_threw", "record_missing", "record_not_terminal", "parks_unreadable", "checkpoint_store_threw", "capability_not_armed"];
|
|
13
|
+
export type ParkTruthUnreadableReason = (typeof PARK_TRUTH_UNREADABLE_REASONS)[number];
|
|
14
|
+
/** What the checkpoint store said about a parked ordinal's token when a resume carried no acknowledgement for it
|
|
15
|
+
* (`workflow.park_not_pending`, `detail.status`): the row's own word, or `absent` when the store holds no row. */
|
|
16
|
+
export declare const PARK_NOT_PENDING_STATUSES: readonly ["resolved", "expired", "absent"];
|
|
17
|
+
export type ParkNotPendingStatus = (typeof PARK_NOT_PENDING_STATUSES)[number];
|
|
7
18
|
export interface WorkflowPhase {
|
|
8
19
|
title: string;
|
|
9
20
|
/** F7/B7 (CC pretty.js:446478): a phase PRE-REGISTERED from `meta.phases` starts as `"pending"` — the plan
|
|
@@ -125,10 +136,11 @@ export interface WorkflowAgentRun {
|
|
|
125
136
|
* #642 — the durable-approval checkpoint token this agent is PARKED on (`status: "parked"` only): the child
|
|
126
137
|
* durably paused at an approval gate under the host's forwarded `durableApproval`, the run recorded the
|
|
127
138
|
* park here and suspended. The mirror of the background agent row's `parkedCheckpointToken`, and the
|
|
128
|
-
* workflow-origin JOIN a host routes a parked approval by:
|
|
129
|
-
* row's {@link sessionId} is a workflow child's park
|
|
130
|
-
*
|
|
131
|
-
* in a URL); a durable row is its home
|
|
139
|
+
* workflow-origin JOIN a host routes a parked approval by: the checkpoint row whose `sessionId` equals this
|
|
140
|
+
* row's {@link sessionId} and whose token equals this one is a workflow child's park (the engine's own
|
|
141
|
+
* truth read binds on the same two facts — `WorkflowRun.parks`); the checkpoint row itself carries no
|
|
142
|
+
* workflow key. It is the resume CAPABILITY (never log it or put it in a URL); a durable row is its home
|
|
143
|
+
* exactly as on the background lane. Absent on every other status.
|
|
132
144
|
*/
|
|
133
145
|
parkedCheckpointToken?: string;
|
|
134
146
|
/**
|
|
@@ -374,6 +386,24 @@ export interface WorkflowRun {
|
|
|
374
386
|
divergedAtOrdinal?: number;
|
|
375
387
|
divergedReason?: string;
|
|
376
388
|
};
|
|
389
|
+
/**
|
|
390
|
+
* Every park this run is RESPONSIBLE for: its own (written at the park) and the ones it inherited from the run
|
|
391
|
+
* it resumed and did not settle (written at resume admission). KEYS ONLY — the truth of a park is the checkpoint
|
|
392
|
+
* store (`get(token).status`), never this list: a listed token may be resolved, expired or reaped, and the next
|
|
393
|
+
* resume reads the store for every entry. Present on every record this engine writes (`[]` when there is none)
|
|
394
|
+
* EXCEPT a record whose resume admission refused before its inherited set was established (deliberately absent:
|
|
395
|
+
* not a resume base). It is an ADMISSION INPUT of the next resume, so a store must project it verbatim and keep
|
|
396
|
+
* it through any size degrade; a reader treats absence as a state (an older engine's record, a stripped
|
|
397
|
+
* projection), never as `[]`. `token` is the same capability as {@link WorkflowAgentRun.parkedCheckpointToken}
|
|
398
|
+
* (never log it, never put it in a URL); `originRunId` is the run whose journal holds the `parked` entry for
|
|
399
|
+
* `callKey` (the re-park material).
|
|
400
|
+
*/
|
|
401
|
+
parks?: Array<{
|
|
402
|
+
callKey: string;
|
|
403
|
+
sessionId: string;
|
|
404
|
+
token: string;
|
|
405
|
+
originRunId: string;
|
|
406
|
+
}>;
|
|
377
407
|
/** RB-243: how many agent results were NOT journaled because they exceeded the per-entry size
|
|
378
408
|
* cap ({@link MAX_JOURNAL_RESULT_BYTES}) — each skip also logs and journals a tombstone. Additive
|
|
379
409
|
* observation; absent when 0. */
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
export const PARK_TRUTH_UNREADABLE_REASONS = ["store_threw", "record_missing", "record_not_terminal", "parks_unreadable", "checkpoint_store_threw", "capability_not_armed"];
|
|
2
|
+
export const PARK_NOT_PENDING_STATUSES = ["resolved", "expired", "absent"];
|
|
1
3
|
export class WorkflowBudgetExceededError extends Error {
|
|
2
4
|
spent;
|
|
3
5
|
total;
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { TSchema } from "typebox";
|
|
2
2
|
import type { InheritedGate, RunnerSelfSeat } from "../core/runner/contracts.js";
|
|
3
|
-
import type { CheckpointToken, ResumeOutcome } from "../core/checkpoint-store.js";
|
|
3
|
+
import type { CheckpointStore, CheckpointToken, ResumeOutcome } from "../core/checkpoint-store.js";
|
|
4
4
|
import type { AgentDefinition, TaskEvent, TaskResult, TaskSpec, ThinkingLevel } from "../core/types.js";
|
|
5
|
+
import { type ParentSpecSeat } from "../core/parent-spec-seat.js";
|
|
5
6
|
import type { WorkflowRunStore } from "../core/workflow-run-store.js";
|
|
6
7
|
import type { WorkflowJournalStore, ResumeClaimArgs } from "../core/workflow-journal-store.js";
|
|
7
8
|
import type { WorkflowRun, WorkflowEvent } from "./workflow-types.js";
|
|
@@ -123,9 +124,7 @@ export declare class WorkflowJournalIncompatibleError extends Error {
|
|
|
123
124
|
readonly fromRunId: string;
|
|
124
125
|
readonly ordinal: number;
|
|
125
126
|
readonly code = "workflow.journal_incompatible";
|
|
126
|
-
constructor(fromRunId: string, ordinal: number
|
|
127
|
-
/** #642: an alternative reason clause (the parked-row cross-check); absent ⇒ the no-terminal-cause wording. */
|
|
128
|
-
reason?: string);
|
|
127
|
+
constructor(fromRunId: string, ordinal: number);
|
|
129
128
|
}
|
|
130
129
|
/**
|
|
131
130
|
* A TRUSTED, run-scoped internal channel carrying the workflow **nesting depth** across a process boundary
|
|
@@ -292,11 +291,16 @@ export interface WorkflowRunContext {
|
|
|
292
291
|
* the checkpoint token the wa* row is parked on (the row's `parkedCheckpointToken`, the redemption key), the
|
|
293
292
|
* caller's decision for it (the same {@link ResumeOutcome} a top-level `runner.resume` takes), and the optional
|
|
294
293
|
* cross-process re-supply of the checkpoint's opaque parent constraints. The token is matched by string equality
|
|
295
|
-
* against the
|
|
294
|
+
* against the parked ordinal's token — an ordinal whose token no entry names re-parks.
|
|
295
|
+
*
|
|
296
|
+
* `outcome` is OPTIONAL. `{ token, outcome }` is a DECISION: a pending checkpoint is driven with it; one the store no
|
|
297
|
+
* longer calls pending is settled (the acknowledgement is implied). `{ token }` alone is an ACKNOWLEDGEMENT: it settles an
|
|
298
|
+
* ordinal whose checkpoint is resolved / expired / absent as a failed row (`workflow.park_not_pending`) so the script
|
|
299
|
+
* continues; if the re-read finds the checkpoint pending again it RE-PARKS — an acknowledgement never authorizes a drive.
|
|
296
300
|
*/
|
|
297
301
|
export interface WorkflowParkedResume {
|
|
298
302
|
token: CheckpointToken;
|
|
299
|
-
outcome
|
|
303
|
+
outcome?: ResumeOutcome;
|
|
300
304
|
inheritedGate?: InheritedGate;
|
|
301
305
|
}
|
|
302
306
|
export interface RunWorkflowOptions {
|
|
@@ -468,9 +472,37 @@ export interface RunWorkflowOptions {
|
|
|
468
472
|
* parked child on with the caller's decision ({@link parkedResume}). Tighten-only: a park capability,
|
|
469
473
|
* never a widening — the decision stays with a person. REQUIRES {@link store} (the wa* row's durable home;
|
|
470
474
|
* refused loudly at entry without it). Threaded by the Workflow tool from the host's trusted seat; a
|
|
471
|
-
* directly-started workflow passes its own. NOT call identity.
|
|
475
|
+
* directly-started workflow passes its own. NOT call identity. REQUIRES {@link checkpointStore} as well: a
|
|
476
|
+
* durable approval whose checkpoint this workflow cannot read back is a park no resume can prove.
|
|
472
477
|
*/
|
|
473
478
|
defaultDurableApproval?: TaskSpec["durableApproval"];
|
|
479
|
+
/**
|
|
480
|
+
* The HOST run's parent SPEC seat ({@link import("../core/parent-spec-seat.js").ParentSpecSeat}: principal / oneShot /
|
|
481
|
+
* clientContext / the frozen question face / the fs-fence widening / envFacts / the declared persistence statement),
|
|
482
|
+
* applied onto every spawned agent at the launch site AFTER the agentType fold by {@link applyParentSpecSeat} — the
|
|
483
|
+
* Task delegation lane's one law: a value the child spec carries (script, definition, baseline) WINS, the seat FILLS
|
|
484
|
+
* an unset one, the two removals (`oneShot: true`, `memoryPersistenceCapable: false`) land unconditionally. Threaded
|
|
485
|
+
* by the Workflow tool from the host's seat; a directly-started workflow passes its own. NOT call identity (host
|
|
486
|
+
* wiring, like the checkpoint seat). Absent ⇒ nothing is applied. The seat the Workflow tool threads carries NO
|
|
487
|
+
* `onQuestion`: the tool strips the host's per-request face (every agent it spawns outlives the launching request)
|
|
488
|
+
* and says so through {@link questionFaceStripped}; a directly-started workflow passes what its own lifetime allows.
|
|
489
|
+
*/
|
|
490
|
+
parentSpecSeat?: ParentSpecSeat;
|
|
491
|
+
/** The engine stripped the spawn turn's per-request question face from the seat above (pair-produced with the strip,
|
|
492
|
+
* `stripSpawnTurnQuestionFace`); rides every spawned agent's internals as `RunInternals.questionFaceStripped` — the
|
|
493
|
+
* wiring manifest's `question.wired: "stripped_bg_lane"` and the posture door's exemption read it. */
|
|
494
|
+
questionFaceStripped?: true;
|
|
495
|
+
/**
|
|
496
|
+
* The checkpoint store this run's children park in — the RESOLVED seat object itself (the same value the Workflow
|
|
497
|
+
* tool injects onto every child spec; a directly-started workflow passes the store its children park in). Its
|
|
498
|
+
* presence ARMS the park lane: a resume then proves every parked ordinal against `get(token)` before anything is
|
|
499
|
+
* dispatched (`WorkflowRun.parks` supplies the keys), and a child whose effective `checkpointStore` is a DIFFERENT
|
|
500
|
+
* object is refused at spawn (`config.invalid_checkpoint_store` — identity, not duck-typing: a caller-built `{get}`
|
|
501
|
+
* wrapper is not the seat). REQUIRES {@link store} (the park's durable row). Absent ⇒ the lane is not armed: a
|
|
502
|
+
* resume of a run that recorded parks is refused (`workflow.park_truth_unreadable` / `capability_not_armed`), a run
|
|
503
|
+
* without parks resumes as before. NOT call identity (deployment wiring, like the store seats).
|
|
504
|
+
*/
|
|
505
|
+
checkpointStore?: CheckpointStore;
|
|
474
506
|
/**
|
|
475
507
|
* #642 — the decisions a resume ({@link resumeFromRunId}) carries for PARKED ordinals of the prior run: at
|
|
476
508
|
* an ordinal whose journal entry is `parked` (a matching call key), the run drives the parked child's own
|