open-multi-agent-kit 0.98.4 → 0.99.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/CHANGELOG.md +36 -0
- package/README.md +4 -2
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +1 -0
- package/dist/cli/help.js.map +1 -1
- package/dist/commands/run-command.d.ts +2 -1
- package/dist/commands/run-command.d.ts.map +1 -1
- package/dist/commands/run-command.js +9 -1
- package/dist/commands/run-command.js.map +1 -1
- package/dist/commands/verified-run-cli.d.ts +6 -0
- package/dist/commands/verified-run-cli.d.ts.map +1 -0
- package/dist/commands/verified-run-cli.js +190 -0
- package/dist/commands/verified-run-cli.js.map +1 -0
- package/dist/core/agent-session-services.d.ts +8 -1
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +41 -0
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session.d.ts +7 -8
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +80 -43
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/devin-harness-dispatch.d.ts +12 -0
- package/dist/core/devin-harness-dispatch.d.ts.map +1 -0
- package/dist/core/devin-harness-dispatch.js +12 -0
- package/dist/core/devin-harness-dispatch.js.map +1 -0
- package/dist/core/devin-harness.d.ts +53 -0
- package/dist/core/devin-harness.d.ts.map +1 -0
- package/dist/core/devin-harness.js +112 -0
- package/dist/core/devin-harness.js.map +1 -0
- package/dist/core/domain-dispatch.d.ts +4 -1
- package/dist/core/domain-dispatch.d.ts.map +1 -1
- package/dist/core/domain-dispatch.js +5 -0
- package/dist/core/domain-dispatch.js.map +1 -1
- package/dist/core/domain-loadouts-provider-harness.d.ts +12 -0
- package/dist/core/domain-loadouts-provider-harness.d.ts.map +1 -0
- package/dist/core/domain-loadouts-provider-harness.js +122 -0
- package/dist/core/domain-loadouts-provider-harness.js.map +1 -0
- package/dist/core/domain-loadouts.d.ts +2 -33
- package/dist/core/domain-loadouts.d.ts.map +1 -1
- package/dist/core/domain-loadouts.js +3 -56
- package/dist/core/domain-loadouts.js.map +1 -1
- package/dist/core/domain-profile.d.ts +40 -0
- package/dist/core/domain-profile.d.ts.map +1 -0
- package/dist/core/domain-profile.js +7 -0
- package/dist/core/domain-profile.js.map +1 -0
- package/dist/core/grok-harness-dispatch.d.ts +6 -20
- package/dist/core/grok-harness-dispatch.d.ts.map +1 -1
- package/dist/core/grok-harness-dispatch.js +6 -55
- package/dist/core/grok-harness-dispatch.js.map +1 -1
- package/dist/core/grok-harness.d.ts +7 -9
- package/dist/core/grok-harness.d.ts.map +1 -1
- package/dist/core/grok-harness.js +9 -23
- package/dist/core/grok-harness.js.map +1 -1
- package/dist/core/harness-skills.d.ts +20 -0
- package/dist/core/harness-skills.d.ts.map +1 -0
- package/dist/core/harness-skills.js +36 -0
- package/dist/core/harness-skills.js.map +1 -0
- package/dist/core/loadout-runtime-state.d.ts +25 -0
- package/dist/core/loadout-runtime-state.d.ts.map +1 -0
- package/dist/core/loadout-runtime-state.js +39 -0
- package/dist/core/loadout-runtime-state.js.map +1 -0
- package/dist/core/loadout-runtime.d.ts +2 -12
- package/dist/core/loadout-runtime.d.ts.map +1 -1
- package/dist/core/loadout-runtime.js +6 -13
- package/dist/core/loadout-runtime.js.map +1 -1
- package/dist/core/model-resolver.d.ts +1 -41
- package/dist/core/model-resolver.d.ts.map +1 -1
- package/dist/core/model-resolver.js +2 -49
- package/dist/core/model-resolver.js.map +1 -1
- package/dist/core/prompt-settlement.d.ts +4 -3
- package/dist/core/prompt-settlement.d.ts.map +1 -1
- package/dist/core/prompt-settlement.js.map +1 -1
- package/dist/core/provider-default-models.d.ts +42 -0
- package/dist/core/provider-default-models.d.ts.map +1 -0
- package/dist/core/provider-default-models.js +50 -0
- package/dist/core/provider-default-models.js.map +1 -0
- package/dist/core/provider-display-names.d.ts.map +1 -1
- package/dist/core/provider-display-names.js +1 -0
- package/dist/core/provider-display-names.js.map +1 -1
- package/dist/core/provider-harness-dispatch.d.ts +63 -0
- package/dist/core/provider-harness-dispatch.d.ts.map +1 -0
- package/dist/core/provider-harness-dispatch.js +60 -0
- package/dist/core/provider-harness-dispatch.js.map +1 -0
- package/dist/core/provider-usage-devin.d.ts +16 -0
- package/dist/core/provider-usage-devin.d.ts.map +1 -0
- package/dist/core/provider-usage-devin.js +61 -0
- package/dist/core/provider-usage-devin.js.map +1 -0
- package/dist/core/provider-usage-text.d.ts +5 -0
- package/dist/core/provider-usage-text.d.ts.map +1 -0
- package/dist/core/provider-usage-text.js +15 -0
- package/dist/core/provider-usage-text.js.map +1 -0
- package/dist/core/provider-usage-types.d.ts +2 -1
- package/dist/core/provider-usage-types.d.ts.map +1 -1
- package/dist/core/provider-usage-types.js.map +1 -1
- package/dist/core/provider-usage.d.ts +1 -2
- package/dist/core/provider-usage.d.ts.map +1 -1
- package/dist/core/provider-usage.js +12 -7
- package/dist/core/provider-usage.js.map +1 -1
- package/dist/core/run-budget-policy.d.ts +18 -0
- package/dist/core/run-budget-policy.d.ts.map +1 -0
- package/dist/core/run-budget-policy.js +52 -0
- package/dist/core/run-budget-policy.js.map +1 -0
- package/dist/core/run-budget.d.ts +33 -0
- package/dist/core/run-budget.d.ts.map +1 -0
- package/dist/core/run-budget.js +89 -0
- package/dist/core/run-budget.js.map +1 -0
- package/dist/core/run-execution-api.d.ts +15 -0
- package/dist/core/run-execution-api.d.ts.map +1 -0
- package/dist/core/run-execution-api.js +7 -0
- package/dist/core/run-execution-api.js.map +1 -0
- package/dist/core/run-journal.d.ts.map +1 -1
- package/dist/core/run-journal.js +30 -208
- package/dist/core/run-journal.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +23 -18
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-bash-service.d.ts +2 -2
- package/dist/core/session-bash-service.d.ts.map +1 -1
- package/dist/core/session-bash-service.js +21 -9
- package/dist/core/session-bash-service.js.map +1 -1
- package/dist/core/session-failure-cause.d.ts.map +1 -1
- package/dist/core/session-failure-cause.js +5 -0
- package/dist/core/session-failure-cause.js.map +1 -1
- package/dist/core/session-prompt-lifecycle.d.ts +25 -0
- package/dist/core/session-prompt-lifecycle.d.ts.map +1 -0
- package/dist/core/session-prompt-lifecycle.js +87 -0
- package/dist/core/session-prompt-lifecycle.js.map +1 -0
- package/dist/core/session-run-budget.d.ts +28 -0
- package/dist/core/session-run-budget.d.ts.map +1 -0
- package/dist/core/session-run-budget.js +127 -0
- package/dist/core/session-run-budget.js.map +1 -0
- package/dist/core/session-run-termination.d.ts.map +1 -1
- package/dist/core/session-run-termination.js +14 -3
- package/dist/core/session-run-termination.js.map +1 -1
- package/dist/core/session-termination-types.d.ts +97 -0
- package/dist/core/session-termination-types.d.ts.map +1 -0
- package/dist/core/session-termination-types.js +26 -0
- package/dist/core/session-termination-types.js.map +1 -0
- package/dist/core/session-termination.d.ts +3 -97
- package/dist/core/session-termination.d.ts.map +1 -1
- package/dist/core/session-termination.js +24 -28
- package/dist/core/session-termination.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +1 -0
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/subagent-lane-launcher.d.ts +3 -2
- package/dist/core/subagent-lane-launcher.d.ts.map +1 -1
- package/dist/core/subagent-lane-launcher.js +24 -13
- package/dist/core/subagent-lane-launcher.js.map +1 -1
- package/dist/core/verified-run/broker.d.ts +26 -0
- package/dist/core/verified-run/broker.d.ts.map +1 -0
- package/dist/core/verified-run/broker.js +210 -0
- package/dist/core/verified-run/broker.js.map +1 -0
- package/dist/core/verified-run/candidate.d.ts +24 -0
- package/dist/core/verified-run/candidate.d.ts.map +1 -0
- package/dist/core/verified-run/candidate.js +167 -0
- package/dist/core/verified-run/candidate.js.map +1 -0
- package/dist/core/verified-run/check-receipt.d.ts +18 -0
- package/dist/core/verified-run/check-receipt.d.ts.map +1 -0
- package/dist/core/verified-run/check-receipt.js +92 -0
- package/dist/core/verified-run/check-receipt.js.map +1 -0
- package/dist/core/verified-run/coordinator.d.ts +39 -0
- package/dist/core/verified-run/coordinator.d.ts.map +1 -0
- package/dist/core/verified-run/coordinator.js +190 -0
- package/dist/core/verified-run/coordinator.js.map +1 -0
- package/dist/core/verified-run/dag-candidates.d.ts +8 -0
- package/dist/core/verified-run/dag-candidates.d.ts.map +1 -0
- package/dist/core/verified-run/dag-candidates.js +65 -0
- package/dist/core/verified-run/dag-candidates.js.map +1 -0
- package/dist/core/verified-run/dag-phase.d.ts +7 -0
- package/dist/core/verified-run/dag-phase.d.ts.map +1 -0
- package/dist/core/verified-run/dag-phase.js +130 -0
- package/dist/core/verified-run/dag-phase.js.map +1 -0
- package/dist/core/verified-run/dag-projection.d.ts +7 -0
- package/dist/core/verified-run/dag-projection.d.ts.map +1 -0
- package/dist/core/verified-run/dag-projection.js +103 -0
- package/dist/core/verified-run/dag-projection.js.map +1 -0
- package/dist/core/verified-run/dag-recovery.d.ts +13 -0
- package/dist/core/verified-run/dag-recovery.d.ts.map +1 -0
- package/dist/core/verified-run/dag-recovery.js +98 -0
- package/dist/core/verified-run/dag-recovery.js.map +1 -0
- package/dist/core/verified-run/dag-retry-projection.d.ts +9 -0
- package/dist/core/verified-run/dag-retry-projection.d.ts.map +1 -0
- package/dist/core/verified-run/dag-retry-projection.js +43 -0
- package/dist/core/verified-run/dag-retry-projection.js.map +1 -0
- package/dist/core/verified-run/dag-types.d.ts +58 -0
- package/dist/core/verified-run/dag-types.d.ts.map +1 -0
- package/dist/core/verified-run/dag-types.js +2 -0
- package/dist/core/verified-run/dag-types.js.map +1 -0
- package/dist/core/verified-run/event-parser.d.ts +3 -0
- package/dist/core/verified-run/event-parser.d.ts.map +1 -0
- package/dist/core/verified-run/event-parser.js +154 -0
- package/dist/core/verified-run/event-parser.js.map +1 -0
- package/dist/core/verified-run/events.d.ts +4 -0
- package/dist/core/verified-run/events.d.ts.map +1 -0
- package/dist/core/verified-run/events.js +3 -0
- package/dist/core/verified-run/events.js.map +1 -0
- package/dist/core/verified-run/evidence-binding.d.ts +18 -0
- package/dist/core/verified-run/evidence-binding.d.ts.map +1 -0
- package/dist/core/verified-run/evidence-binding.js +81 -0
- package/dist/core/verified-run/evidence-binding.js.map +1 -0
- package/dist/core/verified-run/evidence.d.ts +27 -0
- package/dist/core/verified-run/evidence.d.ts.map +1 -0
- package/dist/core/verified-run/evidence.js +100 -0
- package/dist/core/verified-run/evidence.js.map +1 -0
- package/dist/core/verified-run/journal.d.ts +32 -0
- package/dist/core/verified-run/journal.d.ts.map +1 -0
- package/dist/core/verified-run/journal.js +103 -0
- package/dist/core/verified-run/journal.js.map +1 -0
- package/dist/core/verified-run/namespace-identity.d.ts +11 -0
- package/dist/core/verified-run/namespace-identity.d.ts.map +1 -0
- package/dist/core/verified-run/namespace-identity.js +77 -0
- package/dist/core/verified-run/namespace-identity.js.map +1 -0
- package/dist/core/verified-run/owned-execution.d.ts +22 -0
- package/dist/core/verified-run/owned-execution.d.ts.map +1 -0
- package/dist/core/verified-run/owned-execution.js +49 -0
- package/dist/core/verified-run/owned-execution.js.map +1 -0
- package/dist/core/verified-run/phase-context.d.ts +9 -0
- package/dist/core/verified-run/phase-context.d.ts.map +1 -0
- package/dist/core/verified-run/phase-context.js +2 -0
- package/dist/core/verified-run/phase-context.js.map +1 -0
- package/dist/core/verified-run/process-gate.d.ts +5 -0
- package/dist/core/verified-run/process-gate.d.ts.map +1 -0
- package/dist/core/verified-run/process-gate.js +31 -0
- package/dist/core/verified-run/process-gate.js.map +1 -0
- package/dist/core/verified-run/process-projection.d.ts +13 -0
- package/dist/core/verified-run/process-projection.d.ts.map +1 -0
- package/dist/core/verified-run/process-projection.js +82 -0
- package/dist/core/verified-run/process-projection.js.map +1 -0
- package/dist/core/verified-run/projection.d.ts +4 -0
- package/dist/core/verified-run/projection.d.ts.map +1 -0
- package/dist/core/verified-run/projection.js +175 -0
- package/dist/core/verified-run/projection.js.map +1 -0
- package/dist/core/verified-run/recovery-clock.d.ts +19 -0
- package/dist/core/verified-run/recovery-clock.d.ts.map +1 -0
- package/dist/core/verified-run/recovery-clock.js +69 -0
- package/dist/core/verified-run/recovery-clock.js.map +1 -0
- package/dist/core/verified-run/recovery-command.d.ts +11 -0
- package/dist/core/verified-run/recovery-command.d.ts.map +1 -0
- package/dist/core/verified-run/recovery-command.js +73 -0
- package/dist/core/verified-run/recovery-command.js.map +1 -0
- package/dist/core/verified-run/recovery-projection.d.ts +12 -0
- package/dist/core/verified-run/recovery-projection.d.ts.map +1 -0
- package/dist/core/verified-run/recovery-projection.js +88 -0
- package/dist/core/verified-run/recovery-projection.js.map +1 -0
- package/dist/core/verified-run/recovery.d.ts +12 -0
- package/dist/core/verified-run/recovery.d.ts.map +1 -0
- package/dist/core/verified-run/recovery.js +115 -0
- package/dist/core/verified-run/recovery.js.map +1 -0
- package/dist/core/verified-run/run-types.d.ts +104 -0
- package/dist/core/verified-run/run-types.d.ts.map +1 -0
- package/dist/core/verified-run/run-types.js +2 -0
- package/dist/core/verified-run/run-types.js.map +1 -0
- package/dist/core/verified-run/scripted-writer.d.ts +15 -0
- package/dist/core/verified-run/scripted-writer.d.ts.map +1 -0
- package/dist/core/verified-run/scripted-writer.js +94 -0
- package/dist/core/verified-run/scripted-writer.js.map +1 -0
- package/dist/core/verified-run/session-port.d.ts +27 -0
- package/dist/core/verified-run/session-port.d.ts.map +1 -0
- package/dist/core/verified-run/session-port.js +2 -0
- package/dist/core/verified-run/session-port.js.map +1 -0
- package/dist/core/verified-run/storage.d.ts +15 -0
- package/dist/core/verified-run/storage.d.ts.map +1 -0
- package/dist/core/verified-run/storage.js +96 -0
- package/dist/core/verified-run/storage.js.map +1 -0
- package/dist/core/verified-run/task-execution.d.ts +9 -0
- package/dist/core/verified-run/task-execution.d.ts.map +1 -0
- package/dist/core/verified-run/task-execution.js +29 -0
- package/dist/core/verified-run/task-execution.js.map +1 -0
- package/dist/core/verified-run/verification-phase.d.ts +5 -0
- package/dist/core/verified-run/verification-phase.d.ts.map +1 -0
- package/dist/core/verified-run/verification-phase.js +56 -0
- package/dist/core/verified-run/verification-phase.js.map +1 -0
- package/dist/core/verified-run/work-recovery.d.ts +8 -0
- package/dist/core/verified-run/work-recovery.d.ts.map +1 -0
- package/dist/core/verified-run/work-recovery.js +44 -0
- package/dist/core/verified-run/work-recovery.js.map +1 -0
- package/dist/core/verified-run/writer-completion.d.ts +4 -0
- package/dist/core/verified-run/writer-completion.d.ts.map +1 -0
- package/dist/core/verified-run/writer-completion.js +27 -0
- package/dist/core/verified-run/writer-completion.js.map +1 -0
- package/dist/core/verified-run/writer-phase.d.ts +8 -0
- package/dist/core/verified-run/writer-phase.d.ts.map +1 -0
- package/dist/core/verified-run/writer-phase.js +76 -0
- package/dist/core/verified-run/writer-phase.js.map +1 -0
- package/dist/core/verified-run/writer-projection.d.ts +11 -0
- package/dist/core/verified-run/writer-projection.d.ts.map +1 -0
- package/dist/core/verified-run/writer-projection.js +71 -0
- package/dist/core/verified-run/writer-projection.js.map +1 -0
- package/dist/core/verified-run/writer-recovery.d.ts +16 -0
- package/dist/core/verified-run/writer-recovery.d.ts.map +1 -0
- package/dist/core/verified-run/writer-recovery.js +107 -0
- package/dist/core/verified-run/writer-recovery.js.map +1 -0
- package/dist/core/workload-permit-pool.d.ts +1 -3
- package/dist/core/workload-permit-pool.d.ts.map +1 -1
- package/dist/core/workload-permit-pool.js +11 -11
- package/dist/core/workload-permit-pool.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/main.d.ts.map +1 -1
- package/dist/main.js +2 -8
- package/dist/main.js.map +1 -1
- package/dist/modes/interactive/components/session-failure.d.ts +13 -0
- package/dist/modes/interactive/components/session-failure.d.ts.map +1 -0
- package/dist/modes/interactive/components/session-failure.js +81 -0
- package/dist/modes/interactive/components/session-failure.js.map +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts +1 -0
- package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode.js +47 -36
- package/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/dist/modes/interactive/resource-description.d.ts +3 -0
- package/dist/modes/interactive/resource-description.d.ts.map +1 -0
- package/dist/modes/interactive/resource-description.js +15 -0
- package/dist/modes/interactive/resource-description.js.map +1 -0
- package/dist/modes/interactive/tui-diagnostics.d.ts +36 -0
- package/dist/modes/interactive/tui-diagnostics.d.ts.map +1 -0
- package/dist/modes/interactive/tui-diagnostics.js +105 -0
- package/dist/modes/interactive/tui-diagnostics.js.map +1 -0
- package/dist/modes/interactive/tui-runtime-info.d.ts +20 -0
- package/dist/modes/interactive/tui-runtime-info.d.ts.map +1 -0
- package/dist/modes/interactive/tui-runtime-info.js +76 -0
- package/dist/modes/interactive/tui-runtime-info.js.map +1 -0
- package/docs/development.md +10 -0
- package/docs/devin-harness.md +121 -0
- package/docs/docs.json +4 -0
- package/docs/environment-variables.md +2 -1
- package/docs/index.md +1 -0
- package/docs/keybindings.md +1 -1
- package/docs/loadout-domains/README.md +2 -1
- package/docs/loadout-domains/devin-harness.md +72 -0
- package/docs/metrics.md +57 -16
- package/docs/providers.md +76 -0
- package/docs/release-audit-0.98.5.md +101 -0
- package/docs/release-audit-0.99.0.md +68 -0
- package/docs/run-protocol.md +34 -1
- package/docs/runtime-algorithms.md +30 -1
- package/docs/sdk.md +198 -1
- package/docs/settings.md +1 -1
- package/docs/startup-resource-labels-testing.md +47 -0
- package/docs/tb21-audit.md +18 -4
- package/docs/usage.md +59 -0
- package/docs/verified-run-remaining-design.md +881 -0
- package/docs/verified-run-testing.md +508 -0
- package/docs/verified-run.md +409 -0
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/gondolin/package-lock.json +2 -2
- package/examples/extensions/gondolin/package.json +1 -1
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/npm-shrinkwrap.json +18 -18
- package/package.json +6 -6
package/docs/sdk.md
CHANGED
|
@@ -156,6 +156,203 @@ The CLI equivalent is `--model-contract <file>`. This is opt-in dispatch control
|
|
|
156
156
|
not final-wire or billing attestation. See [Model dispatch contracts](model-contract.md)
|
|
157
157
|
for the JSON shape, events, hook restrictions, and uncovered paths.
|
|
158
158
|
|
|
159
|
+
### Isolated command runs (SDK, opt-in)
|
|
160
|
+
|
|
161
|
+
`planVerifiedRun()` and `createRunCoordinator()` provide three experimental profiles:
|
|
162
|
+
`linux-command-v1` executes an approved command, `linux-scripted-agent-v1` drives
|
|
163
|
+
approved steps through the real `AgentSession` and the offline Faux adapter, and
|
|
164
|
+
`linux-command-dag-v1` executes a bounded command DAG, serially by default or with
|
|
165
|
+
an explicitly approved `writer.maxConcurrentTasks: 2`.
|
|
166
|
+
Commands run in private sandboxes; native EvidenceReceipt v3 cores and a supervisor
|
|
167
|
+
attestation bind the checked candidate before artifact retrieval.
|
|
168
|
+
|
|
169
|
+
The high-level factory injects the closed session runtime through a host-only port;
|
|
170
|
+
low-level `new RunCoordinator(root)` needs no session port for command execution or
|
|
171
|
+
candidate-only recovery. `inspectRecovery(runId)` is read-only; `resume(command,
|
|
172
|
+
approval)` acquires a new generation and rechecks the exact frozen candidate under
|
|
173
|
+
the original boot-relative deadline. It never restarts the writer or model and
|
|
174
|
+
refuses missing process identity, stale refs, unavailable clocks and expired budget.
|
|
175
|
+
|
|
176
|
+
`inspectWriterRecovery(runId)` and `restartWriter(command, approval)` separately
|
|
177
|
+
restart an interrupted local writer from its durable input checkpoint. They preserve
|
|
178
|
+
spent requests and the original work deadline, use a fresh private directory, and
|
|
179
|
+
never continue from partial output or a changed original workspace.
|
|
180
|
+
|
|
181
|
+
For the command DAG, `inspectTaskRecovery(runId)` returns read-only readiness and
|
|
182
|
+
`retryTasks(command, approval)` acquires a new generation for selected failed or
|
|
183
|
+
interrupted tasks. `RunTaskRetryCommand` pins `baseDigest` and `taskIds` alongside the
|
|
184
|
+
contract/revision/generation fields; an empty selection only continues pending work.
|
|
185
|
+
Successful checkpoints are revalidated against their complete ancestor inputs before
|
|
186
|
+
adoption. Final integration verification always uses fresh native receipts. The
|
|
187
|
+
profile supports at most 16 tasks, two preapproved commands per task and an optional
|
|
188
|
+
concurrency cap of 1 or 2. Omitted concurrency preserves legacy contract bytes.
|
|
189
|
+
The eager frontier starts a ready consumer without waiting for unrelated work;
|
|
190
|
+
fatal failure or cancellation drains all started tasks before returning. It does not
|
|
191
|
+
synthesize a repair or accept overlapping task write scopes. `RunProjection.tasks`
|
|
192
|
+
exposes task attempts and checkpoint digests; a blocked DAG returns `execution: "paused"`.
|
|
193
|
+
All recovery actions share the generation cap, original budget and command-id fence.
|
|
194
|
+
|
|
195
|
+
This does not enable live-model task generation, opaque remote replay,
|
|
196
|
+
verification-conditioned edges, plan amendment, or host application. See [Verified Run](verified-run.md) for contracts and trust boundaries.
|
|
197
|
+
|
|
198
|
+
### Shared run budgets (SDK, opt-in)
|
|
199
|
+
|
|
200
|
+
Pass `runBudget` to `session.prompt()` to bound one prompt's logical model
|
|
201
|
+
requests. The budget starts before prompt preflight and stays shared across
|
|
202
|
+
provider retries, continuations, and first-party summaries using that session's
|
|
203
|
+
`agent.streamFn` while the prompt is active.
|
|
204
|
+
|
|
205
|
+
```typescript
|
|
206
|
+
import { RunBudgetExceededError } from "open-multi-agent-kit";
|
|
207
|
+
|
|
208
|
+
try {
|
|
209
|
+
await session.prompt("Implement the selected change and run its focused tests", {
|
|
210
|
+
runBudget: { timeoutMs: 120_000, maxRequests: 12, maxConcurrentRequests: 2 },
|
|
211
|
+
});
|
|
212
|
+
} catch (error) {
|
|
213
|
+
if (!(error instanceof RunBudgetExceededError)) throw error;
|
|
214
|
+
console.log(error.code); // deadline, requests, concurrency, or closed
|
|
215
|
+
}
|
|
216
|
+
console.log(session.getRunBudgetSnapshot());
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
| Limit | Meaning |
|
|
220
|
+
| --- | --- |
|
|
221
|
+
| `timeoutMs` | One monotonic work deadline, including preflight and retry waiting; at most 2,147,483,647 ms. |
|
|
222
|
+
| `maxRequests` | Total entries into the scoped stream-dispatch boundary. Failed requests also consume this allowance. |
|
|
223
|
+
| `maxConcurrentRequests` | Outstanding logical streams. Returning a stream object does not release its reservation; terminal metadata does. |
|
|
224
|
+
|
|
225
|
+
Limits must be non-negative safe integers. Zero denies the corresponding
|
|
226
|
+
admission; omitted limits are unbounded. Supply at least one limit. Unknown
|
|
227
|
+
fields, accessors, inherited fields, and malformed values raise
|
|
228
|
+
`RunBudgetPolicyError`. The policy is copied before asynchronous work, so later
|
|
229
|
+
caller mutation cannot enlarge it.
|
|
230
|
+
|
|
231
|
+
Exhaustion latches, requests cancellation through the existing provider, tool,
|
|
232
|
+
retry, compaction, and branch-summary paths, and rejects with
|
|
233
|
+
`RunBudgetExceededError`. Termination records use `kind: "budget_exhausted"` and
|
|
234
|
+
`causeCode: "budget.deadline"`, `"budget.requests"`, or `"budget.concurrency"`;
|
|
235
|
+
these are not automatic-retry or model-failover instructions. A separate prompt
|
|
236
|
+
cannot borrow or reset an active budget. Preflight ownership also applies when
|
|
237
|
+
the first prompt has no budget, preventing a competing budgeted prompt from
|
|
238
|
+
changing its stream or aborting it. Explicit steering/follow-up messages join the
|
|
239
|
+
running prompt without receiving a new allowance; registered commands retain
|
|
240
|
+
their existing streaming path.
|
|
241
|
+
|
|
242
|
+
`getRunBudgetSnapshot()` returns the active or most recent budget's immutable
|
|
243
|
+
limits, started-request count, outstanding-stream count, remaining time, closed
|
|
244
|
+
state, and optional exhaustion reason. It returns `undefined` when no budget has
|
|
245
|
+
been used. Missing terminal metadata retains an outstanding reservation; an
|
|
246
|
+
abort request alone does not release it. Outstanding streams block admission of
|
|
247
|
+
a new bounded or unbounded prompt even after the scope closes. Once terminal
|
|
248
|
+
metadata arrives, that reservation drains and new work can proceed. The original
|
|
249
|
+
stream and core credential resolver are restored unless another owner replaced
|
|
250
|
+
them. Captured old wrappers reject further dispatch after closure.
|
|
251
|
+
|
|
252
|
+
The core credential resolver and compaction-auth preflight now check admission
|
|
253
|
+
before consulting credentials. This is a pre-check, not a reservation: logical
|
|
254
|
+
request counts are still reserved at stream dispatch. Cancellation or expiry
|
|
255
|
+
during credential lookup is checked again before continuing.
|
|
256
|
+
|
|
257
|
+
**Limits of this slice:** request counts are not HTTP-attempt or billing counts.
|
|
258
|
+
The wrapper requests `maxRetries: 0` to disable adapter retries, but cannot attest
|
|
259
|
+
that every provider honors it. Independent context/auth hooks, remote work, detached
|
|
260
|
+
children, direct `omk-ai` calls, and replacement of the stream wrapper remain
|
|
261
|
+
outside that dispatch-count guarantee. In-process plugins are trusted. Deadline
|
|
262
|
+
cancellation is cooperative: synchronous blocking code, an uncooperative hook,
|
|
263
|
+
or a remote service can outlive the signal. This is not an OS kill/join boundary
|
|
264
|
+
or a guaranteed wall-clock return time. There is no financial/output-token cap,
|
|
265
|
+
verification/cleanup reserve, persisted budget recovery, CLI flag, or global
|
|
266
|
+
setting in this slice. Restart does not reconstruct an in-flight budget.
|
|
267
|
+
|
|
268
|
+
Regression tests: `test/run-budget.test.ts`, `test/run-budget-scope.test.ts`,
|
|
269
|
+
`test/suite/agent-session-run-budget.test.ts`, and
|
|
270
|
+
`test/suite/agent-session-admission.test.ts`.
|
|
271
|
+
|
|
272
|
+
### Prompt settlement
|
|
273
|
+
|
|
274
|
+
**Working-tree hardening:** a timeout/abort result is not proof that the tool stopped.
|
|
275
|
+
|
|
276
|
+
| Signal | Meaning |
|
|
277
|
+
| --- | --- |
|
|
278
|
+
| `tool_execution_end` | A result was committed; a timeout/abort can win before the tool stops. |
|
|
279
|
+
| `session_termination` | One agent-loop attempt ended; retries may follow. |
|
|
280
|
+
| `prompt()` resolves | The outer loop returned. A timed-out or aborted tool may remain active. |
|
|
281
|
+
| `prompt_settled` | The prompt producer closed, registered local tool promises ended, and streaming/queues no longer block settlement. |
|
|
282
|
+
|
|
283
|
+
The session retains a per-prompt owner across retries and continuations. Tools
|
|
284
|
+
selected through its registry receive unique runtime tokens, independent of
|
|
285
|
+
model tool-call IDs. Actual promise completion removes only its own token;
|
|
286
|
+
duplicate flushes and an earlier run's finish callback cannot settle another run.
|
|
287
|
+
|
|
288
|
+
After timeout or cancellation, the session withholds `prompt_settled` and its
|
|
289
|
+
resource-lease release while registered tool promises remain active. Another
|
|
290
|
+
ordinary prompt is rejected before model dispatch. Clearing a leftover queue
|
|
291
|
+
rechecks settlement, so a drained run can release its owner and accept new work.
|
|
292
|
+
Default late-settlement handling triggers a fresh settlement check after the workspace-mutation audit.
|
|
293
|
+
With explicit `lateSettlement: "ignore"`, actual completion triggers that check
|
|
294
|
+
without inventing an audit. Durations and the core tool-timeout teardown window
|
|
295
|
+
use a monotonic clock; wall-clock adjustments cannot extend or shorten that window.
|
|
296
|
+
|
|
297
|
+
User cancellation during tool execution remains an abort even when the last
|
|
298
|
+
assistant message says `toolUse`. Timeout text reports cancellation requested,
|
|
299
|
+
not process termination confirmed. Late success never replaces the failed or
|
|
300
|
+
aborted result. **`prompt_settled` is a UX signal, not semantic verification.**
|
|
301
|
+
|
|
302
|
+
This safeguard is session-local. It does not persist ownership, join detached
|
|
303
|
+
work, prove remote cancellation, or fence writers across replacement/disposal,
|
|
304
|
+
restart, or workspace reuse. Direct `Agent` calls, replacing
|
|
305
|
+
`session.agent.state.tools`, independent interactive bash, and plugin-created
|
|
306
|
+
background work are not automatically enrolled. In-process plugins remain trusted.
|
|
307
|
+
|
|
308
|
+
#### Independent bash commands
|
|
309
|
+
|
|
310
|
+
`executeBash()` owns one cancellation controller per invocation, including permit
|
|
311
|
+
waiting. Concurrent commands never share or overwrite that controller. Completion
|
|
312
|
+
removes only its own entry, so `isBashRunning` remains true while another command
|
|
313
|
+
is active. `abortBash()` signals every owned command and does not declare them
|
|
314
|
+
terminated. Cancellation observed after permit admission prevents backend dispatch.
|
|
315
|
+
|
|
316
|
+
These commands remain independent of prompt settlement and its model-request
|
|
317
|
+
budget. Backend promises still own actual termination; detached processes and
|
|
318
|
+
remote completion are not inferred from cancellation. Regression:
|
|
319
|
+
`test/suite/agent-session-bash-ownership.test.ts`.
|
|
320
|
+
|
|
321
|
+
#### Shared permits and internal lanes
|
|
322
|
+
|
|
323
|
+
`WorkloadPermitPool` captures request identity, weight, and signal before waiting;
|
|
324
|
+
caller mutation cannot alter a later release. Per-permit release latches replace
|
|
325
|
+
the unbounded retired-ID set. Removing a cancelled/expired FIFO head immediately
|
|
326
|
+
reconsiders the next request. Explicit pool `capacity: 0` denies grants and
|
|
327
|
+
`maxQueue: 0` denies waiting; lowering capacity never revokes held permits.
|
|
328
|
+
|
|
329
|
+
Internal `launchSubagentLanes()` preserves computed zero width as
|
|
330
|
+
`admission-deferred`, observes run-specific heavy caps, defers marked heavy lanes
|
|
331
|
+
under `defer-heavy`, and rechecks abort after acquiring a permit. It forwards the
|
|
332
|
+
parent signal and awaits the callback before release. Parent cancellation reports
|
|
333
|
+
`cancelled`; failures use a fixed diagnostic rather than arbitrary child error
|
|
334
|
+
text. The existing configured lane setting `0 = unlimited` remains distinct from
|
|
335
|
+
computed admission zero. `heavyLaneIds` is a trusted caller classification.
|
|
336
|
+
This does not activate a live task DAG or a detached-process join adapter.
|
|
337
|
+
|
|
338
|
+
Regression checks from the repository root:
|
|
339
|
+
|
|
340
|
+
```bash
|
|
341
|
+
LIVE_E2E=0 node node_modules/vitest/dist/cli.js --run \
|
|
342
|
+
packages/coding-agent/test/session-prompt-lifecycle.test.ts \
|
|
343
|
+
packages/coding-agent/test/suite/agent-session-owned-settlement.test.ts \
|
|
344
|
+
packages/coding-agent/test/suite/agent-session-child-settlement.test.ts \
|
|
345
|
+
packages/coding-agent/test/workload-permit-pool-admission.test.ts \
|
|
346
|
+
packages/coding-agent/test/subagent-lane-ownership.test.ts
|
|
347
|
+
npm run check
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
The child test observes a local Node process closing before settlement and lease
|
|
351
|
+
restoration. These are not paid-provider, crash-recovery, or coding-quality benchmarks.
|
|
352
|
+
Shared logical request budgets are available through the opt-in SDK path above.
|
|
353
|
+
Verification/cleanup reserves, protected candidate/verifier binding, effect recovery,
|
|
354
|
+
and approval-bound application remain prerequisites for a durable verified run.
|
|
355
|
+
|
|
159
356
|
### AgentSession policy seams
|
|
160
357
|
|
|
161
358
|
The package root exports focused policy helpers for custom runtimes and tests:
|
|
@@ -270,7 +467,7 @@ interface PromptOptions {
|
|
|
270
467
|
}
|
|
271
468
|
```
|
|
272
469
|
|
|
273
|
-
`activeSkillNames` marks additional discovered skills active for this turn; `activeSkillSource` labels their provenance. They merge with global `defaultActiveSkills`, prioritize matching inventory entries, and do not expand authorization or inline full skill instructions. When the active provider is native `xai` and `OMK_GROK_HARNESS` is enabled, each non-queued `AgentSession.prompt()` request also derives up to three request-scoped matches from the live skill inventory after ordinary prompt-template expansion. Explicit-only skills are excluded from automatic selection, while explicit SDK/settings/bang selections remain authoritative additions. Queued steering and follow-up messages reuse the active run's system prompt and therefore do not perform another automatic skill-selection pass.
|
|
470
|
+
`activeSkillNames` marks additional discovered skills active for this turn; `activeSkillSource` labels their provenance. They merge with global `defaultActiveSkills`, prioritize matching inventory entries, and do not expand authorization or inline full skill instructions. When the active provider is native `xai` and `OMK_GROK_HARNESS` is enabled, or `devin` and `OMK_DEVIN_HARNESS` is enabled, each non-queued `AgentSession.prompt()` request also derives up to three request-scoped matches from the live skill inventory after ordinary prompt-template expansion. Explicit-only skills are excluded from automatic selection, while explicit SDK/settings/bang selections remain authoritative additions. Queued steering and follow-up messages reuse the active run's system prompt and therefore do not perform another automatic skill-selection pass.
|
|
274
471
|
|
|
275
472
|
`preflightResult` is called once per `prompt()` invocation:
|
|
276
473
|
|
package/docs/settings.md
CHANGED
|
@@ -272,7 +272,7 @@ Plays a short system sound only after the top-level prompt settles: retries, con
|
|
|
272
272
|
| `retry.enabled` | boolean | `true` | Enable automatic agent-level retry on transient errors |
|
|
273
273
|
| `retry.maxRetries` | number | `3` | Maximum agent-level retry attempts |
|
|
274
274
|
| `retry.baseDelayMs` | number | `2000` | Base delay for agent-level exponential backoff (2s, 4s, 8s) |
|
|
275
|
-
| `retry.provider.timeoutMs` | number | SDK default | Provider/SDK request timeout in milliseconds |
|
|
275
|
+
| `retry.provider.timeoutMs` | number | SDK default | Provider/SDK request timeout in milliseconds. Also bounds how long the `openai-codex` SSE transport waits for response headers (floor 10s); large contexts need more than the floor |
|
|
276
276
|
| `retry.provider.maxRetries` | number | `0` | Provider/SDK retry attempts |
|
|
277
277
|
| `retry.provider.maxRetryDelayMs` | number | `60000` | Max server-requested delay before failing (60s) |
|
|
278
278
|
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# 시작 리소스 설명의 하네스 태그: 검증 기록
|
|
2
|
+
|
|
3
|
+
기준: `cabbb38389`. 실제 launcher의 version/help와 credentials 없는 offline TUI를 확인했습니다.
|
|
4
|
+
기본 시작 화면은 OMK였으며, 다른 실행기로 전환되는 현상은 재현되지 않았습니다.
|
|
5
|
+
외부 스킬 설명의 `[OMX]`가 자동완성에 원문으로 나타나는 경로는 재현했습니다.
|
|
6
|
+
|
|
7
|
+
## 현재 표시 규칙
|
|
8
|
+
|
|
9
|
+
`resource-description.ts`는 설명 앞의 `[OMX]` / `[OMO]` 장식 표기를 제거합니다.
|
|
10
|
+
설명이 태그만으로 구성되면 `OMK resource`를 표시합니다. source scope와 호출 이름은
|
|
11
|
+
그대로이며, formatter 자체가 원본 스킬이나 metadata를 수정하지는 않습니다.
|
|
12
|
+
일반 문장 속 제품명이나 `[preview]` 같은 다른 태그를 무차별 치환하지 않습니다.
|
|
13
|
+
|
|
14
|
+
초기 구현은 태그를 설명 뒤의 `resource tag`로 옮겼지만, 사용자의 후속 요구에 따라
|
|
15
|
+
현재는 그 꼬리표도 출력하지 않습니다. 출처와 라이선스는 원본·별도 provenance에서 보존합니다.
|
|
16
|
+
|
|
17
|
+
## RED → GREEN
|
|
18
|
+
|
|
19
|
+
현재 요구의 8개 검사 중 4개가 RED였습니다. 예:
|
|
20
|
+
|
|
21
|
+
```text
|
|
22
|
+
Expected: [t] Planning workflow
|
|
23
|
+
Received: [t] Planning workflow · resource tag: OMX
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
수정 후 다음 명령은 41개 테스트 통과, exit 0입니다.
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
(cd packages/coding-agent && node ../../node_modules/vitest/dist/cli.js --run \
|
|
30
|
+
test/interactive-mode-resource-description.test.ts test/interactive-mode-startup-input.test.ts \
|
|
31
|
+
test/cli-resource-paths.test.ts test/resource-loader.test.ts)
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## 실제 진입점과 제한
|
|
35
|
+
|
|
36
|
+
원래 문제는 임시 home의 실제 TUI에서 같은 스킬을 추가하고 `/skill:deep`을 입력해
|
|
37
|
+
재현했습니다. 사용자 프롬프트를 전송하거나 credential을 복사하지 않았습니다.
|
|
38
|
+
표시 로직은 source CLI와 단위 검사로 확인하고, 설치된 실행기는 별도로 대조합니다.
|
|
39
|
+
소스 변경만으로 이미 설치·실행 중인 bundle이 바뀐다고 주장하지 않습니다.
|
|
40
|
+
|
|
41
|
+
개인 OMK 스킬 경로 이관·설정 백업·네이티브 스킬 검증은 별도의 운영 범위이며,
|
|
42
|
+
그 개인 파일이나 설정을 이 저장소에 복제하지 않습니다. 외부 확장이 자신의 UI를
|
|
43
|
+
직접 렌더링하는 모든 경로를 검사한 결과도 아닙니다.
|
|
44
|
+
|
|
45
|
+
변경 경로: `src/modes/interactive/{interactive-mode,resource-description}.ts`,
|
|
46
|
+
`test/interactive-mode-resource-description.test.ts`, [사용 안내](usage.md), 이 기록.
|
|
47
|
+
제안 메시지: `fix(tui): OMK 설명에서 외부 하네스 장식 표기 제거`.
|
package/docs/tb21-audit.md
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
`scripts/tb21-audit.mjs`는 명시한 두 Harbor job의 **기록된 결과**를 검증한다.
|
|
4
4
|
모델·Harbor를 실행하지 않으며 입력 파일이나 기존 요약을 수정하지 않는다.
|
|
5
5
|
저장소 checkout과 Node.js 22.19 이상이 필요하다. 공개 npm CLI의 하위 명령은 아니다.
|
|
6
|
+
현재 출력은 `omk-tb21-audit-report-2`, manifest 입력은 기존 `omk-tb21-manifest-1`이다.
|
|
6
7
|
|
|
7
8
|
## 사용
|
|
8
9
|
|
|
@@ -85,7 +86,7 @@ arm-b/
|
|
|
85
86
|
job 바깥에 둔다. job 루트의 일반 파일(예: `config.json`, 전체 `result.json`)은
|
|
86
87
|
개별 trial 집계에 사용하지 않는다. 최신 job 검색이나 시간창 기반 원장 귀속은 없다.
|
|
87
88
|
|
|
88
|
-
각 task는 각 arm에 정확히 한 번 있어야 한다.
|
|
89
|
+
각 task는 각 arm에 정확히 한 번 있어야 한다. 이 감사기는 재시도·다회 반복 집계를 지원하지
|
|
89
90
|
않으므로 추가 attempt를 거부한다. 마지막 결과로 덮어쓰거나 가장 좋은 시행을 고르지 않는다.
|
|
90
91
|
`trial_name`은 디렉터리 이름과 일치해야 하며 `id`는 두 arm 전체에서 유일해야 한다.
|
|
91
92
|
Harbor가 절대 task 경로를 기록한 경우 마지막 경로 조각을 manifest ID와 비교하고,
|
|
@@ -96,6 +97,17 @@ Harbor가 절대 task 경로를 기록한 경우 마지막 경로 조각을 mani
|
|
|
96
97
|
성공 보상 1과 예외가 함께 있으면 모순으로 거부한다. `exception_info` 필드 자체가
|
|
97
98
|
없으면 예외 여부를 추측하지 않는다. timeout도 분모에 남는다.
|
|
98
99
|
|
|
100
|
+
`started_at`과 `finished_at`은 필수다. 누락/null이면 `unfinished_trial`로 거부한다.
|
|
101
|
+
두 값은 `YYYY-MM-DDTHH:mm:ss[.fraction]Z` 또는 명시적인 `±HH:mm` 오프셋을 가진
|
|
102
|
+
시각이어야 한다. 소수초 1~9자리를 보존하며 밀리초로 잘라 순서를 비교하지 않는다.
|
|
103
|
+
`finished_at < started_at`, 존재하지 않는 날짜, `24:00:00`, 타임존 없는 값은
|
|
104
|
+
`invalid_trial_time`으로 거부한다. 시각 문자열 뒤의 개행도 허용하지 않는다.
|
|
105
|
+
윤초 표기는 지원하지 않는다. 두 시각이 같으면 허용한다.
|
|
106
|
+
|
|
107
|
+
종료시각이 없으면 보상 1이나 timeout 예외가 있어도 전체 요약을 거부한다. 그 trial을
|
|
108
|
+
분모에서 빼거나 누락 시각에 현재 시간을 대입하지 않는다. v1에서 통과한 자료가 이
|
|
109
|
+
추가 검증으로 거부될 수 있으므로 출력 버전을 2로 구분한다.
|
|
110
|
+
|
|
99
111
|
`agent_result.cost_usd`는 0 이상의 유한한 숫자여야 한다. 누락·null은 **0이 아니라
|
|
100
112
|
미확인**이며 요약을 거부한다. 합산 overflow도 거부한다. 해결 task가 0개이면
|
|
101
113
|
`costPerSolved`는 null이다. 비용 단가·캐시 할인·실제 청구서 정합성은 별도 확인 대상이다.
|
|
@@ -110,8 +122,10 @@ manifest는 최대 256 KiB, 개별 결과는 최대 8 MiB까지 읽는다. 파
|
|
|
110
122
|
manifest와 결과 파일의 해시가 포함된다. 원본 trial ID·task 절대 경로·kwargs·예외
|
|
111
123
|
메시지는 내보내지 않는다. 출력의 run/task ID는 manifest에서 승인한 식별자를 사용한다.
|
|
112
124
|
|
|
113
|
-
항상 `modelVerification: "configuration-only"`, `costSource: "harbor-agent-result"
|
|
114
|
-
|
|
125
|
+
항상 `modelVerification: "configuration-only"`, `costSource: "harbor-agent-result"`,
|
|
126
|
+
`completionVerification: "recorded-timestamps"`를 표시한다. 기록된 시각의 유효성·순서만
|
|
127
|
+
검사하며 실제 프로세스 종료, 시계 정확도, 자식 프로세스 정리까지 증명하지 않는다.
|
|
128
|
+
설정이 같다는 사실로 실제 모든 provider 전송이 같았다고 추론하지 않는다.
|
|
115
129
|
Gateway 원장으로만 비용을 알 수 있는 과거 trial은 비용을 지어내지 않고 `missing_cost`로
|
|
116
130
|
거부한다. 신뢰할 수 있는 request ID별 원장 결합은 로드맵 R3의 후속 작업이다.
|
|
117
131
|
|
|
@@ -123,7 +137,7 @@ Gateway 원장으로만 비용을 알 수 있는 과거 trial은 비용을 지
|
|
|
123
137
|
저장소 루트에서 공급자·다운로드 없이 실행한다.
|
|
124
138
|
|
|
125
139
|
```bash
|
|
126
|
-
node --test --test-concurrency=1 scripts/test/tb21-audit.test.mjs scripts/test/tb21-audit-inputs.test.mjs
|
|
140
|
+
node --test --test-concurrency=1 scripts/test/tb21-audit.test.mjs scripts/test/tb21-audit-inputs.test.mjs scripts/test/tb21-audit-completion.test.mjs
|
|
127
141
|
node node_modules/typescript/bin/tsc --noEmit --allowJs --checkJs --strict --target ES2022 --module NodeNext --skipLibCheck --types node scripts/tb21-audit.mjs scripts/lib/tb21-input.mjs scripts/lib/tb21-audit.mjs
|
|
128
142
|
```
|
|
129
143
|
|
package/docs/usage.md
CHANGED
|
@@ -34,6 +34,11 @@ See [Keybindings](keybindings.md) for all shortcuts and customization.
|
|
|
34
34
|
|
|
35
35
|
Type `/` in the editor to open command completion. Extensions can register custom commands, skills are available as `/skill:name`, `!skill:name`, or `!name` for known skills, `!omk <role-or-request>` selects an OMK role hub such as frontend, backend, loop, or plan, and prompt templates expand via `/templatename`.
|
|
36
36
|
|
|
37
|
+
OMK omits decorative `[OMX]` and `[OMO]` prefixes from completion descriptions,
|
|
38
|
+
without adding another harness label. A marker-only description becomes `OMK resource`.
|
|
39
|
+
The formatter preserves original skill metadata, invocation names and source scope;
|
|
40
|
+
this display change enables no foreign tools or compatibility guarantees.
|
|
41
|
+
|
|
37
42
|
| Command | Description |
|
|
38
43
|
| --------- | ------------- |
|
|
39
44
|
| `/login`, `/logout` | Manage OAuth or API-key credentials |
|
|
@@ -46,6 +51,7 @@ Type `/` in the editor to open command completion. Extensions can register custo
|
|
|
46
51
|
| `/name <name>` | Set session display name |
|
|
47
52
|
| `/session` | Show session file, ID, messages, tokens, and cost |
|
|
48
53
|
| `/resource [probe\|policy]` | Show resource pressure and effective concurrency for this run |
|
|
54
|
+
| `/debug [save]` | Preview runtime diagnostics; explicitly save a metadata-only local report |
|
|
49
55
|
| `/goal [objective]` | Show or set the durable goal for the current working directory |
|
|
50
56
|
| `/tree` | Jump to any point in the session and continue from there |
|
|
51
57
|
| `/fork` | Create a new session from a previous user message |
|
|
@@ -61,6 +67,59 @@ Type `/` in the editor to open command completion. Extensions can register custo
|
|
|
61
67
|
| `/star` | Open the OMK GitHub repository |
|
|
62
68
|
| `/quit` | Quit omk |
|
|
63
69
|
|
|
70
|
+
### Diagnostics and failure details
|
|
71
|
+
|
|
72
|
+
`/debug` previews runtime identity, terminal state and the latest typed outcome
|
|
73
|
+
without saving or contacting a provider. The existing TUI debug shortcut opens
|
|
74
|
+
the same preview instead of dumping the transcript.
|
|
75
|
+
|
|
76
|
+
`/debug save` explicitly creates a new `omk-debug-*/diagnostics.json` under the OS
|
|
77
|
+
temporary directory and prints its path. It does not upload or overwrite a report.
|
|
78
|
+
POSIX directory/file permissions are `0700`/`0600`; Windows access follows the
|
|
79
|
+
temporary directory's ACLs. Delete that directory when it is no longer needed.
|
|
80
|
+
|
|
81
|
+
The version-1 JSON report contains approved metadata fields only. It excludes
|
|
82
|
+
messages, prompts, images, tool output, rendered screen text, raw errors,
|
|
83
|
+
configuration, environment values, credentials, local paths, session/run IDs and
|
|
84
|
+
provider/model/tool names. Launch and UI module paths are visible locally, not
|
|
85
|
+
saved. Metadata such as timestamps and message counts can still describe your
|
|
86
|
+
workload; review a report before sharing it.
|
|
87
|
+
|
|
88
|
+
There is no raw-transcript option in this command. Old `omk-debug.log` files are
|
|
89
|
+
not deleted or rewritten and may contain private transcripts. Explicit raw ANSI
|
|
90
|
+
capture via `OMK_TUI_WRITE_LOG` remains a separate, sensitive debugging facility;
|
|
91
|
+
see [TUI components](tui.md#debug-logging).
|
|
92
|
+
|
|
93
|
+
**Runtime identity:** The UI entry file's SHA-256 is observed at module initialization
|
|
94
|
+
and compared with the same file during inspection. Missing, oversized, virtual or
|
|
95
|
+
unreadable files are `unavailable`, not healthy. This is a single-file observation,
|
|
96
|
+
not a fingerprint of all dependencies or proof of the exact executed bytes.
|
|
97
|
+
An unchanged entry does not establish that a build includes current source changes.
|
|
98
|
+
The package has no embedded build-to-commit binding, so build revision is reported
|
|
99
|
+
as unavailable rather than inferred from checkout `HEAD`.
|
|
100
|
+
|
|
101
|
+
`/reload` refreshes resources, not core JavaScript modules. Its last completion time
|
|
102
|
+
is shown separately. Core changes need an authorized build where applicable and a
|
|
103
|
+
restarted process. Source-mode QA does not update an installed launcher.
|
|
104
|
+
|
|
105
|
+
**Failure cards:** Cause, impact and next action appear before technical fields.
|
|
106
|
+
Ctrl+O (or the configured `app.tools.expand` binding) expands kind/phase/cause code,
|
|
107
|
+
observation source, retry flags, run ID, timestamp and route. Credential-shaped
|
|
108
|
+
values are masked even when input redaction is disabled; terminal controls are
|
|
109
|
+
removed. These local details are not the saved report.
|
|
110
|
+
|
|
111
|
+
Cards never retry, repair or approve effects. Retryability and automatic-retry
|
|
112
|
+
safety stay separate; possible/confirmed side effects require inspection before
|
|
113
|
+
repeating work. Duplicate delivery of the same termination is coalesced; separate
|
|
114
|
+
failed attempts remain visible. Completed runs stay quiet, and compaction
|
|
115
|
+
cancellation retains its concise status. Journal, print, JSON and RPC termination
|
|
116
|
+
contracts are unchanged.
|
|
117
|
+
|
|
118
|
+
Focused regression tests: `test/interactive-mode-diagnostics.test.ts` and
|
|
119
|
+
`test/tui-diagnostics.test.ts` in `packages/coding-agent`. These cover the real
|
|
120
|
+
command adapter, sensitive-field exclusion, private report creation, runtime file
|
|
121
|
+
changes/unavailability, forced masking, narrow-terminal wrapping and theme changes.
|
|
122
|
+
|
|
64
123
|
### Durable Goals
|
|
65
124
|
|
|
66
125
|
Use `/goal <objective>` to create or update the durable goal for the current working directory; `/goal` without arguments shows its status. See [Run Protocol](run-protocol.md#durable-goal-lifecycle) for the authoritative persistence, round-limit, continuation, and SDK lifecycle rules.
|