borgmcp 3.9.0 → 3.10.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/SECURITY.md +1 -1
- package/dist/claude.js +3 -3
- package/dist/claude.js.map +1 -1
- package/dist/cli-help.js +5 -5
- package/dist/cli-help.js.map +1 -1
- package/dist/cubes.js +2 -2
- package/dist/cubes.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/log-stream.d.ts +6 -2
- package/dist/log-stream.d.ts.map +1 -1
- package/dist/log-stream.js +36 -11
- package/dist/log-stream.js.map +1 -1
- package/dist/opencode-drone.d.ts +7 -2
- package/dist/opencode-drone.d.ts.map +1 -1
- package/dist/opencode-drone.js +291 -64
- package/dist/opencode-drone.js.map +1 -1
- package/dist/opencode-plugin.d.ts.map +1 -1
- package/dist/opencode-plugin.js +12 -2
- package/dist/opencode-plugin.js.map +1 -1
- package/dist/remote-client.d.ts +13 -0
- package/dist/remote-client.d.ts.map +1 -1
- package/dist/remote-client.js +25 -0
- package/dist/remote-client.js.map +1 -1
- package/dist/seat-commands.js +12 -12
- package/dist/seat-commands.js.map +1 -1
- package/dist/stream-status.d.ts.map +1 -1
- package/dist/stream-status.js +1 -0
- package/dist/stream-status.js.map +1 -1
- package/dist/unknown-subcommand.d.ts +1 -1
- package/dist/unknown-subcommand.d.ts.map +1 -1
- package/dist/unknown-subcommand.js +1 -1
- package/dist/unknown-subcommand.js.map +1 -1
- package/docs/RELEASING.md +94 -23
- package/package.json +1 -1
- package/src/claude.ts +3 -3
- package/src/cli-help.ts +5 -5
- package/src/cubes.ts +2 -2
- package/src/index.ts +4 -1
- package/src/log-stream.ts +49 -12
- package/src/opencode-drone.ts +328 -65
- package/src/opencode-plugin.ts +13 -1
- package/src/remote-client.ts +36 -0
- package/src/seat-commands.ts +12 -12
- package/src/stream-status.ts +3 -0
- package/src/unknown-subcommand.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stream-status.js","sourceRoot":"","sources":["../src/stream-status.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"stream-status.js","sourceRoot":"","sources":["../src/stream-status.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* (`--cli`, `--remote`, agent passthrough, …) still fall through to launch.
|
|
12
12
|
*/
|
|
13
13
|
/** The subcommands the claude.ts router dispatches on (lines 107-176). */
|
|
14
|
-
export declare const KNOWN_SUBCOMMANDS: readonly ["setup", "update", "doctor", "assimilate", "reset-local-connection", "recover-enrollment", "spawn", "cleanup", "
|
|
14
|
+
export declare const KNOWN_SUBCOMMANDS: readonly ["setup", "update", "doctor", "assimilate", "reset-local-connection", "recover-enrollment", "spawn", "cleanup", "drones", "launch", "launch-all", "server"];
|
|
15
15
|
/**
|
|
16
16
|
* Returns the offending command string when argv[2] is an unknown non-flag
|
|
17
17
|
* positional (caller should error + exit 1), or null when it's bare `borg`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unknown-subcommand.d.ts","sourceRoot":"","sources":["../src/unknown-subcommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,0EAA0E;AAC1E,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"unknown-subcommand.d.ts","sourceRoot":"","sources":["../src/unknown-subcommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,0EAA0E;AAC1E,eAAO,MAAM,iBAAiB,sKAapB,CAAC;AAEX;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAK1E"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unknown-subcommand.js","sourceRoot":"","sources":["../src/unknown-subcommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,0EAA0E;AAC1E,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,YAAY;IACZ,wBAAwB;IACxB,oBAAoB;IACpB,OAAO;IACP,SAAS;IACT,
|
|
1
|
+
{"version":3,"file":"unknown-subcommand.js","sourceRoot":"","sources":["../src/unknown-subcommand.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,0EAA0E;AAC1E,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,YAAY;IACZ,wBAAwB;IACxB,oBAAoB;IACpB,OAAO;IACP,SAAS;IACT,QAAQ;IACR,QAAQ;IACR,YAAY;IACZ,QAAQ;CACA,CAAC;AAEX;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAyB;IACzD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC,CAAC,cAAc;IACpD,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC,CAAC,8BAA8B;IACtE,IAAK,iBAAuC,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1E,OAAO,KAAK,CAAC,CAAC,wCAAwC;AACxD,CAAC"}
|
package/docs/RELEASING.md
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
# Publishing `borgmcp`
|
|
2
2
|
|
|
3
|
-
The GitHub Actions workflow
|
|
4
|
-
from a protected annotated tag.
|
|
5
|
-
|
|
3
|
+
The GitHub Actions workflow submits one immutable, reviewed `borgmcp` tarball to
|
|
4
|
+
npm staged publishing from a protected annotated tag. A designated operator
|
|
5
|
+
later approves that stage to make the version live. The protected stage job uses
|
|
6
|
+
npm Trusted Publishing; no long-lived npm token is stored or exposed.
|
|
6
7
|
|
|
7
8
|
## Release Integrity
|
|
8
9
|
|
|
@@ -22,9 +23,9 @@ Before creating the release tag, independently verify all of these conditions:
|
|
|
22
23
|
- the exact audited registry dependency `borgmcp-shared@0.11.0` remains locked to
|
|
23
24
|
its canonical tarball and integrity
|
|
24
25
|
`sha512-I8mixCbSrLKyOAAyqEI/HZJ8cML2rz3r812Up8pr547OdAk9LxZevdCo7ojG42ZwrUmS5u7iKQPg7Vk1XvtX1g==`;
|
|
25
|
-
- the coupled
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
- the coupled shared/server/client candidates have all been built against the
|
|
27
|
+
same exact `borgmcp-shared` version and passed the complete local dogfood gate
|
|
28
|
+
before any stage is approved;
|
|
28
29
|
- the selected stable client version is unused and the exact release commit is
|
|
29
30
|
on protected `main`;
|
|
30
31
|
- the repository and protected npm environment settings pass an operator audit;
|
|
@@ -54,7 +55,9 @@ Before preparing a candidate, independently verify:
|
|
|
54
55
|
existing `borgmcp` package. It must contain no npm token.
|
|
55
56
|
2. npm Trusted Publishing is configured for organization `Byte-Ventures`,
|
|
56
57
|
repository `borg-mcp-client`, workflow `publish.yml`, and environment
|
|
57
|
-
`npm-publish`.
|
|
58
|
+
`npm-publish`. Its allowed actions enable `npm stage publish` and disable
|
|
59
|
+
direct `npm publish`; package publishing requires two-factor authentication
|
|
60
|
+
and disallows tokens.
|
|
58
61
|
3. `refs/tags/v*.*.*` cannot be updated, deleted, or force-moved. Release tags
|
|
59
62
|
are annotated, match the package version, and point to a commit on protected
|
|
60
63
|
`main`.
|
|
@@ -292,40 +295,97 @@ The unprivileged `verify` job performs one sequence:
|
|
|
292
295
|
release artifact.
|
|
293
296
|
|
|
294
297
|
After `verify` succeeds, the designated Queen operator alone approves the
|
|
295
|
-
`npm-publish` environment. There is no separate pre-
|
|
298
|
+
`npm-publish` environment. There is no separate pre-stage exact-artifact
|
|
296
299
|
Security gate: the verify job is the mechanical authority for the exact bytes
|
|
297
|
-
that the
|
|
298
|
-
|
|
300
|
+
that the stage job consumes. Environment approval authorizes submitting those
|
|
301
|
+
bytes to npm's private staged-publishing service; it does not make the version
|
|
302
|
+
public, permit a rerun or rebuilt artifact, or authorize approval by another
|
|
303
|
+
actor.
|
|
299
304
|
|
|
300
305
|
The protected `publish` job alone receives `id-token: write`. It downloads the
|
|
301
306
|
same-run artifact and rejects a report whose package name or version differs
|
|
302
307
|
from the release, a version that already exists, an unclaimed package, or an
|
|
303
308
|
owner set that differs from `NPM_EXPECTED_OWNER`. It requires the GitHub OIDC
|
|
304
|
-
request context, rejects a legacy `NODE_AUTH_TOKEN`, and
|
|
305
|
-
|
|
309
|
+
request context, rejects a legacy `NODE_AUTH_TOKEN`, and stages the exact tarball
|
|
310
|
+
path once with lifecycle scripts disabled and provenance enabled. It
|
|
306
311
|
does not install project dependencies, rebuild, retest, repack, or reverify the
|
|
307
312
|
package.
|
|
308
313
|
|
|
309
|
-
Successful completion of
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
314
|
+
Successful completion of the workflow means npm accepted the immutable staged
|
|
315
|
+
tarball. It does not mean the version is public. Stage acceptance consumes the
|
|
316
|
+
tagged attempt and version under the burned-version rule, but must not trigger
|
|
317
|
+
release announcements, issue closure, consumer pins, site synchronization, or
|
|
318
|
+
claims that the version was published. There is no workflow registry readback:
|
|
319
|
+
stage inspection and approval require an interactive npm identity and cannot use
|
|
320
|
+
the workflow's OIDC credential.
|
|
321
|
+
|
|
322
|
+
### Coupled stage approval
|
|
323
|
+
|
|
324
|
+
Before approving anything, the operator requires successful stage workflows for
|
|
325
|
+
`borgmcp-shared`, `borgmcp-server`, and `borgmcp`. Use authenticated
|
|
326
|
+
`npm stage list` and `npm stage view <UUID>` to record and inspect all three stage
|
|
327
|
+
UUIDs and verify each package, version, and eventual `latest` tag. For every
|
|
328
|
+
package, `npm stage download <UUID>` is mandatory; compute its SHA-512 SRI and
|
|
329
|
+
require an exact match with that workflow run's same-run artifact report. Bind
|
|
330
|
+
the source annotated tag object, commit, and workflow run separately from GitHub
|
|
331
|
+
evidence, because npm stage inspection does not expose them. Exercise the exact
|
|
332
|
+
downloaded coupled set before approval. Confirm that public `latest`, public
|
|
333
|
+
`versions`, and client update resolution still expose the prior coherent release
|
|
334
|
+
set. If a pending stage appears on any public surface, approve nothing and halt
|
|
335
|
+
this mechanism before consumers can observe it.
|
|
336
|
+
|
|
337
|
+
Approve the verified UUIDs in one operator session, using interactive 2FA, in
|
|
338
|
+
this exact order:
|
|
339
|
+
|
|
340
|
+
1. `npm stage approve <shared-stage-uuid>`
|
|
341
|
+
2. `npm stage approve <server-stage-uuid>`
|
|
342
|
+
3. `npm stage approve <client-stage-uuid>`
|
|
343
|
+
|
|
344
|
+
The approvals are not atomic. Shared approval leaves existing client and server
|
|
345
|
+
pins coherent. Server approval opens a bounded mismatch window between public
|
|
346
|
+
server `latest` and client `latest`; client approval closes it. After an approval
|
|
347
|
+
returns successfully, continue only while the next stage remains valid. For an
|
|
348
|
+
ambiguous result, inspect authenticated stage state and canonical public package
|
|
349
|
+
version/integrity before acting; never repeat an approval blindly.
|
|
350
|
+
|
|
351
|
+
The terminal release boundary is successful interactive stage approval followed
|
|
352
|
+
by canonical registry visibility, integrity verification, and registry
|
|
353
|
+
provenance-attestation inspection. Stage inspection cannot establish provenance
|
|
354
|
+
before approval; Trusted Publishing carries it to the live package, where the
|
|
355
|
+
registry attestation is authoritative. Only then may the release be announced,
|
|
356
|
+
issues closed, consumer pins or site data synchronized, or the version described
|
|
357
|
+
as published.
|
|
358
|
+
|
|
359
|
+
After all three packages cross that boundary, create their GitHub Releases in
|
|
360
|
+
the same shared → server → client operator session. In each package repository,
|
|
361
|
+
run:
|
|
362
|
+
|
|
363
|
+
```sh
|
|
364
|
+
GITHUB_TOKEN="$(gh auth token)" node scripts/create-github-release.mjs <version>
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
The script binds the annotated tag, merged release pull request, successful tag
|
|
368
|
+
workflow artifact, and live npm integrity before creating the Release. It copies
|
|
369
|
+
the merged release pull request body verbatim and refuses an existing Release.
|
|
313
370
|
|
|
314
371
|
Separately, once the release is installable from the canonical registry, install
|
|
315
372
|
it into an isolated prefix and exercise the real user update path end to end.
|
|
316
|
-
This is product verification, not
|
|
373
|
+
This is product verification, not candidate validation: failure routes a new
|
|
317
374
|
reviewed fix and never invalidates, rebuilds, retags, or reruns the immutable
|
|
318
|
-
release. Do not repeat byte comparisons,
|
|
319
|
-
|
|
320
|
-
|
|
375
|
+
release. Do not repeat byte comparisons, packed-version checks, source-tree
|
|
376
|
+
verification, dist-tag readback, or provenance reconstruction that the
|
|
377
|
+
exact-artifact `verify` and stage jobs already completed. The canonical
|
|
378
|
+
live-version integrity check is required because it establishes the approval
|
|
379
|
+
boundary; it is not a duplicate candidate verification.
|
|
321
380
|
|
|
322
381
|
No separate checksum file is needed: the tarball verifier records canonical
|
|
323
382
|
SHA-512 SRI in the artifact report. GitHub's same-run artifact transport and the
|
|
324
383
|
report bind the reviewed candidate without repeated SHA512 choreography.
|
|
325
384
|
|
|
326
|
-
Rely on npm Trusted Publishing.
|
|
327
|
-
|
|
328
|
-
locally
|
|
385
|
+
Rely on npm Trusted Publishing. Perform the one authoritative registry
|
|
386
|
+
provenance-attestation inspection at the approved-live boundary; do not
|
|
387
|
+
reconstruct DSSE, in-toto, SLSA, workflow-ref, or builder statements locally or
|
|
388
|
+
add redundant provenance readback.
|
|
329
389
|
Do not add cross-run tuple variables, cross-run artifact selection, duplicate
|
|
330
390
|
builds, duplicate package verification, checksum bundles, or SBOM ceremony.
|
|
331
391
|
|
|
@@ -336,3 +396,14 @@ authorization evidence is missing or inconsistent. Never move or reuse a failed
|
|
|
336
396
|
tag, rerun a failed release workflow, overwrite an npm version, unpublish to hide
|
|
337
397
|
a failure, or substitute a local rebuild. Recovery starts from a fresh reviewed
|
|
338
398
|
source change and, after any registry mutation, a separately authorized version.
|
|
399
|
+
|
|
400
|
+
Before any approval, missing or inconsistent stage evidence means approve none.
|
|
401
|
+
Reject all three stages only when abandoning the coupled candidate; Borg treats
|
|
402
|
+
every rejected or unusable tagged stage as burned, even though npm permits some
|
|
403
|
+
re-staging. Replacement versions require fresh review, tags, and stage runs.
|
|
404
|
+
After shared approval but before server approval, stopping is compatibility-safe
|
|
405
|
+
for the existing client/server pair, but shared is immutable and any repair uses
|
|
406
|
+
fresh versions. After server approval, prioritize the already-verified client
|
|
407
|
+
approval because the public pair is mismatched. If that client stage cannot be
|
|
408
|
+
approved, do not reject it or rerun the tag; prepare newly reviewed matching
|
|
409
|
+
server/client recovery versions and state the live mismatch window explicitly.
|
package/package.json
CHANGED
package/src/claude.ts
CHANGED
|
@@ -301,11 +301,11 @@ async function main() {
|
|
|
301
301
|
const code = await runCleanup({}, parsed.options);
|
|
302
302
|
process.exit(code);
|
|
303
303
|
}
|
|
304
|
-
if (process.argv[2] === '
|
|
304
|
+
if (process.argv[2] === 'drones') {
|
|
305
305
|
const parsed = parseSeatsArgs(process.argv.slice(3));
|
|
306
306
|
if (!parsed.ok) {
|
|
307
|
-
process.stderr.write(chalk.red(`${consolePrefix()}◼ borg
|
|
308
|
-
process.stderr.write(`Run \`borg
|
|
307
|
+
process.stderr.write(chalk.red(`${consolePrefix()}◼ borg drones: ${parsed.error}\n`));
|
|
308
|
+
process.stderr.write(`Run \`borg drones --help\` for usage.\n`);
|
|
309
309
|
process.exit(1);
|
|
310
310
|
}
|
|
311
311
|
process.exit(await runSeats(buildDefaultSeatCommandDeps()));
|
package/src/cli-help.ts
CHANGED
|
@@ -53,10 +53,10 @@ export function launchAllHelpText(version: string): string {
|
|
|
53
53
|
|
|
54
54
|
export function seatsHelpText(version: string): string {
|
|
55
55
|
return (
|
|
56
|
-
`borg
|
|
56
|
+
`borg drones (borgmcp ${version}) — list this machine's registered drones\n\n` +
|
|
57
57
|
`Usage:\n` +
|
|
58
|
-
` borg
|
|
59
|
-
` borg
|
|
58
|
+
` borg drones Show drone, cube, worktree, agent CLI, and local state\n` +
|
|
59
|
+
` borg drones --help Show this help\n\n` +
|
|
60
60
|
`The local registry belongs to this machine only.\n`
|
|
61
61
|
);
|
|
62
62
|
}
|
|
@@ -95,7 +95,7 @@ export function clientSubcommandHelpText(
|
|
|
95
95
|
case 'reset-local-connection': return resetLocalSeatHelpText(version);
|
|
96
96
|
case 'recover-enrollment': return recoverEnrollmentHelpText(version);
|
|
97
97
|
case 'cleanup': return cleanupHelpText(version);
|
|
98
|
-
case '
|
|
98
|
+
case 'drones': return seatsHelpText(version);
|
|
99
99
|
case 'launch': return launchSeatHelpText(version);
|
|
100
100
|
case 'launch-all': return launchAllHelpText(version);
|
|
101
101
|
case 'doctor': return doctorHelpText(version);
|
|
@@ -136,7 +136,7 @@ export function topLevelHelpText(version: string): string {
|
|
|
136
136
|
` borg reset-local-connection Clear ONLY this worktree's saved connection to its cube (offline; after a rejection)\n` +
|
|
137
137
|
` borg recover-enrollment Restore or clear ONLY one failed server enrollment transaction\n` +
|
|
138
138
|
` borg cleanup [--prune] Report (or --prune) worktrees orphaned by evicted drones\n` +
|
|
139
|
-
` borg
|
|
139
|
+
` borg drones List this machine's registered drones and worktrees\n` +
|
|
140
140
|
` borg launch <drone-label-or-id-prefix> Reopen one registered drone from its worktree\n` +
|
|
141
141
|
` borg launch-all [cube] Launch all drone worktrees of a cube (default: active cube)\n` +
|
|
142
142
|
` borg server <command> [arguments]\n` +
|
package/src/cubes.ts
CHANGED
|
@@ -91,8 +91,8 @@ export class LaunchSeatIdentityChangedError extends Error {
|
|
|
91
91
|
|
|
92
92
|
constructor(droneLabel: string) {
|
|
93
93
|
super(
|
|
94
|
-
`borg launch: did not launch '${droneLabel}' — its
|
|
95
|
-
'Run `borg
|
|
94
|
+
`borg launch: did not launch '${droneLabel}' — its registration changed before the launch could start. ` +
|
|
95
|
+
'Run `borg drones` to see the current state, then try again.',
|
|
96
96
|
);
|
|
97
97
|
this.name = 'LaunchSeatIdentityChangedError';
|
|
98
98
|
}
|
package/src/index.ts
CHANGED
|
@@ -133,6 +133,7 @@ import { resolveReportableSessionAgentKind } from './agent-runtime.js';
|
|
|
133
133
|
import {
|
|
134
134
|
connectOpenCodeDrone,
|
|
135
135
|
injectOpenCodeEntry,
|
|
136
|
+
settleOpenCodeEntry,
|
|
136
137
|
configuredOpenCodePort,
|
|
137
138
|
OPEN_CODE_PORT_MISSING_DIAGNOSTIC,
|
|
138
139
|
openCodeLaunchBinding,
|
|
@@ -314,7 +315,9 @@ export async function main() {
|
|
|
314
315
|
installBorgPlugin();
|
|
315
316
|
const active = await getActiveCube();
|
|
316
317
|
if (active && openCodeRuntime) {
|
|
317
|
-
if (await connectOpenCodeRuntime(active))
|
|
318
|
+
if (await connectOpenCodeRuntime(active)) {
|
|
319
|
+
setModuleInjectOpenCode(injectOpenCodeEntry, settleOpenCodeEntry);
|
|
320
|
+
}
|
|
318
321
|
}
|
|
319
322
|
},
|
|
320
323
|
};
|
package/src/log-stream.ts
CHANGED
|
@@ -59,6 +59,7 @@ import { formatCubeActivityWakeMessage } from './cube-activity-wake-copy.js';
|
|
|
59
59
|
import { readBoundedResponseBody } from './server-response.js';
|
|
60
60
|
import { BorgServerError } from './server-errors.js';
|
|
61
61
|
import { markSeatRejected } from './seats.js';
|
|
62
|
+
import { hasPendingWakeEntry as hasPendingDurableWakeEntry } from './remote-client.js';
|
|
62
63
|
import {
|
|
63
64
|
acquireStreamLease,
|
|
64
65
|
readOwnershipSnapshot,
|
|
@@ -124,13 +125,16 @@ function isProcessAlive(pid: number): boolean {
|
|
|
124
125
|
* Used by defaultDeps when no explicit injectOpenCode is supplied.
|
|
125
126
|
*/
|
|
126
127
|
let _moduleInjectOpenCode:
|
|
127
|
-
| ((text: string, entryId: string, allowSubmit: boolean) => Promise<boolean>)
|
|
128
|
+
| ((text: string, entryId: string, allowSubmit: boolean, sourceEntryId?: string) => Promise<boolean>)
|
|
128
129
|
| undefined;
|
|
130
|
+
let _moduleSettleOpenCodeEntry: ((sourceEntryId: string) => void) | undefined;
|
|
129
131
|
|
|
130
132
|
export function setModuleInjectOpenCode(
|
|
131
|
-
fn: (text: string, entryId: string, allowSubmit: boolean) => Promise<boolean
|
|
133
|
+
fn: (text: string, entryId: string, allowSubmit: boolean, sourceEntryId?: string) => Promise<boolean>,
|
|
134
|
+
settle: (sourceEntryId: string) => void,
|
|
132
135
|
): void {
|
|
133
136
|
_moduleInjectOpenCode = fn;
|
|
137
|
+
_moduleSettleOpenCodeEntry = settle;
|
|
134
138
|
}
|
|
135
139
|
|
|
136
140
|
/**
|
|
@@ -403,8 +407,13 @@ export interface StreamDeps {
|
|
|
403
407
|
injectOpenCode?: (
|
|
404
408
|
text: string,
|
|
405
409
|
entryId: string,
|
|
406
|
-
allowSubmit: boolean
|
|
410
|
+
allowSubmit: boolean,
|
|
411
|
+
sourceEntryId?: string,
|
|
407
412
|
) => Promise<boolean>;
|
|
413
|
+
/** Inspect whether one retry source remains beyond the durable unread cursor. */
|
|
414
|
+
hasPendingWakeEntry?: (active: ActiveCube, entryId: string) => Promise<boolean>;
|
|
415
|
+
/** Clear in-process retry diagnostics after the durable entry is consumed. */
|
|
416
|
+
settleOpenCodeEntry?: (sourceEntryId: string) => void;
|
|
408
417
|
}
|
|
409
418
|
|
|
410
419
|
const defaultDeps: Required<StreamDeps> = {
|
|
@@ -420,10 +429,15 @@ const defaultDeps: Required<StreamDeps> = {
|
|
|
420
429
|
abortSignal: new AbortController().signal,
|
|
421
430
|
ownerDeps: {},
|
|
422
431
|
ownerStaleMs: 70_000,
|
|
423
|
-
injectOpenCode: (text, entryId, allowSubmit) =>
|
|
432
|
+
injectOpenCode: (text, entryId, allowSubmit, sourceEntryId) =>
|
|
424
433
|
_moduleInjectOpenCode
|
|
425
|
-
? _moduleInjectOpenCode(text, entryId, allowSubmit)
|
|
434
|
+
? _moduleInjectOpenCode(text, entryId, allowSubmit, sourceEntryId)
|
|
426
435
|
: Promise.resolve(false),
|
|
436
|
+
hasPendingWakeEntry: (active, entryId) => hasPendingDurableWakeEntry(
|
|
437
|
+
active as Parameters<typeof hasPendingDurableWakeEntry>[0],
|
|
438
|
+
entryId,
|
|
439
|
+
),
|
|
440
|
+
settleOpenCodeEntry: (sourceEntryId) => _moduleSettleOpenCodeEntry?.(sourceEntryId),
|
|
427
441
|
};
|
|
428
442
|
|
|
429
443
|
// ------------------------------------------------------------------
|
|
@@ -678,6 +692,8 @@ export async function streamOnce(
|
|
|
678
692
|
hwmDivergenceGraceMs,
|
|
679
693
|
abortSignal,
|
|
680
694
|
injectOpenCode,
|
|
695
|
+
hasPendingWakeEntry,
|
|
696
|
+
settleOpenCodeEntry,
|
|
681
697
|
} = { ...defaultDeps, ...deps };
|
|
682
698
|
|
|
683
699
|
assertUuidShape(active.cubeId, 'cube_id');
|
|
@@ -819,6 +835,17 @@ export async function streamOnce(
|
|
|
819
835
|
pendingHwmDivergence = { hwm, timer };
|
|
820
836
|
};
|
|
821
837
|
|
|
838
|
+
const shouldDeliverWakeRetry = async (entryId: string): Promise<boolean> => {
|
|
839
|
+
try {
|
|
840
|
+
if (await hasPendingWakeEntry(active, entryId)) return true;
|
|
841
|
+
settleOpenCodeEntry(entryId);
|
|
842
|
+
} catch {
|
|
843
|
+
// A retry is never authoritative enough to cross the model boundary on
|
|
844
|
+
// its own. The durable inbox and a later retry remain available.
|
|
845
|
+
}
|
|
846
|
+
return false;
|
|
847
|
+
};
|
|
848
|
+
|
|
822
849
|
// Bounded recent-id set for replay-on-reconnect dedup per spec §(3).
|
|
823
850
|
// Set + FIFO array for O(1) membership + bounded memory.
|
|
824
851
|
const recentIds = new Set<string>();
|
|
@@ -844,6 +871,10 @@ export async function streamOnce(
|
|
|
844
871
|
const line = formatInboxLine(withSseEventId(ev.data, ev.id));
|
|
845
872
|
const deliveryId = ev.wake_nonce ?? ev.id;
|
|
846
873
|
const isReping = ev.wake_nonce !== undefined;
|
|
874
|
+
if (isReping && !(await shouldDeliverWakeRetry(ev.id))) {
|
|
875
|
+
markEventPersisted(ev.id, ev.data?.created_at ?? '');
|
|
876
|
+
return 'persisted-skip';
|
|
877
|
+
}
|
|
847
878
|
const eventHwm = ev.data?.created_at
|
|
848
879
|
? { id: ev.id, created_at: ev.data.created_at }
|
|
849
880
|
: null;
|
|
@@ -867,12 +898,11 @@ export async function streamOnce(
|
|
|
867
898
|
await hasInboxEntryId(active.cubeId, active.droneId, ev.id, line)
|
|
868
899
|
);
|
|
869
900
|
if (alreadyPersisted) {
|
|
870
|
-
// An ordinary entry at/before the persisted cursor
|
|
871
|
-
//
|
|
872
|
-
//
|
|
873
|
-
// underlying inbox line is already durable.
|
|
901
|
+
// An ordinary entry at/before the persisted cursor must not re-enter the
|
|
902
|
+
// OpenCode queue. A still-unread re-ping may reconcile the prior attempt;
|
|
903
|
+
// its source entry ID prevents a new nonce from resubmitting that prompt.
|
|
874
904
|
if (isReping) {
|
|
875
|
-
await injectOpenCode(formatOpenCodeWakePrompt(line), deliveryId, true);
|
|
905
|
+
await injectOpenCode(formatOpenCodeWakePrompt(line), deliveryId, true, ev.id);
|
|
876
906
|
}
|
|
877
907
|
markEventPersisted(ev.id, ev.data?.created_at ?? '');
|
|
878
908
|
return 'persisted-skip';
|
|
@@ -880,7 +910,10 @@ export async function streamOnce(
|
|
|
880
910
|
// The inbox append is the durable record. OpenCode injection is only the
|
|
881
911
|
// wake attempt and may return before the agent finishes processing.
|
|
882
912
|
await appendLine(active.cubeId, active.droneId, line);
|
|
883
|
-
|
|
913
|
+
const openCodeDelivered = isReping
|
|
914
|
+
? await injectOpenCode(formatOpenCodeWakePrompt(line), deliveryId, true, ev.id)
|
|
915
|
+
: await injectOpenCode(formatOpenCodeWakePrompt(line), deliveryId, true);
|
|
916
|
+
if (!openCodeDelivered) {
|
|
884
917
|
if (ev.wake_nonce === undefined) wakeCodex(formatCodexWakePrompt(line));
|
|
885
918
|
else wakeCodex(formatCodexWakePrompt(line), ev.wake_nonce);
|
|
886
919
|
}
|
|
@@ -1198,7 +1231,11 @@ export async function streamOnce(
|
|
|
1198
1231
|
if (isRecentWakeReplay) {
|
|
1199
1232
|
const line = formatInboxLine(withSseEventId(event.data, event.id));
|
|
1200
1233
|
const wakeNonce = event.wake_nonce;
|
|
1201
|
-
if (
|
|
1234
|
+
if (
|
|
1235
|
+
wakeNonce !== undefined &&
|
|
1236
|
+
await shouldDeliverWakeRetry(event.id) &&
|
|
1237
|
+
!(await injectOpenCode(formatOpenCodeWakePrompt(line), wakeNonce, true, event.id))
|
|
1238
|
+
) {
|
|
1202
1239
|
wakeCodex(formatCodexWakePrompt(line), wakeNonce);
|
|
1203
1240
|
}
|
|
1204
1241
|
continue;
|