overlord-cli 0.2608251110.0 → 0.2608261137.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/dist/connectors/VERSION +1 -1
- package/dist/connectors/adapters/antigravity/conformance-manifest.yaml +1 -1
- package/dist/connectors/adapters/antigravity/plugin.json +1 -1
- package/dist/connectors/adapters/claude/.claude-plugin/plugin.json +1 -1
- package/dist/connectors/adapters/claude/CAPABILITIES.md +2 -2
- package/dist/connectors/adapters/claude/codec/claude.codec.yaml +3 -0
- package/dist/connectors/adapters/claude/conformance-manifest.yaml +2 -2
- package/dist/connectors/adapters/claude/fixtures/normalize-post-tool-use-notebook.json +40 -0
- package/dist/connectors/adapters/claude/harness-capabilities.yaml +1 -0
- package/dist/connectors/adapters/codex/.codex-plugin/plugin.json +1 -1
- package/dist/connectors/adapters/codex/CAPABILITIES.md +3 -3
- package/dist/connectors/adapters/codex/codec/codex.codec.yaml +7 -0
- package/dist/connectors/adapters/codex/conformance-manifest.yaml +2 -2
- package/dist/connectors/adapters/codex/fixtures/normalize-post-tool-use.json +7 -2
- package/dist/connectors/adapters/codex/harness-capabilities.yaml +5 -4
- package/dist/connectors/adapters/cursor/.cursor-plugin/plugin.json +1 -1
- package/dist/connectors/adapters/cursor/conformance-manifest.yaml +1 -1
- package/dist/connectors/adapters/opencode/conformance-manifest.yaml +1 -1
- package/dist/connectors/adapters/pi/conformance-manifest.yaml +1 -1
- package/dist/connectors/core/overlord-mission/SKILL.md +5 -0
- package/dist/connectors/core/overlord-mission/reference/cli.md +4 -0
- package/dist/connectors/core/scripts/overlord-mcp.mjs +1 -1
- package/dist/index.js +86 -11
- package/dist/index.js.map +2 -2
- package/package.json +1 -1
package/dist/connectors/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.3.
|
|
1
|
+
0.3.39
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://antigravity.google/schemas/v1/plugin.json",
|
|
3
3
|
"name": "overlord",
|
|
4
|
-
"version": "0.3.
|
|
4
|
+
"version": "0.3.39",
|
|
5
5
|
"description": "Chat-driven access to Overlord mission protocol workflows through skills and MCP.",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "Cooperativ",
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
**Harness version verified** `2.1.227` · **range** `>=2.1.0` · **scheme** `semver`
|
|
8
8
|
|
|
9
|
-
**Descriptor digest** `
|
|
9
|
+
**Descriptor digest** `0f708197c1306226e137a332532fabbc68c41023ba0bd46614468d9fef38a14e`
|
|
10
10
|
|
|
11
11
|
> The tier is derived from passing fixtures, never authored. `unsupported` means the harness
|
|
12
12
|
> cannot do it — do not attempt it. `not-implemented` means it is buildable and unbuilt: that is
|
|
@@ -61,7 +61,7 @@ callbacks, record unavailable evidence health.
|
|
|
61
61
|
| `observe.prompt` | ✅ supported | `UserPromptSubmit` | fixtures: `fixtures/normalize-user-prompt-submit.json` |
|
|
62
62
|
| `observe.toolCall` | 🚧 not-implemented | `PreToolUse` | tracked as `agent-session-phase-2` |
|
|
63
63
|
| `observe.toolResult` | 🚧 not-implemented | `PostToolUse` | tracked as `latch-engine` |
|
|
64
|
-
| `observe.fileEdit` | ✅ supported | `PostToolUse` | fixtures: `fixtures/normalize-post-tool-use-write.json`, `fixtures/post-tool-use-parity.json`, `fixtures/post-tool-use-capture.json` |
|
|
64
|
+
| `observe.fileEdit` | ✅ supported | `PostToolUse` | fixtures: `fixtures/normalize-post-tool-use-write.json`, `fixtures/normalize-post-tool-use-notebook.json`, `fixtures/post-tool-use-parity.json`, `fixtures/post-tool-use-capture.json` |
|
|
65
65
|
| `observe.sessionLifecycle` | 🚧 not-implemented | `SessionStart` | tracked as `latch-engine` |
|
|
66
66
|
| `decide.shell` | 🚧 not-implemented | `PermissionRequest` | tracked as `latch-engine` |
|
|
67
67
|
| `decide.mcp` | 🚧 not-implemented | `PermissionRequest` | tracked as `latch-engine` |
|
|
@@ -40,6 +40,9 @@ events:
|
|
|
40
40
|
# no generic path-key fallback.
|
|
41
41
|
filePathPaths:
|
|
42
42
|
- file_path
|
|
43
|
+
- notebook_path
|
|
44
|
+
- filePath
|
|
45
|
+
- path
|
|
43
46
|
|
|
44
47
|
# The one place raw user content flows, deliberately: the activity feed exists to show
|
|
45
48
|
# follow-up prompts. Secret redaction still runs over the text.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
contractVersion: "
|
|
1
|
+
contractVersion: "125"
|
|
2
2
|
componentType: connector
|
|
3
3
|
componentKey: claude
|
|
4
4
|
label: "Claude Code Connector"
|
|
@@ -14,7 +14,7 @@ connector:
|
|
|
14
14
|
harnessCapabilities:
|
|
15
15
|
path: connectors/adapters/claude/harness-capabilities.yaml
|
|
16
16
|
schemaVersion: 1
|
|
17
|
-
digest: "
|
|
17
|
+
digest: "0f708197c1306226e137a332532fabbc68c41023ba0bd46614468d9fef38a14e"
|
|
18
18
|
# ── END GENERATED ────────────────────────────────────────────────────────────
|
|
19
19
|
installPath: "~/.ovld/claude/marketplace/plugins/overlord"
|
|
20
20
|
managedFiles:
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"fixtureVersion": 1,
|
|
3
|
+
"kind": "normalized-event",
|
|
4
|
+
"description": "Claude NotebookEdit supplies notebook_path rather than file_path; the connector-owned fallback records only the relative path.",
|
|
5
|
+
"codec": "codec/claude.codec.yaml",
|
|
6
|
+
"occurredAt": "2026-08-26T00:00:00.000Z",
|
|
7
|
+
"payload": {
|
|
8
|
+
"session_id": "claude-notebook-1",
|
|
9
|
+
"cwd": "/repo",
|
|
10
|
+
"hook_event_name": "PostToolUse",
|
|
11
|
+
"tool_name": "NotebookEdit",
|
|
12
|
+
"tool_input": {
|
|
13
|
+
"notebook_path": "/repo/notebooks/analysis.ipynb",
|
|
14
|
+
"new_source": "token=AKIAIOSFODNN7EXAMPLE"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"expect": {
|
|
18
|
+
"eventId": "ev_47e3742894f673ce3e71298321a3ee6d",
|
|
19
|
+
"producerSequence": null,
|
|
20
|
+
"occurredAt": "2026-08-26T00:00:00.000Z",
|
|
21
|
+
"kind": "file.edited",
|
|
22
|
+
"severity": "info",
|
|
23
|
+
"nativeEvent": "PostToolUse",
|
|
24
|
+
"nativeTurnId": null,
|
|
25
|
+
"nativeCallId": null,
|
|
26
|
+
"subagentId": null,
|
|
27
|
+
"correlationId": "claude-notebook-1",
|
|
28
|
+
"origin": "agent",
|
|
29
|
+
"summary": "Write a file: notebooks/analysis.ipynb: 26 bytes",
|
|
30
|
+
"payload": {
|
|
31
|
+
"tool": "edit",
|
|
32
|
+
"action": "Write a file",
|
|
33
|
+
"subject": "notebooks/analysis.ipynb",
|
|
34
|
+
"detail": "26 bytes",
|
|
35
|
+
"paths": ["notebooks/analysis.ipynb"],
|
|
36
|
+
"formatterVersion": 1
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"mustNotContain": ["AKIAIOSFODNN7EXAMPLE", "/repo"]
|
|
40
|
+
}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
**Harness version verified** `0.147.0` · **range** `>=0.124.0` · **scheme** `semver`
|
|
8
8
|
|
|
9
|
-
**Descriptor digest** `
|
|
9
|
+
**Descriptor digest** `4d4908a81023cf7943ebbcb35d8477751f97d916597adc3bf3cec63bdb58dc4b`
|
|
10
10
|
|
|
11
11
|
> The tier is derived from passing fixtures, never authored. `unsupported` means the harness
|
|
12
12
|
> cannot do it — do not attempt it. `not-implemented` means it is buildable and unbuilt: that is
|
|
@@ -47,7 +47,7 @@ Per-hook timeouts in seconds; the documentation gives a 600-second default. The
|
|
|
47
47
|
| Classification | `post-only` |
|
|
48
48
|
| Executable fixture | `fixtures/mutation-window-evidence.json` |
|
|
49
49
|
|
|
50
|
-
Recorded pre/post shapes are separate calls and do not prove a paired window. A directly named native edit path normalized by the Codex codec as `file.edited` may record objective-bound, non-exclusive `declared_edit`/`direct` evidence.
|
|
50
|
+
Recorded pre/post shapes are separate calls and do not prove a paired window. A directly named native edit path normalized by the Codex codec as `file.edited` may record objective-bound, non-exclusive `declared_edit`/`direct` evidence. `apply_patch` destinations are reduced only from its declared `*** Add|Update|Delete File:` headers; patch text itself is never retained.
|
|
51
51
|
|
|
52
52
|
The completion fixture proves post-only timing but exposes no normalized `file.edited`
|
|
53
53
|
path. Runtime file evidence is unavailable for this adapter.
|
|
@@ -77,7 +77,7 @@ path. Runtime file evidence is unavailable for this adapter.
|
|
|
77
77
|
### Capability notes
|
|
78
78
|
|
|
79
79
|
- **`observe.toolCall`** — There is no mechanical observation path until Overlord has a native Conversation Hub client.
|
|
80
|
-
- **`observe.fileEdit`** — The lifecycle PostToolUse registration forwards Codex's native payload to local `capture-change` only when `OVERLORD_OBJECTIVE_ID` resolves an exact active-session binding. Native paths normalized by the Codex codec as `file.edited` record non-exclusive `declared_edit`/`direct` evidence. Codec-normalized read, search, and fetch callbacks are silent no-ops; mutation-capable callbacks without a normalized edit path, plus shell, generic, unknown, and unmapped callbacks, record unavailable evidence health. It remains separate from mechanical agent-session observation.
|
|
80
|
+
- **`observe.fileEdit`** — The lifecycle PostToolUse registration forwards Codex's native payload to local `capture-change` only when `OVERLORD_OBJECTIVE_ID` resolves an exact active-session binding. Native paths and declared `apply_patch` headers normalized by the Codex codec as `file.edited` record non-exclusive `declared_edit`/`direct` evidence. Codec-normalized read, search, and fetch callbacks are silent no-ops; mutation-capable callbacks without a normalized edit path, plus shell, generic, unknown, and unmapped callbacks, record unavailable evidence health. It remains separate from mechanical agent-session observation.
|
|
81
81
|
- **`decide.universal`** — The native Codex prompt owns approvals; Overlord exposes no remote decision control.
|
|
82
82
|
- **`answer.structuredQuestion`** — `codex app-server` exposes ToolRequestUserInput with per-option label/description and an autoResolutionMs — an ACP-shaped structured question in everything but name. It is unreachable until the single-subscriber question is settled.
|
|
83
83
|
- **`inject.midTurn`** — ThreadInjectItems/TurnSteer exist on the experimental app-server surface only. The binary carries "expected exactly one client subscribed to the thread, found {}", so if the TUI is that one client Overlord cannot also subscribe and this path is closed.
|
|
@@ -31,6 +31,13 @@ events:
|
|
|
31
31
|
fileEditKind: file.edited
|
|
32
32
|
filePathPaths:
|
|
33
33
|
- file_path
|
|
34
|
+
- filePath
|
|
35
|
+
- path
|
|
36
|
+
# Codex apply_patch carries destinations in bounded patch headers rather
|
|
37
|
+
# than a standalone path field. The codec extracts only those headers.
|
|
38
|
+
filePathPatchTextPaths:
|
|
39
|
+
- command
|
|
40
|
+
- patch
|
|
34
41
|
|
|
35
42
|
- native: UserPromptSubmit
|
|
36
43
|
kind: prompt.submitted
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
contractVersion: "
|
|
1
|
+
contractVersion: "125"
|
|
2
2
|
componentType: connector
|
|
3
3
|
componentKey: codex
|
|
4
4
|
label: "Codex Connector"
|
|
@@ -14,7 +14,7 @@ connector:
|
|
|
14
14
|
harnessCapabilities:
|
|
15
15
|
path: connectors/adapters/codex/harness-capabilities.yaml
|
|
16
16
|
schemaVersion: 1
|
|
17
|
-
digest: "
|
|
17
|
+
digest: "4d4908a81023cf7943ebbcb35d8477751f97d916597adc3bf3cec63bdb58dc4b"
|
|
18
18
|
# ── END GENERATED ────────────────────────────────────────────────────────────
|
|
19
19
|
installPath: "~/.codex/plugins/overlord"
|
|
20
20
|
managedFiles:
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"tool_response": { "text": "changed with postgres://user:hunter2@db/app" }
|
|
17
17
|
},
|
|
18
18
|
"expect": {
|
|
19
|
-
"eventId": "
|
|
19
|
+
"eventId": "ev_bf289659aca425896e8c26747d35c87e",
|
|
20
20
|
"producerSequence": null,
|
|
21
21
|
"occurredAt": "2026-08-01T00:00:00.000Z",
|
|
22
22
|
"kind": "file.edited",
|
|
@@ -28,7 +28,12 @@
|
|
|
28
28
|
"correlationId": "codex-session-1",
|
|
29
29
|
"origin": "agent",
|
|
30
30
|
"summary": "Write a file",
|
|
31
|
-
"payload": {
|
|
31
|
+
"payload": {
|
|
32
|
+
"tool": "edit",
|
|
33
|
+
"action": "Write a file",
|
|
34
|
+
"paths": ["src/token.ts"],
|
|
35
|
+
"formatterVersion": 1
|
|
36
|
+
}
|
|
32
37
|
},
|
|
33
38
|
"mustNotContain": ["AKIAIOSFODNN7EXAMPLE", "hunter2", "secret.jsonl", "/Users/jake"]
|
|
34
39
|
}
|
|
@@ -52,8 +52,8 @@ mutationHooks:
|
|
|
52
52
|
notes: >-
|
|
53
53
|
Recorded pre/post shapes are separate calls and do not prove a paired window. A directly named
|
|
54
54
|
native edit path normalized by the Codex codec as `file.edited` may record objective-bound,
|
|
55
|
-
non-exclusive `declared_edit`/`direct` evidence.
|
|
56
|
-
|
|
55
|
+
non-exclusive `declared_edit`/`direct` evidence. `apply_patch` destinations are reduced only
|
|
56
|
+
from its declared `*** Add|Update|Delete File:` headers; patch text itself is never retained.
|
|
57
57
|
|
|
58
58
|
capabilities:
|
|
59
59
|
observe.prompt:
|
|
@@ -81,8 +81,9 @@ capabilities:
|
|
|
81
81
|
notes: >-
|
|
82
82
|
The lifecycle PostToolUse registration forwards Codex's native payload to local
|
|
83
83
|
`capture-change` only when `OVERLORD_OBJECTIVE_ID` resolves an exact active-session binding.
|
|
84
|
-
Native paths normalized by the Codex codec as
|
|
85
|
-
`declared_edit`/`direct` evidence. Codec-normalized
|
|
84
|
+
Native paths and declared `apply_patch` headers normalized by the Codex codec as
|
|
85
|
+
`file.edited` record non-exclusive `declared_edit`/`direct` evidence. Codec-normalized
|
|
86
|
+
read, search, and fetch callbacks are
|
|
86
87
|
silent no-ops; mutation-capable callbacks without a normalized edit path, plus shell,
|
|
87
88
|
generic, unknown, and unmapped callbacks, record unavailable evidence health. It remains
|
|
88
89
|
separate from mechanical agent-session observation.
|
|
@@ -165,6 +165,11 @@ ovld protocol deliver --session-key <sessionKey> \
|
|
|
165
165
|
This is the normal delivery shape: a summary is sufficient. The CLI syncs objective-ledger
|
|
166
166
|
evidence independently before the lifecycle transition.
|
|
167
167
|
|
|
168
|
+
After running a generator, migration, or script that writes files, you may add its known outputs
|
|
169
|
+
to this existing call with `--paths path/one.ts,path/two.ts`. This is optional, paths-only
|
|
170
|
+
metadata for outputs the native hook cannot name; never use it to enumerate every changed or
|
|
171
|
+
opened file, and never make a separate call just to declare paths.
|
|
172
|
+
|
|
168
173
|
Artifacts, optional change rationales, and a delivery report remain current annotations when
|
|
169
174
|
they add review value. Use `--payload-json` when the full delivery object fits comfortably inline
|
|
170
175
|
(roughly under 8 KB). Larger inline `--*-json` values are rejected; stream them through the
|
|
@@ -113,6 +113,10 @@ Native paths normalized by the connector-owned codec as `file.edited` are valid,
|
|
|
113
113
|
no-ops. Mutation-capable callbacks without a normalized edit path, plus shell, generic, unknown,
|
|
114
114
|
and unmapped callbacks, report unavailable evidence health.
|
|
115
115
|
|
|
116
|
+
For outputs of a generator, migration, or file-writing script that the hook cannot name, an agent
|
|
117
|
+
may add `--paths path/one.ts,path/two.ts` to its existing `update` or `deliver` call. It is
|
|
118
|
+
optional, paths-only metadata; it is never a request to enumerate every changed or opened file.
|
|
119
|
+
|
|
116
120
|
### Shared worktree safety (critical)
|
|
117
121
|
|
|
118
122
|
The working tree may contain file changes from **other agents, missions, or objectives** running concurrently in the same checkout or worktree. Those changes are **not yours to undo**.
|
|
@@ -1110,7 +1110,7 @@ process.stdin.on('data', async chunk => {
|
|
|
1110
1110
|
result: {
|
|
1111
1111
|
protocolVersion: PROTOCOL_VERSION,
|
|
1112
1112
|
capabilities: { tools: { listChanged: false } },
|
|
1113
|
-
serverInfo: { name: 'overlord-__OVERLORD_ADAPTER_KEY__', version: '0.3.
|
|
1113
|
+
serverInfo: { name: 'overlord-__OVERLORD_ADAPTER_KEY__', version: '0.3.39' }
|
|
1114
1114
|
}
|
|
1115
1115
|
});
|
|
1116
1116
|
continue;
|
package/dist/index.js
CHANGED
|
@@ -4458,7 +4458,7 @@ var init_catalog_generated = __esm({
|
|
|
4458
4458
|
"codec": "claude",
|
|
4459
4459
|
"integrationShape": "callback",
|
|
4460
4460
|
"capabilityTier": 1,
|
|
4461
|
-
"descriptorDigest": "
|
|
4461
|
+
"descriptorDigest": "0f708197c1306226e137a332532fabbc68c41023ba0bd46614468d9fef38a14e",
|
|
4462
4462
|
"descriptorSchemaVersion": 1,
|
|
4463
4463
|
"harness": {
|
|
4464
4464
|
"name": "Claude Code",
|
|
@@ -4660,7 +4660,7 @@ var init_catalog_generated = __esm({
|
|
|
4660
4660
|
"codec": "codex",
|
|
4661
4661
|
"integrationShape": "callback",
|
|
4662
4662
|
"capabilityTier": 1,
|
|
4663
|
-
"descriptorDigest": "
|
|
4663
|
+
"descriptorDigest": "4d4908a81023cf7943ebbcb35d8477751f97d916597adc3bf3cec63bdb58dc4b",
|
|
4664
4664
|
"descriptorSchemaVersion": 1,
|
|
4665
4665
|
"harness": {
|
|
4666
4666
|
"name": "Codex CLI",
|
|
@@ -4690,7 +4690,7 @@ var init_catalog_generated = __esm({
|
|
|
4690
4690
|
"fixture": "fixtures/mutation-window-evidence.json",
|
|
4691
4691
|
"reason": null,
|
|
4692
4692
|
"evidenceRef": null,
|
|
4693
|
-
"notes": "Recorded pre/post shapes are separate calls and do not prove a paired window. A directly named native edit path normalized by the Codex codec as `file.edited` may record objective-bound, non-exclusive `declared_edit`/`direct` evidence.
|
|
4693
|
+
"notes": "Recorded pre/post shapes are separate calls and do not prove a paired window. A directly named native edit path normalized by the Codex codec as `file.edited` may record objective-bound, non-exclusive `declared_edit`/`direct` evidence. `apply_patch` destinations are reduced only from its declared `*** Add|Update|Delete File:` headers; patch text itself is never retained."
|
|
4694
4694
|
},
|
|
4695
4695
|
"capabilities": {
|
|
4696
4696
|
"observe.prompt": {
|
|
@@ -5438,7 +5438,7 @@ var init_catalog_generated = __esm({
|
|
|
5438
5438
|
}
|
|
5439
5439
|
}
|
|
5440
5440
|
];
|
|
5441
|
-
HARNESS_CATALOG_DIGEST = "
|
|
5441
|
+
HARNESS_CATALOG_DIGEST = "9b5e5074ad777fa04280b57040141eab441d4d386da054cc415f8f2166460672";
|
|
5442
5442
|
}
|
|
5443
5443
|
});
|
|
5444
5444
|
|
|
@@ -7621,6 +7621,23 @@ function readOutcome(value) {
|
|
|
7621
7621
|
}
|
|
7622
7622
|
return void 0;
|
|
7623
7623
|
}
|
|
7624
|
+
function declaredPatchPaths(input, paths, projectRoot) {
|
|
7625
|
+
const output = [];
|
|
7626
|
+
for (const declaredPath of paths ?? []) {
|
|
7627
|
+
const patch = readPath2(input, declaredPath);
|
|
7628
|
+
if (typeof patch !== "string" || patch.length > 1048576)
|
|
7629
|
+
continue;
|
|
7630
|
+
PATCH_HEADER.lastIndex = 0;
|
|
7631
|
+
for (const match of patch.matchAll(PATCH_HEADER)) {
|
|
7632
|
+
const reduced = reduceEvidencePath(match[1], projectRoot);
|
|
7633
|
+
if (reduced && !output.includes(reduced))
|
|
7634
|
+
output.push(reduced);
|
|
7635
|
+
if (output.length >= MAX_PATCH_PATHS)
|
|
7636
|
+
return output;
|
|
7637
|
+
}
|
|
7638
|
+
}
|
|
7639
|
+
return output;
|
|
7640
|
+
}
|
|
7624
7641
|
function findCodecRule(codec, nativeEventName) {
|
|
7625
7642
|
if (!nativeEventName)
|
|
7626
7643
|
return null;
|
|
@@ -7667,10 +7684,19 @@ function normalizeNativeEvent({ codec, payload, nativeEventName, nativeSessionId
|
|
|
7667
7684
|
sealedInput.formatterVersion = FORMATTER_VERSION;
|
|
7668
7685
|
if (rule.fileEditKind && (tool === "write" || tool === "edit")) {
|
|
7669
7686
|
kind = rule.fileEditKind;
|
|
7670
|
-
const
|
|
7671
|
-
|
|
7672
|
-
|
|
7673
|
-
|
|
7687
|
+
const exactPaths = [];
|
|
7688
|
+
for (const declaredPath of rule.filePathPaths ?? []) {
|
|
7689
|
+
const reduced = reduceEvidencePath(readPath2(input, declaredPath), projectRoot);
|
|
7690
|
+
if (reduced && !exactPaths.includes(reduced))
|
|
7691
|
+
exactPaths.push(reduced);
|
|
7692
|
+
}
|
|
7693
|
+
for (const extracted of declaredPatchPaths(input, rule.filePathPatchTextPaths, projectRoot)) {
|
|
7694
|
+
if (!exactPaths.includes(extracted))
|
|
7695
|
+
exactPaths.push(extracted);
|
|
7696
|
+
}
|
|
7697
|
+
if (exactPaths.length > 0) {
|
|
7698
|
+
sealedInput.paths = exactPaths;
|
|
7699
|
+
idParts.push(...exactPaths);
|
|
7674
7700
|
}
|
|
7675
7701
|
}
|
|
7676
7702
|
idParts.push(tool, description.subject ?? "", description.detail ?? "");
|
|
@@ -7738,6 +7764,7 @@ function summarizeEvent(kind, payload) {
|
|
|
7738
7764
|
riskMarkers: payload.riskMarkers ?? []
|
|
7739
7765
|
});
|
|
7740
7766
|
}
|
|
7767
|
+
var PATCH_HEADER, MAX_PATCH_PATHS;
|
|
7741
7768
|
var init_codec = __esm({
|
|
7742
7769
|
"../packages/core/dist/service/agent-session/pure/codec.js"() {
|
|
7743
7770
|
"use strict";
|
|
@@ -7748,6 +7775,8 @@ var init_codec = __esm({
|
|
|
7748
7775
|
init_redact();
|
|
7749
7776
|
init_text();
|
|
7750
7777
|
init_tool_normalize();
|
|
7778
|
+
PATCH_HEADER = /^\*\*\* (?:Add|Update|Delete) File: (.+)$/gm;
|
|
7779
|
+
MAX_PATCH_PATHS = 32;
|
|
7751
7780
|
}
|
|
7752
7781
|
});
|
|
7753
7782
|
|
|
@@ -8017,7 +8046,10 @@ var init_codec_registry_generated = __esm({
|
|
|
8017
8046
|
"inputPath": "tool_input",
|
|
8018
8047
|
"fileEditKind": "file.edited",
|
|
8019
8048
|
"filePathPaths": [
|
|
8020
|
-
"file_path"
|
|
8049
|
+
"file_path",
|
|
8050
|
+
"notebook_path",
|
|
8051
|
+
"filePath",
|
|
8052
|
+
"path"
|
|
8021
8053
|
]
|
|
8022
8054
|
},
|
|
8023
8055
|
{
|
|
@@ -8064,7 +8096,13 @@ var init_codec_registry_generated = __esm({
|
|
|
8064
8096
|
"turnIdPath": "turn_id",
|
|
8065
8097
|
"fileEditKind": "file.edited",
|
|
8066
8098
|
"filePathPaths": [
|
|
8067
|
-
"file_path"
|
|
8099
|
+
"file_path",
|
|
8100
|
+
"filePath",
|
|
8101
|
+
"path"
|
|
8102
|
+
],
|
|
8103
|
+
"filePathPatchTextPaths": [
|
|
8104
|
+
"command",
|
|
8105
|
+
"patch"
|
|
8068
8106
|
]
|
|
8069
8107
|
},
|
|
8070
8108
|
{
|
|
@@ -22411,6 +22449,10 @@ deliver:
|
|
|
22411
22449
|
evidence automatically before update, changes, and deliver. Optional rationales,
|
|
22412
22450
|
hook health, and path attribution cannot fail delivery. Do not continue implementation
|
|
22413
22451
|
after delivery without explicit follow-up.
|
|
22452
|
+
|
|
22453
|
+
--paths <a,b,c> is optional, metadata-only evidence for outputs of a generator,
|
|
22454
|
+
migration, or script. It is batched into this existing call, never inspects VCS,
|
|
22455
|
+
and is not an instruction to list every changed or opened file.
|
|
22414
22456
|
Inline --*-json values larger than ~8 KB are rejected; use --change-rationales-file -
|
|
22415
22457
|
(or --payload-file -) and stream JSON on stdin. Keep --summary inline.
|
|
22416
22458
|
Run \`${primaryCommand} protocol changes --objective-id <id>\` to inspect the attached
|
|
@@ -23637,6 +23679,37 @@ function missionDisplayId(mission) {
|
|
|
23637
23679
|
const record = asRecord5(mission);
|
|
23638
23680
|
return typeof record.displayId === "string" ? record.displayId : typeof record.id === "string" ? record.id : "unknown";
|
|
23639
23681
|
}
|
|
23682
|
+
function appendDeclaredOutputPaths({
|
|
23683
|
+
flags,
|
|
23684
|
+
active,
|
|
23685
|
+
workingDirectory
|
|
23686
|
+
}) {
|
|
23687
|
+
const value = flags["--paths"];
|
|
23688
|
+
if (value === void 0) return;
|
|
23689
|
+
delete flags["--paths"];
|
|
23690
|
+
if (typeof value !== "string" || value.trim() === "") {
|
|
23691
|
+
throw new CliError({ message: "--paths requires a comma-separated list of output paths." });
|
|
23692
|
+
}
|
|
23693
|
+
if (!active) {
|
|
23694
|
+
throw new CliError({
|
|
23695
|
+
message: "--paths requires the attached objective session in this working directory."
|
|
23696
|
+
});
|
|
23697
|
+
}
|
|
23698
|
+
const paths = value.split(",").map((entry) => entry.trim()).filter(Boolean);
|
|
23699
|
+
if (paths.length === 0) {
|
|
23700
|
+
throw new CliError({ message: "--paths requires at least one output path." });
|
|
23701
|
+
}
|
|
23702
|
+
appendChangeEvidence({
|
|
23703
|
+
workingDirectory,
|
|
23704
|
+
objectiveId: active.objectiveId,
|
|
23705
|
+
sessionKey: active.sessionKey,
|
|
23706
|
+
filePaths: paths.slice(0, MAX_DECLARED_OUTPUT_PATHS),
|
|
23707
|
+
source: "declared_edit",
|
|
23708
|
+
quality: "direct",
|
|
23709
|
+
overlap: false,
|
|
23710
|
+
hookHealth: "agent_declared_generator_output"
|
|
23711
|
+
});
|
|
23712
|
+
}
|
|
23640
23713
|
async function resolveProtocolFileInputs({
|
|
23641
23714
|
flags,
|
|
23642
23715
|
stdin
|
|
@@ -23875,6 +23948,7 @@ async function runProtocolCommand({
|
|
|
23875
23948
|
const sessionKey = typeof flags["--session-key"] === "string" ? flags["--session-key"] : null;
|
|
23876
23949
|
const active = sessionKey ? readActiveSessions(workingDirectory).find((entry) => entry.sessionKey === sessionKey) : void 0;
|
|
23877
23950
|
lifecycleActive = active;
|
|
23951
|
+
appendDeclaredOutputPaths({ flags, active, workingDirectory });
|
|
23878
23952
|
if (sessionKey && active) {
|
|
23879
23953
|
await syncObjectiveLedger({ runtime, workingDirectory, missionId, sessionKey, active });
|
|
23880
23954
|
}
|
|
@@ -25033,7 +25107,7 @@ Note: ${reinstallHint}`);
|
|
|
25033
25107
|
message: "Usage: ovld runner service <install|start|stop|restart|status|uninstall> [--no-start] [--json]"
|
|
25034
25108
|
});
|
|
25035
25109
|
}
|
|
25036
|
-
var SYNC_CHANGE_EVIDENCE_KEYS, PROTOCOL_FILE_FLAGS, SESSION_KEY_SUBCOMMANDS, OBJECTIVE_SCOPED_SUBCOMMANDS, RETIRED_CHANGE_TRACKING_FLAGS, MAX_CHANGES_HEALTH_ENTRIES, MAX_RUNNER_FAILURE_MESSAGE_LENGTH;
|
|
25110
|
+
var SYNC_CHANGE_EVIDENCE_KEYS, PROTOCOL_FILE_FLAGS, SESSION_KEY_SUBCOMMANDS, OBJECTIVE_SCOPED_SUBCOMMANDS, RETIRED_CHANGE_TRACKING_FLAGS, MAX_CHANGES_HEALTH_ENTRIES, MAX_DECLARED_OUTPUT_PATHS, MAX_RUNNER_FAILURE_MESSAGE_LENGTH;
|
|
25037
25111
|
var init_commands = __esm({
|
|
25038
25112
|
"src/commands.ts"() {
|
|
25039
25113
|
"use strict";
|
|
@@ -25135,6 +25209,7 @@ var init_commands = __esm({
|
|
|
25135
25209
|
]
|
|
25136
25210
|
};
|
|
25137
25211
|
MAX_CHANGES_HEALTH_ENTRIES = 128;
|
|
25212
|
+
MAX_DECLARED_OUTPUT_PATHS = 512;
|
|
25138
25213
|
MAX_RUNNER_FAILURE_MESSAGE_LENGTH = 1200;
|
|
25139
25214
|
}
|
|
25140
25215
|
});
|