@the-open-engine/zeroshot 6.38.1 → 6.39.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -0
- package/cli/event-copy.js +8 -7
- package/cli/event-copy.ts +12 -0
- package/cli/index.js +67 -48
- package/cli/json-export.js +61 -64
- package/cli/json-export.ts +112 -0
- package/cli/message-formatter-utils.js +68 -56
- package/cli/message-formatter-utils.ts +121 -0
- package/cli/message-formatters-normal.js +124 -259
- package/cli/message-formatters-normal.ts +250 -0
- package/cli/message-formatters-watch.js +81 -84
- package/cli/message-formatters-watch.ts +189 -0
- package/lib/cluster/generated/protocol-schema.cjs +1 -1
- package/lib/cluster/generated/protocol-schema.mjs +1 -1
- package/lib/cluster/generated/protocol.d.cts +8 -0
- package/lib/cluster/generated/protocol.d.mts +8 -0
- package/lib/cluster/generated/protocol.d.ts +8 -0
- package/lib/clusters-registry.d.ts +23 -0
- package/lib/clusters-registry.js +17 -29
- package/lib/completion.d.ts +12 -0
- package/lib/completion.js +84 -94
- package/lib/compose-utils.d.ts +32 -0
- package/lib/compose-utils.js +57 -72
- package/lib/detached-startup.d.ts +84 -0
- package/lib/detached-startup.js +232 -302
- package/lib/docker-config.d.ts +43 -0
- package/lib/docker-config.js +150 -325
- package/lib/docker-env-auth.d.ts +17 -0
- package/lib/docker-env-auth.js +75 -0
- package/lib/git-remote-utils.d.ts +48 -0
- package/lib/git-remote-utils.js +147 -213
- package/lib/id-detector.d.ts +15 -0
- package/lib/id-detector.js +37 -41
- package/lib/path-check.d.ts +30 -0
- package/lib/path-check.js +42 -45
- package/lib/process-liveness.d.ts +16 -0
- package/lib/process-liveness.js +19 -12
- package/lib/provider-credential-path.d.ts +16 -0
- package/lib/provider-credential-path.js +31 -29
- package/lib/provider-defaults.d.ts +30 -0
- package/lib/provider-defaults.js +47 -42
- package/lib/provider-detection.d.ts +11 -0
- package/lib/provider-detection.js +91 -54
- package/lib/provider-names.d.ts +38 -0
- package/lib/provider-names.js +56 -64
- package/lib/repo-settings.d.ts +28 -0
- package/lib/repo-settings.js +83 -59
- package/lib/run-mode.d.ts +21 -0
- package/lib/run-mode.js +21 -20
- package/lib/run-plan.d.ts +28 -0
- package/lib/run-plan.js +17 -16
- package/lib/settings/claude-auth.d.ts +35 -0
- package/lib/settings/claude-auth.js +30 -47
- package/lib/settings-defaults.d.ts +20 -0
- package/lib/settings-defaults.js +149 -0
- package/lib/settings-error.d.ts +7 -0
- package/lib/settings-error.js +8 -0
- package/lib/settings-issue-providers.d.ts +10 -0
- package/lib/settings-issue-providers.js +12 -0
- package/lib/settings-models.d.ts +22 -0
- package/lib/settings-models.js +93 -0
- package/lib/settings-storage.d.ts +23 -0
- package/lib/settings-storage.js +205 -0
- package/lib/settings-validation.d.ts +7 -0
- package/lib/settings-validation.js +182 -0
- package/lib/settings.d.ts +29 -0
- package/lib/settings.js +41 -736
- package/lib/setup-apply-types.d.ts +66 -0
- package/lib/setup-apply-types.js +2 -0
- package/lib/setup-apply.d.ts +39 -0
- package/lib/setup-apply.js +267 -264
- package/lib/setup-journal.d.ts +41 -0
- package/lib/setup-journal.js +119 -76
- package/lib/setup-plan-types.d.ts +102 -0
- package/lib/setup-plan-types.js +2 -0
- package/lib/setup-plan.d.ts +30 -0
- package/lib/setup-plan.js +300 -324
- package/lib/setup-undo.d.ts +44 -0
- package/lib/setup-undo.js +61 -74
- package/lib/start-cluster-config.d.ts +26 -0
- package/lib/start-cluster-config.js +56 -0
- package/lib/start-cluster-environment.d.ts +41 -0
- package/lib/start-cluster-environment.js +134 -0
- package/lib/start-cluster-run-options.d.ts +54 -0
- package/lib/start-cluster-run-options.js +148 -0
- package/lib/start-cluster.d.ts +64 -0
- package/lib/start-cluster.js +98 -454
- package/lib/stream-json-parser.d.ts +17 -0
- package/lib/stream-json-parser.js +51 -52
- package/npm-shrinkwrap.json +6 -8
- package/package.json +14 -8
- package/scripts/postinstall.js +27 -0
- package/scripts/rust-distribution.js +36 -45
- package/src/agent/agent-command-proofs-context.js +35 -45
- package/src/agent/agent-command-proofs-context.ts +87 -0
- package/src/agent/agent-config-settings.js +19 -0
- package/src/agent/agent-config-settings.ts +41 -0
- package/src/agent/agent-config.js +122 -231
- package/src/agent/agent-config.ts +285 -0
- package/src/agent/agent-context-builder.js +38 -273
- package/src/agent/agent-context-builder.ts +51 -0
- package/src/agent/agent-context-environment-sections.js +105 -0
- package/src/agent/agent-context-environment-sections.ts +134 -0
- package/src/agent/agent-context-packs.js +165 -0
- package/src/agent/agent-context-packs.ts +296 -0
- package/src/agent/agent-context-prompt-sections.js +100 -0
- package/src/agent/agent-context-prompt-sections.ts +148 -0
- package/src/agent/agent-context-sections.js +25 -334
- package/src/agent/agent-context-sections.ts +36 -0
- package/src/agent/agent-context-sources.js +96 -149
- package/src/agent/agent-context-sources.ts +253 -0
- package/src/agent/agent-context-types.js +2 -0
- package/src/agent/agent-context-types.ts +132 -0
- package/src/agent/agent-context-validation-sections.js +73 -0
- package/src/agent/agent-context-validation-sections.ts +129 -0
- package/src/agent/agent-input-injector.js +99 -118
- package/src/agent/agent-input-injector.ts +195 -0
- package/src/agent/agent-liveness-poll.js +74 -78
- package/src/agent/agent-liveness-poll.ts +163 -0
- package/src/agent/agent-quality-gate-schema.js +77 -86
- package/src/agent/agent-quality-gate-schema.ts +135 -0
- package/src/agent/agent-quality-gates-context.js +44 -50
- package/src/agent/agent-quality-gates-context.ts +91 -0
- package/src/agent/agent-stuck-detector.js +171 -239
- package/src/agent/agent-stuck-detector.ts +288 -0
- package/src/agent/agent-trigger-evaluator.js +29 -46
- package/src/agent/agent-trigger-evaluator.ts +98 -0
- package/src/agent/context-metrics.js +110 -141
- package/src/agent/context-metrics.ts +261 -0
- package/src/agent/context-pack-builder.js +72 -358
- package/src/agent/context-pack-builder.ts +105 -0
- package/src/agent/context-pack-core.js +70 -0
- package/src/agent/context-pack-core.ts +96 -0
- package/src/agent/context-pack-selection.js +119 -0
- package/src/agent/context-pack-selection.ts +187 -0
- package/src/agent/context-pack-truncation.js +139 -0
- package/src/agent/context-pack-truncation.ts +208 -0
- package/src/agent/context-pack-types.js +2 -0
- package/src/agent/context-pack-types.ts +98 -0
- package/src/agent/context-replay-policy.js +30 -39
- package/src/agent/context-replay-policy.ts +71 -0
- package/src/agent/critical-agent-policy.js +6 -10
- package/src/agent/critical-agent-policy.ts +20 -0
- package/src/agent/guidance-queue.js +74 -87
- package/src/agent/guidance-queue.ts +166 -0
- package/src/agent/output-extraction-error-detail.js +45 -0
- package/src/agent/output-extraction-error-detail.ts +49 -0
- package/src/agent/output-extraction-failures.js +125 -0
- package/src/agent/output-extraction-failures.ts +149 -0
- package/src/agent/output-extraction-json.js +234 -0
- package/src/agent/output-extraction-json.ts +235 -0
- package/src/agent/output-extraction-pi.js +124 -0
- package/src/agent/output-extraction-pi.ts +137 -0
- package/src/agent/output-extraction-types.js +2 -0
- package/src/agent/output-extraction-types.ts +49 -0
- package/src/agent/output-extraction.js +17 -617
- package/src/agent/output-extraction.ts +30 -0
- package/src/agent/output-reformatter-errors.js +83 -0
- package/src/agent/output-reformatter-errors.ts +106 -0
- package/src/agent/output-reformatter-types.js +2 -0
- package/src/agent/output-reformatter-types.ts +86 -0
- package/src/agent/output-reformatter.js +140 -185
- package/src/agent/output-reformatter.ts +238 -0
- package/src/agent/pi-terminal-lifecycle-types.js +2 -0
- package/src/agent/pi-terminal-lifecycle-types.ts +41 -0
- package/src/agent/pi-terminal-lifecycle.js +186 -206
- package/src/agent/pi-terminal-lifecycle.ts +297 -0
- package/src/agent/provider-control-plane.js +22 -21
- package/src/agent/provider-control-plane.ts +52 -0
- package/src/agent/provider-terminal-failure-types.js +2 -0
- package/src/agent/provider-terminal-failure-types.ts +60 -0
- package/src/agent/provider-terminal-failure.js +194 -191
- package/src/agent/provider-terminal-failure.ts +262 -0
- package/src/agent/rate-limit-backoff.js +31 -74
- package/src/agent/rate-limit-backoff.ts +71 -0
- package/src/agent/schema-utils.js +85 -125
- package/src/agent/schema-utils.ts +148 -0
- package/src/agent/structured-output-error.js +34 -33
- package/src/agent/structured-output-error.ts +105 -0
- package/src/agent/validation-platform.js +27 -27
- package/src/agent/validation-platform.ts +49 -0
- package/src/agents/git-pusher-template.js +17 -34
- package/src/attach/attach-client.js +232 -405
- package/src/attach/attach-client.ts +300 -0
- package/src/attach/attach-server-cleanup.js +43 -0
- package/src/attach/attach-server-cleanup.ts +39 -0
- package/src/attach/attach-server-clients.js +117 -0
- package/src/attach/attach-server-clients.ts +122 -0
- package/src/attach/attach-server-events.js +38 -0
- package/src/attach/attach-server-events.ts +36 -0
- package/src/attach/attach-server-pty.js +45 -0
- package/src/attach/attach-server-pty.ts +64 -0
- package/src/attach/attach-server-runtime.js +73 -0
- package/src/attach/attach-server-runtime.ts +62 -0
- package/src/attach/attach-server-socket.js +28 -0
- package/src/attach/attach-server-socket.ts +23 -0
- package/src/attach/attach-server-types.js +2 -0
- package/src/attach/attach-server-types.ts +82 -0
- package/src/attach/attach-server.js +106 -523
- package/src/attach/attach-server.ts +158 -0
- package/src/attach/index.js +18 -35
- package/src/attach/index.ts +18 -0
- package/src/attach/protocol.js +95 -184
- package/src/attach/protocol.ts +181 -0
- package/src/attach/ring-buffer.js +76 -102
- package/src/attach/ring-buffer.ts +109 -0
- package/src/attach/send-input.js +64 -75
- package/src/attach/send-input.ts +94 -0
- package/src/attach/socket-discovery.js +164 -218
- package/src/attach/socket-discovery.ts +230 -0
- package/src/attach/socket-paths.js +42 -61
- package/src/attach/socket-paths.ts +81 -0
- package/src/claude-credentials.js +51 -54
- package/src/claude-credentials.ts +89 -0
- package/src/cluster/generated/protocol-schema.ts +1 -1
- package/src/cluster/generated/protocol.ts +2 -1
- package/src/command-proofs.js +110 -141
- package/src/command-proofs.ts +216 -0
- package/src/config-router.js +81 -73
- package/src/config-router.ts +131 -0
- package/src/copy-containment.js +191 -0
- package/src/copy-containment.ts +259 -0
- package/src/copy-worker.js +53 -30
- package/src/copy-worker.ts +88 -0
- package/src/darwin-keychain-boundary.js +80 -111
- package/src/darwin-keychain-boundary.ts +148 -0
- package/src/guidance-topics.js +4 -5
- package/src/guidance-topics.ts +10 -0
- package/src/input-helpers.js +33 -54
- package/src/input-helpers.ts +58 -0
- package/src/isolation-manager.js +59 -20
- package/src/ledger-sequence.js +45 -48
- package/src/ledger-sequence.ts +63 -0
- package/src/legacy-lib/clusters-registry.ts +40 -0
- package/src/legacy-lib/completion.ts +148 -0
- package/src/legacy-lib/compose-utils.ts +102 -0
- package/src/legacy-lib/detached-startup.ts +451 -0
- package/src/legacy-lib/docker-config.ts +282 -0
- package/src/legacy-lib/docker-env-auth.ts +116 -0
- package/src/legacy-lib/git-remote-utils.ts +244 -0
- package/src/legacy-lib/id-detector.ts +57 -0
- package/src/legacy-lib/js-yaml.d.ts +3 -0
- package/src/legacy-lib/omelette.d.ts +15 -0
- package/src/legacy-lib/path-check.ts +89 -0
- package/src/legacy-lib/process-liveness.ts +36 -0
- package/src/legacy-lib/provider-credential-path.ts +57 -0
- package/src/legacy-lib/provider-defaults.ts +114 -0
- package/src/legacy-lib/provider-detection.ts +67 -0
- package/src/legacy-lib/provider-names.ts +126 -0
- package/src/legacy-lib/repo-settings.ts +88 -0
- package/src/legacy-lib/run-mode.ts +58 -0
- package/src/legacy-lib/run-plan.ts +49 -0
- package/src/legacy-lib/settings/claude-auth.ts +80 -0
- package/src/legacy-lib/settings-defaults.ts +212 -0
- package/src/legacy-lib/settings-error.ts +8 -0
- package/src/legacy-lib/settings-issue-providers.ts +18 -0
- package/src/legacy-lib/settings-models.ts +124 -0
- package/src/legacy-lib/settings-storage.ts +277 -0
- package/src/legacy-lib/settings-validation.ts +220 -0
- package/src/legacy-lib/settings.ts +87 -0
- package/src/legacy-lib/setup-apply-types.ts +70 -0
- package/src/legacy-lib/setup-apply.ts +456 -0
- package/src/legacy-lib/setup-journal.ts +185 -0
- package/src/legacy-lib/setup-plan-types.ts +96 -0
- package/src/legacy-lib/setup-plan.ts +500 -0
- package/src/legacy-lib/setup-undo.ts +142 -0
- package/src/legacy-lib/start-cluster-config.ts +124 -0
- package/src/legacy-lib/start-cluster-environment.ts +166 -0
- package/src/legacy-lib/start-cluster-run-options.ts +281 -0
- package/src/legacy-lib/start-cluster.ts +237 -0
- package/src/legacy-lib/stream-json-parser.ts +88 -0
- package/src/message-buffer.js +55 -71
- package/src/message-buffer.ts +107 -0
- package/src/message-bus-bridge.js +92 -133
- package/src/message-bus-bridge.ts +149 -0
- package/src/name-generator-shared.js +220 -0
- package/src/name-generator-shared.ts +231 -0
- package/src/name-generator.js +8 -217
- package/src/name-generator.ts +27 -0
- package/src/omp-blob-root.js +83 -64
- package/src/omp-blob-root.ts +116 -0
- package/src/omp-config-overlay.js +65 -38
- package/src/omp-config-overlay.ts +110 -0
- package/src/omp-execution-fingerprint.js +38 -43
- package/src/omp-execution-fingerprint.ts +92 -0
- package/src/omp-session-limits.js +10 -15
- package/src/omp-session-limits.ts +53 -0
- package/src/omp-session-partition.js +2 -2
- package/src/omp-session-verifier.js +1 -1
- package/src/orchestrator.js +32 -7
- package/src/pr-body-template.js +71 -0
- package/src/providers/anthropic/index.js +3 -1
- package/src/providers/anthropic/index.ts +13 -0
- package/src/providers/capabilities.js +19 -27
- package/src/providers/capabilities.ts +44 -0
- package/src/providers/google/index.js +3 -1
- package/src/providers/google/index.ts +13 -0
- package/src/providers/openai/index.js +3 -1
- package/src/providers/openai/index.ts +13 -0
- package/src/providers/opencode/index.js +3 -1
- package/src/providers/opencode/index.ts +13 -0
- package/src/quality-gates.js +67 -127
- package/src/quality-gates.ts +149 -0
- package/src/repo-settings-access.js +40 -0
- package/src/repo-settings-access.ts +64 -0
- package/src/schemas/sub-cluster.js +127 -183
- package/src/schemas/sub-cluster.ts +238 -0
- package/src/state-snapshot-normalization.js +224 -0
- package/src/state-snapshot-normalization.ts +222 -0
- package/src/state-snapshot.js +192 -359
- package/src/state-snapshot.ts +291 -0
- package/src/state-snapshotter.js +118 -130
- package/src/state-snapshotter.ts +167 -0
- package/src/sub-cluster-wrapper.js +4 -13
- package/src/task-run-model-args.js +87 -124
- package/src/task-run-model-args.ts +204 -0
- package/src/task-runner.js +5 -25
- package/src/task-runner.ts +28 -0
- package/src/task-startup-error.js +73 -58
- package/src/task-startup-error.ts +126 -0
- package/src/template-validation/consensus-gate-contracts.js +2 -0
- package/src/template-validation/consensus-gate-contracts.ts +70 -0
- package/src/template-validation/consensus-gate-scenarios.js +76 -0
- package/src/template-validation/consensus-gate-scenarios.ts +130 -0
- package/src/template-validation/consensus-gate-stage.js +34 -0
- package/src/template-validation/consensus-gate-stage.ts +56 -0
- package/src/template-validation/random-topology-contracts.js +2 -0
- package/src/template-validation/random-topology-contracts.ts +54 -0
- package/src/template-validation/random-topology-dispatch.js +25 -0
- package/src/template-validation/random-topology-dispatch.ts +33 -0
- package/src/template-validation/random-topology-message-loop.js +53 -0
- package/src/template-validation/random-topology-message-loop.ts +73 -0
- package/src/template-validation/random-topology-operations.js +79 -0
- package/src/template-validation/random-topology-operations.ts +101 -0
- package/src/template-validation/random-topology-runtime.js +25 -0
- package/src/template-validation/random-topology-runtime.ts +43 -0
- package/src/template-validation/random-topology-scenario.js +52 -0
- package/src/template-validation/random-topology-scenario.ts +57 -0
- package/src/template-validation/random-topology-schema.js +159 -0
- package/src/template-validation/random-topology-schema.ts +190 -0
- package/src/template-validation/random-topology-state.js +28 -0
- package/src/template-validation/random-topology-state.ts +30 -0
- package/src/template-validation/random-topology-trigger-evaluation.js +45 -0
- package/src/template-validation/random-topology-trigger-evaluation.ts +65 -0
- package/src/template-validation/random-topology-trigger.js +75 -0
- package/src/template-validation/random-topology-trigger.ts +88 -0
- package/src/template-validation/report-formatter.js +40 -46
- package/src/template-validation/report-formatter.ts +101 -0
- package/src/template-validation/simulate-consensus-gates.js +111 -302
- package/src/template-validation/simulate-consensus-gates.ts +196 -0
- package/src/template-validation/simulate-random-topology.js +26 -519
- package/src/template-validation/simulate-random-topology.ts +57 -0
- package/src/template-validation/simulate-two-stage-validation.js +41 -265
- package/src/template-validation/simulate-two-stage-validation.ts +55 -0
- package/src/template-validation/simulation-agent-runtime.js +25 -0
- package/src/template-validation/simulation-agent-runtime.ts +40 -0
- package/src/template-validation/simulation-agent.js +29 -0
- package/src/template-validation/simulation-agent.ts +73 -0
- package/src/template-validation/simulation-runtime.js +34 -0
- package/src/template-validation/simulation-runtime.ts +72 -0
- package/src/template-validation/two-stage-contracts.js +2 -0
- package/src/template-validation/two-stage-contracts.ts +41 -0
- package/src/template-validation/two-stage-inputs.js +21 -0
- package/src/template-validation/two-stage-inputs.ts +29 -0
- package/src/template-validation/two-stage-results.js +30 -0
- package/src/template-validation/two-stage-results.ts +40 -0
- package/src/template-validation/two-stage-scenario.js +86 -0
- package/src/template-validation/two-stage-scenario.ts +120 -0
- package/src/worktree-claude-config.js +182 -220
- package/src/worktree-claude-config.ts +272 -0
- package/src/worktree-tooling-env.js +103 -125
- package/src/worktree-tooling-env.ts +142 -0
- package/task-lib/completion.js +2 -3
- package/task-lib/completion.ts +9 -0
- package/task-lib/config.js +1 -4
- package/task-lib/config.ts +11 -0
- package/task-lib/name-generator.js +4 -226
- package/task-lib/name-generator.ts +11 -0
- package/task-lib/omp-session-cleanup.js +1 -1
- package/task-lib/omp-storage-root.js +8 -12
- package/task-lib/omp-storage-root.ts +62 -0
- package/task-lib/process-termination.js +143 -166
- package/task-lib/process-termination.ts +268 -0
|
@@ -1,165 +1,112 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
const replayPolicy = require("./context-replay-policy");
|
|
3
|
+
const { isReplayableMessage } = replayPolicy;
|
|
3
4
|
function resolveSourceSince(source, cluster, lastTaskEndTime, lastAgentStartTime) {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
return cluster.createdAt;
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
if (sinceValue === 'last_task_end') {
|
|
11
|
-
return lastTaskEndTime || cluster.createdAt;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
if (sinceValue === 'last_agent_start') {
|
|
15
|
-
return lastAgentStartTime ? lastAgentStartTime + 1 : cluster.createdAt;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
if (typeof sinceValue === 'string') {
|
|
19
|
-
const parsed = Date.parse(sinceValue);
|
|
20
|
-
if (Number.isNaN(parsed)) {
|
|
21
|
-
throw new Error(
|
|
22
|
-
`Unknown context source "since" value "${sinceValue}" for topic ${source.topic}. ` +
|
|
23
|
-
'Use cluster_start, last_task_end, last_agent_start, or an ISO timestamp.'
|
|
24
|
-
);
|
|
5
|
+
const sinceValue = source.since;
|
|
6
|
+
if (sinceValue === 'cluster_start') {
|
|
7
|
+
return cluster.createdAt;
|
|
25
8
|
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
9
|
+
if (sinceValue === 'last_task_end') {
|
|
10
|
+
return lastTaskEndTime || cluster.createdAt;
|
|
11
|
+
}
|
|
12
|
+
if (sinceValue === 'last_agent_start') {
|
|
13
|
+
return lastAgentStartTime ? lastAgentStartTime + 1 : cluster.createdAt;
|
|
14
|
+
}
|
|
15
|
+
if (typeof sinceValue === 'string') {
|
|
16
|
+
const parsed = Date.parse(sinceValue);
|
|
17
|
+
if (Number.isNaN(parsed)) {
|
|
18
|
+
throw new Error(`Unknown context source "since" value "${sinceValue}" for topic ${source.topic}. ` +
|
|
19
|
+
'Use cluster_start, last_task_end, last_agent_start, or an ISO timestamp.');
|
|
20
|
+
}
|
|
21
|
+
return parsed;
|
|
22
|
+
}
|
|
23
|
+
return sinceValue;
|
|
30
24
|
}
|
|
31
|
-
|
|
32
25
|
function formatSourceMessagesSection(source, messages) {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
26
|
+
let context = `\n## Messages from topic: ${source.topic}\n\n`;
|
|
27
|
+
for (const msg of messages) {
|
|
28
|
+
context += `[${new Date(msg.timestamp).toISOString()}] ${msg.sender}:\n`;
|
|
29
|
+
if (msg.content?.text) {
|
|
30
|
+
context += `${msg.content.text}\n`;
|
|
31
|
+
}
|
|
32
|
+
if (msg.content?.data) {
|
|
33
|
+
context += `Data: ${JSON.stringify(msg.content.data, null, 2)}\n`;
|
|
34
|
+
}
|
|
35
|
+
context += '\n';
|
|
42
36
|
}
|
|
43
|
-
context
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
return context;
|
|
37
|
+
return context;
|
|
47
38
|
}
|
|
48
|
-
|
|
49
39
|
function resolveSourceSelection(source, { compact = false } = {}) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
strategy: source.compactStrategy ?? (baseStrategy === 'all' ? 'latest' : baseStrategy),
|
|
60
|
-
};
|
|
40
|
+
const baseAmount = source.amount ?? source.limit;
|
|
41
|
+
const baseStrategy = source.strategy ?? (baseAmount !== undefined ? 'latest' : 'all');
|
|
42
|
+
if (!compact) {
|
|
43
|
+
return { amount: baseAmount, strategy: baseStrategy };
|
|
44
|
+
}
|
|
45
|
+
return {
|
|
46
|
+
amount: source.compactAmount ?? 1,
|
|
47
|
+
strategy: source.compactStrategy ?? (baseStrategy === 'all' ? 'latest' : baseStrategy),
|
|
48
|
+
};
|
|
61
49
|
}
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
const messages = messageBus.query({
|
|
82
|
-
cluster_id: cluster.id,
|
|
83
|
-
topic: source.topic,
|
|
84
|
-
sender: source.sender,
|
|
85
|
-
since: sinceTimestamp,
|
|
86
|
-
afterId,
|
|
87
|
-
throughId,
|
|
88
|
-
});
|
|
89
|
-
const replayableMessages = messages.filter(
|
|
90
|
-
(message) => isReplayableMessage(message) && message.id !== triggeringMessageId
|
|
91
|
-
);
|
|
92
|
-
|
|
93
|
-
if (amount === undefined) {
|
|
94
|
-
return replayableMessages;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
if (strategy === 'latest') {
|
|
98
|
-
return replayableMessages.slice(-amount);
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
return replayableMessages.slice(0, amount);
|
|
50
|
+
function resolveSourceMessages({ source, messageBus, cluster, lastTaskEndTime, lastAgentStartTime, afterId, throughId, triggeringMessageId, compact = false, }) {
|
|
51
|
+
const sinceTimestamp = resolveSourceSince(source, cluster, lastTaskEndTime, lastAgentStartTime);
|
|
52
|
+
const { amount, strategy } = resolveSourceSelection(source, { compact });
|
|
53
|
+
const messages = messageBus.query({
|
|
54
|
+
cluster_id: cluster.id,
|
|
55
|
+
topic: source.topic,
|
|
56
|
+
sender: source.sender,
|
|
57
|
+
since: sinceTimestamp,
|
|
58
|
+
afterId,
|
|
59
|
+
throughId,
|
|
60
|
+
});
|
|
61
|
+
const replayableMessages = messages.filter((message) => isReplayableMessage(message) && message.id !== triggeringMessageId);
|
|
62
|
+
if (amount === undefined) {
|
|
63
|
+
return replayableMessages;
|
|
64
|
+
}
|
|
65
|
+
if (strategy === 'latest') {
|
|
66
|
+
return replayableMessages.slice(-amount);
|
|
67
|
+
}
|
|
68
|
+
return replayableMessages.slice(0, amount);
|
|
102
69
|
}
|
|
103
|
-
|
|
104
70
|
const REQUIRED_TOPICS = new Set(['STATE_SNAPSHOT', 'ISSUE_OPENED', 'PLAN_READY']);
|
|
105
71
|
const HIGH_PRIORITY_TOPICS = new Set(['VALIDATION_RESULT', 'IMPLEMENTATION_READY']);
|
|
106
|
-
|
|
107
72
|
function resolveSourcePriority(source) {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
if (REQUIRED_TOPICS.has(source.topic)) {
|
|
113
|
-
return 'required';
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
if (HIGH_PRIORITY_TOPICS.has(source.topic)) {
|
|
117
|
-
return 'high';
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
return 'medium';
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
function buildSourcePack({
|
|
124
|
-
source,
|
|
125
|
-
index,
|
|
126
|
-
messageBus,
|
|
127
|
-
cluster,
|
|
128
|
-
lastTaskEndTime,
|
|
129
|
-
lastAgentStartTime,
|
|
130
|
-
afterId,
|
|
131
|
-
throughId,
|
|
132
|
-
triggeringMessageId,
|
|
133
|
-
}) {
|
|
134
|
-
const render = (compact) => {
|
|
135
|
-
const messages = resolveSourceMessages({
|
|
136
|
-
source,
|
|
137
|
-
messageBus,
|
|
138
|
-
cluster,
|
|
139
|
-
lastTaskEndTime,
|
|
140
|
-
lastAgentStartTime,
|
|
141
|
-
afterId,
|
|
142
|
-
throughId,
|
|
143
|
-
triggeringMessageId,
|
|
144
|
-
compact,
|
|
145
|
-
});
|
|
146
|
-
|
|
147
|
-
if (messages.length === 0) {
|
|
148
|
-
return '';
|
|
73
|
+
if (source.priority) {
|
|
74
|
+
return source.priority;
|
|
149
75
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
76
|
+
if (REQUIRED_TOPICS.has(source.topic)) {
|
|
77
|
+
return 'required';
|
|
78
|
+
}
|
|
79
|
+
if (HIGH_PRIORITY_TOPICS.has(source.topic)) {
|
|
80
|
+
return 'high';
|
|
81
|
+
}
|
|
82
|
+
return 'medium';
|
|
83
|
+
}
|
|
84
|
+
function buildSourcePack({ source, index, messageBus, cluster, lastTaskEndTime, lastAgentStartTime, afterId, throughId, triggeringMessageId, }) {
|
|
85
|
+
const render = (compact) => {
|
|
86
|
+
const messages = resolveSourceMessages({
|
|
87
|
+
source,
|
|
88
|
+
messageBus,
|
|
89
|
+
cluster,
|
|
90
|
+
lastTaskEndTime,
|
|
91
|
+
lastAgentStartTime,
|
|
92
|
+
afterId,
|
|
93
|
+
throughId,
|
|
94
|
+
triggeringMessageId,
|
|
95
|
+
compact,
|
|
96
|
+
});
|
|
97
|
+
if (messages.length === 0) {
|
|
98
|
+
return '';
|
|
99
|
+
}
|
|
100
|
+
return formatSourceMessagesSection(source, messages);
|
|
101
|
+
};
|
|
102
|
+
return {
|
|
103
|
+
id: `source:${source.topic}:${index}`,
|
|
104
|
+
section: 'sources',
|
|
105
|
+
priority: resolveSourcePriority(source),
|
|
106
|
+
render: () => render(false),
|
|
107
|
+
compact: () => render(true),
|
|
108
|
+
};
|
|
161
109
|
}
|
|
162
|
-
|
|
163
110
|
module.exports = {
|
|
164
|
-
|
|
111
|
+
buildSourcePack,
|
|
165
112
|
};
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import replayPolicy = require('./context-replay-policy');
|
|
2
|
+
|
|
3
|
+
type MessageTimestamp = string | number;
|
|
4
|
+
|
|
5
|
+
interface ReplayFields {
|
|
6
|
+
readonly contextSafe?: unknown;
|
|
7
|
+
readonly replayPolicy?: unknown;
|
|
8
|
+
readonly [key: string]: unknown;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
interface ContextMessage {
|
|
12
|
+
readonly id?: unknown;
|
|
13
|
+
readonly topic?: unknown;
|
|
14
|
+
readonly timestamp: MessageTimestamp;
|
|
15
|
+
readonly sender: string;
|
|
16
|
+
readonly metadata?: ReplayFields | null;
|
|
17
|
+
readonly content?: {
|
|
18
|
+
readonly text?: string | null;
|
|
19
|
+
readonly data?: ReplayFields | null;
|
|
20
|
+
} | null;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
interface ContextSource {
|
|
24
|
+
topic: string;
|
|
25
|
+
sender?: unknown;
|
|
26
|
+
since?: unknown;
|
|
27
|
+
amount?: number;
|
|
28
|
+
limit?: number;
|
|
29
|
+
strategy?: string;
|
|
30
|
+
compactAmount?: number;
|
|
31
|
+
compactStrategy?: string;
|
|
32
|
+
priority?: string;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
interface SourceCluster {
|
|
36
|
+
id: string;
|
|
37
|
+
createdAt: number;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
interface MessageQuery {
|
|
41
|
+
cluster_id: string;
|
|
42
|
+
topic: string;
|
|
43
|
+
sender?: unknown;
|
|
44
|
+
since?: unknown;
|
|
45
|
+
afterId?: unknown;
|
|
46
|
+
throughId?: unknown;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
interface SourceMessageBus {
|
|
50
|
+
query(criteria: MessageQuery): ContextMessage[];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
interface SourceSelectionOptions {
|
|
54
|
+
compact?: boolean;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
interface SourceSelection {
|
|
58
|
+
amount: number | undefined;
|
|
59
|
+
strategy: string;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
interface SourceMessageParams {
|
|
63
|
+
source: ContextSource;
|
|
64
|
+
messageBus: SourceMessageBus;
|
|
65
|
+
cluster: SourceCluster;
|
|
66
|
+
lastTaskEndTime?: number | null | undefined;
|
|
67
|
+
lastAgentStartTime?: number | null | undefined;
|
|
68
|
+
afterId?: unknown;
|
|
69
|
+
throughId?: unknown;
|
|
70
|
+
triggeringMessageId?: unknown;
|
|
71
|
+
compact?: boolean;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
interface SourcePackParams extends Omit<SourceMessageParams, 'compact'> {
|
|
75
|
+
index: number;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
interface SourcePack {
|
|
79
|
+
id: string;
|
|
80
|
+
section: 'sources';
|
|
81
|
+
priority: string;
|
|
82
|
+
render(): string;
|
|
83
|
+
compact(): string;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const { isReplayableMessage } = replayPolicy;
|
|
87
|
+
|
|
88
|
+
function resolveSourceSince(
|
|
89
|
+
source: ContextSource,
|
|
90
|
+
cluster: SourceCluster,
|
|
91
|
+
lastTaskEndTime: number | null | undefined,
|
|
92
|
+
lastAgentStartTime: number | null | undefined
|
|
93
|
+
): unknown {
|
|
94
|
+
const sinceValue = source.since;
|
|
95
|
+
|
|
96
|
+
if (sinceValue === 'cluster_start') {
|
|
97
|
+
return cluster.createdAt;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (sinceValue === 'last_task_end') {
|
|
101
|
+
return lastTaskEndTime || cluster.createdAt;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
if (sinceValue === 'last_agent_start') {
|
|
105
|
+
return lastAgentStartTime ? lastAgentStartTime + 1 : cluster.createdAt;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
if (typeof sinceValue === 'string') {
|
|
109
|
+
const parsed = Date.parse(sinceValue);
|
|
110
|
+
if (Number.isNaN(parsed)) {
|
|
111
|
+
throw new Error(
|
|
112
|
+
`Unknown context source "since" value "${sinceValue}" for topic ${source.topic}. ` +
|
|
113
|
+
'Use cluster_start, last_task_end, last_agent_start, or an ISO timestamp.'
|
|
114
|
+
);
|
|
115
|
+
}
|
|
116
|
+
return parsed;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
return sinceValue;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
function formatSourceMessagesSection(source: ContextSource, messages: ContextMessage[]): string {
|
|
123
|
+
let context = `\n## Messages from topic: ${source.topic}\n\n`;
|
|
124
|
+
|
|
125
|
+
for (const msg of messages) {
|
|
126
|
+
context += `[${new Date(msg.timestamp).toISOString()}] ${msg.sender}:\n`;
|
|
127
|
+
if (msg.content?.text) {
|
|
128
|
+
context += `${msg.content.text}\n`;
|
|
129
|
+
}
|
|
130
|
+
if (msg.content?.data) {
|
|
131
|
+
context += `Data: ${JSON.stringify(msg.content.data, null, 2)}\n`;
|
|
132
|
+
}
|
|
133
|
+
context += '\n';
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
return context;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
function resolveSourceSelection(
|
|
140
|
+
source: ContextSource,
|
|
141
|
+
{ compact = false }: SourceSelectionOptions = {}
|
|
142
|
+
): SourceSelection {
|
|
143
|
+
const baseAmount = source.amount ?? source.limit;
|
|
144
|
+
const baseStrategy = source.strategy ?? (baseAmount !== undefined ? 'latest' : 'all');
|
|
145
|
+
|
|
146
|
+
if (!compact) {
|
|
147
|
+
return { amount: baseAmount, strategy: baseStrategy };
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
return {
|
|
151
|
+
amount: source.compactAmount ?? 1,
|
|
152
|
+
strategy: source.compactStrategy ?? (baseStrategy === 'all' ? 'latest' : baseStrategy),
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
function resolveSourceMessages({
|
|
157
|
+
source,
|
|
158
|
+
messageBus,
|
|
159
|
+
cluster,
|
|
160
|
+
lastTaskEndTime,
|
|
161
|
+
lastAgentStartTime,
|
|
162
|
+
afterId,
|
|
163
|
+
throughId,
|
|
164
|
+
triggeringMessageId,
|
|
165
|
+
compact = false,
|
|
166
|
+
}: SourceMessageParams): ContextMessage[] {
|
|
167
|
+
const sinceTimestamp = resolveSourceSince(source, cluster, lastTaskEndTime, lastAgentStartTime);
|
|
168
|
+
const { amount, strategy } = resolveSourceSelection(source, { compact });
|
|
169
|
+
const messages = messageBus.query({
|
|
170
|
+
cluster_id: cluster.id,
|
|
171
|
+
topic: source.topic,
|
|
172
|
+
sender: source.sender,
|
|
173
|
+
since: sinceTimestamp,
|
|
174
|
+
afterId,
|
|
175
|
+
throughId,
|
|
176
|
+
});
|
|
177
|
+
const replayableMessages = messages.filter(
|
|
178
|
+
(message) => isReplayableMessage(message) && message.id !== triggeringMessageId
|
|
179
|
+
);
|
|
180
|
+
|
|
181
|
+
if (amount === undefined) {
|
|
182
|
+
return replayableMessages;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
if (strategy === 'latest') {
|
|
186
|
+
return replayableMessages.slice(-amount);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
return replayableMessages.slice(0, amount);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
const REQUIRED_TOPICS = new Set(['STATE_SNAPSHOT', 'ISSUE_OPENED', 'PLAN_READY']);
|
|
193
|
+
const HIGH_PRIORITY_TOPICS = new Set(['VALIDATION_RESULT', 'IMPLEMENTATION_READY']);
|
|
194
|
+
|
|
195
|
+
function resolveSourcePriority(source: ContextSource): string {
|
|
196
|
+
if (source.priority) {
|
|
197
|
+
return source.priority;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
if (REQUIRED_TOPICS.has(source.topic)) {
|
|
201
|
+
return 'required';
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
if (HIGH_PRIORITY_TOPICS.has(source.topic)) {
|
|
205
|
+
return 'high';
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
return 'medium';
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
function buildSourcePack({
|
|
212
|
+
source,
|
|
213
|
+
index,
|
|
214
|
+
messageBus,
|
|
215
|
+
cluster,
|
|
216
|
+
lastTaskEndTime,
|
|
217
|
+
lastAgentStartTime,
|
|
218
|
+
afterId,
|
|
219
|
+
throughId,
|
|
220
|
+
triggeringMessageId,
|
|
221
|
+
}: SourcePackParams): SourcePack {
|
|
222
|
+
const render = (compact: boolean): string => {
|
|
223
|
+
const messages = resolveSourceMessages({
|
|
224
|
+
source,
|
|
225
|
+
messageBus,
|
|
226
|
+
cluster,
|
|
227
|
+
lastTaskEndTime,
|
|
228
|
+
lastAgentStartTime,
|
|
229
|
+
afterId,
|
|
230
|
+
throughId,
|
|
231
|
+
triggeringMessageId,
|
|
232
|
+
compact,
|
|
233
|
+
});
|
|
234
|
+
|
|
235
|
+
if (messages.length === 0) {
|
|
236
|
+
return '';
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
return formatSourceMessagesSection(source, messages);
|
|
240
|
+
};
|
|
241
|
+
|
|
242
|
+
return {
|
|
243
|
+
id: `source:${source.topic}:${index}`,
|
|
244
|
+
section: 'sources',
|
|
245
|
+
priority: resolveSourcePriority(source),
|
|
246
|
+
render: () => render(false),
|
|
247
|
+
compact: () => render(true),
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
export = {
|
|
252
|
+
buildSourcePack,
|
|
253
|
+
};
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
export interface JsonSchema {
|
|
2
|
+
readonly type?: string;
|
|
3
|
+
readonly description?: string;
|
|
4
|
+
readonly enum?: readonly unknown[];
|
|
5
|
+
readonly properties?: Readonly<Record<string, JsonSchema | null | undefined>>;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export interface LegacyOutputFormat {
|
|
9
|
+
readonly rules?: readonly string[];
|
|
10
|
+
readonly example?: unknown;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface PromptObject {
|
|
14
|
+
readonly system?: string | null;
|
|
15
|
+
readonly outputFormat?: LegacyOutputFormat | null;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export interface ContextSource {
|
|
19
|
+
topic: string;
|
|
20
|
+
sender?: unknown;
|
|
21
|
+
since?: unknown;
|
|
22
|
+
amount?: number;
|
|
23
|
+
limit?: number;
|
|
24
|
+
strategy?: string;
|
|
25
|
+
compactAmount?: number;
|
|
26
|
+
compactStrategy?: string;
|
|
27
|
+
priority?: string;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export interface ContextStrategy {
|
|
31
|
+
maxTokens?: number;
|
|
32
|
+
sources?: ContextSource[];
|
|
33
|
+
readonly [key: string]: unknown;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface AgentContextConfig {
|
|
37
|
+
readonly prompt?: string | PromptObject | null;
|
|
38
|
+
readonly promptConfig?: {
|
|
39
|
+
readonly type?: string | null;
|
|
40
|
+
} | null;
|
|
41
|
+
readonly cwd?: string | null;
|
|
42
|
+
readonly jsonSchema?: JsonSchema | null;
|
|
43
|
+
readonly outputFormat?: string | null;
|
|
44
|
+
readonly role?: string;
|
|
45
|
+
readonly requiredQualityGates?: unknown;
|
|
46
|
+
readonly commandProofs?: unknown;
|
|
47
|
+
readonly contextStrategy?: ContextStrategy | null;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
export interface WorktreeContext {
|
|
51
|
+
readonly enabled?: boolean;
|
|
52
|
+
readonly path?: string | null;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export interface IsolationContext {
|
|
56
|
+
readonly enabled?: boolean;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
export interface ValidationCriterion {
|
|
60
|
+
readonly status?: string;
|
|
61
|
+
readonly id?: string;
|
|
62
|
+
readonly reason?: string;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export interface ContextMessageData {
|
|
66
|
+
readonly criteriaResults?: readonly ValidationCriterion[] | null;
|
|
67
|
+
readonly contextSafe?: unknown;
|
|
68
|
+
readonly replayPolicy?: unknown;
|
|
69
|
+
readonly [key: string]: unknown;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
export interface ContextMessage {
|
|
73
|
+
readonly id?: unknown;
|
|
74
|
+
readonly topic?: unknown;
|
|
75
|
+
readonly timestamp: string | number;
|
|
76
|
+
readonly sender: string;
|
|
77
|
+
readonly metadata?: ContextMessageData | null;
|
|
78
|
+
readonly content?: {
|
|
79
|
+
readonly text?: string | null;
|
|
80
|
+
readonly data?: ContextMessageData | null;
|
|
81
|
+
} | null;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
export interface ContextQuery {
|
|
85
|
+
cluster_id: string;
|
|
86
|
+
topic: string;
|
|
87
|
+
sender?: unknown;
|
|
88
|
+
since?: unknown;
|
|
89
|
+
afterId?: unknown;
|
|
90
|
+
throughId?: unknown;
|
|
91
|
+
limit?: number;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export interface ContextMessageBus {
|
|
95
|
+
query(criteria: ContextQuery): ContextMessage[];
|
|
96
|
+
publish(message: unknown): unknown;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
export interface ContextCluster {
|
|
100
|
+
id: string;
|
|
101
|
+
createdAt: number;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
export interface TriggeringMessage {
|
|
105
|
+
id?: unknown;
|
|
106
|
+
topic: string;
|
|
107
|
+
sender: string;
|
|
108
|
+
content?: {
|
|
109
|
+
text?: string | null;
|
|
110
|
+
} | null;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
export interface BuildContextParams {
|
|
114
|
+
id: string;
|
|
115
|
+
role: string;
|
|
116
|
+
iteration: number;
|
|
117
|
+
config: AgentContextConfig;
|
|
118
|
+
messageBus: ContextMessageBus;
|
|
119
|
+
cluster: ContextCluster;
|
|
120
|
+
triggeringMessage: TriggeringMessage;
|
|
121
|
+
lastTaskEndTime?: number | null | undefined;
|
|
122
|
+
lastAgentStartTime?: number | null | undefined;
|
|
123
|
+
selectedPrompt?: string | null | undefined;
|
|
124
|
+
queuedGuidance?: string | null | undefined;
|
|
125
|
+
worktree?: WorktreeContext | null | undefined;
|
|
126
|
+
isolation?: IsolationContext | null | undefined;
|
|
127
|
+
mode?: string | undefined;
|
|
128
|
+
continuationSequence?: unknown;
|
|
129
|
+
contextThroughId?: unknown;
|
|
130
|
+
previousPromptIdentity?: unknown;
|
|
131
|
+
currentPromptIdentity?: unknown;
|
|
132
|
+
}
|