harnery 0.37.0 → 0.38.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/commander.d.ts +9 -0
- package/dist/commander.d.ts.map +1 -1
- package/dist/commander.js +7 -2
- package/dist/commands/admission.d.ts +21 -0
- package/dist/commands/admission.d.ts.map +1 -0
- package/dist/commands/admission.js +565 -0
- package/dist/commands/agents.d.ts +7 -0
- package/dist/commands/agents.d.ts.map +1 -1
- package/dist/commands/agents.js +61 -1
- package/dist/commands/artifacts.d.ts.map +1 -1
- package/dist/commands/artifacts.js +48 -2
- package/dist/commands/browse-ai.d.ts +2 -2
- package/dist/commands/browse-ai.d.ts.map +1 -1
- package/dist/commands/browse-ai.js +6 -4
- package/dist/commands/browse.d.ts.map +1 -1
- package/dist/commands/browse.js +349 -21
- package/dist/commands/fetch.js +1 -0
- package/dist/commands/qa-record.d.ts +144 -0
- package/dist/commands/qa-record.d.ts.map +1 -0
- package/dist/commands/qa-record.js +0 -0
- package/dist/commands/qa-run.d.ts +7 -3
- package/dist/commands/qa-run.d.ts.map +1 -1
- package/dist/commands/qa-run.js +268 -13
- package/dist/commands/qa-status.d.ts +71 -0
- package/dist/commands/qa-status.d.ts.map +1 -0
- package/dist/commands/qa-status.js +490 -0
- package/dist/commands/qa-verify.d.ts +40 -0
- package/dist/commands/qa-verify.d.ts.map +1 -0
- package/dist/commands/qa-verify.js +180 -0
- package/dist/commands/review-pack.d.ts +4 -0
- package/dist/commands/review-pack.d.ts.map +1 -0
- package/dist/commands/review-pack.js +1001 -0
- package/dist/core/agents/qa-signal.d.ts +111 -0
- package/dist/core/agents/qa-signal.d.ts.map +1 -0
- package/dist/core/agents/qa-signal.js +231 -0
- package/dist/core/agents/session-name-display.d.ts +20 -5
- package/dist/core/agents/session-name-display.d.ts.map +1 -1
- package/dist/core/agents/session-name-display.js +67 -7
- package/dist/core/agents/state/heartbeat-reader.d.ts +7 -0
- package/dist/core/agents/state/heartbeat-reader.d.ts.map +1 -1
- package/dist/core/agents/state/heartbeat-writer.d.ts +11 -0
- package/dist/core/agents/state/heartbeat-writer.d.ts.map +1 -1
- package/dist/core/agents/state/heartbeat-writer.js +17 -0
- package/dist/core/agents/state/live-coordination-view.d.ts.map +1 -1
- package/dist/core/agents/state/live-coordination-view.js +1 -0
- package/dist/core/agents/state/live-coordination-writer.js +5 -0
- package/dist/core/artifacts/constants.d.ts +1 -1
- package/dist/core/artifacts/constants.js +1 -1
- package/dist/core/artifacts/index.d.ts +57 -6
- package/dist/core/artifacts/index.d.ts.map +1 -1
- package/dist/core/artifacts/index.js +265 -10
- package/dist/core/config.d.ts +8 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +16 -0
- package/dist/core/diagnostics/bundle.d.ts +16 -0
- package/dist/core/diagnostics/bundle.d.ts.map +1 -1
- package/dist/core/diagnostics/bundle.js +101 -7
- package/dist/core/events/v3/bootstrap.d.ts.map +1 -1
- package/dist/core/events/v3/bootstrap.js +10 -0
- package/dist/core/events/v3/coordination-view.d.ts +3 -0
- package/dist/core/events/v3/coordination-view.d.ts.map +1 -1
- package/dist/core/events/v3/coordination-view.js +69 -8
- package/dist/core/events/v3/producers/intake.d.ts.map +1 -1
- package/dist/core/events/v3/producers/intake.js +9 -2
- package/dist/core/events/v3/producers/recorder.d.ts +23 -0
- package/dist/core/events/v3/producers/recorder.d.ts.map +1 -1
- package/dist/core/events/v3/producers/recorder.js +264 -18
- package/dist/core/hooks/cli.js +120 -27
- package/dist/core/hooks/resolve/transcript.d.ts.map +1 -1
- package/dist/core/hooks/resolve/transcript.js +10 -3
- package/dist/core/hooks/session-name-presence.d.ts.map +1 -1
- package/dist/core/hooks/session-name-presence.js +4 -1
- package/dist/core/qa-artifacts.d.ts +20 -0
- package/dist/core/qa-artifacts.d.ts.map +1 -0
- package/dist/core/qa-artifacts.js +110 -0
- package/dist/core/resources/contract.d.ts +6 -0
- package/dist/core/resources/contract.d.ts.map +1 -1
- package/dist/core/resources/sampler.d.ts +7 -0
- package/dist/core/resources/sampler.d.ts.map +1 -1
- package/dist/core/resources/sampler.js +106 -5
- package/dist/lib/admission.d.ts +71 -0
- package/dist/lib/admission.d.ts.map +1 -0
- package/dist/lib/admission.js +264 -0
- package/dist/lib/agent-browser/client.d.ts +1 -1
- package/dist/lib/agent-browser/client.d.ts.map +1 -1
- package/dist/lib/agent-browser/client.js +1 -5
- package/dist/lib/browser/capture-fidelity.d.ts +39 -0
- package/dist/lib/browser/capture-fidelity.d.ts.map +1 -0
- package/dist/lib/browser/capture-fidelity.js +84 -0
- package/dist/lib/browser/client.d.ts +41 -1
- package/dist/lib/browser/client.d.ts.map +1 -1
- package/dist/lib/browser/client.js +167 -9
- package/dist/lib/browser/critique.d.ts +38 -1
- package/dist/lib/browser/critique.d.ts.map +1 -1
- package/dist/lib/browser/critique.js +34 -6
- package/dist/lib/browser/index.d.ts +4 -2
- package/dist/lib/browser/index.d.ts.map +1 -1
- package/dist/lib/browser/index.js +2 -0
- package/dist/lib/browser/page-review-judge.d.ts +64 -0
- package/dist/lib/browser/page-review-judge.d.ts.map +1 -0
- package/dist/lib/browser/page-review-judge.js +270 -0
- package/dist/lib/browser/page-review-pack.d.ts +613 -0
- package/dist/lib/browser/page-review-pack.d.ts.map +1 -0
- package/dist/lib/browser/page-review-pack.js +1751 -0
- package/dist/lib/browser/qa-run-contracts.d.ts +214 -10
- package/dist/lib/browser/qa-run-contracts.d.ts.map +1 -1
- package/dist/lib/browser/qa-run-contracts.js +136 -1
- package/dist/lib/browser/qa-run.d.ts +100 -10
- package/dist/lib/browser/qa-run.d.ts.map +1 -1
- package/dist/lib/browser/qa-run.js +768 -169
- package/dist/lib/browser/request-diagnostics.d.ts +13 -0
- package/dist/lib/browser/request-diagnostics.d.ts.map +1 -0
- package/dist/lib/browser/request-diagnostics.js +18 -0
- package/dist/lib/browser/tiling.d.ts +19 -0
- package/dist/lib/browser/tiling.d.ts.map +1 -1
- package/dist/lib/browser/tiling.js +28 -0
- package/dist/lib/cookies/client.d.ts +9 -0
- package/dist/lib/cookies/client.d.ts.map +1 -1
- package/dist/lib/cookies/client.js +197 -44
- package/dist/lib/cookies/extra.d.ts +18 -0
- package/dist/lib/cookies/extra.d.ts.map +1 -0
- package/dist/lib/cookies/extra.js +14 -0
- package/dist/lib/cookies/index.d.ts +2 -1
- package/dist/lib/cookies/index.d.ts.map +1 -1
- package/dist/lib/cookies/index.js +2 -1
- package/dist/lib/durable-job.d.ts +124 -0
- package/dist/lib/durable-job.d.ts.map +1 -0
- package/dist/lib/durable-job.js +296 -0
- package/dist/lib/http/client.d.ts +7 -1
- package/dist/lib/http/client.d.ts.map +1 -1
- package/dist/lib/http/client.js +2 -0
- package/dist/lib/instructions/templates.d.ts.map +1 -1
- package/dist/lib/instructions/templates.js +5 -2
- package/package.json +8 -2
- package/src/commander.ts +50 -2
- package/src/commands/admission.ts +699 -0
- package/src/commands/agents.ts +87 -1
- package/src/commands/artifacts.ts +97 -21
- package/src/commands/browse-ai.ts +10 -5
- package/src/commands/browse.ts +481 -20
- package/src/commands/fetch.ts +1 -0
- package/src/commands/qa-record.ts +682 -0
- package/src/commands/qa-run.ts +335 -16
- package/src/commands/qa-status.ts +608 -0
- package/src/commands/qa-verify.ts +238 -0
- package/src/commands/review-pack.ts +1281 -0
- package/src/core/agents/qa-signal.ts +261 -0
- package/src/core/agents/session-name-display.ts +78 -7
- package/src/core/agents/state/heartbeat-reader.ts +7 -0
- package/src/core/agents/state/heartbeat-writer.ts +23 -0
- package/src/core/agents/state/live-coordination-view.ts +1 -0
- package/src/core/agents/state/live-coordination-writer.ts +5 -0
- package/src/core/artifacts/constants.ts +1 -1
- package/src/core/artifacts/index.ts +370 -21
- package/src/core/config.ts +23 -0
- package/src/core/diagnostics/bundle.ts +119 -11
- package/src/core/events/v3/bootstrap.ts +10 -0
- package/src/core/events/v3/coordination-view.ts +100 -11
- package/src/core/events/v3/producers/intake.ts +9 -2
- package/src/core/events/v3/producers/recorder.ts +312 -18
- package/src/core/hooks/cli.ts +140 -32
- package/src/core/hooks/resolve/transcript.ts +10 -3
- package/src/core/hooks/session-name-presence.ts +6 -1
- package/src/core/qa-artifacts.ts +126 -0
- package/src/core/resources/contract.ts +7 -0
- package/src/core/resources/sampler.ts +138 -6
- package/src/lib/admission.ts +347 -0
- package/src/lib/agent-browser/client.ts +2 -10
- package/src/lib/browser/capture-fidelity.ts +98 -0
- package/src/lib/browser/client.ts +206 -10
- package/src/lib/browser/critique.ts +62 -7
- package/src/lib/browser/index.ts +36 -0
- package/src/lib/browser/page-review-judge.ts +360 -0
- package/src/lib/browser/page-review-pack.ts +2384 -0
- package/src/lib/browser/qa-run-contracts.ts +366 -3
- package/src/lib/browser/qa-run.ts +868 -190
- package/src/lib/browser/request-diagnostics.ts +27 -0
- package/src/lib/browser/tiling.ts +32 -0
- package/src/lib/cookies/client.ts +228 -42
- package/src/lib/cookies/extra.ts +28 -0
- package/src/lib/cookies/index.ts +2 -0
- package/src/lib/durable-job.ts +407 -0
- package/src/lib/http/client.ts +13 -1
- package/src/lib/instructions/templates.ts +5 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAcH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAQ1E,OAAO,EAGL,qBAAqB,EAMtB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/agents.js
CHANGED
|
@@ -21,6 +21,7 @@ import { checkGitFinalization, formatGitFinalizationFailure, readSessionWriteCla
|
|
|
21
21
|
import { emitEventV3, monorepoRoot, nativeSessionIdentity, normalizeAdapter, resolveOwner, resolveOwnerBySessionEnv, resolveOwnerWithSource, sessionIdentityFromEnv, } from "../core/agents/index.js";
|
|
22
22
|
import { bootstrapLiveCoordinationAuthorityV3, LiveCoordinationAuthorityV3Error, reopenLiveCoordinationGenerationV3, } from "../core/agents/live-authority-v3.js";
|
|
23
23
|
import { isAddressableName, MailboxCapacityError, queueMailboxMessage, suggestNames, } from "../core/agents/mailbox.js";
|
|
24
|
+
import { qaSignalStatusRow } from "../core/agents/qa-signal.js";
|
|
24
25
|
import { reconcileCoordinationV3 } from "../core/agents/reconcile-coordination-v3.js";
|
|
25
26
|
import { listSessionFinalizationRequestsV3, observeHostDisappearedV3, reconcileSessionFinalizationV3, requestSessionEndExplicitV3, } from "../core/agents/session-finalizer-v3.js";
|
|
26
27
|
import { SESSION_NAME_DISPLAY_NOTE, sessionNameDisplayPending, } from "../core/agents/session-name-display.js";
|
|
@@ -30,7 +31,7 @@ import { readLiveCoordinationRow, readLiveCoordinationRows, } from "../core/agen
|
|
|
30
31
|
import { foldSessionState, } from "../core/agents/state/session-state.js";
|
|
31
32
|
import { coordFreshnessSeconds, resolveBinName, sessionFinalizationConfig, } from "../core/config.js";
|
|
32
33
|
import { readEventV3ControlState } from "../core/events/v3/control.js";
|
|
33
|
-
import { projectCoordinationViewV3 } from "../core/events/v3/coordination-view.js";
|
|
34
|
+
import { projectCoordinationViewV3, readCoordinationViewV3, } from "../core/events/v3/coordination-view.js";
|
|
34
35
|
import { liveInstanceIdV3 } from "../core/events/v3/live-routing.js";
|
|
35
36
|
import { countSummarizedSinceV3, listDiagnosticSummariesV3, } from "../core/events/v3/producers/diagnostic-summaries.js";
|
|
36
37
|
import { listHookIntakeGroupsV3, listHookIntakeRecordsV3, } from "../core/events/v3/producers/intake.js";
|
|
@@ -1806,6 +1807,11 @@ function runStatus(opts) {
|
|
|
1806
1807
|
catch {
|
|
1807
1808
|
/* non-fatal: status box should not fail on council errors */
|
|
1808
1809
|
}
|
|
1810
|
+
// Latest page-QA verdict for this session, with the RUNNER's clock. Session
|
|
1811
|
+
// age is not QA time; without this row an operator reads "session 58m" as if
|
|
1812
|
+
// the QA run took 58 minutes. Best-effort by contract — no pointer, a
|
|
1813
|
+
// malformed one, or any read failure renders no row.
|
|
1814
|
+
const qaSignal = qaSignalStatusRow({ coordRoot: root, instanceId: hb.instance_id });
|
|
1809
1815
|
const data = {
|
|
1810
1816
|
name: displayName,
|
|
1811
1817
|
instance_id: hb.instance_id,
|
|
@@ -1843,6 +1849,7 @@ function runStatus(opts) {
|
|
|
1843
1849
|
timestamp_iso: new Date().toISOString(),
|
|
1844
1850
|
timestamp_local: timeStr,
|
|
1845
1851
|
...(quality ? { quality } : {}),
|
|
1852
|
+
...(qaSignal ? { qa: qaSignal.pointer } : {}),
|
|
1846
1853
|
...(finalization ? { finalization } : {}),
|
|
1847
1854
|
...(sessionEnd ? { session_end: sessionEnd } : {}),
|
|
1848
1855
|
};
|
|
@@ -1878,6 +1885,10 @@ function runStatus(opts) {
|
|
|
1878
1885
|
const idx = rows.findIndex((row) => row[0] === "time");
|
|
1879
1886
|
rows.splice(idx, 0, ["quality", formatRunQuality(quality.status, quality.signal_ids)]);
|
|
1880
1887
|
}
|
|
1888
|
+
if (qaSignal) {
|
|
1889
|
+
const idx = rows.findIndex((row) => row[0] === "time");
|
|
1890
|
+
rows.splice(idx, 0, ["qa", qaSignal.value]);
|
|
1891
|
+
}
|
|
1881
1892
|
if (sessionEnd) {
|
|
1882
1893
|
const idx = rows.findIndex((row) => row[0] === "time");
|
|
1883
1894
|
rows.splice(idx, 0, [
|
|
@@ -2485,6 +2496,46 @@ export function collectEventLedgerHealthV3(root, nowMs = Date.now()) {
|
|
|
2485
2496
|
catch (error) {
|
|
2486
2497
|
collectionErrors.push(`diagnostic summaries unreadable: ${errorText(error)}`);
|
|
2487
2498
|
}
|
|
2499
|
+
let coordinationAuthority = {
|
|
2500
|
+
safe: false,
|
|
2501
|
+
global_diagnostics: 0,
|
|
2502
|
+
isolated_diagnostics: 0,
|
|
2503
|
+
affected_generations: [],
|
|
2504
|
+
codes: [],
|
|
2505
|
+
};
|
|
2506
|
+
try {
|
|
2507
|
+
const view = readCoordinationViewV3(root);
|
|
2508
|
+
const globalDiagnostics = view.global_diagnostics.filter((diagnostic) => diagnostic.authority_blocking);
|
|
2509
|
+
const isolatedDiagnostics = new Map();
|
|
2510
|
+
const affectedGenerations = [];
|
|
2511
|
+
for (const [generationId, diagnostics] of Object.entries(view.diagnostics_by_generation)) {
|
|
2512
|
+
const blocking = diagnostics.filter((diagnostic) => diagnostic.authority_blocking);
|
|
2513
|
+
if (blocking.length === 0)
|
|
2514
|
+
continue;
|
|
2515
|
+
affectedGenerations.push(generationId);
|
|
2516
|
+
for (const diagnostic of blocking) {
|
|
2517
|
+
isolatedDiagnostics.set([
|
|
2518
|
+
diagnostic.code,
|
|
2519
|
+
diagnostic.source_code ?? "",
|
|
2520
|
+
diagnostic.event_id ?? "",
|
|
2521
|
+
diagnostic.generation_id ?? "",
|
|
2522
|
+
diagnostic.subject_instance_id ?? "",
|
|
2523
|
+
].join("\0"), diagnostic);
|
|
2524
|
+
}
|
|
2525
|
+
}
|
|
2526
|
+
coordinationAuthority = {
|
|
2527
|
+
safe: view.authority_safe,
|
|
2528
|
+
global_diagnostics: globalDiagnostics.length,
|
|
2529
|
+
isolated_diagnostics: isolatedDiagnostics.size,
|
|
2530
|
+
affected_generations: affectedGenerations.sort(),
|
|
2531
|
+
codes: [
|
|
2532
|
+
...new Set([...globalDiagnostics, ...isolatedDiagnostics.values()].map((diagnostic) => diagnostic.source_code ?? diagnostic.code)),
|
|
2533
|
+
].sort(),
|
|
2534
|
+
};
|
|
2535
|
+
}
|
|
2536
|
+
catch (error) {
|
|
2537
|
+
collectionErrors.push(`coordination authority unreadable: ${errorText(error)}`);
|
|
2538
|
+
}
|
|
2488
2539
|
return {
|
|
2489
2540
|
state: "live",
|
|
2490
2541
|
mode: control.state,
|
|
@@ -2508,6 +2559,7 @@ export function collectEventLedgerHealthV3(root, nowMs = Date.now()) {
|
|
|
2508
2559
|
recent_by_category: recentByCategory,
|
|
2509
2560
|
mitigation_fail_open: mitigationFailOpen,
|
|
2510
2561
|
},
|
|
2562
|
+
coordination_authority: coordinationAuthority,
|
|
2511
2563
|
span_pressure: spanPressure,
|
|
2512
2564
|
collection_errors: collectionErrors,
|
|
2513
2565
|
};
|
|
@@ -3181,6 +3233,13 @@ function runHealth(opts) {
|
|
|
3181
3233
|
findings.push(`stop-hook remediation cap exhausted ${stopRemediation.total}x in ${opts.since}${who}; these sessions ended turns without the end-of-turn ritual — check why their evidence never lands`);
|
|
3182
3234
|
}
|
|
3183
3235
|
if (eventLedger.state === "live") {
|
|
3236
|
+
const authority = eventLedger.coordination_authority;
|
|
3237
|
+
if (authority.global_diagnostics > 0) {
|
|
3238
|
+
findings.push(`${authority.global_diagnostics} global coordination authority diagnostic(s): ${authority.codes.join(", ")}`);
|
|
3239
|
+
}
|
|
3240
|
+
if (authority.isolated_diagnostics > 0) {
|
|
3241
|
+
findings.push(`${authority.isolated_diagnostics} coordination authority diagnostic(s) isolated to ${authority.affected_generations.length} generation(s): ${authority.codes.join(", ")}`);
|
|
3242
|
+
}
|
|
3184
3243
|
// Open spans whose generation has no open turn: the turn ended without its
|
|
3185
3244
|
// tool spans closing, so an explicit end can only queue, never finalize.
|
|
3186
3245
|
const orphanGenerations = eventLedger.open_spans.generations.filter((generation) => !generation.turn_open);
|
|
@@ -3298,6 +3357,7 @@ function renderHealthBox(report) {
|
|
|
3298
3357
|
.map((request) => request.age_ms < 0 ? "age?" : formatAge(Math.floor(request.age_ms / 1000)))
|
|
3299
3358
|
.join(", ");
|
|
3300
3359
|
ledgerStr = [
|
|
3360
|
+
`authority ${ledger.coordination_authority.safe ? "safe" : "unsafe"}${ledger.coordination_authority.isolated_diagnostics > 0 ? ` (${ledger.coordination_authority.isolated_diagnostics} isolated)` : ""}`,
|
|
3301
3361
|
`open spans ${ledger.open_spans.total}${orphanGenerations > 0 ? ` (${orphanGenerations} gen turn-closed)` : ""}`,
|
|
3302
3362
|
`pending ends ${ledger.pending_finalizations.length}${pendingAges ? ` (${pendingAges})` : ""}`,
|
|
3303
3363
|
`intake ${ledger.intake_spool.total}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../../src/commands/artifacts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"artifacts.d.ts","sourceRoot":"","sources":["../../src/commands/artifacts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAmB1E,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI,CAmMN"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { monorepoRoot, resolveOwner } from "../core/agents/index.js";
|
|
2
2
|
import { readLiveCoordinationRow } from "../core/agents/state/live-coordination-view.js";
|
|
3
|
-
import { adoptUnmanagedArtifactFiles, cleanArtifacts, createArtifact, inventoryArtifacts, releaseArtifact, renewArtifact, showArtifact, } from "../core/artifacts/index.js";
|
|
3
|
+
import { adoptUnmanagedArtifactFiles, artifactCapabilities, cleanArtifacts, createArtifact, holdArtifact, inventoryArtifacts, migrateArtifacts, releaseArtifact, renewArtifact, showArtifact, unholdArtifact, } from "../core/artifacts/index.js";
|
|
4
4
|
import { artifactDefaultRetentionDays, coordFreshnessSeconds } from "../core/config.js";
|
|
5
5
|
export function registerArtifactsCommand(program, emit, context) {
|
|
6
6
|
const root = program
|
|
@@ -13,10 +13,15 @@ export function registerArtifactsCommand(program, emit, context) {
|
|
|
13
13
|
.requiredOption("--purpose <text>", "What the files are for")
|
|
14
14
|
.option("--days <n>", "Retention in days (default from artifacts.default_retention_days)")
|
|
15
15
|
.option("--big", "Acknowledge that this workspace may exceed the per-bundle size ceiling")
|
|
16
|
+
.option("--hold <id>", "Create the workspace with this hold already present")
|
|
17
|
+
.option("--hold-reason <text>", "Why the initial hold is required")
|
|
18
|
+
.option("--actor <instance-id>", "Stable owner identity for the initial hold")
|
|
16
19
|
.action((slug, opts) => {
|
|
17
20
|
run(emit, () => {
|
|
18
21
|
const repoRoot = requireRepoRoot(context);
|
|
19
|
-
const actor = currentActor(repoRoot);
|
|
22
|
+
const actor = opts.actor ? { instance_id: opts.actor } : currentActor(repoRoot);
|
|
23
|
+
if (!!opts.hold !== !!opts.holdReason)
|
|
24
|
+
throw new Error("--hold and --hold-reason must be used together");
|
|
20
25
|
const retentionDays = opts.days
|
|
21
26
|
? parseDays(opts.days)
|
|
22
27
|
: artifactDefaultRetentionDays(repoRoot);
|
|
@@ -26,12 +31,14 @@ export function registerArtifactsCommand(program, emit, context) {
|
|
|
26
31
|
retentionDays,
|
|
27
32
|
actor,
|
|
28
33
|
big: opts.big,
|
|
34
|
+
holds: opts.hold ? [{ id: opts.hold, reason: opts.holdReason }] : [],
|
|
29
35
|
});
|
|
30
36
|
emit.data({
|
|
31
37
|
path: created.path,
|
|
32
38
|
artifact_id: created.manifest.artifact_id,
|
|
33
39
|
expires_at: created.manifest.retention.expires_at,
|
|
34
40
|
owner_instance_id: actor?.instance_id ?? null,
|
|
41
|
+
holds: created.manifest.holds,
|
|
35
42
|
});
|
|
36
43
|
});
|
|
37
44
|
});
|
|
@@ -102,6 +109,39 @@ export function registerArtifactsCommand(program, emit, context) {
|
|
|
102
109
|
emit.data(releaseArtifact(repoRoot, ref, { actor: currentActor(repoRoot) }));
|
|
103
110
|
});
|
|
104
111
|
});
|
|
112
|
+
root
|
|
113
|
+
.command("capabilities")
|
|
114
|
+
.description("Report artifact schema and hold capabilities for embedding clients.")
|
|
115
|
+
.option("--json", "Emit the capability document as JSON")
|
|
116
|
+
.action(() => emit.data(artifactCapabilities()));
|
|
117
|
+
root
|
|
118
|
+
.command("migrate")
|
|
119
|
+
.description("Preview the explicit v1 to v2 manifest migration, preserving preimages.")
|
|
120
|
+
.option("--yes", "Apply the migration to valid v1 manifests")
|
|
121
|
+
.action((opts) => run(emit, () => emit.data({ rows: migrateArtifacts(requireRepoRoot(context), opts) })));
|
|
122
|
+
root
|
|
123
|
+
.command("hold <ref>")
|
|
124
|
+
.description("Protect an artifact from cleanup until its owner removes this exact hold.")
|
|
125
|
+
.requiredOption("--id <id>", "Unique hold id within this artifact")
|
|
126
|
+
.requiredOption("--reason <text>", "Why cleanup must retain these files")
|
|
127
|
+
.option("--actor <instance-id>", "Stable hold owner; defaults to the current agent")
|
|
128
|
+
.action((ref, opts) => run(emit, () => {
|
|
129
|
+
const repoRoot = requireRepoRoot(context);
|
|
130
|
+
emit.data(holdArtifact(repoRoot, ref, {
|
|
131
|
+
id: opts.id,
|
|
132
|
+
reason: opts.reason,
|
|
133
|
+
actor: requireHoldActor(repoRoot, opts.actor),
|
|
134
|
+
}));
|
|
135
|
+
}));
|
|
136
|
+
root
|
|
137
|
+
.command("unhold <ref>")
|
|
138
|
+
.description("Remove one exact hold belonging to the supplied owner.")
|
|
139
|
+
.requiredOption("--id <id>", "Exact hold id to remove")
|
|
140
|
+
.option("--actor <instance-id>", "Stable hold owner; defaults to the current agent")
|
|
141
|
+
.action((ref, opts) => run(emit, () => {
|
|
142
|
+
const repoRoot = requireRepoRoot(context);
|
|
143
|
+
emit.data(unholdArtifact(repoRoot, ref, opts.id, { actor: requireHoldActor(repoRoot, opts.actor) }));
|
|
144
|
+
}));
|
|
105
145
|
root
|
|
106
146
|
.command("clean")
|
|
107
147
|
.description("Preview expired artifact deletion; pass --yes to delete.")
|
|
@@ -117,6 +157,12 @@ export function registerArtifactsCommand(program, emit, context) {
|
|
|
117
157
|
});
|
|
118
158
|
});
|
|
119
159
|
}
|
|
160
|
+
function requireHoldActor(repoRoot, explicit) {
|
|
161
|
+
const actor = explicit ? { instance_id: explicit } : currentActor(repoRoot);
|
|
162
|
+
if (!actor)
|
|
163
|
+
throw new Error("hold operations require --actor or a current agent identity");
|
|
164
|
+
return actor;
|
|
165
|
+
}
|
|
120
166
|
function currentActor(repoRoot) {
|
|
121
167
|
const instanceId = resolveOwner();
|
|
122
168
|
if (!instanceId)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { Command } from "commander";
|
|
2
|
-
import type { EmitContext } from "../commander.js";
|
|
3
|
-
export declare function registerBrowseAiCommand(program: Command, emitParam: EmitContext): void;
|
|
2
|
+
import type { EmitContext, HarneryProgramContext } from "../commander.js";
|
|
3
|
+
export declare function registerBrowseAiCommand(program: Command, emitParam: EmitContext, context?: HarneryProgramContext): void;
|
|
4
4
|
//# sourceMappingURL=browse-ai.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browse-ai.d.ts","sourceRoot":"","sources":["../../src/commands/browse-ai.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"browse-ai.d.ts","sourceRoot":"","sources":["../../src/commands/browse-ai.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAiD1E,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,WAAW,EACtB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,IAAI,CA2CN"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { homedir } from "node:os";
|
|
2
2
|
import { resolve } from "node:path";
|
|
3
3
|
import { AgentBrowser } from "../lib/agent-browser/index.js";
|
|
4
|
-
import { CookieJar } from "../lib/cookies/index.js";
|
|
4
|
+
import { applyExtraCookies, CookieJar } from "../lib/cookies/index.js";
|
|
5
5
|
// Module-scoped emit assigned by registerBrowseAiCommand. Same pattern as
|
|
6
6
|
// cookies/read/browse: helper functions close over `emit` so action
|
|
7
7
|
// callbacks stay concise.
|
|
@@ -25,7 +25,7 @@ let emit;
|
|
|
25
25
|
* works on the other modulo path differences.
|
|
26
26
|
*/
|
|
27
27
|
const DEFAULT_STORE = resolve(homedir(), ".cache", "harnery", "cookies.json");
|
|
28
|
-
export function registerBrowseAiCommand(program, emitParam) {
|
|
28
|
+
export function registerBrowseAiCommand(program, emitParam, context) {
|
|
29
29
|
emit = emitParam;
|
|
30
30
|
program
|
|
31
31
|
.command("browse-ai <url>")
|
|
@@ -50,7 +50,7 @@ export function registerBrowseAiCommand(program, emitParam) {
|
|
|
50
50
|
.option("--timeout <ms>", "Per-step timeout in ms", "60000")
|
|
51
51
|
.action((url, opts) => {
|
|
52
52
|
try {
|
|
53
|
-
runBrowseAi(url, opts);
|
|
53
|
+
runBrowseAi(url, opts, context);
|
|
54
54
|
}
|
|
55
55
|
catch (err) {
|
|
56
56
|
const msg = err instanceof Error ? err.message : String(err);
|
|
@@ -59,10 +59,12 @@ export function registerBrowseAiCommand(program, emitParam) {
|
|
|
59
59
|
}
|
|
60
60
|
});
|
|
61
61
|
}
|
|
62
|
-
function runBrowseAi(url, opts) {
|
|
62
|
+
function runBrowseAi(url, opts, context) {
|
|
63
63
|
const jar = opts.cookies === false
|
|
64
64
|
? null
|
|
65
65
|
: new CookieJar({ path: opts.store ?? DEFAULT_STORE, source: "harn-browse-ai" });
|
|
66
|
+
if (jar)
|
|
67
|
+
applyExtraCookies(url, jar, context?.extraCookies);
|
|
66
68
|
const ab = new AgentBrowser({
|
|
67
69
|
jar,
|
|
68
70
|
timeoutMs: Number.parseInt(opts.timeout, 10),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browse.d.ts","sourceRoot":"","sources":["../../src/commands/browse.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"browse.d.ts","sourceRoot":"","sources":["../../src/commands/browse.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AA8P1E,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,WAAW,EACtB,OAAO,CAAC,EAAE,qBAAqB,EAC/B,OAAO,SAAmB,GACzB,IAAI,CA+fN"}
|