@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
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const fs = require("fs");
|
|
3
|
+
const path = require("path");
|
|
4
|
+
const { readFileSync } = fs;
|
|
5
|
+
const { join, resolve } = path;
|
|
6
|
+
function buildAutonomousSection() {
|
|
7
|
+
return [
|
|
8
|
+
'## 🔴 CRITICAL: AUTONOMOUS EXECUTION REQUIRED',
|
|
9
|
+
'',
|
|
10
|
+
'You are running in a NON-INTERACTIVE cluster environment.',
|
|
11
|
+
'',
|
|
12
|
+
'**NEVER** use AskUserQuestion or ask for user input - there is NO user to respond.',
|
|
13
|
+
'**NEVER** ask "Would you like me to..." or "Should I..." - JUST DO IT.',
|
|
14
|
+
'**NEVER** wait for approval or confirmation - MAKE DECISIONS AUTONOMOUSLY.',
|
|
15
|
+
'',
|
|
16
|
+
'When facing choices:',
|
|
17
|
+
'- Choose the option that maintains code quality and correctness',
|
|
18
|
+
'- If unsure between "fix the code" vs "relax the rules" → ALWAYS fix the code',
|
|
19
|
+
'- If unsure between "do more" vs "do less" → ALWAYS do what\'s required, nothing more',
|
|
20
|
+
'',
|
|
21
|
+
].join('\n');
|
|
22
|
+
}
|
|
23
|
+
function buildOutputStyleSection() {
|
|
24
|
+
return [
|
|
25
|
+
'## 🔴 OUTPUT STYLE - NON-NEGOTIABLE',
|
|
26
|
+
'',
|
|
27
|
+
'**ALL OUTPUT: Maximum informativeness, minimum verbosity. NO EXCEPTIONS.**',
|
|
28
|
+
'',
|
|
29
|
+
'This applies to EVERYTHING you output:',
|
|
30
|
+
'- Text responses',
|
|
31
|
+
'- JSON schema values',
|
|
32
|
+
'- Reasoning fields',
|
|
33
|
+
'- Summary fields',
|
|
34
|
+
'- ALL string values in structured output',
|
|
35
|
+
'',
|
|
36
|
+
'Rules:',
|
|
37
|
+
'- Progress: "Reading auth.ts" NOT "I will now read the auth.ts file..."',
|
|
38
|
+
'- Tool calls: NO preamble. Call immediately.',
|
|
39
|
+
'- Schema strings: Dense facts. No filler. No fluff.',
|
|
40
|
+
'- Errors: DETAILED (stack traces, repro). NEVER compress errors.',
|
|
41
|
+
'- FORBIDDEN: "I\'ll help...", "Let me...", "I\'m going to...", "Sure!", "Great!", "Certainly!"',
|
|
42
|
+
'',
|
|
43
|
+
'Every token costs money. Waste nothing.',
|
|
44
|
+
'',
|
|
45
|
+
].join('\n');
|
|
46
|
+
}
|
|
47
|
+
function buildGitOperationsSection() {
|
|
48
|
+
return [
|
|
49
|
+
'## 🚫 GIT OPERATIONS - FORBIDDEN',
|
|
50
|
+
'',
|
|
51
|
+
'NEVER commit, push, or create PRs. You only modify files.',
|
|
52
|
+
'The git-pusher agent handles ALL git operations AFTER validators approve.',
|
|
53
|
+
'',
|
|
54
|
+
'- ❌ NEVER run: git add, git commit, git push, gh pr create',
|
|
55
|
+
'- ❌ NEVER suggest committing changes',
|
|
56
|
+
'- ✅ Only modify files and publish your completion message when done',
|
|
57
|
+
'',
|
|
58
|
+
].join('\n');
|
|
59
|
+
}
|
|
60
|
+
function buildHeaderContext({ id, role, iteration, isIsolated }) {
|
|
61
|
+
return [
|
|
62
|
+
`You are agent "${id}" with role "${role}".`,
|
|
63
|
+
'',
|
|
64
|
+
`Iteration: ${iteration}`,
|
|
65
|
+
'',
|
|
66
|
+
buildAutonomousSection(),
|
|
67
|
+
buildOutputStyleSection(),
|
|
68
|
+
isIsolated ? '' : buildGitOperationsSection(),
|
|
69
|
+
]
|
|
70
|
+
.filter(Boolean)
|
|
71
|
+
.join('\n');
|
|
72
|
+
}
|
|
73
|
+
function hasIgnoredRepoToolingError(error) {
|
|
74
|
+
return (typeof error === 'object' &&
|
|
75
|
+
error !== null &&
|
|
76
|
+
'code' in error &&
|
|
77
|
+
typeof error.code === 'string' &&
|
|
78
|
+
['ENOENT', 'ENOTDIR', 'EACCES', 'EPERM'].includes(error.code));
|
|
79
|
+
}
|
|
80
|
+
function resolveRepoToolingRoots({ config, worktree }) {
|
|
81
|
+
return Array.from(new Set([worktree?.path, config?.cwd, process.cwd()]
|
|
82
|
+
.filter((value) => typeof value === 'string' && value.trim() !== '')
|
|
83
|
+
.map((value) => resolve(value))));
|
|
84
|
+
}
|
|
85
|
+
function buildRepoToolingSection({ config, worktree }) {
|
|
86
|
+
for (const root of resolveRepoToolingRoots({ config, worktree })) {
|
|
87
|
+
const skillPath = join(root, '.claude', 'skills', 'repo-tooling', 'SKILL.md');
|
|
88
|
+
try {
|
|
89
|
+
const content = readFileSync(skillPath, 'utf8').trim();
|
|
90
|
+
if (content !== '') {
|
|
91
|
+
return `${content}\n\n`;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
if (!hasIgnoredRepoToolingError(error)) {
|
|
96
|
+
throw error;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return '';
|
|
101
|
+
}
|
|
102
|
+
module.exports = {
|
|
103
|
+
buildHeaderContext,
|
|
104
|
+
buildRepoToolingSection,
|
|
105
|
+
};
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import fs = require('fs');
|
|
2
|
+
import path = require('path');
|
|
3
|
+
|
|
4
|
+
import type { AgentContextConfig, WorktreeContext } from './agent-context-types';
|
|
5
|
+
|
|
6
|
+
interface HeaderContextParams {
|
|
7
|
+
id: string;
|
|
8
|
+
role: string;
|
|
9
|
+
iteration: number;
|
|
10
|
+
isIsolated: boolean;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
interface RepoToolingParams {
|
|
14
|
+
config?: AgentContextConfig | null | undefined;
|
|
15
|
+
worktree?: WorktreeContext | null | undefined;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const { readFileSync } = fs;
|
|
19
|
+
const { join, resolve } = path;
|
|
20
|
+
|
|
21
|
+
function buildAutonomousSection(): string {
|
|
22
|
+
return [
|
|
23
|
+
'## 🔴 CRITICAL: AUTONOMOUS EXECUTION REQUIRED',
|
|
24
|
+
'',
|
|
25
|
+
'You are running in a NON-INTERACTIVE cluster environment.',
|
|
26
|
+
'',
|
|
27
|
+
'**NEVER** use AskUserQuestion or ask for user input - there is NO user to respond.',
|
|
28
|
+
'**NEVER** ask "Would you like me to..." or "Should I..." - JUST DO IT.',
|
|
29
|
+
'**NEVER** wait for approval or confirmation - MAKE DECISIONS AUTONOMOUSLY.',
|
|
30
|
+
'',
|
|
31
|
+
'When facing choices:',
|
|
32
|
+
'- Choose the option that maintains code quality and correctness',
|
|
33
|
+
'- If unsure between "fix the code" vs "relax the rules" → ALWAYS fix the code',
|
|
34
|
+
'- If unsure between "do more" vs "do less" → ALWAYS do what\'s required, nothing more',
|
|
35
|
+
'',
|
|
36
|
+
].join('\n');
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function buildOutputStyleSection(): string {
|
|
40
|
+
return [
|
|
41
|
+
'## 🔴 OUTPUT STYLE - NON-NEGOTIABLE',
|
|
42
|
+
'',
|
|
43
|
+
'**ALL OUTPUT: Maximum informativeness, minimum verbosity. NO EXCEPTIONS.**',
|
|
44
|
+
'',
|
|
45
|
+
'This applies to EVERYTHING you output:',
|
|
46
|
+
'- Text responses',
|
|
47
|
+
'- JSON schema values',
|
|
48
|
+
'- Reasoning fields',
|
|
49
|
+
'- Summary fields',
|
|
50
|
+
'- ALL string values in structured output',
|
|
51
|
+
'',
|
|
52
|
+
'Rules:',
|
|
53
|
+
'- Progress: "Reading auth.ts" NOT "I will now read the auth.ts file..."',
|
|
54
|
+
'- Tool calls: NO preamble. Call immediately.',
|
|
55
|
+
'- Schema strings: Dense facts. No filler. No fluff.',
|
|
56
|
+
'- Errors: DETAILED (stack traces, repro). NEVER compress errors.',
|
|
57
|
+
'- FORBIDDEN: "I\'ll help...", "Let me...", "I\'m going to...", "Sure!", "Great!", "Certainly!"',
|
|
58
|
+
'',
|
|
59
|
+
'Every token costs money. Waste nothing.',
|
|
60
|
+
'',
|
|
61
|
+
].join('\n');
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function buildGitOperationsSection(): string {
|
|
65
|
+
return [
|
|
66
|
+
'## 🚫 GIT OPERATIONS - FORBIDDEN',
|
|
67
|
+
'',
|
|
68
|
+
'NEVER commit, push, or create PRs. You only modify files.',
|
|
69
|
+
'The git-pusher agent handles ALL git operations AFTER validators approve.',
|
|
70
|
+
'',
|
|
71
|
+
'- ❌ NEVER run: git add, git commit, git push, gh pr create',
|
|
72
|
+
'- ❌ NEVER suggest committing changes',
|
|
73
|
+
'- ✅ Only modify files and publish your completion message when done',
|
|
74
|
+
'',
|
|
75
|
+
].join('\n');
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
function buildHeaderContext({ id, role, iteration, isIsolated }: HeaderContextParams): string {
|
|
79
|
+
return [
|
|
80
|
+
`You are agent "${id}" with role "${role}".`,
|
|
81
|
+
'',
|
|
82
|
+
`Iteration: ${iteration}`,
|
|
83
|
+
'',
|
|
84
|
+
buildAutonomousSection(),
|
|
85
|
+
buildOutputStyleSection(),
|
|
86
|
+
isIsolated ? '' : buildGitOperationsSection(),
|
|
87
|
+
]
|
|
88
|
+
.filter(Boolean)
|
|
89
|
+
.join('\n');
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
function hasIgnoredRepoToolingError(error: unknown): boolean {
|
|
93
|
+
return (
|
|
94
|
+
typeof error === 'object' &&
|
|
95
|
+
error !== null &&
|
|
96
|
+
'code' in error &&
|
|
97
|
+
typeof error.code === 'string' &&
|
|
98
|
+
['ENOENT', 'ENOTDIR', 'EACCES', 'EPERM'].includes(error.code)
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
function resolveRepoToolingRoots({ config, worktree }: RepoToolingParams): string[] {
|
|
103
|
+
return Array.from(
|
|
104
|
+
new Set(
|
|
105
|
+
[worktree?.path, config?.cwd, process.cwd()]
|
|
106
|
+
.filter((value): value is string => typeof value === 'string' && value.trim() !== '')
|
|
107
|
+
.map((value) => resolve(value))
|
|
108
|
+
)
|
|
109
|
+
);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
function buildRepoToolingSection({ config, worktree }: RepoToolingParams): string {
|
|
113
|
+
for (const root of resolveRepoToolingRoots({ config, worktree })) {
|
|
114
|
+
const skillPath = join(root, '.claude', 'skills', 'repo-tooling', 'SKILL.md');
|
|
115
|
+
|
|
116
|
+
try {
|
|
117
|
+
const content = readFileSync(skillPath, 'utf8').trim();
|
|
118
|
+
if (content !== '') {
|
|
119
|
+
return `${content}\n\n`;
|
|
120
|
+
}
|
|
121
|
+
} catch (error) {
|
|
122
|
+
if (!hasIgnoredRepoToolingError(error)) {
|
|
123
|
+
throw error;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
return '';
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export = {
|
|
132
|
+
buildHeaderContext,
|
|
133
|
+
buildRepoToolingSection,
|
|
134
|
+
};
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
const contextSections = require("./agent-context-sections");
|
|
3
|
+
const contextSources = require("./agent-context-sources");
|
|
4
|
+
const qualityGatesContext = require("./agent-quality-gates-context");
|
|
5
|
+
const commandProofsContext = require("./agent-command-proofs-context");
|
|
6
|
+
const { buildHeaderContext, buildInstructionsSection, buildJsonSchemaSection, buildLegacyOutputSchemaSection, buildRepoToolingSection, buildTriggeringMessageSection, buildValidatorSkipSection, } = contextSections;
|
|
7
|
+
const { buildSourcePack } = contextSources;
|
|
8
|
+
const { buildRequiredQualityGatesSection } = qualityGatesContext;
|
|
9
|
+
const { buildCommandProofsSection } = commandProofsContext;
|
|
10
|
+
function pushStaticPack({ packs, packId, section, text, order, options = {}, }) {
|
|
11
|
+
if (!text) {
|
|
12
|
+
return order;
|
|
13
|
+
}
|
|
14
|
+
packs.push({
|
|
15
|
+
id: packId,
|
|
16
|
+
section,
|
|
17
|
+
priority: 'required',
|
|
18
|
+
order,
|
|
19
|
+
preserve: options.preserve || false,
|
|
20
|
+
render: () => text,
|
|
21
|
+
});
|
|
22
|
+
return order + 1;
|
|
23
|
+
}
|
|
24
|
+
function appendSourcePacks(packs, strategy, params, startingOrder) {
|
|
25
|
+
if (!Array.isArray(strategy.sources)) {
|
|
26
|
+
return startingOrder;
|
|
27
|
+
}
|
|
28
|
+
let order = startingOrder;
|
|
29
|
+
strategy.sources.forEach((source, index) => {
|
|
30
|
+
packs.push({
|
|
31
|
+
...buildSourcePack({ source, index, ...params }),
|
|
32
|
+
order,
|
|
33
|
+
});
|
|
34
|
+
order += 1;
|
|
35
|
+
});
|
|
36
|
+
return order;
|
|
37
|
+
}
|
|
38
|
+
function buildStaticSections(params) {
|
|
39
|
+
const { id, role, iteration, config, selectedPrompt, queuedGuidance, messageBus, cluster, triggeringMessage, worktree, isolation, } = params;
|
|
40
|
+
const isIsolated = !!(worktree?.enabled || isolation?.enabled);
|
|
41
|
+
return {
|
|
42
|
+
header: buildHeaderContext({ id, role, iteration, isIsolated }),
|
|
43
|
+
instructions: buildInstructionsSection({
|
|
44
|
+
config,
|
|
45
|
+
selectedPrompt,
|
|
46
|
+
id,
|
|
47
|
+
}),
|
|
48
|
+
repoTooling: buildRepoToolingSection({ config, worktree }),
|
|
49
|
+
commandProofs: buildCommandProofsSection(config),
|
|
50
|
+
legacyOutputSchema: buildLegacyOutputSchemaSection(config),
|
|
51
|
+
queuedGuidance: queuedGuidance || '',
|
|
52
|
+
requiredQualityGates: buildRequiredQualityGatesSection(config),
|
|
53
|
+
jsonSchema: buildJsonSchemaSection(config),
|
|
54
|
+
validatorSkip: buildValidatorSkipSection({
|
|
55
|
+
role,
|
|
56
|
+
messageBus,
|
|
57
|
+
cluster,
|
|
58
|
+
isolation,
|
|
59
|
+
}),
|
|
60
|
+
triggeringMessage: buildTriggeringMessageSection(triggeringMessage),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
function buildPacks(params) {
|
|
64
|
+
const { strategy, messageBus, cluster, lastTaskEndTime, lastAgentStartTime, triggeringMessage } = params;
|
|
65
|
+
const sections = buildStaticSections(params);
|
|
66
|
+
const packs = [];
|
|
67
|
+
let order = 0;
|
|
68
|
+
const staticPackIds = [
|
|
69
|
+
'header',
|
|
70
|
+
'instructions',
|
|
71
|
+
'repoTooling',
|
|
72
|
+
'commandProofs',
|
|
73
|
+
'queuedGuidance',
|
|
74
|
+
'legacyOutputSchema',
|
|
75
|
+
'requiredQualityGates',
|
|
76
|
+
'jsonSchema',
|
|
77
|
+
];
|
|
78
|
+
for (const packId of staticPackIds) {
|
|
79
|
+
order = pushStaticPack({
|
|
80
|
+
packs,
|
|
81
|
+
packId,
|
|
82
|
+
section: packId,
|
|
83
|
+
text: sections[packId],
|
|
84
|
+
order,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
order = appendSourcePacks(packs, strategy, {
|
|
88
|
+
messageBus,
|
|
89
|
+
cluster,
|
|
90
|
+
lastTaskEndTime,
|
|
91
|
+
lastAgentStartTime,
|
|
92
|
+
throughId: params.contextThroughId,
|
|
93
|
+
triggeringMessageId: triggeringMessage?.id,
|
|
94
|
+
}, order);
|
|
95
|
+
order = pushStaticPack({
|
|
96
|
+
packs,
|
|
97
|
+
packId: 'validatorSkip',
|
|
98
|
+
section: 'validatorSkip',
|
|
99
|
+
text: sections.validatorSkip,
|
|
100
|
+
order,
|
|
101
|
+
});
|
|
102
|
+
pushStaticPack({
|
|
103
|
+
packs,
|
|
104
|
+
packId: 'triggeringMessage',
|
|
105
|
+
section: 'triggeringMessage',
|
|
106
|
+
text: sections.triggeringMessage,
|
|
107
|
+
order,
|
|
108
|
+
options: { preserve: true },
|
|
109
|
+
});
|
|
110
|
+
return packs;
|
|
111
|
+
}
|
|
112
|
+
function buildContinuationPacks(params) {
|
|
113
|
+
const { id, iteration, config, selectedPrompt, queuedGuidance, triggeringMessage, strategy, messageBus, cluster, lastTaskEndTime, lastAgentStartTime, continuationSequence, contextThroughId, previousPromptIdentity, currentPromptIdentity, } = params;
|
|
114
|
+
const packs = [];
|
|
115
|
+
let order = 0;
|
|
116
|
+
order = pushStaticPack({
|
|
117
|
+
packs,
|
|
118
|
+
packId: 'continuationHeader',
|
|
119
|
+
section: 'continuationHeader',
|
|
120
|
+
text: `## Continuation Turn\n\nAgent: ${id}\nIteration: ${iteration}\n\n` +
|
|
121
|
+
'Apply only the new material below while retaining the existing session instructions.\n\n',
|
|
122
|
+
order,
|
|
123
|
+
});
|
|
124
|
+
if (config.promptConfig?.type === 'rules' && currentPromptIdentity !== previousPromptIdentity) {
|
|
125
|
+
order = pushStaticPack({
|
|
126
|
+
packs,
|
|
127
|
+
packId: 'iterationInstructions',
|
|
128
|
+
section: 'iterationInstructions',
|
|
129
|
+
text: buildInstructionsSection({ config, selectedPrompt, id }),
|
|
130
|
+
order,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
order = pushStaticPack({
|
|
134
|
+
packs,
|
|
135
|
+
packId: 'queuedGuidance',
|
|
136
|
+
section: 'queuedGuidance',
|
|
137
|
+
text: queuedGuidance || '',
|
|
138
|
+
order,
|
|
139
|
+
});
|
|
140
|
+
order = appendSourcePacks(packs, strategy, {
|
|
141
|
+
messageBus,
|
|
142
|
+
cluster,
|
|
143
|
+
lastTaskEndTime,
|
|
144
|
+
lastAgentStartTime,
|
|
145
|
+
afterId: continuationSequence,
|
|
146
|
+
throughId: contextThroughId,
|
|
147
|
+
triggeringMessageId: triggeringMessage?.id,
|
|
148
|
+
}, order);
|
|
149
|
+
pushStaticPack({
|
|
150
|
+
packs,
|
|
151
|
+
packId: 'triggeringMessage',
|
|
152
|
+
section: 'triggeringMessage',
|
|
153
|
+
text: buildTriggeringMessageSection(triggeringMessage),
|
|
154
|
+
order,
|
|
155
|
+
options: { preserve: true },
|
|
156
|
+
});
|
|
157
|
+
return packs;
|
|
158
|
+
}
|
|
159
|
+
function buildAgentContextPacks(params, strategy, continuation) {
|
|
160
|
+
const contextPacksParams = { ...params, strategy };
|
|
161
|
+
return continuation ? buildContinuationPacks(contextPacksParams) : buildPacks(contextPacksParams);
|
|
162
|
+
}
|
|
163
|
+
module.exports = {
|
|
164
|
+
buildAgentContextPacks,
|
|
165
|
+
};
|
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
import contextSections = require('./agent-context-sections');
|
|
2
|
+
import contextSources = require('./agent-context-sources');
|
|
3
|
+
import qualityGatesContext = require('./agent-quality-gates-context');
|
|
4
|
+
import commandProofsContext = require('./agent-command-proofs-context');
|
|
5
|
+
|
|
6
|
+
import type {
|
|
7
|
+
BuildContextParams,
|
|
8
|
+
ContextMessageBus,
|
|
9
|
+
ContextCluster,
|
|
10
|
+
ContextStrategy,
|
|
11
|
+
} from './agent-context-types';
|
|
12
|
+
import type { ContextPack } from './context-pack-types';
|
|
13
|
+
|
|
14
|
+
interface StaticPackOptions {
|
|
15
|
+
preserve?: boolean;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
interface StaticPackParams {
|
|
19
|
+
packs: ContextPack[];
|
|
20
|
+
packId: string;
|
|
21
|
+
section: string;
|
|
22
|
+
text: string | null | undefined;
|
|
23
|
+
order: number;
|
|
24
|
+
options?: StaticPackOptions;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
interface SourcePackContext {
|
|
28
|
+
messageBus: ContextMessageBus;
|
|
29
|
+
cluster: ContextCluster;
|
|
30
|
+
lastTaskEndTime?: number | null | undefined;
|
|
31
|
+
lastAgentStartTime?: number | null | undefined;
|
|
32
|
+
afterId?: unknown;
|
|
33
|
+
throughId?: unknown;
|
|
34
|
+
triggeringMessageId?: unknown;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
interface ContextPacksParams extends BuildContextParams {
|
|
38
|
+
strategy: ContextStrategy;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
interface StaticSections {
|
|
42
|
+
header: string;
|
|
43
|
+
instructions: string;
|
|
44
|
+
repoTooling: string;
|
|
45
|
+
commandProofs: string;
|
|
46
|
+
legacyOutputSchema: string;
|
|
47
|
+
queuedGuidance: string;
|
|
48
|
+
requiredQualityGates: string;
|
|
49
|
+
jsonSchema: string;
|
|
50
|
+
validatorSkip: string;
|
|
51
|
+
triggeringMessage: string;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
const {
|
|
55
|
+
buildHeaderContext,
|
|
56
|
+
buildInstructionsSection,
|
|
57
|
+
buildJsonSchemaSection,
|
|
58
|
+
buildLegacyOutputSchemaSection,
|
|
59
|
+
buildRepoToolingSection,
|
|
60
|
+
buildTriggeringMessageSection,
|
|
61
|
+
buildValidatorSkipSection,
|
|
62
|
+
} = contextSections;
|
|
63
|
+
const { buildSourcePack } = contextSources;
|
|
64
|
+
const { buildRequiredQualityGatesSection } = qualityGatesContext;
|
|
65
|
+
const { buildCommandProofsSection } = commandProofsContext;
|
|
66
|
+
|
|
67
|
+
function pushStaticPack({
|
|
68
|
+
packs,
|
|
69
|
+
packId,
|
|
70
|
+
section,
|
|
71
|
+
text,
|
|
72
|
+
order,
|
|
73
|
+
options = {},
|
|
74
|
+
}: StaticPackParams): number {
|
|
75
|
+
if (!text) {
|
|
76
|
+
return order;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
packs.push({
|
|
80
|
+
id: packId,
|
|
81
|
+
section,
|
|
82
|
+
priority: 'required',
|
|
83
|
+
order,
|
|
84
|
+
preserve: options.preserve || false,
|
|
85
|
+
render: () => text,
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
return order + 1;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
function appendSourcePacks(
|
|
92
|
+
packs: ContextPack[],
|
|
93
|
+
strategy: ContextStrategy,
|
|
94
|
+
params: SourcePackContext,
|
|
95
|
+
startingOrder: number
|
|
96
|
+
): number {
|
|
97
|
+
if (!Array.isArray(strategy.sources)) {
|
|
98
|
+
return startingOrder;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
let order = startingOrder;
|
|
102
|
+
strategy.sources.forEach((source, index) => {
|
|
103
|
+
packs.push({
|
|
104
|
+
...buildSourcePack({ source, index, ...params }),
|
|
105
|
+
order,
|
|
106
|
+
});
|
|
107
|
+
order += 1;
|
|
108
|
+
});
|
|
109
|
+
|
|
110
|
+
return order;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
function buildStaticSections(params: BuildContextParams): StaticSections {
|
|
114
|
+
const {
|
|
115
|
+
id,
|
|
116
|
+
role,
|
|
117
|
+
iteration,
|
|
118
|
+
config,
|
|
119
|
+
selectedPrompt,
|
|
120
|
+
queuedGuidance,
|
|
121
|
+
messageBus,
|
|
122
|
+
cluster,
|
|
123
|
+
triggeringMessage,
|
|
124
|
+
worktree,
|
|
125
|
+
isolation,
|
|
126
|
+
} = params;
|
|
127
|
+
const isIsolated = !!(worktree?.enabled || isolation?.enabled);
|
|
128
|
+
|
|
129
|
+
return {
|
|
130
|
+
header: buildHeaderContext({ id, role, iteration, isIsolated }),
|
|
131
|
+
instructions: buildInstructionsSection({
|
|
132
|
+
config,
|
|
133
|
+
selectedPrompt,
|
|
134
|
+
id,
|
|
135
|
+
}),
|
|
136
|
+
repoTooling: buildRepoToolingSection({ config, worktree }),
|
|
137
|
+
commandProofs: buildCommandProofsSection(config),
|
|
138
|
+
legacyOutputSchema: buildLegacyOutputSchemaSection(config),
|
|
139
|
+
queuedGuidance: queuedGuidance || '',
|
|
140
|
+
requiredQualityGates: buildRequiredQualityGatesSection(config),
|
|
141
|
+
jsonSchema: buildJsonSchemaSection(config),
|
|
142
|
+
validatorSkip: buildValidatorSkipSection({
|
|
143
|
+
role,
|
|
144
|
+
messageBus,
|
|
145
|
+
cluster,
|
|
146
|
+
isolation,
|
|
147
|
+
}),
|
|
148
|
+
triggeringMessage: buildTriggeringMessageSection(triggeringMessage),
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
function buildPacks(params: ContextPacksParams): ContextPack[] {
|
|
153
|
+
const { strategy, messageBus, cluster, lastTaskEndTime, lastAgentStartTime, triggeringMessage } =
|
|
154
|
+
params;
|
|
155
|
+
const sections = buildStaticSections(params);
|
|
156
|
+
const packs: ContextPack[] = [];
|
|
157
|
+
let order = 0;
|
|
158
|
+
const staticPackIds: (keyof StaticSections)[] = [
|
|
159
|
+
'header',
|
|
160
|
+
'instructions',
|
|
161
|
+
'repoTooling',
|
|
162
|
+
'commandProofs',
|
|
163
|
+
'queuedGuidance',
|
|
164
|
+
'legacyOutputSchema',
|
|
165
|
+
'requiredQualityGates',
|
|
166
|
+
'jsonSchema',
|
|
167
|
+
];
|
|
168
|
+
|
|
169
|
+
for (const packId of staticPackIds) {
|
|
170
|
+
order = pushStaticPack({
|
|
171
|
+
packs,
|
|
172
|
+
packId,
|
|
173
|
+
section: packId,
|
|
174
|
+
text: sections[packId],
|
|
175
|
+
order,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
order = appendSourcePacks(
|
|
180
|
+
packs,
|
|
181
|
+
strategy,
|
|
182
|
+
{
|
|
183
|
+
messageBus,
|
|
184
|
+
cluster,
|
|
185
|
+
lastTaskEndTime,
|
|
186
|
+
lastAgentStartTime,
|
|
187
|
+
throughId: params.contextThroughId,
|
|
188
|
+
triggeringMessageId: triggeringMessage?.id,
|
|
189
|
+
},
|
|
190
|
+
order
|
|
191
|
+
);
|
|
192
|
+
order = pushStaticPack({
|
|
193
|
+
packs,
|
|
194
|
+
packId: 'validatorSkip',
|
|
195
|
+
section: 'validatorSkip',
|
|
196
|
+
text: sections.validatorSkip,
|
|
197
|
+
order,
|
|
198
|
+
});
|
|
199
|
+
pushStaticPack({
|
|
200
|
+
packs,
|
|
201
|
+
packId: 'triggeringMessage',
|
|
202
|
+
section: 'triggeringMessage',
|
|
203
|
+
text: sections.triggeringMessage,
|
|
204
|
+
order,
|
|
205
|
+
options: { preserve: true },
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
return packs;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
function buildContinuationPacks(params: ContextPacksParams): ContextPack[] {
|
|
212
|
+
const {
|
|
213
|
+
id,
|
|
214
|
+
iteration,
|
|
215
|
+
config,
|
|
216
|
+
selectedPrompt,
|
|
217
|
+
queuedGuidance,
|
|
218
|
+
triggeringMessage,
|
|
219
|
+
strategy,
|
|
220
|
+
messageBus,
|
|
221
|
+
cluster,
|
|
222
|
+
lastTaskEndTime,
|
|
223
|
+
lastAgentStartTime,
|
|
224
|
+
continuationSequence,
|
|
225
|
+
contextThroughId,
|
|
226
|
+
previousPromptIdentity,
|
|
227
|
+
currentPromptIdentity,
|
|
228
|
+
} = params;
|
|
229
|
+
const packs: ContextPack[] = [];
|
|
230
|
+
let order = 0;
|
|
231
|
+
|
|
232
|
+
order = pushStaticPack({
|
|
233
|
+
packs,
|
|
234
|
+
packId: 'continuationHeader',
|
|
235
|
+
section: 'continuationHeader',
|
|
236
|
+
text:
|
|
237
|
+
`## Continuation Turn\n\nAgent: ${id}\nIteration: ${iteration}\n\n` +
|
|
238
|
+
'Apply only the new material below while retaining the existing session instructions.\n\n',
|
|
239
|
+
order,
|
|
240
|
+
});
|
|
241
|
+
|
|
242
|
+
if (config.promptConfig?.type === 'rules' && currentPromptIdentity !== previousPromptIdentity) {
|
|
243
|
+
order = pushStaticPack({
|
|
244
|
+
packs,
|
|
245
|
+
packId: 'iterationInstructions',
|
|
246
|
+
section: 'iterationInstructions',
|
|
247
|
+
text: buildInstructionsSection({ config, selectedPrompt, id }),
|
|
248
|
+
order,
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
order = pushStaticPack({
|
|
253
|
+
packs,
|
|
254
|
+
packId: 'queuedGuidance',
|
|
255
|
+
section: 'queuedGuidance',
|
|
256
|
+
text: queuedGuidance || '',
|
|
257
|
+
order,
|
|
258
|
+
});
|
|
259
|
+
order = appendSourcePacks(
|
|
260
|
+
packs,
|
|
261
|
+
strategy,
|
|
262
|
+
{
|
|
263
|
+
messageBus,
|
|
264
|
+
cluster,
|
|
265
|
+
lastTaskEndTime,
|
|
266
|
+
lastAgentStartTime,
|
|
267
|
+
afterId: continuationSequence,
|
|
268
|
+
throughId: contextThroughId,
|
|
269
|
+
triggeringMessageId: triggeringMessage?.id,
|
|
270
|
+
},
|
|
271
|
+
order
|
|
272
|
+
);
|
|
273
|
+
pushStaticPack({
|
|
274
|
+
packs,
|
|
275
|
+
packId: 'triggeringMessage',
|
|
276
|
+
section: 'triggeringMessage',
|
|
277
|
+
text: buildTriggeringMessageSection(triggeringMessage),
|
|
278
|
+
order,
|
|
279
|
+
options: { preserve: true },
|
|
280
|
+
});
|
|
281
|
+
|
|
282
|
+
return packs;
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
function buildAgentContextPacks(
|
|
286
|
+
params: BuildContextParams,
|
|
287
|
+
strategy: ContextStrategy,
|
|
288
|
+
continuation: boolean
|
|
289
|
+
): ContextPack[] {
|
|
290
|
+
const contextPacksParams = { ...params, strategy };
|
|
291
|
+
return continuation ? buildContinuationPacks(contextPacksParams) : buildPacks(contextPacksParams);
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
export = {
|
|
295
|
+
buildAgentContextPacks,
|
|
296
|
+
};
|