@namzu/cli 26.2.0 → 27.0.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 +312 -0
- package/README.md +49 -34
- package/dist/bin.js +7 -0
- package/dist/bin.js.map +1 -1
- package/dist/checkpoints/store.d.ts +17 -4
- package/dist/checkpoints/store.d.ts.map +1 -1
- package/dist/checkpoints/store.js +20 -5
- package/dist/checkpoints/store.js.map +1 -1
- package/dist/cli.js +2 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/acp.d.ts +23 -1
- package/dist/commands/acp.d.ts.map +1 -1
- package/dist/commands/acp.js +41 -2
- package/dist/commands/acp.js.map +1 -1
- package/dist/commands/drain.d.ts +69 -2
- package/dist/commands/drain.d.ts.map +1 -1
- package/dist/commands/drain.js +214 -134
- package/dist/commands/drain.js.map +1 -1
- package/dist/commands/eval.js +1 -1
- package/dist/commands/eval.js.map +1 -1
- package/dist/commands/provider-wait.d.ts +5 -5
- package/dist/commands/provider-wait.d.ts.map +1 -1
- package/dist/commands/provider-wait.js +2 -2
- package/dist/commands/resident.d.ts.map +1 -1
- package/dist/commands/resident.js +2 -1
- package/dist/commands/resident.js.map +1 -1
- package/dist/commands/run-flags.d.ts +7 -7
- package/dist/commands/run-flags.js +4 -4
- package/dist/commands/run-stream.d.ts +16 -12
- package/dist/commands/run-stream.d.ts.map +1 -1
- package/dist/commands/run-stream.js +142 -98
- package/dist/commands/run-stream.js.map +1 -1
- package/dist/commands/run.d.ts +6 -4
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +129 -45
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/serve.js +2 -2
- package/dist/commands/serve.js.map +1 -1
- package/dist/commands/state.js +8 -8
- package/dist/commands/state.js.map +1 -1
- package/dist/config/load.d.ts +1 -1
- package/dist/config/load.d.ts.map +1 -1
- package/dist/config/load.js +17 -5
- package/dist/config/load.js.map +1 -1
- package/dist/config/run-limits.d.ts +20 -8
- package/dist/config/run-limits.d.ts.map +1 -1
- package/dist/config/run-limits.js +28 -46
- package/dist/config/run-limits.js.map +1 -1
- package/dist/config/schema.d.ts +44 -19
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js.map +1 -1
- package/dist/config/tool-result-screens.js +1 -1
- package/dist/context/directories.d.ts +37 -0
- package/dist/context/directories.d.ts.map +1 -0
- package/dist/context/directories.js +69 -0
- package/dist/context/directories.js.map +1 -0
- package/dist/context/environment.d.ts +55 -0
- package/dist/context/environment.d.ts.map +1 -1
- package/dist/context/environment.js +96 -0
- package/dist/context/environment.js.map +1 -1
- package/dist/context/project-tracker.d.ts +3 -3
- package/dist/context/project-tracker.d.ts.map +1 -1
- package/dist/context/project-tracker.js +3 -3
- package/dist/context/project-tracker.js.map +1 -1
- package/dist/context/project.d.ts +1 -1
- package/dist/context/project.js +1 -1
- package/dist/context/sandbox.d.ts +22 -3
- package/dist/context/sandbox.d.ts.map +1 -1
- package/dist/context/sandbox.js +42 -4
- package/dist/context/sandbox.js.map +1 -1
- package/dist/doctor/checks/chain.d.ts +1 -1
- package/dist/doctor/checks/chain.js +5 -5
- package/dist/doctor/checks/chain.js.map +1 -1
- package/dist/doctor/checks/invariants.d.ts +2 -2
- package/dist/doctor/checks/invariants.js +5 -5
- package/dist/doctor/checks/invariants.js.map +1 -1
- package/dist/doctor/checks/logging.js +1 -1
- package/dist/doctor/checks/logging.js.map +1 -1
- package/dist/doctor/checks/sandbox.js +1 -1
- package/dist/doctor/checks/sandbox.js.map +1 -1
- package/dist/doctor/checks/session-export.d.ts +1 -1
- package/dist/doctor/checks/session-export.js +2 -2
- package/dist/doctor/checks/session-export.js.map +1 -1
- package/dist/doctor/checks/telemetry.d.ts +1 -1
- package/dist/doctor/checks/telemetry.js +1 -1
- package/dist/doctor/registry.js +2 -2
- package/dist/doctor/registry.js.map +1 -1
- package/dist/exit-codes.d.ts +2 -2
- package/dist/exit-codes.js +2 -2
- package/dist/integrations/mcp/servers.d.ts +1 -1
- package/dist/integrations/providers/chain-capabilities.d.ts +6 -6
- package/dist/integrations/providers/chain-capabilities.js +8 -8
- package/dist/integrations/providers/chain-capabilities.js.map +1 -1
- package/dist/integrations/providers/index.d.ts +1 -1
- package/dist/integrations/providers/index.d.ts.map +1 -1
- package/dist/integrations/providers/index.js +1 -1
- package/dist/integrations/providers/index.js.map +1 -1
- package/dist/integrations/providers/register.d.ts +1 -1
- package/dist/integrations/providers/register.js +1 -1
- package/dist/integrations/providers/registry.d.ts +74 -1
- package/dist/integrations/providers/registry.d.ts.map +1 -1
- package/dist/integrations/providers/registry.js +75 -0
- package/dist/integrations/providers/registry.js.map +1 -1
- package/dist/integrations/resident/inspection.d.ts +4 -1
- package/dist/integrations/resident/inspection.d.ts.map +1 -1
- package/dist/integrations/resident/inspection.js +53 -34
- package/dist/integrations/resident/inspection.js.map +1 -1
- package/dist/integrations/resident/learning-storage.d.ts +7 -2
- package/dist/integrations/resident/learning-storage.d.ts.map +1 -1
- package/dist/integrations/resident/learning-storage.js +12 -8
- package/dist/integrations/resident/learning-storage.js.map +1 -1
- package/dist/integrations/resident/runner-store.d.ts +1 -1
- package/dist/integrations/resident/runner-store.d.ts.map +1 -1
- package/dist/integrations/resident/runner-store.js +5 -2
- package/dist/integrations/resident/runner-store.js.map +1 -1
- package/dist/integrations/resident/runner-worker.js +1 -0
- package/dist/integrations/resident/runner-worker.js.map +1 -1
- package/dist/integrations/resident/session-log-reads.d.ts +37 -0
- package/dist/integrations/resident/session-log-reads.d.ts.map +1 -0
- package/dist/integrations/resident/session-log-reads.js +125 -0
- package/dist/integrations/resident/session-log-reads.js.map +1 -0
- package/dist/integrations/resident/session-step.d.ts +2 -0
- package/dist/integrations/resident/session-step.d.ts.map +1 -1
- package/dist/integrations/resident/session-step.js +15 -13
- package/dist/integrations/resident/session-step.js.map +1 -1
- package/dist/integrations/resident/storage.d.ts +23 -1
- package/dist/integrations/resident/storage.d.ts.map +1 -1
- package/dist/integrations/resident/storage.js +60 -17
- package/dist/integrations/resident/storage.js.map +1 -1
- package/dist/integrations/resident/tool-evidence.d.ts +4 -2
- package/dist/integrations/resident/tool-evidence.d.ts.map +1 -1
- package/dist/integrations/resident/tool-evidence.js +36 -30
- package/dist/integrations/resident/tool-evidence.js.map +1 -1
- package/dist/integrations/resident/verification.d.ts +2 -2
- package/dist/integrations/resident/verification.d.ts.map +1 -1
- package/dist/integrations/resident/verification.js +4 -4
- package/dist/integrations/resident/verification.js.map +1 -1
- package/dist/integrations/sessions/checkpoint-view.d.ts +13 -0
- package/dist/integrations/sessions/checkpoint-view.d.ts.map +1 -0
- package/dist/integrations/sessions/checkpoint-view.js +48 -0
- package/dist/integrations/sessions/checkpoint-view.js.map +1 -0
- package/dist/integrations/sessions/context-inventory.js +1 -1
- package/dist/integrations/sessions/context-inventory.js.map +1 -1
- package/dist/integrations/sessions/conversation-search.d.ts +16 -20
- package/dist/integrations/sessions/conversation-search.d.ts.map +1 -1
- package/dist/integrations/sessions/conversation-search.js +305 -731
- package/dist/integrations/sessions/conversation-search.js.map +1 -1
- package/dist/integrations/sessions/evidence-page-validation.d.ts +4 -4
- package/dist/integrations/sessions/evidence-page-validation.d.ts.map +1 -1
- package/dist/integrations/sessions/evidence-page-validation.js +1 -1
- package/dist/integrations/sessions/evidence-page-validation.js.map +1 -1
- package/dist/integrations/sessions/evidence-recall.d.ts +40 -2
- package/dist/integrations/sessions/evidence-recall.d.ts.map +1 -1
- package/dist/integrations/sessions/evidence-recall.js +41 -97
- package/dist/integrations/sessions/evidence-recall.js.map +1 -1
- package/dist/integrations/sessions/store.d.ts +153 -85
- package/dist/integrations/sessions/store.d.ts.map +1 -1
- package/dist/integrations/sessions/store.js +414 -484
- package/dist/integrations/sessions/store.js.map +1 -1
- package/dist/integrations/sessions/task-context.d.ts +15 -2
- package/dist/integrations/sessions/task-context.d.ts.map +1 -1
- package/dist/integrations/sessions/task-context.js +34 -11
- package/dist/integrations/sessions/task-context.js.map +1 -1
- package/dist/integrations/sessions/transcript-export.d.ts +13 -6
- package/dist/integrations/sessions/transcript-export.d.ts.map +1 -1
- package/dist/integrations/sessions/transcript-export.js +148 -263
- package/dist/integrations/sessions/transcript-export.js.map +1 -1
- package/dist/integrations/state/home.d.ts +4 -16
- package/dist/integrations/state/home.d.ts.map +1 -1
- package/dist/integrations/state/home.js +6 -42
- package/dist/integrations/state/home.js.map +1 -1
- package/dist/integrations/state/project.d.ts +6 -7
- package/dist/integrations/state/project.d.ts.map +1 -1
- package/dist/integrations/state/project.js +7 -9
- package/dist/integrations/state/project.js.map +1 -1
- package/dist/integrations/state/report.d.ts +27 -41
- package/dist/integrations/state/report.d.ts.map +1 -1
- package/dist/integrations/state/report.js +172 -464
- package/dist/integrations/state/report.js.map +1 -1
- package/dist/integrations/state/retention.d.ts +18 -0
- package/dist/integrations/state/retention.d.ts.map +1 -0
- package/dist/integrations/state/retention.js +18 -0
- package/dist/integrations/state/retention.js.map +1 -0
- package/dist/integrations/subagents/activity.d.ts +36 -31
- package/dist/integrations/subagents/activity.d.ts.map +1 -1
- package/dist/integrations/subagents/activity.js +27 -23
- package/dist/integrations/subagents/activity.js.map +1 -1
- package/dist/integrations/subagents/batches.d.ts +91 -0
- package/dist/integrations/subagents/batches.d.ts.map +1 -0
- package/dist/integrations/subagents/batches.js +172 -0
- package/dist/integrations/subagents/batches.js.map +1 -0
- package/dist/integrations/subagents/parent.d.ts +26 -11
- package/dist/integrations/subagents/parent.d.ts.map +1 -1
- package/dist/integrations/subagents/parent.js +13 -28
- package/dist/integrations/subagents/parent.js.map +1 -1
- package/dist/integrations/subagents/policy.d.ts +2 -2
- package/dist/integrations/subagents/policy.d.ts.map +1 -1
- package/dist/integrations/subagents/policy.js +2 -2
- package/dist/integrations/subagents/policy.js.map +1 -1
- package/dist/integrations/subagents/replay.d.ts +91 -26
- package/dist/integrations/subagents/replay.d.ts.map +1 -1
- package/dist/integrations/subagents/replay.js +216 -114
- package/dist/integrations/subagents/replay.js.map +1 -1
- package/dist/integrations/subagents/runtime.d.ts +50 -26
- package/dist/integrations/subagents/runtime.d.ts.map +1 -1
- package/dist/integrations/subagents/runtime.js +132 -126
- package/dist/integrations/subagents/runtime.js.map +1 -1
- package/dist/integrations/subagents/saved-agents.d.ts +57 -0
- package/dist/integrations/subagents/saved-agents.d.ts.map +1 -0
- package/dist/integrations/subagents/saved-agents.js +102 -0
- package/dist/integrations/subagents/saved-agents.js.map +1 -0
- package/dist/integrations/subagents/slash.d.ts +55 -0
- package/dist/integrations/subagents/slash.d.ts.map +1 -0
- package/dist/integrations/subagents/slash.js +45 -0
- package/dist/integrations/subagents/slash.js.map +1 -0
- package/dist/integrations/telemetry/session-export.d.ts +6 -6
- package/dist/integrations/telemetry/session-export.d.ts.map +1 -1
- package/dist/integrations/telemetry/session-export.js +2 -2
- package/dist/memory/presentation.d.ts +11 -0
- package/dist/memory/presentation.d.ts.map +1 -1
- package/dist/memory/presentation.js +25 -0
- package/dist/memory/presentation.js.map +1 -1
- package/dist/memory/store.d.ts +13 -7
- package/dist/memory/store.d.ts.map +1 -1
- package/dist/memory/store.js +37 -11
- package/dist/memory/store.js.map +1 -1
- package/dist/memory/typed.d.ts +116 -0
- package/dist/memory/typed.d.ts.map +1 -0
- package/dist/memory/typed.js +336 -0
- package/dist/memory/typed.js.map +1 -0
- package/dist/permissions/checks.d.ts +1 -1
- package/dist/permissions/checks.js +1 -1
- package/dist/permissions/headless-trust.d.ts +2 -2
- package/dist/permissions/headless-trust.d.ts.map +1 -1
- package/dist/permissions/headless-trust.js +3 -3
- package/dist/permissions/headless-trust.js.map +1 -1
- package/dist/permissions/mode.d.ts +4 -4
- package/dist/permissions/mode.js +1 -1
- package/dist/permissions/rules.d.ts +1 -1
- package/dist/permissions/rules.js +1 -1
- package/dist/termination.d.ts +75 -0
- package/dist/termination.d.ts.map +1 -0
- package/dist/termination.js +143 -0
- package/dist/termination.js.map +1 -0
- package/dist/tui/AgentExplorer.d.ts +2 -2
- package/dist/tui/AgentExplorer.js +4 -4
- package/dist/tui/AgentExplorer.js.map +1 -1
- package/dist/tui/App.d.ts +9 -1
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +458 -304
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/LiveActivity.d.ts +1 -1
- package/dist/tui/LiveActivity.d.ts.map +1 -1
- package/dist/tui/PermissionOverlay.d.ts +8 -0
- package/dist/tui/PermissionOverlay.d.ts.map +1 -1
- package/dist/tui/PermissionOverlay.js +25 -2
- package/dist/tui/PermissionOverlay.js.map +1 -1
- package/dist/tui/Picker.d.ts +14 -1
- package/dist/tui/Picker.d.ts.map +1 -1
- package/dist/tui/Picker.js +598 -132
- package/dist/tui/Picker.js.map +1 -1
- package/dist/tui/agent.d.ts +208 -132
- package/dist/tui/agent.d.ts.map +1 -1
- package/dist/tui/agent.js +523 -313
- package/dist/tui/agent.js.map +1 -1
- package/dist/tui/conversation-evidence-view.js +3 -3
- package/dist/tui/conversation-evidence-view.js.map +1 -1
- package/dist/tui/conversation-history.d.ts +4 -21
- package/dist/tui/conversation-history.d.ts.map +1 -1
- package/dist/tui/conversation-history.js +4 -28
- package/dist/tui/conversation-history.js.map +1 -1
- package/dist/tui/index.d.ts.map +1 -1
- package/dist/tui/index.js +27 -1
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/log-pane.js +1 -1
- package/dist/tui/markdownParser.d.ts +1 -1
- package/dist/tui/markdownParser.js +1 -1
- package/dist/tui/model-choices.d.ts.map +1 -1
- package/dist/tui/model-choices.js +20 -1
- package/dist/tui/model-choices.js.map +1 -1
- package/dist/tui/permission-review.d.ts +16 -0
- package/dist/tui/permission-review.d.ts.map +1 -1
- package/dist/tui/permission-review.js +25 -2
- package/dist/tui/permission-review.js.map +1 -1
- package/dist/tui/provider-list.d.ts +206 -41
- package/dist/tui/provider-list.d.ts.map +1 -1
- package/dist/tui/provider-list.js +248 -52
- package/dist/tui/provider-list.js.map +1 -1
- package/dist/tui/slashCommands.d.ts +29 -40
- package/dist/tui/slashCommands.d.ts.map +1 -1
- package/dist/tui/slashCommands.js +70 -61
- package/dist/tui/slashCommands.js.map +1 -1
- package/dist/tui/terminal-choice-text.d.ts +22 -0
- package/dist/tui/terminal-choice-text.d.ts.map +1 -1
- package/dist/tui/terminal-choice-text.js +81 -0
- package/dist/tui/terminal-choice-text.js.map +1 -1
- package/dist/tui/{run-interruption.d.ts → turn-interruption.d.ts} +4 -4
- package/dist/tui/turn-interruption.d.ts.map +1 -0
- package/dist/tui/{run-interruption.js → turn-interruption.js} +20 -20
- package/dist/tui/turn-interruption.js.map +1 -0
- package/dist/tui/turn-limits-settings.d.ts +39 -0
- package/dist/tui/turn-limits-settings.d.ts.map +1 -0
- package/dist/tui/{run-limits-settings.js → turn-limits-settings.js} +18 -18
- package/dist/tui/turn-limits-settings.js.map +1 -0
- package/dist/tui/types.d.ts +3 -3
- package/dist/tui/types.d.ts.map +1 -1
- package/dist/user-commands/store.d.ts +1 -1
- package/dist/user-commands/store.js +1 -1
- package/package.json +8 -8
- package/dist/integrations/sessions/compaction-evidence.d.ts +0 -5
- package/dist/integrations/sessions/compaction-evidence.d.ts.map +0 -1
- package/dist/integrations/sessions/compaction-evidence.js +0 -59
- package/dist/integrations/sessions/compaction-evidence.js.map +0 -1
- package/dist/integrations/sessions/database.d.ts +0 -5
- package/dist/integrations/sessions/database.d.ts.map +0 -1
- package/dist/integrations/sessions/database.js +0 -34
- package/dist/integrations/sessions/database.js.map +0 -1
- package/dist/integrations/sessions/paths.d.ts +0 -7
- package/dist/integrations/sessions/paths.d.ts.map +0 -1
- package/dist/integrations/sessions/paths.js +0 -14
- package/dist/integrations/sessions/paths.js.map +0 -1
- package/dist/integrations/sessions/run-discovery.d.ts +0 -24
- package/dist/integrations/sessions/run-discovery.d.ts.map +0 -1
- package/dist/integrations/sessions/run-discovery.js +0 -142
- package/dist/integrations/sessions/run-discovery.js.map +0 -1
- package/dist/integrations/sessions/turn-evidence.d.ts +0 -129
- package/dist/integrations/sessions/turn-evidence.d.ts.map +0 -1
- package/dist/integrations/sessions/turn-evidence.js +0 -517
- package/dist/integrations/sessions/turn-evidence.js.map +0 -1
- package/dist/integrations/subagents/history.d.ts +0 -26
- package/dist/integrations/subagents/history.d.ts.map +0 -1
- package/dist/integrations/subagents/history.js +0 -76
- package/dist/integrations/subagents/history.js.map +0 -1
- package/dist/integrations/subagents/runs.d.ts +0 -72
- package/dist/integrations/subagents/runs.d.ts.map +0 -1
- package/dist/integrations/subagents/runs.js +0 -155
- package/dist/integrations/subagents/runs.js.map +0 -1
- package/dist/tui/run-interruption.d.ts.map +0 -1
- package/dist/tui/run-interruption.js.map +0 -1
- package/dist/tui/run-limits-settings.d.ts +0 -39
- package/dist/tui/run-limits-settings.d.ts.map +0 -1
- package/dist/tui/run-limits-settings.js.map +0 -1
|
@@ -31,11 +31,66 @@
|
|
|
31
31
|
* text only changes when the fact changes, a fresh read costs a cache miss
|
|
32
32
|
* exactly when a cache hit would have been wrong.
|
|
33
33
|
*/
|
|
34
|
+
/**
|
|
35
|
+
* Where the tools run and how the model gets past the edge of it.
|
|
36
|
+
*
|
|
37
|
+
* The model used to learn its boundary from refusal strings — "Path escapes
|
|
38
|
+
* the working directory… Tools may only reach inside X" — and read every one
|
|
39
|
+
* as a wall, including the ones with a door in them. Stated up front, it can
|
|
40
|
+
* say what it can reach, and ask for the right thing when it cannot.
|
|
41
|
+
*/
|
|
42
|
+
export interface ExecutionBoundary {
|
|
43
|
+
/** Present when commands run in the OS sandbox; absent means the host. */
|
|
44
|
+
readonly sandbox?: {
|
|
45
|
+
/** The environment the sandbox resolved to, e.g. `linux-bwrap`. */
|
|
46
|
+
readonly environment: string;
|
|
47
|
+
/** Controls this machine actually applies, e.g. `filesystem`, `network`. */
|
|
48
|
+
readonly enforced: readonly string[];
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* What a sandboxed command's `dangerously_disable_sandbox` gets: put to the
|
|
52
|
+
* user (`ask`), granted unasked by configuration (`unattended`), or refused
|
|
53
|
+
* (`refused` — escapes off, or nobody to ask). Ignored on the host.
|
|
54
|
+
*/
|
|
55
|
+
readonly escape: 'ask' | 'unattended' | 'refused';
|
|
56
|
+
/** Whether a person answers the permission prompts in this session. */
|
|
57
|
+
readonly interactive: boolean;
|
|
58
|
+
}
|
|
59
|
+
/** What the model needs to know about running under WSL. */
|
|
60
|
+
export interface WslFacts {
|
|
61
|
+
/** `WSL_DISTRO_NAME`, when the environment carries it. */
|
|
62
|
+
readonly distro: string | null;
|
|
63
|
+
/** Windows executables can be started from the Linux side. */
|
|
64
|
+
readonly interop: boolean;
|
|
65
|
+
/** Windows drives mounted under `/mnt`, as `/mnt/<letter>`. */
|
|
66
|
+
readonly drives: readonly string[];
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* WSL, or `undefined` on any other Linux.
|
|
70
|
+
*
|
|
71
|
+
* The environment is the signal: WSL sets `WSL_DISTRO_NAME` in every
|
|
72
|
+
* process it starts, and `WSL_INTEROP` names the interop socket when interop
|
|
73
|
+
* is on. Interop also counts as on when its binfmt handler is registered
|
|
74
|
+
* (`/proc/sys/fs/binfmt_misc/WSLInterop`), which survives a shell that
|
|
75
|
+
* dropped the variable. Drives are the one-letter directories under `/mnt`
|
|
76
|
+
* — `/mnt/wsl` and `/mnt/wslg` are WSL's own and are not drives.
|
|
77
|
+
*
|
|
78
|
+
* Every probe is injectable so a test can describe a machine it is not
|
|
79
|
+
* running on; the defaults read this one.
|
|
80
|
+
*/
|
|
81
|
+
export declare function detectWsl(env?: NodeJS.ProcessEnv, probe?: {
|
|
82
|
+
readonly exists?: (path: string) => boolean;
|
|
83
|
+
readonly list?: (path: string) => readonly string[];
|
|
84
|
+
}): WslFacts | undefined;
|
|
34
85
|
export interface EnvironmentFacts {
|
|
35
86
|
/** ISO calendar date, `YYYY-MM-DD`, in the machine's own timezone. */
|
|
36
87
|
readonly today: string;
|
|
37
88
|
/** Directories besides the working directory the file tools may reach, absolute. */
|
|
38
89
|
readonly additionalDirectories?: readonly string[];
|
|
90
|
+
/** Where the tools run; absent leaves the boundary unstated, as before. */
|
|
91
|
+
readonly boundary?: ExecutionBoundary;
|
|
92
|
+
/** Present when this is WSL. */
|
|
93
|
+
readonly wsl?: WslFacts;
|
|
39
94
|
/**
|
|
40
95
|
* `branch` when on one, `null` when the working directory is not a
|
|
41
96
|
* repository, `'detached'` when it is one with no branch checked out.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/context/environment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;
|
|
1
|
+
{"version":3,"file":"environment.d.ts","sourceRoot":"","sources":["../../src/context/environment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAWH;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IACjC,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,CAAC,EAAE;QAClB,mEAAmE;QACnE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;QAC5B,4EAA4E;QAC5E,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAA;KACpC,CAAA;IACD;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,KAAK,GAAG,YAAY,GAAG,SAAS,CAAA;IACjD,uEAAuE;IACvE,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAA;CAC7B;AAED,4DAA4D;AAC5D,MAAM,WAAW,QAAQ;IACxB,0DAA0D;IAC1D,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,8DAA8D;IAC9D,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,+DAA+D;IAC/D,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;CAClC;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CACxB,GAAG,GAAE,MAAM,CAAC,UAAwB,EACpC,KAAK,GAAE;IACN,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;IAC3C,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,SAAS,MAAM,EAAE,CAAA;CAC9C,GACJ,QAAQ,GAAG,SAAS,CAoBtB;AAED,MAAM,WAAW,gBAAgB;IAChC,sEAAsE;IACtE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,oFAAoF;IACpF,QAAQ,CAAC,qBAAqB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAClD,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAA;IACrC,gCAAgC;IAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAA;IACvB;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAA;CAC9B;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,IAAI,GAAG,MAAM,CAG9C;AAeD,wBAAsB,oBAAoB,CACzC,GAAG,EAAE,MAAM,EACX,GAAG,GAAE,IAAiB,GACpB,OAAO,CAAC,gBAAgB,CAAC,CAmB3B;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAsBxE"}
|
|
@@ -32,10 +32,46 @@
|
|
|
32
32
|
* exactly when a cache hit would have been wrong.
|
|
33
33
|
*/
|
|
34
34
|
import { execFile } from 'node:child_process';
|
|
35
|
+
import { existsSync, readdirSync } from 'node:fs';
|
|
35
36
|
import { promisify } from 'node:util';
|
|
36
37
|
const run = promisify(execFile);
|
|
37
38
|
/** Bound on a single git call. A wedged repository must not stall a turn. */
|
|
38
39
|
const GIT_TIMEOUT_MS = 2_000;
|
|
40
|
+
/**
|
|
41
|
+
* WSL, or `undefined` on any other Linux.
|
|
42
|
+
*
|
|
43
|
+
* The environment is the signal: WSL sets `WSL_DISTRO_NAME` in every
|
|
44
|
+
* process it starts, and `WSL_INTEROP` names the interop socket when interop
|
|
45
|
+
* is on. Interop also counts as on when its binfmt handler is registered
|
|
46
|
+
* (`/proc/sys/fs/binfmt_misc/WSLInterop`), which survives a shell that
|
|
47
|
+
* dropped the variable. Drives are the one-letter directories under `/mnt`
|
|
48
|
+
* — `/mnt/wsl` and `/mnt/wslg` are WSL's own and are not drives.
|
|
49
|
+
*
|
|
50
|
+
* Every probe is injectable so a test can describe a machine it is not
|
|
51
|
+
* running on; the defaults read this one.
|
|
52
|
+
*/
|
|
53
|
+
export function detectWsl(env = process.env, probe = {}) {
|
|
54
|
+
const distro = env.WSL_DISTRO_NAME?.trim() || null;
|
|
55
|
+
const socket = env.WSL_INTEROP?.trim() || null;
|
|
56
|
+
if (!distro && !socket)
|
|
57
|
+
return undefined;
|
|
58
|
+
const exists = probe.exists ?? existsSync;
|
|
59
|
+
const list = probe.list ??
|
|
60
|
+
((path) => {
|
|
61
|
+
try {
|
|
62
|
+
return readdirSync(path);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return [];
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
const interop = socket !== null || exists('/proc/sys/fs/binfmt_misc/WSLInterop');
|
|
69
|
+
const drives = list('/mnt')
|
|
70
|
+
.filter((name) => /^[a-z]$/i.test(name))
|
|
71
|
+
.sort()
|
|
72
|
+
.map((name) => `/mnt/${name}`);
|
|
73
|
+
return { distro, interop, drives };
|
|
74
|
+
}
|
|
39
75
|
/**
|
|
40
76
|
* The machine's local calendar date.
|
|
41
77
|
*
|
|
@@ -94,7 +130,67 @@ export function composeEnvironmentPrompt(facts) {
|
|
|
94
130
|
if (facts.additionalDirectories && facts.additionalDirectories.length > 0) {
|
|
95
131
|
lines.push(`Besides the working directory, the file tools may reach these directories, by absolute path: ${facts.additionalDirectories.map((d) => `\`${d}\``).join(', ')}. Relative paths still resolve against the working directory.`);
|
|
96
132
|
}
|
|
133
|
+
if (facts.boundary)
|
|
134
|
+
lines.push(...boundaryLines(facts.boundary));
|
|
135
|
+
if (facts.wsl)
|
|
136
|
+
lines.push(...wslLines(facts.wsl, facts.boundary));
|
|
97
137
|
lines.push('These are facts about right now. Prefer them over any date or branch you would otherwise assume.');
|
|
98
138
|
return `## Environment\n\n${lines.join('\n')}`;
|
|
99
139
|
}
|
|
140
|
+
/** The boundary, and the way past it, in the words the model acts on. */
|
|
141
|
+
function boundaryLines(boundary) {
|
|
142
|
+
if (!boundary.sandbox) {
|
|
143
|
+
const outside = boundary.interactive
|
|
144
|
+
? 'A path anywhere else is not refused outright: the user is asked to approve that call first, every time — in plan mode too, for a read; the strict permission mode refuses it. When you need a directory repeatedly, suggest the user add it with `/add-dir <path>`.'
|
|
145
|
+
: 'A path anywhere else is refused in this session, because it needs a person to approve it and nobody is at the terminal. If you need one, say which directory and why, so the user can add it (`--add-dir <path>`) and run again.';
|
|
146
|
+
return [
|
|
147
|
+
'Tools run on this machine, not in a sandbox: shell commands and file changes go through the permission settings, which may ask the user before they run.',
|
|
148
|
+
`The file tools reach the working directory and any added directories directly. ${outside} A refusal that remains is a decision, not a missing file; say so rather than retrying another spelling.`,
|
|
149
|
+
];
|
|
150
|
+
}
|
|
151
|
+
const { environment, enforced } = boundary.sandbox;
|
|
152
|
+
const network = enforced.includes('network')
|
|
153
|
+
? ' The network is cut inside it.'
|
|
154
|
+
: ' It does not cut the network on this machine.';
|
|
155
|
+
const escapeRoute = boundary.escape === 'ask'
|
|
156
|
+
? 'When one command genuinely cannot work inside it (it needs the network, a path it does not mount, or a host tool), set `dangerously_disable_sandbox: true` on that one `bash` call: the user is asked to approve it every time, whatever else is approved; the plan and strict permission modes refuse it. Never use it to get around a permission refusal.'
|
|
157
|
+
: boundary.escape === 'unattended'
|
|
158
|
+
? 'When one command genuinely cannot work inside it, `dangerously_disable_sandbox: true` on that `bash` call runs it on the host: this session is configured to allow that without asking, and every use is recorded. Use it only when the sandbox is the obstacle.'
|
|
159
|
+
: 'Commands cannot leave the sandbox in this session. When one needs something the sandbox withholds, say what and why, and let the user decide.';
|
|
160
|
+
// Said per what the platform enforces, never more. A tier that does not
|
|
161
|
+
// confine the file system (`linux-namespace`, `basic`) leaves the whole
|
|
162
|
+
// host visible to a command; one that does still shows it the system
|
|
163
|
+
// directories programs need, read-only, and a private /tmp.
|
|
164
|
+
const files = enforced.includes('filesystem')
|
|
165
|
+
? ' Inside it, commands can read and write the working directory and the added directories; the system directories programs need are readable, /tmp is private to the command, and the rest of this machine (the home directory, other projects, other mounts) cannot be reached from it, so no spelling of such a path will be found.'
|
|
166
|
+
: ' It does not confine the file system here, so commands can still see files outside the working directory.';
|
|
167
|
+
return [
|
|
168
|
+
`Shell commands run in a sandbox (${environment}${enforced.length > 0 ? `, enforcing ${enforced.join(', ')}` : ', enforcing nothing on this platform'}).${files}${network} The file tools reach only the working directory and the added directories.`,
|
|
169
|
+
`To reach another directory, ask the user to add it with \`/add-dir <path>\` (the next turn binds it). ${escapeRoute}`,
|
|
170
|
+
];
|
|
171
|
+
}
|
|
172
|
+
/** WSL: where the Windows side is, and how to reach it from here. */
|
|
173
|
+
function wslLines(wsl, boundary) {
|
|
174
|
+
// Only a sandbox that confines the file system hides the drives; one that
|
|
175
|
+
// does not leaves them visible to commands, like the host.
|
|
176
|
+
const sandboxed = boundary?.sandbox?.enforced.includes('filesystem') === true;
|
|
177
|
+
const fileTools = boundary?.sandbox !== undefined
|
|
178
|
+
? 'the file tools reach them only once added with `/add-dir`'
|
|
179
|
+
: boundary?.interactive === false
|
|
180
|
+
? 'a file tool reaching them is refused in this session, since nobody is here to approve it'
|
|
181
|
+
: 'a file tool reaching them asks for approval first, like any other outside path';
|
|
182
|
+
const drives = wsl.drives.length > 0
|
|
183
|
+
? `Windows drives are mounted under ${wsl.drives.map((d) => `\`${d}\``).join(', ')} (\`C:\\Users\` is \`/mnt/c/Users\`; \`wslpath -w\` and \`wslpath -u\` convert).`
|
|
184
|
+
: 'No Windows drive is mounted under `/mnt` right now.';
|
|
185
|
+
const reach = sandboxed
|
|
186
|
+
? 'They are outside the sandbox, so a command there needs `/add-dir` or the sandbox escape.'
|
|
187
|
+
: `They are outside the working directory, so ${fileTools}.`;
|
|
188
|
+
const interop = wsl.interop
|
|
189
|
+
? `Windows programs start from the shell through WSL interop, by their \`.exe\` name: \`powershell.exe -NoProfile -Command ...\`, \`cmd.exe /c ...\`, \`explorer.exe .\`. \`cmd.exe\` started from a Linux directory warns that UNC paths are unsupported and falls back to C:\\Windows, so \`cd\` under \`/mnt/c\` first or use \`powershell.exe\`. If a name is not found, the Windows side of \`PATH\` was not appended; \`cmd.exe\` is under \`/mnt/c/Windows/System32\` and \`powershell.exe\` under its \`WindowsPowerShell/v1.0\`.${sandboxed ? ' The sandbox does not mount the Windows drives those programs live on, so running one needs the sandbox escape.' : ''}`
|
|
190
|
+
: 'WSL interop is off here, so Windows `.exe` programs cannot be started from the shell.';
|
|
191
|
+
return [
|
|
192
|
+
`This machine is Windows Subsystem for Linux${wsl.distro ? ` (distro \`${wsl.distro}\`)` : ''}. ${drives} ${reach}`,
|
|
193
|
+
interop,
|
|
194
|
+
];
|
|
195
|
+
}
|
|
100
196
|
//# sourceMappingURL=environment.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/context/environment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAErC,MAAM,GAAG,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAA;AAE/B,6EAA6E;AAC7E,MAAM,cAAc,GAAG,KAAK,CAAA;
|
|
1
|
+
{"version":3,"file":"environment.js","sourceRoot":"","sources":["../../src/context/environment.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { type SkippedInstructionFile } from './project.js';
|
|
|
3
3
|
/** Total model-visible instruction text held by one session. */
|
|
4
4
|
export declare const MAX_TOTAL_PROJECT_INSTRUCTION_CHARS = 256000;
|
|
5
5
|
/**
|
|
6
|
-
* Session-owned live instruction state. Each
|
|
6
|
+
* Session-owned live instruction state. Each turn gets its own drain cursor;
|
|
7
7
|
* children share discovery without being able to consume the parent's update.
|
|
8
8
|
*/
|
|
9
9
|
export declare class ProjectInstructionTracker {
|
|
@@ -15,8 +15,8 @@ export declare class ProjectInstructionTracker {
|
|
|
15
15
|
rehydrate(messages: readonly Message[]): void;
|
|
16
16
|
/** Refresh known scopes and return the exact policy for a new human turn. */
|
|
17
17
|
prepareSnapshot(messages: readonly Message[]): UserMessage | null;
|
|
18
|
-
/** Each
|
|
19
|
-
|
|
18
|
+
/** Each turn's durable messages are its cursor over the shared discovered state. */
|
|
19
|
+
createTurnContext(): ProjectInstructionContext;
|
|
20
20
|
get instructionFiles(): readonly string[];
|
|
21
21
|
get skippedInstructionFiles(): readonly SkippedInstructionFile[];
|
|
22
22
|
private observe;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-tracker.d.ts","sourceRoot":"","sources":["../../src/context/project-tracker.ts"],"names":[],"mappings":"AAEA,OAAO,EAEN,KAAK,OAAO,EACZ,KAAK,yBAAyB,EAE9B,KAAK,WAAW,EAGhB,MAAM,YAAY,CAAA;AAGnB,OAAO,EAIN,KAAK,sBAAsB,EAG3B,MAAM,cAAc,CAAA;AAErB,gEAAgE;AAChE,eAAO,MAAM,mCAAmC,SAAU,CAAA;AA0D1D;;;GAGG;AACH,qBAAa,yBAAyB;IACrC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;gBAE3C,GAAG,EAAE,MAAM;IAMvB,mFAAmF;IACnF,SAAS,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI;IAa7C,6EAA6E;IAC7E,eAAe,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,WAAW,GAAG,IAAI;IAKjE,
|
|
1
|
+
{"version":3,"file":"project-tracker.d.ts","sourceRoot":"","sources":["../../src/context/project-tracker.ts"],"names":[],"mappings":"AAEA,OAAO,EAEN,KAAK,OAAO,EACZ,KAAK,yBAAyB,EAE9B,KAAK,WAAW,EAGhB,MAAM,YAAY,CAAA;AAGnB,OAAO,EAIN,KAAK,sBAAsB,EAG3B,MAAM,cAAc,CAAA;AAErB,gEAAgE;AAChE,eAAO,MAAM,mCAAmC,SAAU,CAAA;AA0D1D;;;GAGG;AACH,qBAAa,yBAAyB;IACrC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;IAC7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;gBAE3C,GAAG,EAAE,MAAM;IAMvB,mFAAmF;IACnF,SAAS,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI;IAa7C,6EAA6E;IAC7E,eAAe,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,WAAW,GAAG,IAAI;IAKjE,oFAAoF;IACpF,iBAAiB,IAAI,yBAAyB;IAa9C,IAAI,gBAAgB,IAAI,SAAS,MAAM,EAAE,CAExC;IAED,IAAI,uBAAuB,IAAI,SAAS,sBAAsB,EAAE,CAE/D;IAED,OAAO,CAAC,OAAO;IAyBf,OAAO,CAAC,YAAY;IAapB,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,IAAI;IAkDZ,OAAO,CAAC,QAAQ;IAWhB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,uBAAuB;CAa/B"}
|
|
@@ -51,7 +51,7 @@ function composeLivePrompt(root, files) {
|
|
|
51
51
|
].join('\n');
|
|
52
52
|
}
|
|
53
53
|
/**
|
|
54
|
-
* Session-owned live instruction state. Each
|
|
54
|
+
* Session-owned live instruction state. Each turn gets its own drain cursor;
|
|
55
55
|
* children share discovery without being able to consume the parent's update.
|
|
56
56
|
*/
|
|
57
57
|
export class ProjectInstructionTracker {
|
|
@@ -84,8 +84,8 @@ export class ProjectInstructionTracker {
|
|
|
84
84
|
this.rehydrate(messages);
|
|
85
85
|
return this.snapshot();
|
|
86
86
|
}
|
|
87
|
-
/** Each
|
|
88
|
-
|
|
87
|
+
/** Each turn's durable messages are its cursor over the shared discovered state. */
|
|
88
|
+
createTurnContext() {
|
|
89
89
|
return {
|
|
90
90
|
prepareInitialSnapshot: ({ messages }) => this.prepareSnapshot(messages),
|
|
91
91
|
observeToolResult: (observation, { messages }) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-tracker.js","sourceRoot":"","sources":["../../src/context/project-tracker.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"project-tracker.js","sourceRoot":"","sources":["../../src/context/project-tracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
* cut. Cutting matters because this text is re-sent every turn: an
|
|
61
61
|
* instructions file is normally a few kilobytes, and nothing stops one from
|
|
62
62
|
* being a megabyte. Saying so matters more — a silent truncation is the
|
|
63
|
-
* failure this repository keeps finding, where the
|
|
63
|
+
* failure this repository keeps finding, where the turn succeeds while quietly
|
|
64
64
|
* not doing what was asked, and here it would show up as the agent ignoring
|
|
65
65
|
* the second half of a policy nobody could see was missing.
|
|
66
66
|
*/
|
package/dist/context/project.js
CHANGED
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
* cut. Cutting matters because this text is re-sent every turn: an
|
|
61
61
|
* instructions file is normally a few kilobytes, and nothing stops one from
|
|
62
62
|
* being a megabyte. Saying so matters more — a silent truncation is the
|
|
63
|
-
* failure this repository keeps finding, where the
|
|
63
|
+
* failure this repository keeps finding, where the turn succeeds while quietly
|
|
64
64
|
* not doing what was asked, and here it would show up as the agent ignoring
|
|
65
65
|
* the second half of a policy nobody could see was missing.
|
|
66
66
|
*/
|
|
@@ -10,9 +10,28 @@ import type { SandboxConfig } from '../config/schema.js';
|
|
|
10
10
|
* to every command the model chose to run. The isolation the docs
|
|
11
11
|
* described held on no path.
|
|
12
12
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
13
|
+
* It was then turned on by default, and that default is reversed again, on
|
|
14
|
+
* purpose and for a different reason: on a machine where the sandbox binds
|
|
15
|
+
* only the working directory and cuts the network, a coding agent could not
|
|
16
|
+
* read a file the user pointed it at, reach a package registry, or run a
|
|
17
|
+
* host tool, and every one of those failures read to the model like a wall.
|
|
18
|
+
* The default is now host execution under the permission system — each shell
|
|
19
|
+
* command reviewed, each path outside the working directory an approval
|
|
20
|
+
* request — and the sandbox is the opt-in (`sandbox.enabled: true`) for an
|
|
21
|
+
* operator who wants commands confined. What it enforces when on is a
|
|
22
|
+
* property of the machine, and this module's other job is to make sure
|
|
23
|
+
* nobody has to guess which.
|
|
15
24
|
*/
|
|
25
|
+
/**
|
|
26
|
+
* Whether the operator asked for the sandbox.
|
|
27
|
+
*
|
|
28
|
+
* `enabled` decides when it is written. Unset, a `requireIsolation` that names
|
|
29
|
+
* a control or an `ephemeral` workspace turns it on: both only mean something
|
|
30
|
+
* inside a sandbox, and silently dropping a stated requirement because a
|
|
31
|
+
* switch sat at its default is the downgrade `requireIsolation` exists to
|
|
32
|
+
* make impossible.
|
|
33
|
+
*/
|
|
34
|
+
export declare function sandboxRequested(config: SandboxConfig | undefined): boolean;
|
|
16
35
|
/**
|
|
17
36
|
* What a reader needs to know about the sandbox, without the live provider.
|
|
18
37
|
*
|
|
@@ -53,7 +72,7 @@ export interface ResolvedSandbox extends SandboxSummary {
|
|
|
53
72
|
readonly notice: string;
|
|
54
73
|
}
|
|
55
74
|
/**
|
|
56
|
-
* Build the sandbox for a
|
|
75
|
+
* Build the sandbox for a turn, or explain why there is none.
|
|
57
76
|
*
|
|
58
77
|
* Never throws for an ordinary platform shortfall — a machine that cannot
|
|
59
78
|
* confine the network still runs the CLI, and says so. It DOES throw when
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../src/context/sandbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,MAAM,EAEX,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EAEpB,MAAM,YAAY,CAAA;AAEnB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAExD
|
|
1
|
+
{"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../src/context/sandbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,MAAM,EAEX,KAAK,kBAAkB,EACvB,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EAEpB,MAAM,YAAY,CAAA;AAEnB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAExD;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,SAAS,GAAG,OAAO,CAG3E;AAED;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC9B;;;;;;OAMG;IACH,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;IAC5B,uDAAuD;IACvD,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAA;IACzC,mEAAmE;IACnE,QAAQ,CAAC,QAAQ,EAAE,SAAS,uBAAuB,EAAE,CAAA;IACrD;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,EAAE,SAAS,uBAAuB,EAAE,CAAA;IACrD;;;OAGG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,mBAAmB,GAAG,WAAW,CAAA;CAC/D;AAED,MAAM,WAAW,eAAgB,SAAQ,cAAc;IACtD,8CAA8C;IAC9C,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAA;IACnC,oEAAoE;IACpE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACvB;AAED;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,SAAS,GAAG,eAAe,CAyD9F;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,eAAe,GAAG,MAAM,GAAG,MAAM,CAEjF"}
|
package/dist/context/sandbox.js
CHANGED
|
@@ -1,6 +1,42 @@
|
|
|
1
1
|
import { LocalSandboxProvider, SANDBOX_ISOLATION_CONTROLS, isolationOf, } from '@namzu/sdk';
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
3
|
+
* The sandbox a CLI run executes its commands in.
|
|
4
|
+
*
|
|
5
|
+
* There was none. `sandboxProvider` appeared zero times in this package,
|
|
6
|
+
* so `context.sandbox` was always undefined and `BashTool` took its
|
|
7
|
+
* fallback branch — `execAsync` in the host process, with the host
|
|
8
|
+
* environment, meaning every credential the operator's shell holds went
|
|
9
|
+
* to every command the model chose to run. The isolation the docs
|
|
10
|
+
* described held on no path.
|
|
11
|
+
*
|
|
12
|
+
* It was then turned on by default, and that default is reversed again, on
|
|
13
|
+
* purpose and for a different reason: on a machine where the sandbox binds
|
|
14
|
+
* only the working directory and cuts the network, a coding agent could not
|
|
15
|
+
* read a file the user pointed it at, reach a package registry, or run a
|
|
16
|
+
* host tool, and every one of those failures read to the model like a wall.
|
|
17
|
+
* The default is now host execution under the permission system — each shell
|
|
18
|
+
* command reviewed, each path outside the working directory an approval
|
|
19
|
+
* request — and the sandbox is the opt-in (`sandbox.enabled: true`) for an
|
|
20
|
+
* operator who wants commands confined. What it enforces when on is a
|
|
21
|
+
* property of the machine, and this module's other job is to make sure
|
|
22
|
+
* nobody has to guess which.
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* Whether the operator asked for the sandbox.
|
|
26
|
+
*
|
|
27
|
+
* `enabled` decides when it is written. Unset, a `requireIsolation` that names
|
|
28
|
+
* a control or an `ephemeral` workspace turns it on: both only mean something
|
|
29
|
+
* inside a sandbox, and silently dropping a stated requirement because a
|
|
30
|
+
* switch sat at its default is the downgrade `requireIsolation` exists to
|
|
31
|
+
* make impossible.
|
|
32
|
+
*/
|
|
33
|
+
export function sandboxRequested(config) {
|
|
34
|
+
if (config?.enabled !== undefined)
|
|
35
|
+
return config.enabled;
|
|
36
|
+
return (config?.requireIsolation?.length ?? 0) > 0 || config?.workspace === 'ephemeral';
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Build the sandbox for a turn, or explain why there is none.
|
|
4
40
|
*
|
|
5
41
|
* Never throws for an ordinary platform shortfall — a machine that cannot
|
|
6
42
|
* confine the network still runs the CLI, and says so. It DOES throw when
|
|
@@ -10,9 +46,11 @@ import { LocalSandboxProvider, SANDBOX_ISOLATION_CONTROLS, isolationOf, } from '
|
|
|
10
46
|
* answer than the true one.
|
|
11
47
|
*/
|
|
12
48
|
export function resolveSandbox(log, config) {
|
|
13
|
-
if (config
|
|
49
|
+
if (!sandboxRequested(config)) {
|
|
14
50
|
return {
|
|
15
|
-
notice:
|
|
51
|
+
notice: config?.enabled === false
|
|
52
|
+
? "Sandbox off by configuration: commands and file tools run on this machine, with this shell's environment, under the permission prompts; a path outside the working directory asks before it is used. Set `sandbox.enabled: true` to confine commands."
|
|
53
|
+
: "Sandbox off (the default): commands and file tools run on this machine, with this shell's environment, under the permission prompts; a path outside the working directory asks before it is used. Set `sandbox.enabled: true` to confine commands.",
|
|
16
54
|
unconfined: true,
|
|
17
55
|
enforced: [],
|
|
18
56
|
required: (config?.requireIsolation ?? []),
|
|
@@ -22,7 +60,7 @@ export function resolveSandbox(log, config) {
|
|
|
22
60
|
const workspace = config?.workspace ?? 'working-directory';
|
|
23
61
|
const workspaceNotice = workspace === 'working-directory'
|
|
24
62
|
? 'The real working directory is mounted; changes persist across turns.'
|
|
25
|
-
: 'Each
|
|
63
|
+
: 'Each turn receives a disposable workspace; changes are removed at teardown.';
|
|
26
64
|
const required = (config?.requireIsolation ?? []);
|
|
27
65
|
// Constructing with the requirement is what makes `requireIsolation`
|
|
28
66
|
// mean something: the provider refuses rather than downgrading, and the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/context/sandbox.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,oBAAoB,EAEpB,0BAA0B,EAI1B,WAAW,GACX,MAAM,YAAY,CAAA;
|
|
1
|
+
{"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/context/sandbox.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,oBAAoB,EAEpB,0BAA0B,EAI1B,WAAW,GACX,MAAM,YAAY,CAAA;AAInB;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAiC;IACjE,IAAI,MAAM,EAAE,OAAO,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,OAAO,CAAA;IACxD,OAAO,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,EAAE,SAAS,KAAK,WAAW,CAAA;AACxF,CAAC;AA2CD;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW,EAAE,MAAiC;IAC5E,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,OAAO;YACN,MAAM,EACL,MAAM,EAAE,OAAO,KAAK,KAAK;gBACxB,CAAC,CAAC,uPAAuP;gBACzP,CAAC,CAAC,oPAAoP;YACxP,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,EAAE;YACZ,QAAQ,EAAE,CAAC,MAAM,EAAE,gBAAgB,IAAI,EAAE,CAAuC;YAChF,SAAS,EAAE,MAAM;SACjB,CAAA;IACF,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,EAAE,SAAS,IAAI,mBAAmB,CAAA;IAC1D,MAAM,eAAe,GACpB,SAAS,KAAK,mBAAmB;QAChC,CAAC,CAAC,sEAAsE;QACxE,CAAC,CAAC,6EAA6E,CAAA;IAEjF,MAAM,QAAQ,GAAG,CAAC,MAAM,EAAE,gBAAgB,IAAI,EAAE,CAAuC,CAAA;IACvF,qEAAqE;IACrE,wEAAwE;IACxE,kEAAkE;IAClE,sCAAsC;IACtC,MAAM,QAAQ,GAAG,IAAI,oBAAoB,CAAC,GAAG,EAAE,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,CAAA;IAE9E,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;IAChD,MAAM,QAAQ,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IACpE,MAAM,OAAO,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IAEpE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,8DAA8D;QAC9D,qEAAqE;QACrE,iDAAiD;QACjD,OAAO;YACN,QAAQ;YACR,MAAM,EAAE,eAAe,QAAQ,CAAC,WAAW,yCAAyC,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,iCAAiC,eAAe,4FAA4F;YACrQ,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,QAAQ,CAAC,WAAW;YACjC,QAAQ,EAAE,EAAE;YACZ,QAAQ;YACR,SAAS;SACT,CAAA;IACF,CAAC;IAED,OAAO;QACN,QAAQ;QACR,MAAM,EACL,OAAO,CAAC,MAAM,KAAK,CAAC;YACnB,CAAC,CAAC,eAAe,QAAQ,CAAC,WAAW,gBAAgB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,eAAe,EAAE;YAC9F,CAAC,CAAC,eAAe,QAAQ,CAAC,WAAW,gBAAgB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,eAAe,EAAE;QACrI,UAAU,EAAE,KAAK;QACjB,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,QAAQ;QACR,QAAQ;QACR,SAAS;KACT,CAAA;AACF,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAwB;IAC/D,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAA;AAC5C,CAAC"}
|
|
@@ -29,7 +29,7 @@ export interface ProviderChainCheckOptions {
|
|
|
29
29
|
* A credential is the obvious one. The other is a capability DISAGREEMENT: a
|
|
30
30
|
* run negotiates tools, vision and documents once, against the primary, and
|
|
31
31
|
* keeps that answer across a swap — so a chain whose members declare different
|
|
32
|
-
* abilities would land a
|
|
32
|
+
* abilities would land a turn on a member holding a request shaped for someone
|
|
33
33
|
* else. `createAgentSession` refuses such a chain outright, which means an
|
|
34
34
|
* operator who has one learns about it by trying to start a session.
|
|
35
35
|
*
|
|
@@ -24,7 +24,7 @@ import { PROVIDER_REGISTRY } from '../../integrations/providers/registry.js';
|
|
|
24
24
|
* A credential is the obvious one. The other is a capability DISAGREEMENT: a
|
|
25
25
|
* run negotiates tools, vision and documents once, against the primary, and
|
|
26
26
|
* keeps that answer across a swap — so a chain whose members declare different
|
|
27
|
-
* abilities would land a
|
|
27
|
+
* abilities would land a turn on a member holding a request shaped for someone
|
|
28
28
|
* else. `createAgentSession` refuses such a chain outright, which means an
|
|
29
29
|
* operator who has one learns about it by trying to start a session.
|
|
30
30
|
*
|
|
@@ -157,14 +157,14 @@ export async function describeProviderChain(options = {}) {
|
|
|
157
157
|
sections.push('Could not read what these members declare:', ...unreadable.map((line) => ` - ${line}`));
|
|
158
158
|
}
|
|
159
159
|
const message = sections.join('\n');
|
|
160
|
-
// Ordered by what stops a
|
|
160
|
+
// Ordered by what stops a turn. An unaccepted disagreement and an unusable
|
|
161
161
|
// primary both mean no session starts at all; everything else leaves namzu
|
|
162
162
|
// working with less than the operator declared.
|
|
163
163
|
if (disagreements.length > 0 && !accepted) {
|
|
164
164
|
return {
|
|
165
165
|
status: 'fail',
|
|
166
166
|
message: `provider chain cannot be honoured as written:\n${message}`,
|
|
167
|
-
remediation: 'Drop the member that disagrees, or set "allowCapabilityMismatch": true in your preferences to accept the limitation. namzu will not choose between advertising abilities a fallback lacks and costing your primary a capability on every
|
|
167
|
+
remediation: 'Drop the member that disagrees, or set "allowCapabilityMismatch": true in your preferences to accept the limitation. namzu will not choose between advertising abilities a fallback lacks and costing your primary a capability on every turn.',
|
|
168
168
|
};
|
|
169
169
|
}
|
|
170
170
|
if (primaryUnusable || primaryUnreadable) {
|
|
@@ -172,8 +172,8 @@ export async function describeProviderChain(options = {}) {
|
|
|
172
172
|
status: 'fail',
|
|
173
173
|
message: `${unusable} of ${members.length} chain member(s) cannot be used:\n${message}`,
|
|
174
174
|
remediation: primaryUnusable
|
|
175
|
-
? 'The primary provider has no usable credential, so no
|
|
176
|
-
: 'The primary provider could not be loaded, so no
|
|
175
|
+
? 'The primary provider has no usable credential, so no turn can start. Set its key, or run `namzu` to pick a provider that has one.'
|
|
176
|
+
: 'The primary provider could not be loaded, so no turn can start. Run `namzu` to pick a provider that can.',
|
|
177
177
|
};
|
|
178
178
|
}
|
|
179
179
|
if (unusable > 0 || unreadable.length > 0 || disagreements.length > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chain.js","sourceRoot":"","sources":["../../../src/doctor/checks/chain.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"chain.js","sourceRoot":"","sources":["../../../src/doctor/checks/chain.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,8 +11,8 @@ import type { DoctorCheck, DoctorCheckResult, InvariantRegistry } from '@namzu/s
|
|
|
11
11
|
* about whether the check reaches it.
|
|
12
12
|
*
|
|
13
13
|
* Every invariant is evaluated with `ctx: undefined`. `namzu doctor` runs
|
|
14
|
-
* with no live
|
|
15
|
-
* a real invariant's check could read that is specific to one
|
|
14
|
+
* with no live turn and no candidate compaction reduction — there is nothing
|
|
15
|
+
* a real invariant's check could read that is specific to one turn — so
|
|
16
16
|
* `undefined` is the honest context, not a shortcut: each check registered
|
|
17
17
|
* against it is written to answer `unknown` rather than guess (see
|
|
18
18
|
* `compaction.ts` and `claim-disk.ts` in `@namzu/sdk`), and this row reports
|
|
@@ -14,8 +14,8 @@ function label(row) {
|
|
|
14
14
|
* about whether the check reaches it.
|
|
15
15
|
*
|
|
16
16
|
* Every invariant is evaluated with `ctx: undefined`. `namzu doctor` runs
|
|
17
|
-
* with no live
|
|
18
|
-
* a real invariant's check could read that is specific to one
|
|
17
|
+
* with no live turn and no candidate compaction reduction — there is nothing
|
|
18
|
+
* a real invariant's check could read that is specific to one turn — so
|
|
19
19
|
* `undefined` is the honest context, not a shortcut: each check registered
|
|
20
20
|
* against it is written to answer `unknown` rather than guess (see
|
|
21
21
|
* `compaction.ts` and `claim-disk.ts` in `@namzu/sdk`), and this row reports
|
|
@@ -49,7 +49,7 @@ export async function describeInvariants(registry) {
|
|
|
49
49
|
// behaviour of this row. `inconclusive` maps to exit 69 in
|
|
50
50
|
// `doctor/registry.ts` and means "I asked and could not establish an
|
|
51
51
|
// answer" — a real signal that something is wrong with the check
|
|
52
|
-
// itself. A runtime invariant outside a live
|
|
52
|
+
// itself. A runtime invariant outside a live turn is a different thing:
|
|
53
53
|
// the question has no subject yet, every registered check is written
|
|
54
54
|
// to answer `unknown` here on purpose, and so this state is reached on
|
|
55
55
|
// EVERY doctor run. Reporting it as inconclusive made `namzu doctor`
|
|
@@ -59,11 +59,11 @@ export async function describeInvariants(registry) {
|
|
|
59
59
|
// `skipped` is not "satisfied" either — the summary counts it
|
|
60
60
|
// separately from `pass`, and the message still names which invariants
|
|
61
61
|
// went unevaluated and how many violations each has accumulated. The
|
|
62
|
-
// violation counters above are what actually carry a live
|
|
62
|
+
// violation counters above are what actually carry a live turn's
|
|
63
63
|
// findings back to this row.
|
|
64
64
|
return {
|
|
65
65
|
status: 'skipped',
|
|
66
|
-
message: `${unknown.length}/${ids.length} invariant(s) have no subject outside a live
|
|
66
|
+
message: `${unknown.length}/${ids.length} invariant(s) have no subject outside a live turn: ${names}`,
|
|
67
67
|
};
|
|
68
68
|
}
|
|
69
69
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invariants.js","sourceRoot":"","sources":["../../../src/doctor/checks/invariants.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAQvC,SAAS,KAAK,CAAC,GAAiB;IAC/B,OAAO,GAAG,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,UAAU,aAAa,GAAG,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAA;AACnF,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,QAA2B;IACnE,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAA;IAC9B,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAA;IAClE,CAAC;IAED,MAAM,IAAI,GAAmB,MAAM,OAAO,CAAC,GAAG,CAC7C,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACtB,EAAE;QACF,OAAO,EAAE,MAAM,QAAQ,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,CAAC;QAC/C,UAAU,EAAE,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;KACvC,CAAC,CAAC,CACH,CAAA;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,KAAK,UAAU,CAAC,CAAA;IACnE,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAA;IAEjE,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,QAAQ;aACrB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;aAC5F,IAAI,CAAC,IAAI,CAAC,CAAA;QACZ,OAAO;YACN,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,GAAG,QAAQ,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,4BAA4B,MAAM,EAAE;YAC7E,WAAW,EACV,iFAAiF;SAClF,CAAA;IACF,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3C,iEAAiE;QACjE,2DAA2D;QAC3D,qEAAqE;QACrE,iEAAiE;QACjE,
|
|
1
|
+
{"version":3,"file":"invariants.js","sourceRoot":"","sources":["../../../src/doctor/checks/invariants.ts"],"names":[],"mappings":"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"}
|
|
@@ -50,7 +50,7 @@ export function describeLogPipeline(counters) {
|
|
|
50
50
|
return {
|
|
51
51
|
status: 'fail',
|
|
52
52
|
message: `${counters.dropped} log record(s) never reached the sink — ${summarise(counters)}`,
|
|
53
|
-
remediation: 'A record is counted dropped when the installed sink threw, or when the sink is NOOP_SINK. Check the sink passed to installProcessSink: a sink that throws is caught so one bad record cannot fail a
|
|
53
|
+
remediation: 'A record is counted dropped when the installed sink threw, or when the sink is NOOP_SINK. Check the sink passed to installProcessSink: a sink that throws is caught so one bad record cannot fail a turn, which is exactly why the count is the only place this shows up.',
|
|
54
54
|
};
|
|
55
55
|
}
|
|
56
56
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logging.js","sourceRoot":"","sources":["../../../src/doctor/checks/logging.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE3C;;;;;;;;;;;;;;;;GAgBG;AAEH,2EAA2E;AAC3E,MAAM,MAAM,GAAuC;IAClD,SAAS;IACT,UAAU;IACV,mBAAmB;IACnB,iBAAiB;IACjB,kBAAkB;CAClB,CAAA;AAED,SAAS,SAAS,CAAC,QAAyB;IAC3C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC1D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAqC;IACxE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC5B,qEAAqE;QACrE,uEAAuE;QACvE,oEAAoE;QACpE,sEAAsE;QACtE,wCAAwC;QACxC,OAAO;YACN,MAAM,EAAE,cAAc;YACtB,OAAO,EACN,yHAAyH;YAC1H,WAAW,EACV,8KAA8K;SAC/K,CAAA;IACF,CAAC;IAED,IAAI,QAAQ,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO;YACN,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,GAAG,QAAQ,CAAC,OAAO,2CAA2C,SAAS,CAAC,QAAQ,CAAC,EAAE;YAC5F,WAAW,EACV,
|
|
1
|
+
{"version":3,"file":"logging.js","sourceRoot":"","sources":["../../../src/doctor/checks/logging.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAE3C;;;;;;;;;;;;;;;;GAgBG;AAEH,2EAA2E;AAC3E,MAAM,MAAM,GAAuC;IAClD,SAAS;IACT,UAAU;IACV,mBAAmB;IACnB,iBAAiB;IACjB,kBAAkB;CAClB,CAAA;AAED,SAAS,SAAS,CAAC,QAAyB;IAC3C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC1D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAqC;IACxE,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC5B,qEAAqE;QACrE,uEAAuE;QACvE,oEAAoE;QACpE,sEAAsE;QACtE,wCAAwC;QACxC,OAAO;YACN,MAAM,EAAE,cAAc;YACtB,OAAO,EACN,yHAAyH;YAC1H,WAAW,EACV,8KAA8K;SAC/K,CAAA;IACF,CAAC;IAED,IAAI,QAAQ,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO;YACN,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,GAAG,QAAQ,CAAC,OAAO,2CAA2C,SAAS,CAAC,QAAQ,CAAC,EAAE;YAC5F,WAAW,EACV,2QAA2Q;SAC5Q,CAAA;IACF,CAAC;IAED,OAAO;QACN,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,wCAAwC,SAAS,CAAC,QAAQ,CAAC,EAAE;KACtE,CAAA;AACF,CAAC;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAgB;IAChD,EAAE,EAAE,kBAAkB;IACtB,0EAA0E;IAC1E,wEAAwE;IACxE,sDAAsD;IACtD,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,GAA+B,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,cAAc,EAAE,CAAC,CAAC;CAC7F,CAAA"}
|