harnery 0.29.0 → 0.31.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/README.md +4 -4
- package/dist/commander.d.ts +8 -0
- package/dist/commander.d.ts.map +1 -1
- package/dist/commander.js +14 -13
- package/dist/commands/adapter.d.ts +12 -0
- package/dist/commands/adapter.d.ts.map +1 -0
- package/dist/commands/{harness.js → adapter.js} +35 -35
- package/dist/commands/agents.d.ts +3 -2
- package/dist/commands/agents.d.ts.map +1 -1
- package/dist/commands/agents.js +61 -60
- package/dist/commands/artifacts.d.ts +4 -0
- package/dist/commands/artifacts.d.ts.map +1 -0
- package/dist/commands/artifacts.js +143 -0
- package/dist/commands/backup.d.ts +1 -1
- package/dist/commands/backup.d.ts.map +1 -1
- package/dist/commands/backup.js +5 -2
- package/dist/commands/browse.d.ts.map +1 -1
- package/dist/commands/browse.js +310 -7
- package/dist/commands/checkpoint.d.ts +12 -0
- package/dist/commands/checkpoint.d.ts.map +1 -0
- package/dist/commands/checkpoint.js +162 -0
- package/dist/commands/context.d.ts +2 -2
- package/dist/commands/context.d.ts.map +1 -1
- package/dist/commands/context.js +3 -151
- package/dist/commands/decision.d.ts.map +1 -1
- package/dist/commands/decision.js +31 -7
- package/dist/commands/deinit.d.ts +2 -2
- package/dist/commands/deinit.js +15 -15
- package/dist/commands/doctor.js +23 -23
- package/dist/commands/governor.d.ts +4 -0
- package/dist/commands/governor.d.ts.map +1 -0
- package/dist/commands/{supervisor.js → governor.js} +133 -108
- package/dist/commands/init.d.ts +12 -12
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +44 -30
- package/dist/commands/{session.d.ts → journal.d.ts} +2 -2
- package/dist/commands/journal.d.ts.map +1 -0
- package/dist/commands/{scratch.js → journal.js} +47 -47
- package/dist/commands/policy.js +1 -1
- package/dist/commands/presence.js +2 -2
- package/dist/commands/sync.d.ts +1 -1
- package/dist/commands/sync.js +3 -3
- package/dist/commands/tunnel.d.ts +16 -0
- package/dist/commands/tunnel.d.ts.map +1 -1
- package/dist/commands/tunnel.js +193 -23
- package/dist/commands/web-fetch.js +1 -1
- package/dist/commands/web.d.ts +19 -0
- package/dist/commands/web.d.ts.map +1 -1
- package/dist/commands/web.js +51 -0
- package/dist/commands/work.d.ts +2 -1
- package/dist/commands/work.d.ts.map +1 -1
- package/dist/commands/work.js +55 -25
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +35 -28
- package/dist/core/{harnesses → adapters}/attest-projection.d.ts +2 -2
- package/dist/core/adapters/attest-projection.d.ts.map +1 -0
- package/dist/core/{harnesses → adapters}/attest.d.ts +16 -16
- package/dist/core/adapters/attest.d.ts.map +1 -0
- package/dist/core/{harnesses → adapters}/attest.js +9 -9
- package/dist/core/{harnesses → adapters}/attestation.d.ts +16 -16
- package/dist/core/adapters/attestation.d.ts.map +1 -0
- package/dist/core/{harnesses → adapters}/attestation.js +20 -20
- package/dist/core/{harnesses → adapters}/bench.d.ts +12 -12
- package/dist/core/adapters/bench.d.ts.map +1 -0
- package/dist/core/{harnesses → adapters}/bench.js +12 -12
- package/dist/core/adapters/index.d.ts +13 -0
- package/dist/core/adapters/index.d.ts.map +1 -0
- package/dist/core/adapters/index.js +6 -0
- package/dist/core/{harnesses → adapters}/profiles.d.ts +11 -11
- package/dist/core/adapters/profiles.d.ts.map +1 -0
- package/dist/core/{harnesses → adapters}/profiles.js +11 -11
- package/dist/core/adapters/registry.d.ts +15 -0
- package/dist/core/adapters/registry.d.ts.map +1 -0
- package/dist/core/{harnesses → adapters}/registry.js +11 -11
- package/dist/core/{harnesses → adapters}/types.d.ts +28 -23
- package/dist/core/adapters/types.d.ts.map +1 -0
- package/dist/core/{harnesses → adapters}/types.js +1 -1
- package/dist/core/agents/canonical-emit.d.ts +4 -4
- package/dist/core/agents/canonical-emit.js +5 -5
- package/dist/core/agents/cli-emit.js +1 -1
- package/dist/core/agents/cli.js +30 -26
- package/dist/core/agents/codex-replay.d.ts +1 -1
- package/dist/core/agents/codex-replay.js +6 -6
- package/dist/core/agents/coord-client.d.ts +21 -2
- package/dist/core/agents/coord-client.d.ts.map +1 -1
- package/dist/core/agents/coord-client.js +122 -27
- package/dist/core/agents/events/consume.d.ts +1 -1
- package/dist/core/agents/events/emit.d.ts +5 -6
- package/dist/core/agents/events/emit.d.ts.map +1 -1
- package/dist/core/agents/events/emit.js +2 -2
- package/dist/core/agents/render/prompt-context.d.ts +21 -9
- package/dist/core/agents/render/prompt-context.d.ts.map +1 -1
- package/dist/core/agents/render/prompt-context.js +82 -30
- package/dist/core/agents/render/session-context.d.ts +1 -1
- package/dist/core/agents/render/session-context.js +5 -5
- package/dist/core/agents/rules/claim-conflict.d.ts +2 -6
- package/dist/core/agents/rules/claim-conflict.d.ts.map +1 -1
- package/dist/core/agents/rules/claim-conflict.js +1 -1
- package/dist/core/agents/rules/commit-conflict.js +98 -22
- package/dist/core/agents/rules/stop-hook.d.ts +9 -9
- package/dist/core/agents/rules/stop-hook.d.ts.map +1 -1
- package/dist/core/agents/rules/stop-hook.js +23 -5
- package/dist/core/agents/rules/verdict.d.ts +14 -0
- package/dist/core/agents/rules/verdict.d.ts.map +1 -0
- package/dist/core/agents/rules/verdict.js +1 -0
- package/dist/core/agents/session-events.js +3 -3
- package/dist/core/agents/state/council.d.ts +1 -1
- package/dist/core/agents/state/council.js +1 -1
- package/dist/core/agents/state/heartbeat-projector.d.ts +3 -2
- package/dist/core/agents/state/heartbeat-projector.d.ts.map +1 -1
- package/dist/core/agents/state/heartbeat-projector.js +14 -10
- package/dist/core/agents/state/heartbeat-writer.d.ts +1 -1
- package/dist/core/agents/state/heartbeat-writer.js +12 -12
- package/dist/core/agents/state/{scratch.d.ts → journal.d.ts} +7 -7
- package/dist/core/agents/state/{scratch.d.ts.map → journal.d.ts.map} +1 -1
- package/dist/core/agents/state/{scratch.js → journal.js} +12 -12
- package/dist/core/agents/state/pidmap.d.ts +28 -4
- package/dist/core/agents/state/pidmap.d.ts.map +1 -1
- package/dist/core/agents/state/pidmap.js +130 -15
- package/dist/core/agents/state/proc-start.d.ts +95 -0
- package/dist/core/agents/state/proc-start.d.ts.map +1 -0
- package/dist/core/agents/state/proc-start.js +199 -0
- package/dist/core/agents/state/shell-mutation.d.ts +1 -1
- package/dist/core/agents/state/shell-mutation.js +1 -1
- package/dist/core/agents/state/stale-sweep.js +7 -7
- package/dist/core/artifacts/index.d.ts +86 -0
- package/dist/core/artifacts/index.d.ts.map +1 -0
- package/dist/core/artifacts/index.js +421 -0
- package/dist/core/config.d.ts +9 -2
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +26 -2
- package/dist/core/context/index.d.ts +12 -12
- package/dist/core/context/index.js +10 -10
- package/dist/core/governor/adapter-spread.d.ts +52 -0
- package/dist/core/governor/adapter-spread.d.ts.map +1 -0
- package/dist/core/governor/adapter-spread.js +52 -0
- package/dist/core/governor/index.d.ts +7 -0
- package/dist/core/governor/index.d.ts.map +1 -0
- package/dist/core/governor/index.js +6 -0
- package/dist/core/governor/plan-api.d.ts +38 -0
- package/dist/core/governor/plan-api.d.ts.map +1 -0
- package/dist/core/governor/plan-api.js +83 -0
- package/dist/core/governor/plan-read.d.ts +5 -0
- package/dist/core/governor/plan-read.d.ts.map +1 -0
- package/dist/core/{supervisor → governor}/plan-read.js +71 -51
- package/dist/core/governor/plan-types.d.ts +181 -0
- package/dist/core/governor/plan-types.d.ts.map +1 -0
- package/dist/core/{supervisor → governor}/plan-types.js +4 -4
- package/dist/core/governor/planning.d.ts +48 -0
- package/dist/core/governor/planning.d.ts.map +1 -0
- package/dist/core/{supervisor → governor}/planning.js +143 -94
- package/dist/core/governor/read.d.ts +6 -0
- package/dist/core/governor/read.d.ts.map +1 -0
- package/dist/core/governor/read.js +4 -0
- package/dist/core/governor/runner.d.ts +37 -0
- package/dist/core/governor/runner.d.ts.map +1 -0
- package/dist/core/{supervisor → governor}/runner.js +15 -15
- package/dist/core/governor/service-read.d.ts +6 -0
- package/dist/core/governor/service-read.d.ts.map +1 -0
- package/dist/core/{supervisor → governor}/service-read.js +12 -12
- package/dist/core/governor/service.d.ts +114 -0
- package/dist/core/governor/service.d.ts.map +1 -0
- package/dist/core/{supervisor → governor}/service.js +57 -57
- package/dist/core/governor/state.d.ts +116 -0
- package/dist/core/governor/state.d.ts.map +1 -0
- package/dist/core/{supervisor → governor}/state.js +290 -116
- package/dist/core/hooks/adapter/detect.d.ts +9 -0
- package/dist/core/hooks/{harness → adapter}/detect.d.ts.map +1 -1
- package/dist/core/hooks/{harness → adapter}/detect.js +8 -8
- package/dist/core/hooks/{harness → adapter}/events.d.ts +15 -14
- package/dist/core/hooks/adapter/events.d.ts.map +1 -0
- package/dist/core/hooks/{harness → adapter}/events.js +5 -5
- package/dist/core/hooks/{harness → adapter}/output.d.ts +20 -14
- package/dist/core/hooks/adapter/output.d.ts.map +1 -0
- package/dist/core/hooks/{harness → adapter}/output.js +30 -22
- package/dist/core/hooks/{harness → adapter}/parse.d.ts +5 -5
- package/dist/core/hooks/{harness → adapter}/parse.d.ts.map +1 -1
- package/dist/core/hooks/{harness → adapter}/parse.js +4 -4
- package/dist/core/hooks/{harness → adapter}/wiring.d.ts +15 -15
- package/dist/core/hooks/{harness → adapter}/wiring.d.ts.map +1 -1
- package/dist/core/hooks/{harness → adapter}/wiring.js +13 -13
- package/dist/core/hooks/cli.d.ts +3 -3
- package/dist/core/hooks/cli.js +175 -151
- package/dist/core/hooks/effects/image-capture.d.ts +5 -5
- package/dist/core/hooks/effects/image-capture.d.ts.map +1 -1
- package/dist/core/hooks/effects/image-capture.js +3 -3
- package/dist/core/hooks/effects/index.d.ts +12 -12
- package/dist/core/hooks/effects/index.d.ts.map +1 -1
- package/dist/core/hooks/effects/index.js +17 -17
- package/dist/core/hooks/events/emit.d.ts +2 -2
- package/dist/core/hooks/events/emit.d.ts.map +1 -1
- package/dist/core/hooks/events/emit.js +1 -1
- package/dist/core/hooks/events/rotate.js +1 -1
- package/dist/core/hooks/events/schema.d.ts +13 -5
- package/dist/core/hooks/events/schema.d.ts.map +1 -1
- package/dist/core/hooks/guard-path.d.ts +2 -2
- package/dist/core/hooks/guard-path.js +2 -2
- package/dist/core/hooks/index.d.ts +1 -1
- package/dist/core/hooks/index.d.ts.map +1 -1
- package/dist/core/hooks/resolve/anchor.d.ts +14 -5
- package/dist/core/hooks/resolve/anchor.d.ts.map +1 -1
- package/dist/core/hooks/resolve/anchor.js +64 -7
- package/dist/core/hooks/resolve/coord-root.d.ts +3 -3
- package/dist/core/hooks/resolve/coord-root.js +4 -4
- package/dist/core/hooks/resolve/intent.js +1 -1
- package/dist/core/hooks/resolve/owner.d.ts +1 -1
- package/dist/core/hooks/resolve/owner.d.ts.map +1 -1
- package/dist/core/hooks/resolve/owner.js +11 -5
- package/dist/core/{scratch → journal}/index.d.ts +25 -25
- package/dist/core/{scratch → journal}/index.d.ts.map +1 -1
- package/dist/core/{scratch → journal}/index.js +38 -38
- package/dist/core/policy/evaluate.d.ts +1 -1
- package/dist/core/policy/evaluate.d.ts.map +1 -1
- package/dist/core/policy/evaluate.js +7 -7
- package/dist/core/policy/types.d.ts +3 -3
- package/dist/core/policy/types.d.ts.map +1 -1
- package/dist/core/work/runner.d.ts.map +1 -1
- package/dist/core/work/runner.js +11 -2
- package/dist/core/work/state.d.ts +28 -3
- package/dist/core/work/state.d.ts.map +1 -1
- package/dist/core/work/state.js +148 -16
- package/dist/core/workflow/adapters.d.ts +17 -0
- package/dist/core/workflow/adapters.d.ts.map +1 -0
- package/dist/core/workflow/adapters.js +21 -0
- package/dist/core/workflow/approvals.js +6 -6
- package/dist/core/workflow/billing.d.ts +9 -9
- package/dist/core/workflow/billing.js +9 -9
- package/dist/core/workflow/child-env.d.ts +10 -2
- package/dist/core/workflow/child-env.d.ts.map +1 -1
- package/dist/core/workflow/child-env.js +12 -4
- package/dist/core/workflow/engine.d.ts +15 -5
- package/dist/core/workflow/engine.d.ts.map +1 -1
- package/dist/core/workflow/engine.js +151 -83
- package/dist/core/workflow/evidence-preflight.d.ts +24 -0
- package/dist/core/workflow/evidence-preflight.d.ts.map +1 -0
- package/dist/core/workflow/evidence-preflight.js +134 -0
- package/dist/core/workflow/index.d.ts +3 -2
- package/dist/core/workflow/index.d.ts.map +1 -1
- package/dist/core/workflow/index.js +2 -1
- package/dist/core/workflow/proof.d.ts +28 -5
- package/dist/core/workflow/proof.d.ts.map +1 -1
- package/dist/core/workflow/proof.js +77 -34
- package/dist/core/workflow/run-state.d.ts +1 -1
- package/dist/core/workflow/run-state.js +7 -7
- package/dist/core/workflow/sandbox-projection.d.ts +6 -6
- package/dist/core/workflow/sandbox-projection.d.ts.map +1 -1
- package/dist/core/workflow/sandbox-projection.js +11 -11
- package/dist/core/workflow/spawn-claude.d.ts +3 -3
- package/dist/core/workflow/spawn-claude.d.ts.map +1 -1
- package/dist/core/workflow/spawn-claude.js +28 -8
- package/dist/core/workflow/spawn-codex.d.ts +4 -4
- package/dist/core/workflow/spawn-codex.d.ts.map +1 -1
- package/dist/core/workflow/spawn-codex.js +26 -8
- package/dist/core/workflow/spawn-cursor.d.ts +4 -4
- package/dist/core/workflow/spawn-cursor.d.ts.map +1 -1
- package/dist/core/workflow/spawn-cursor.js +27 -8
- package/dist/core/workflow/spawn-failure.d.ts +15 -1
- package/dist/core/workflow/spawn-failure.d.ts.map +1 -1
- package/dist/core/workflow/spawn-failure.js +35 -1
- package/dist/core/workflow/specialists.js +2 -2
- package/dist/core/workflow/{journal.d.ts → transcript.d.ts} +8 -8
- package/dist/core/workflow/transcript.d.ts.map +1 -0
- package/dist/core/workflow/{journal.js → transcript.js} +14 -14
- package/dist/core/workflow/types.d.ts +119 -46
- package/dist/core/workflow/types.d.ts.map +1 -1
- package/dist/core/workflow/types.js +11 -1
- package/dist/core/workflow/validate.d.ts +1 -1
- package/dist/core/workflow/validate.js +1 -1
- package/dist/core/workflow/workspaces/cancellation.js +2 -2
- package/dist/core/workflow/workspaces/cleanup.js +2 -2
- package/dist/core/workflow/workspaces/execution.js +6 -6
- package/dist/core/workflow/workspaces/inspect.js +9 -9
- package/dist/core/workflow/workspaces/integration.js +14 -14
- package/dist/core/workflow/workspaces/lifecycle.d.ts +1 -1
- package/dist/core/workflow/workspaces/lifecycle.d.ts.map +1 -1
- package/dist/core/workflow/workspaces/lifecycle.js +9 -9
- package/dist/core/workflow/workspaces/local-git.d.ts.map +1 -1
- package/dist/core/workflow/workspaces/local-git.js +39 -5
- package/dist/core/workflow/workspaces/recovery.js +3 -3
- package/dist/core/workflow/workspaces/state.d.ts +1 -1
- package/dist/core/workflow/workspaces/state.d.ts.map +1 -1
- package/dist/core/workflow/workspaces/state.js +3 -3
- package/dist/core/workflow/workspaces/types.d.ts +1 -1
- package/dist/core/workflow/workspaces/types.d.ts.map +1 -1
- package/dist/lib/browser/asserts.d.ts +28 -0
- package/dist/lib/browser/asserts.d.ts.map +1 -0
- package/dist/lib/browser/asserts.js +152 -0
- package/dist/lib/browser/client.d.ts +49 -0
- package/dist/lib/browser/client.d.ts.map +1 -1
- package/dist/lib/browser/client.js +155 -14
- package/dist/lib/browser/content-checks.d.ts +108 -0
- package/dist/lib/browser/content-checks.d.ts.map +1 -0
- package/dist/lib/browser/content-checks.js +474 -0
- package/dist/lib/browser/critique.d.ts +91 -0
- package/dist/lib/browser/critique.d.ts.map +1 -0
- package/dist/lib/browser/critique.js +167 -0
- package/dist/lib/browser/geometry.d.ts +32 -0
- package/dist/lib/browser/geometry.d.ts.map +1 -1
- package/dist/lib/browser/geometry.js +244 -1
- package/dist/lib/browser/index.d.ts +4 -1
- package/dist/lib/browser/index.d.ts.map +1 -1
- package/dist/lib/browser/index.js +2 -0
- package/dist/lib/claude-desktop.d.ts.map +1 -1
- package/dist/lib/claude-desktop.js +4 -1
- package/dist/lib/council/index.d.ts +6 -6
- package/dist/lib/council/index.d.ts.map +1 -1
- package/dist/lib/council/index.js +8 -8
- package/dist/lib/exec.d.ts +7 -0
- package/dist/lib/exec.d.ts.map +1 -1
- package/dist/lib/exec.js +6 -3
- package/dist/lib/identities/assume.d.ts +2 -2
- package/dist/lib/identities/assume.js +7 -7
- package/dist/lib/instructions/apply.d.ts +3 -3
- package/dist/lib/instructions/apply.d.ts.map +1 -1
- package/dist/lib/instructions/apply.js +75 -27
- package/dist/lib/instructions/host-addendum.d.ts +54 -0
- package/dist/lib/instructions/host-addendum.d.ts.map +1 -0
- package/dist/lib/instructions/host-addendum.js +107 -0
- package/dist/lib/instructions/templates.d.ts +10 -3
- package/dist/lib/instructions/templates.d.ts.map +1 -1
- package/dist/lib/instructions/templates.js +41 -12
- package/dist/lib/machine.d.ts +2 -2
- package/dist/lib/machine.js +2 -2
- package/package.json +26 -21
- package/schemas/config.schema.json +26 -1
- package/src/commander.ts +22 -13
- package/src/commands/{harness.ts → adapter.ts} +46 -46
- package/src/commands/agents.ts +71 -64
- package/src/commands/artifacts.ts +168 -0
- package/src/commands/backup.ts +47 -33
- package/src/commands/browse.ts +438 -2
- package/src/commands/checkpoint.ts +196 -0
- package/src/commands/context.ts +3 -176
- package/src/commands/decision.ts +41 -7
- package/src/commands/deinit.ts +16 -16
- package/src/commands/doctor.ts +28 -28
- package/src/commands/{supervisor.ts → governor.ts} +184 -154
- package/src/commands/init.ts +50 -34
- package/src/commands/{scratch.ts → journal.ts} +60 -60
- package/src/commands/policy.ts +1 -1
- package/src/commands/presence.ts +2 -2
- package/src/commands/sync.ts +3 -3
- package/src/commands/tunnel.ts +237 -34
- package/src/commands/web-fetch.ts +1 -1
- package/src/commands/web.ts +56 -1
- package/src/commands/work.ts +72 -38
- package/src/commands/workflow.ts +43 -34
- package/src/core/{harnesses → adapters}/attest-projection.ts +2 -2
- package/src/core/{harnesses → adapters}/attest.ts +27 -27
- package/src/core/{harnesses → adapters}/attestation.ts +41 -41
- package/src/core/{harnesses → adapters}/bench.ts +34 -43
- package/src/core/adapters/index.ts +56 -0
- package/src/core/{harnesses → adapters}/profiles.ts +16 -16
- package/src/core/{harnesses → adapters}/registry.ts +23 -23
- package/src/core/{harnesses → adapters}/types.ts +28 -23
- package/src/core/agents/canonical-emit.ts +6 -6
- package/src/core/agents/cli-emit.ts +1 -1
- package/src/core/agents/cli.ts +30 -28
- package/src/core/agents/codex-replay.ts +6 -6
- package/src/core/agents/coord-client.ts +119 -28
- package/src/core/agents/events/consume.ts +1 -1
- package/src/core/agents/events/emit.ts +7 -6
- package/src/core/agents/render/prompt-context.ts +107 -31
- package/src/core/agents/render/session-context.ts +6 -6
- package/src/core/agents/rules/claim-conflict.ts +4 -7
- package/src/core/agents/rules/commit-conflict.ts +103 -22
- package/src/core/agents/rules/stop-hook.ts +33 -17
- package/src/core/agents/rules/verdict.ts +13 -0
- package/src/core/agents/session-events.ts +4 -4
- package/src/core/agents/state/council.ts +1 -1
- package/src/core/agents/state/heartbeat-projector.ts +16 -12
- package/src/core/agents/state/heartbeat-writer.ts +12 -12
- package/src/core/agents/state/{scratch.ts → journal.ts} +12 -12
- package/src/core/agents/state/pidmap.ts +130 -15
- package/src/core/agents/state/proc-start.ts +208 -0
- package/src/core/agents/state/shell-mutation.ts +1 -1
- package/src/core/agents/state/stale-sweep.ts +7 -7
- package/src/core/artifacts/index.ts +557 -0
- package/src/core/config.ts +30 -2
- package/src/core/context/index.ts +15 -15
- package/src/core/governor/adapter-spread.ts +82 -0
- package/src/core/governor/index.ts +91 -0
- package/src/core/governor/plan-api.ts +115 -0
- package/src/core/{supervisor → governor}/plan-read.ts +120 -96
- package/src/core/{supervisor → governor}/plan-types.ts +64 -50
- package/src/core/{supervisor → governor}/planning.ts +240 -188
- package/src/core/governor/read.ts +59 -0
- package/src/core/{supervisor → governor}/runner.ts +39 -39
- package/src/core/{supervisor → governor}/service-read.ts +22 -22
- package/src/core/{supervisor → governor}/service.ts +117 -119
- package/src/core/{supervisor → governor}/state.ts +389 -174
- package/src/core/hooks/adapter/detect.ts +30 -0
- package/src/core/hooks/{harness → adapter}/events.ts +16 -14
- package/src/core/hooks/{harness → adapter}/output.ts +31 -23
- package/src/core/hooks/{harness → adapter}/parse.ts +5 -5
- package/src/core/hooks/{harness → adapter}/wiring.ts +21 -21
- package/src/core/hooks/cli.ts +185 -162
- package/src/core/hooks/effects/image-capture.ts +6 -6
- package/src/core/hooks/effects/index.ts +17 -17
- package/src/core/hooks/events/emit.ts +3 -3
- package/src/core/hooks/events/rotate.ts +1 -1
- package/src/core/hooks/events/schema.ts +15 -7
- package/src/core/hooks/guard-path.ts +2 -2
- package/src/core/hooks/index.ts +1 -1
- package/src/core/hooks/resolve/anchor.ts +63 -8
- package/src/core/hooks/resolve/coord-root.ts +4 -4
- package/src/core/hooks/resolve/intent.ts +1 -1
- package/src/core/hooks/resolve/owner.ts +11 -5
- package/src/core/{scratch → journal}/index.ts +53 -53
- package/src/core/policy/evaluate.ts +8 -8
- package/src/core/policy/types.ts +3 -3
- package/src/core/work/runner.ts +11 -2
- package/src/core/work/state.ts +185 -21
- package/src/core/workflow/adapters.ts +33 -0
- package/src/core/workflow/approvals.ts +7 -7
- package/src/core/workflow/billing.ts +12 -12
- package/src/core/workflow/child-env.ts +13 -4
- package/src/core/workflow/engine.ts +166 -90
- package/src/core/workflow/evidence-preflight.ts +165 -0
- package/src/core/workflow/index.ts +6 -3
- package/src/core/workflow/proof.ts +94 -48
- package/src/core/workflow/run-state.ts +7 -7
- package/src/core/workflow/sandbox-projection.ts +16 -16
- package/src/core/workflow/spawn-claude.ts +34 -12
- package/src/core/workflow/spawn-codex.ts +30 -12
- package/src/core/workflow/spawn-cursor.ts +31 -12
- package/src/core/workflow/spawn-failure.ts +41 -1
- package/src/core/workflow/specialists.ts +2 -2
- package/src/core/workflow/{journal.ts → transcript.ts} +16 -16
- package/src/core/workflow/types.ts +130 -46
- package/src/core/workflow/validate.ts +1 -1
- package/src/core/workflow/workspaces/cancellation.ts +2 -2
- package/src/core/workflow/workspaces/cleanup.ts +2 -2
- package/src/core/workflow/workspaces/execution.ts +6 -6
- package/src/core/workflow/workspaces/inspect.ts +14 -11
- package/src/core/workflow/workspaces/integration.ts +18 -14
- package/src/core/workflow/workspaces/lifecycle.ts +10 -10
- package/src/core/workflow/workspaces/local-git.ts +47 -5
- package/src/core/workflow/workspaces/recovery.ts +3 -3
- package/src/core/workflow/workspaces/state.ts +4 -3
- package/src/core/workflow/workspaces/types.ts +1 -1
- package/src/lib/browser/asserts.ts +177 -0
- package/src/lib/browser/client.ts +189 -14
- package/src/lib/browser/content-checks.ts +571 -0
- package/src/lib/browser/critique.ts +231 -0
- package/src/lib/browser/geometry.ts +297 -1
- package/src/lib/browser/index.ts +34 -0
- package/src/lib/claude-desktop.ts +4 -1
- package/src/lib/council/index.ts +9 -9
- package/src/lib/exec.ts +13 -3
- package/src/lib/identities/assume.ts +7 -7
- package/src/lib/instructions/apply.ts +87 -25
- package/src/lib/instructions/host-addendum.ts +126 -0
- package/src/lib/instructions/templates.ts +44 -15
- package/src/lib/machine.ts +2 -2
- package/dist/commands/harness.d.ts +0 -12
- package/dist/commands/harness.d.ts.map +0 -1
- package/dist/commands/scratch.d.ts +0 -4
- package/dist/commands/scratch.d.ts.map +0 -1
- package/dist/commands/session.d.ts.map +0 -1
- package/dist/commands/session.js +0 -162
- package/dist/commands/supervisor.d.ts +0 -4
- package/dist/commands/supervisor.d.ts.map +0 -1
- package/dist/core/harnesses/attest-projection.d.ts.map +0 -1
- package/dist/core/harnesses/attest.d.ts.map +0 -1
- package/dist/core/harnesses/attestation.d.ts.map +0 -1
- package/dist/core/harnesses/bench.d.ts.map +0 -1
- package/dist/core/harnesses/index.d.ts +0 -13
- package/dist/core/harnesses/index.d.ts.map +0 -1
- package/dist/core/harnesses/index.js +0 -6
- package/dist/core/harnesses/profiles.d.ts.map +0 -1
- package/dist/core/harnesses/registry.d.ts +0 -15
- package/dist/core/harnesses/registry.d.ts.map +0 -1
- package/dist/core/harnesses/types.d.ts.map +0 -1
- package/dist/core/hooks/harness/detect.d.ts +0 -9
- package/dist/core/hooks/harness/events.d.ts.map +0 -1
- package/dist/core/hooks/harness/output.d.ts.map +0 -1
- package/dist/core/supervisor/index.d.ts +0 -7
- package/dist/core/supervisor/index.d.ts.map +0 -1
- package/dist/core/supervisor/index.js +0 -6
- package/dist/core/supervisor/plan-api.d.ts +0 -23
- package/dist/core/supervisor/plan-api.d.ts.map +0 -1
- package/dist/core/supervisor/plan-api.js +0 -50
- package/dist/core/supervisor/plan-read.d.ts +0 -5
- package/dist/core/supervisor/plan-read.d.ts.map +0 -1
- package/dist/core/supervisor/plan-types.d.ts +0 -170
- package/dist/core/supervisor/plan-types.d.ts.map +0 -1
- package/dist/core/supervisor/planning.d.ts +0 -33
- package/dist/core/supervisor/planning.d.ts.map +0 -1
- package/dist/core/supervisor/read.d.ts +0 -6
- package/dist/core/supervisor/read.d.ts.map +0 -1
- package/dist/core/supervisor/read.js +0 -4
- package/dist/core/supervisor/runner.d.ts +0 -37
- package/dist/core/supervisor/runner.d.ts.map +0 -1
- package/dist/core/supervisor/service-read.d.ts +0 -6
- package/dist/core/supervisor/service-read.d.ts.map +0 -1
- package/dist/core/supervisor/service.d.ts +0 -114
- package/dist/core/supervisor/service.d.ts.map +0 -1
- package/dist/core/supervisor/state.d.ts +0 -95
- package/dist/core/supervisor/state.d.ts.map +0 -1
- package/dist/core/workflow/harnesses.d.ts +0 -17
- package/dist/core/workflow/harnesses.d.ts.map +0 -1
- package/dist/core/workflow/harnesses.js +0 -21
- package/dist/core/workflow/journal.d.ts.map +0 -1
- package/src/commands/session.ts +0 -187
- package/src/core/harnesses/index.ts +0 -56
- package/src/core/hooks/harness/detect.ts +0 -30
- package/src/core/supervisor/index.ts +0 -89
- package/src/core/supervisor/plan-api.ts +0 -73
- package/src/core/supervisor/read.ts +0 -59
- package/src/core/workflow/harnesses.ts +0 -33
- /package/dist/core/{harnesses → adapters}/attest-projection.js +0 -0
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Process start-token probe: the "is this still the same process?" half of pid
|
|
3
|
+
* identity.
|
|
4
|
+
*
|
|
5
|
+
* A pid alone does not identify a process. Operating systems hand numbers back
|
|
6
|
+
* out, and faster than intuition suggests: one development machine runs a
|
|
7
|
+
* `pid_max` of 99999 against roughly 100 new processes a second, turning the
|
|
8
|
+
* whole space over about every quarter hour. Anything that remembers a pid for
|
|
9
|
+
* longer than that is remembering a number, not a process.
|
|
10
|
+
*
|
|
11
|
+
* A start token pins the pair down. Two processes can share a pid but never a
|
|
12
|
+
* pid *and* a start instant, so a recorded `(pid, token)` either still names the
|
|
13
|
+
* process that was recorded or plainly does not.
|
|
14
|
+
*
|
|
15
|
+
* The token is opaque on purpose. Callers compare it for equality and nothing
|
|
16
|
+
* else, which is why no clock arithmetic appears here: Linux reports ticks since
|
|
17
|
+
* boot and BSD reports a formatted date, and neither needs converting to be
|
|
18
|
+
* compared with itself. A platform that will not answer returns null, meaning
|
|
19
|
+
* "unverifiable" — callers fall back to a plain liveness check, which is where
|
|
20
|
+
* they were before this existed.
|
|
21
|
+
*
|
|
22
|
+
* Two rules keep comparison honest, and both exist because getting them wrong
|
|
23
|
+
* reports a *false* mismatch, which prunes a live row and hands the identity
|
|
24
|
+
* walk the same wrong answer this module was written to stop:
|
|
25
|
+
*
|
|
26
|
+
* 1. One machine uses one probe. The probe is chosen by capability and locked
|
|
27
|
+
* in, never fallen back from, so a transient read failure cannot answer in
|
|
28
|
+
* the other probe's dialect and read as a recycled pid.
|
|
29
|
+
* 2. A probe's output must not depend on who asked. The `ps` text is formatted
|
|
30
|
+
* through the caller's locale and timezone, so both are pinned; without that,
|
|
31
|
+
* two callers reading the same live process disagree.
|
|
32
|
+
*/
|
|
33
|
+
import { spawnSync } from "node:child_process";
|
|
34
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
35
|
+
import { coordEnv } from "../../../lib/env.js";
|
|
36
|
+
/**
|
|
37
|
+
* The `ps` probe is text formatted by `strftime("%c", localtime(...))`, so its
|
|
38
|
+
* output moves with `TZ` and `LC_TIME`. A hook running under `LC_ALL=C` (git
|
|
39
|
+
* sets it routinely) and a shell running under the user's locale would render
|
|
40
|
+
* the same start instant two different ways and call each other liars. Pinning
|
|
41
|
+
* both makes the rendering a property of the process, not of its reader.
|
|
42
|
+
*/
|
|
43
|
+
const PS_ENV_PINS = { TZ: "UTC", LC_ALL: "C" };
|
|
44
|
+
let cachedProbe;
|
|
45
|
+
let cachedBootId;
|
|
46
|
+
/**
|
|
47
|
+
* Which probe this machine uses, decided once.
|
|
48
|
+
*
|
|
49
|
+
* `HARNERY_PID_PROBE` forces the choice. That exists so the `ps` path can be
|
|
50
|
+
* exercised on a procfs machine — it is the same code on either OS, and running
|
|
51
|
+
* it only on hardware we happen to own is how a branch rots.
|
|
52
|
+
*/
|
|
53
|
+
export function startTokenProbe() {
|
|
54
|
+
const override = coordEnv("PID_PROBE");
|
|
55
|
+
if (override === "procfs" || override === "ps")
|
|
56
|
+
return override;
|
|
57
|
+
if (cachedProbe === undefined) {
|
|
58
|
+
cachedProbe = existsSync("/proc/self/stat") ? "procfs" : "ps";
|
|
59
|
+
}
|
|
60
|
+
return cachedProbe;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* A short, stable identifier for the current boot, or null where there is none.
|
|
64
|
+
*
|
|
65
|
+
* Linux counts a process's start in ticks *since boot*, so the number alone
|
|
66
|
+
* repeats every time the machine restarts. Pid-map rows live in the working
|
|
67
|
+
* tree and outlive reboots, which is the whole exposure: a stale row for pid
|
|
68
|
+
* 1234 at 45.23s after boot matches a fresh process that happens to land on the
|
|
69
|
+
* same pid at the same moment of the next boot, and that false match is exactly
|
|
70
|
+
* the bug the token exists to prevent. Scoping the count to its boot removes
|
|
71
|
+
* the coincidence. BSD needs no equivalent, since its token is an absolute
|
|
72
|
+
* date.
|
|
73
|
+
*/
|
|
74
|
+
function bootId() {
|
|
75
|
+
if (cachedBootId !== undefined)
|
|
76
|
+
return cachedBootId;
|
|
77
|
+
try {
|
|
78
|
+
const raw = readFileSync("/proc/sys/kernel/random/boot_id", "utf8").trim().replace(/-/g, "");
|
|
79
|
+
cachedBootId = /^[0-9a-f]{8,}$/.test(raw) ? raw.slice(0, 8) : null;
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
cachedBootId = null;
|
|
83
|
+
}
|
|
84
|
+
return cachedBootId;
|
|
85
|
+
}
|
|
86
|
+
/** Forget the cached probe and boot id. Tests only. */
|
|
87
|
+
export function resetStartTokenCaches() {
|
|
88
|
+
cachedProbe = undefined;
|
|
89
|
+
cachedBootId = undefined;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* `l[<boot>.]<ticks since boot>` from `/proc/<pid>/stat`, with no subprocess.
|
|
93
|
+
*
|
|
94
|
+
* The tick count is field 22, counted from the end of the comm field rather
|
|
95
|
+
* than by splitting the whole line, because comm is the executable name in
|
|
96
|
+
* parentheses and may itself contain spaces and parens. The boot segment is
|
|
97
|
+
* dropped rather than faked when the kernel will not name its boot, which
|
|
98
|
+
* yields the pre-boot-id shape that `tokensAgree` still accepts.
|
|
99
|
+
*/
|
|
100
|
+
export function procfsStartToken(pid) {
|
|
101
|
+
let stat;
|
|
102
|
+
try {
|
|
103
|
+
stat = readFileSync(`/proc/${pid}/stat`, "utf8");
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
return null; // dead pid, or no procfs — either way, nothing to say
|
|
107
|
+
}
|
|
108
|
+
const afterComm = stat.slice(stat.lastIndexOf(") ") + 2);
|
|
109
|
+
// Fields after comm, 0-based: 0 is state (field 3), so starttime (field 22)
|
|
110
|
+
// sits at 19.
|
|
111
|
+
const ticks = afterComm.split(" ")[19];
|
|
112
|
+
if (!ticks || !/^\d+$/.test(ticks))
|
|
113
|
+
return null;
|
|
114
|
+
const boot = bootId();
|
|
115
|
+
return boot ? `l${boot}.${ticks}` : `l${ticks}`;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* `p<start date>` from one `ps -o lstart=`, for machines without procfs.
|
|
119
|
+
*
|
|
120
|
+
* Second resolution is ample: telling two runs of one pid apart would need the
|
|
121
|
+
* entire pid space to recycle inside a second. The runner is injectable so the
|
|
122
|
+
* parsing and the env pinning can be tested without a process to look at.
|
|
123
|
+
*/
|
|
124
|
+
export function psStartToken(pid, run = defaultPsRun) {
|
|
125
|
+
let out;
|
|
126
|
+
try {
|
|
127
|
+
out = run(pid);
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
return null; // no ps on this machine
|
|
131
|
+
}
|
|
132
|
+
if (out.status !== 0)
|
|
133
|
+
return null;
|
|
134
|
+
const lstart = (out.stdout ?? "").split("\n")[0]?.trim().replace(/\s+/g, " ");
|
|
135
|
+
return lstart ? `p${lstart}` : null;
|
|
136
|
+
}
|
|
137
|
+
function defaultPsRun(pid) {
|
|
138
|
+
const out = spawnSync("ps", ["-o", "lstart=", "-p", String(pid)], {
|
|
139
|
+
encoding: "utf8",
|
|
140
|
+
timeout: 2000,
|
|
141
|
+
env: { ...process.env, ...PS_ENV_PINS },
|
|
142
|
+
});
|
|
143
|
+
return { status: out.status, stdout: out.stdout ?? "" };
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* An opaque token identifying *this run* of `pid`, or null when the platform
|
|
147
|
+
* will not say.
|
|
148
|
+
*/
|
|
149
|
+
export function processStartToken(pid) {
|
|
150
|
+
if (!Number.isFinite(pid) || pid <= 0)
|
|
151
|
+
return null;
|
|
152
|
+
return startTokenProbe() === "procfs" ? procfsStartToken(pid) : psStartToken(pid);
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Do two tokens describe the same run?
|
|
156
|
+
*
|
|
157
|
+
* Equality, plus one concession: a row written before tokens carried a boot
|
|
158
|
+
* segment recorded the tick count alone, so it is compared on the part it
|
|
159
|
+
* actually recorded. Refusing that would call every pre-upgrade row a recycled
|
|
160
|
+
* pid and prune a working machine's live rows the first time the new code ran.
|
|
161
|
+
* Such a row loses its reboot protection until the next write rewrites it,
|
|
162
|
+
* which is a strictly better position than the one it came from.
|
|
163
|
+
*/
|
|
164
|
+
export function tokensAgree(recorded, current) {
|
|
165
|
+
if (recorded === current)
|
|
166
|
+
return true;
|
|
167
|
+
// Only the Linux form has a boot segment to disagree about, and only when
|
|
168
|
+
// exactly one side carries one is this a shape difference rather than two
|
|
169
|
+
// genuinely different start instants.
|
|
170
|
+
if (recorded[0] !== "l" || current[0] !== "l")
|
|
171
|
+
return false;
|
|
172
|
+
if (recorded.includes(".") === current.includes("."))
|
|
173
|
+
return false;
|
|
174
|
+
return ticksOf(recorded) === ticksOf(current);
|
|
175
|
+
}
|
|
176
|
+
function ticksOf(token) {
|
|
177
|
+
const dot = token.indexOf(".");
|
|
178
|
+
return dot === -1 ? token.slice(1) : token.slice(dot + 1);
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Does `pid` still name the process a row recorded?
|
|
182
|
+
*
|
|
183
|
+
* Three answers, and the difference between the last two matters:
|
|
184
|
+
*
|
|
185
|
+
* - `"match"` — recorded token, current token, same run. The row is trustworthy.
|
|
186
|
+
* - `"mismatch"` — both present and different. The pid was recycled. This is
|
|
187
|
+
* the case a liveness check cannot see, because a recycled pid is alive.
|
|
188
|
+
* - `"unverified"` — no recorded token (a row written before tokens existed) or
|
|
189
|
+
* no current one (an unsupported platform). Callers treat this the way they
|
|
190
|
+
* treated every row previously: trust it if the pid is alive.
|
|
191
|
+
*/
|
|
192
|
+
export function checkPidToken(pid, recorded) {
|
|
193
|
+
if (!recorded)
|
|
194
|
+
return "unverified";
|
|
195
|
+
const current = processStartToken(pid);
|
|
196
|
+
if (!current)
|
|
197
|
+
return "unverified";
|
|
198
|
+
return tokensAgree(recorded, current) ? "match" : "mismatch";
|
|
199
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* A heuristic parser that extracts file paths likely to be mutated by a
|
|
3
3
|
* shell command. Used by
|
|
4
|
-
* the cursor + codex
|
|
4
|
+
* the cursor + codex adapter adapters to emit SHELL_CLAIM_CANDIDATE log lines
|
|
5
5
|
* (warn-only, never blocks).
|
|
6
6
|
*
|
|
7
7
|
* Two cases:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* A heuristic parser that extracts file paths likely to be mutated by a
|
|
3
3
|
* shell command. Used by
|
|
4
|
-
* the cursor + codex
|
|
4
|
+
* the cursor + codex adapter adapters to emit SHELL_CLAIM_CANDIDATE log lines
|
|
5
5
|
* (warn-only, never blocks).
|
|
6
6
|
*
|
|
7
7
|
* Two cases:
|
|
@@ -13,8 +13,8 @@ import { existsSync, readdirSync, readFileSync, statSync, unlinkSync } from "nod
|
|
|
13
13
|
import { join } from "node:path";
|
|
14
14
|
import { coordFreshnessSeconds } from "../../config.js";
|
|
15
15
|
import { emit } from "../events/emit.js";
|
|
16
|
-
/** platform →
|
|
17
|
-
function
|
|
16
|
+
/** platform → adapter, for the swept-event envelope (mirrors heartbeat-writer's adapterOf). */
|
|
17
|
+
function adapterFromPlatform(platform) {
|
|
18
18
|
if (platform === "cursor")
|
|
19
19
|
return "cursor";
|
|
20
20
|
if (platform === "codex")
|
|
@@ -22,13 +22,13 @@ function harnessFromPlatform(platform) {
|
|
|
22
22
|
return "claude-code";
|
|
23
23
|
}
|
|
24
24
|
/** Emit a best-effort health.heartbeat_swept event. Telemetry only, never throws. */
|
|
25
|
-
function emitSwept(coordRoot, instanceId,
|
|
25
|
+
function emitSwept(coordRoot, instanceId, adapter, sessionId, reason, ageSecs) {
|
|
26
26
|
try {
|
|
27
27
|
emit(coordRoot, {
|
|
28
28
|
event_type: "health.heartbeat_swept",
|
|
29
29
|
instance_id: instanceId,
|
|
30
30
|
session_id: sessionId,
|
|
31
|
-
|
|
31
|
+
adapter,
|
|
32
32
|
source: "agent-coord",
|
|
33
33
|
data: { reason, ...(ageSecs !== undefined ? { age_secs: ageSecs } : {}) },
|
|
34
34
|
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
@@ -98,7 +98,7 @@ export function staleSweep(coordRoot) {
|
|
|
98
98
|
continue;
|
|
99
99
|
}
|
|
100
100
|
const instanceId = parsed.instance_id ?? idFromFile;
|
|
101
|
-
const
|
|
101
|
+
const adapter = adapterFromPlatform(parsed.platform);
|
|
102
102
|
const sessionId = parsed.session_id ?? instanceId;
|
|
103
103
|
const ts = parsed.last_heartbeat
|
|
104
104
|
? Math.floor(Date.parse(parsed.last_heartbeat) / 1000)
|
|
@@ -108,7 +108,7 @@ export function staleSweep(coordRoot) {
|
|
|
108
108
|
if (mtimeSecs(path) < cutoff) {
|
|
109
109
|
unlinkSync(path);
|
|
110
110
|
heartbeatsRemoved.push(f);
|
|
111
|
-
emitSwept(coordRoot, instanceId,
|
|
111
|
+
emitSwept(coordRoot, instanceId, adapter, sessionId, "missing_ts");
|
|
112
112
|
}
|
|
113
113
|
else if (parsed.instance_id) {
|
|
114
114
|
liveInstanceIds.add(parsed.instance_id);
|
|
@@ -119,7 +119,7 @@ export function staleSweep(coordRoot) {
|
|
|
119
119
|
// Legitimate stale prune (valid timestamp, past the freshness cutoff).
|
|
120
120
|
unlinkSync(path);
|
|
121
121
|
heartbeatsRemoved.push(f);
|
|
122
|
-
emitSwept(coordRoot, instanceId,
|
|
122
|
+
emitSwept(coordRoot, instanceId, adapter, sessionId, "stale", nowSec - ts);
|
|
123
123
|
continue;
|
|
124
124
|
}
|
|
125
125
|
if (parsed.instance_id)
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Repository-local working artifacts.
|
|
3
|
+
*
|
|
4
|
+
* Artifacts are file trees that should survive an agent session but should not
|
|
5
|
+
* become project records: screenshots, exports, audit dumps, rollback inputs,
|
|
6
|
+
* and similar material. Each direct child of `.harnery/artifacts/` is one
|
|
7
|
+
* managed unit with a small manifest. Cleanup fails closed: only a valid,
|
|
8
|
+
* expired, inactive, untracked managed unit is deletable.
|
|
9
|
+
*/
|
|
10
|
+
export declare const ARTIFACTS_DIR: string;
|
|
11
|
+
export declare const ARTIFACT_MANIFEST = ".harnery-artifact.json";
|
|
12
|
+
export declare const ARTIFACT_SCHEMA_VERSION: 1;
|
|
13
|
+
export interface ArtifactActor {
|
|
14
|
+
instance_id: string;
|
|
15
|
+
session_id?: string;
|
|
16
|
+
name?: string;
|
|
17
|
+
}
|
|
18
|
+
export interface ArtifactManifestV1 {
|
|
19
|
+
schema_version: typeof ARTIFACT_SCHEMA_VERSION;
|
|
20
|
+
artifact_id: string;
|
|
21
|
+
slug: string;
|
|
22
|
+
purpose: string;
|
|
23
|
+
created_at: string;
|
|
24
|
+
created_by?: ArtifactActor;
|
|
25
|
+
retention: {
|
|
26
|
+
expires_at: string;
|
|
27
|
+
renewed_at?: string;
|
|
28
|
+
reason?: string;
|
|
29
|
+
};
|
|
30
|
+
released_at?: string;
|
|
31
|
+
released_by?: ArtifactActor;
|
|
32
|
+
}
|
|
33
|
+
export type ArtifactClassification = "managed-active" | "managed-current" | "managed-expired" | "managed-tracked" | "invalid-manifest" | "unmanaged" | "symlink" | "unknown";
|
|
34
|
+
export interface ArtifactInventoryEntry {
|
|
35
|
+
name: string;
|
|
36
|
+
path: string;
|
|
37
|
+
relative_path: string;
|
|
38
|
+
classification: ArtifactClassification;
|
|
39
|
+
reason: string;
|
|
40
|
+
action: "keep" | "would-delete" | "deleted";
|
|
41
|
+
bytes: number | null;
|
|
42
|
+
artifact_id: string | null;
|
|
43
|
+
slug: string | null;
|
|
44
|
+
created_at: string | null;
|
|
45
|
+
expires_at: string | null;
|
|
46
|
+
owner_instance_id: string | null;
|
|
47
|
+
}
|
|
48
|
+
export interface ArtifactCreateInput {
|
|
49
|
+
slug: string;
|
|
50
|
+
purpose: string;
|
|
51
|
+
retentionDays: number;
|
|
52
|
+
actor?: ArtifactActor;
|
|
53
|
+
now?: Date;
|
|
54
|
+
id?: string;
|
|
55
|
+
}
|
|
56
|
+
export interface ArtifactMutationInput {
|
|
57
|
+
actor?: ArtifactActor;
|
|
58
|
+
now?: Date;
|
|
59
|
+
}
|
|
60
|
+
export declare function artifactsRoot(repoRoot: string): string;
|
|
61
|
+
/** Public config-aware default for embedding hosts that create artifact units. */
|
|
62
|
+
export declare function configuredArtifactRetentionDays(repoRoot: string): number;
|
|
63
|
+
export declare function createArtifact(repoRoot: string, input: ArtifactCreateInput): {
|
|
64
|
+
path: string;
|
|
65
|
+
manifest: ArtifactManifestV1;
|
|
66
|
+
};
|
|
67
|
+
export declare function inventoryArtifacts(repoRoot: string, opts?: {
|
|
68
|
+
now?: Date;
|
|
69
|
+
freshnessSeconds?: number;
|
|
70
|
+
}): ArtifactInventoryEntry[];
|
|
71
|
+
export declare function showArtifact(repoRoot: string, ref: string, opts?: {
|
|
72
|
+
now?: Date;
|
|
73
|
+
freshnessSeconds?: number;
|
|
74
|
+
}): {
|
|
75
|
+
entry: ArtifactInventoryEntry;
|
|
76
|
+
manifest: ArtifactManifestV1;
|
|
77
|
+
};
|
|
78
|
+
export declare function renewArtifact(repoRoot: string, ref: string, days: number, reason: string, input?: ArtifactMutationInput): ArtifactManifestV1;
|
|
79
|
+
export declare function releaseArtifact(repoRoot: string, ref: string, input?: ArtifactMutationInput): ArtifactManifestV1;
|
|
80
|
+
export declare function cleanArtifacts(repoRoot: string, opts?: {
|
|
81
|
+
yes?: boolean;
|
|
82
|
+
now?: Date;
|
|
83
|
+
freshnessSeconds?: number;
|
|
84
|
+
}): ArtifactInventoryEntry[];
|
|
85
|
+
export declare function resolveArtifactRef(repoRoot: string, ref: string): string;
|
|
86
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/artifacts/index.ts"],"names":[],"mappings":"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"}
|