@with-logic/elwood 0.1.0 → 0.1.2
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 +182 -3
- package/CONTRIBUTING.md +104 -0
- package/LICENSE +1 -1
- package/README.md +295 -26
- package/SECURITY.md +42 -0
- package/dist/claude/command.d.ts +9 -2
- package/dist/claude/command.d.ts.map +1 -1
- package/dist/claude/command.js +23 -16
- package/dist/claude/command.js.map +1 -1
- package/dist/claude/model-picker.d.ts.map +1 -1
- package/dist/claude/model-picker.js +4 -3
- package/dist/claude/model-picker.js.map +1 -1
- package/dist/claude/model-switch-confirmation.js +9 -1
- package/dist/claude/model-switch-confirmation.js.map +1 -1
- package/dist/claude/screen-table.js +1 -1
- package/dist/claude/screen-table.js.map +1 -1
- package/dist/claude/session/build.d.ts.map +1 -1
- package/dist/claude/session/build.js +3 -0
- package/dist/claude/session/build.js.map +1 -1
- package/dist/claude/session/index.d.ts.map +1 -1
- package/dist/claude/session/index.js +5 -2
- package/dist/claude/session/index.js.map +1 -1
- package/dist/claude/session/resume.d.ts +1 -1
- package/dist/claude/session/resume.d.ts.map +1 -1
- package/dist/claude/session/resume.js +5 -1
- package/dist/claude/session/resume.js.map +1 -1
- package/dist/claude/session/start-or-resume.js +1 -0
- package/dist/claude/session/start-or-resume.js.map +1 -1
- package/dist/claude/simple.d.ts.map +1 -1
- package/dist/claude/simple.js +4 -0
- package/dist/claude/simple.js.map +1 -1
- package/dist/cli/args/index.d.ts +3 -1
- package/dist/cli/args/index.d.ts.map +1 -1
- package/dist/cli/args/index.js +10 -2
- package/dist/cli/args/index.js.map +1 -1
- package/dist/cli/args/options.d.ts.map +1 -1
- package/dist/cli/args/options.js +2 -0
- package/dist/cli/args/options.js.map +1 -1
- package/dist/cli/args-commands.d.ts +10 -0
- package/dist/cli/args-commands.d.ts.map +1 -0
- package/dist/cli/args-commands.js +113 -0
- package/dist/cli/args-commands.js.map +1 -0
- package/dist/cli/command-types.d.ts +26 -0
- package/dist/cli/command-types.d.ts.map +1 -0
- package/dist/cli/command-types.js +9 -0
- package/dist/cli/command-types.js.map +1 -0
- package/dist/cli/config/codec-primitives.d.ts +20 -0
- package/dist/cli/config/codec-primitives.d.ts.map +1 -0
- package/dist/cli/config/codec-primitives.js +51 -0
- package/dist/cli/config/codec-primitives.js.map +1 -0
- package/dist/cli/config/codec.d.ts.map +1 -1
- package/dist/cli/config/codec.js +4 -46
- package/dist/cli/config/codec.js.map +1 -1
- package/dist/cli/config/effective.d.ts.map +1 -1
- package/dist/cli/config/effective.js +1 -0
- package/dist/cli/config/effective.js.map +1 -1
- package/dist/cli/config/keys.d.ts +1 -1
- package/dist/cli/config/keys.d.ts.map +1 -1
- package/dist/cli/config/keys.js +1 -0
- package/dist/cli/config/keys.js.map +1 -1
- package/dist/cli/entry.d.ts +4 -2
- package/dist/cli/entry.d.ts.map +1 -1
- package/dist/cli/entry.js +2 -1
- package/dist/cli/entry.js.map +1 -1
- package/dist/cli/help.d.ts +2 -2
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +40 -1
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/interactive/index.d.ts +26 -0
- package/dist/cli/interactive/index.d.ts.map +1 -0
- package/dist/cli/interactive/index.js +33 -0
- package/dist/cli/interactive/index.js.map +1 -0
- package/dist/cli/interactive/launch.d.ts +14 -0
- package/dist/cli/interactive/launch.d.ts.map +1 -0
- package/dist/cli/interactive/launch.js +66 -0
- package/dist/cli/interactive/launch.js.map +1 -0
- package/dist/cli/interactive/spawn.d.ts +18 -0
- package/dist/cli/interactive/spawn.d.ts.map +1 -0
- package/dist/cli/interactive/spawn.js +53 -0
- package/dist/cli/interactive/spawn.js.map +1 -0
- package/dist/cli/main-failure.d.ts +28 -0
- package/dist/cli/main-failure.d.ts.map +1 -0
- package/dist/cli/main-failure.js +78 -0
- package/dist/cli/main-failure.js.map +1 -0
- package/dist/cli/main.d.ts +12 -4
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +27 -73
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/models/index.d.ts +20 -0
- package/dist/cli/models/index.d.ts.map +1 -0
- package/dist/cli/models/index.js +63 -0
- package/dist/cli/models/index.js.map +1 -0
- package/dist/cli/models/render.d.ts +9 -0
- package/dist/cli/models/render.d.ts.map +1 -0
- package/dist/cli/models/render.js +33 -0
- package/dist/cli/models/render.js.map +1 -0
- package/dist/cli/request/index.d.ts.map +1 -1
- package/dist/cli/request/index.js +8 -2
- package/dist/cli/request/index.js.map +1 -1
- package/dist/cli/request/layers.d.ts +2 -0
- package/dist/cli/request/layers.d.ts.map +1 -1
- package/dist/cli/request/layers.js +9 -5
- package/dist/cli/request/layers.js.map +1 -1
- package/dist/cli/request/posture.d.ts +28 -0
- package/dist/cli/request/posture.d.ts.map +1 -0
- package/dist/cli/request/posture.js +70 -0
- package/dist/cli/request/posture.js.map +1 -0
- package/dist/cli/request/resolution-types.d.ts +1 -0
- package/dist/cli/request/resolution-types.d.ts.map +1 -1
- package/dist/cli/request/settings.d.ts +2 -12
- package/dist/cli/request/settings.d.ts.map +1 -1
- package/dist/cli/request/settings.js +2 -25
- package/dist/cli/request/settings.js.map +1 -1
- package/dist/cli/request/validation.d.ts +12 -0
- package/dist/cli/request/validation.d.ts.map +1 -1
- package/dist/cli/request/validation.js +30 -10
- package/dist/cli/request/validation.js.map +1 -1
- package/dist/cli/request/values.d.ts +1 -0
- package/dist/cli/request/values.d.ts.map +1 -1
- package/dist/cli/request/values.js +1 -0
- package/dist/cli/request/values.js.map +1 -1
- package/dist/cli/run/index.d.ts.map +1 -1
- package/dist/cli/run/index.js +5 -41
- package/dist/cli/run/index.js.map +1 -1
- package/dist/cli/run/subscribe.d.ts +19 -0
- package/dist/cli/run/subscribe.d.ts.map +1 -0
- package/dist/cli/run/subscribe.js +47 -0
- package/dist/cli/run/subscribe.js.map +1 -0
- package/dist/cli/session/launch.d.ts +3 -0
- package/dist/cli/session/launch.d.ts.map +1 -1
- package/dist/cli/session/launch.js +11 -0
- package/dist/cli/session/launch.js.map +1 -1
- package/dist/cli/sessions/index.d.ts +30 -0
- package/dist/cli/sessions/index.d.ts.map +1 -0
- package/dist/cli/sessions/index.js +61 -0
- package/dist/cli/sessions/index.js.map +1 -0
- package/dist/cli/sessions/list.d.ts +28 -0
- package/dist/cli/sessions/list.d.ts.map +1 -0
- package/dist/cli/sessions/list.js +63 -0
- package/dist/cli/sessions/list.js.map +1 -0
- package/dist/cli/sessions/settings.d.ts +11 -0
- package/dist/cli/sessions/settings.d.ts.map +1 -0
- package/dist/cli/sessions/settings.js +26 -0
- package/dist/cli/sessions/settings.js.map +1 -0
- package/dist/cli/table.d.ts +7 -0
- package/dist/cli/table.d.ts.map +1 -0
- package/dist/cli/table.js +14 -0
- package/dist/cli/table.js.map +1 -0
- package/dist/cli/types.d.ts +5 -1
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/types.js.map +1 -1
- package/dist/codex/command.d.ts +18 -2
- package/dist/codex/command.d.ts.map +1 -1
- package/dist/codex/command.js +39 -24
- package/dist/codex/command.js.map +1 -1
- package/dist/codex/model-picker.d.ts.map +1 -1
- package/dist/codex/model-picker.js +3 -2
- package/dist/codex/model-picker.js.map +1 -1
- package/dist/codex/session/build.d.ts.map +1 -1
- package/dist/codex/session/build.js +5 -7
- package/dist/codex/session/build.js.map +1 -1
- package/dist/codex/session/index.d.ts.map +1 -1
- package/dist/codex/session/index.js +5 -2
- package/dist/codex/session/index.js.map +1 -1
- package/dist/codex/session/resume.d.ts +1 -1
- package/dist/codex/session/resume.d.ts.map +1 -1
- package/dist/codex/session/resume.js +5 -1
- package/dist/codex/session/resume.js.map +1 -1
- package/dist/codex/session/start-or-resume.js +1 -0
- package/dist/codex/session/start-or-resume.js.map +1 -1
- package/dist/codex/session/types.d.ts +3 -0
- package/dist/codex/session/types.d.ts.map +1 -1
- package/dist/codex/simple.d.ts.map +1 -1
- package/dist/codex/simple.js +4 -0
- package/dist/codex/simple.js.map +1 -1
- package/dist/core/errors.d.ts +1 -1
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js.map +1 -1
- package/dist/core/high-trust.d.ts +41 -0
- package/dist/core/high-trust.d.ts.map +1 -0
- package/dist/core/high-trust.js +50 -0
- package/dist/core/high-trust.js.map +1 -0
- package/dist/core/input/index.d.ts.map +1 -1
- package/dist/core/input/index.js +15 -3
- package/dist/core/input/index.js.map +1 -1
- package/dist/core/models/input.d.ts +3 -0
- package/dist/core/models/input.d.ts.map +1 -0
- package/dist/core/models/input.js +9 -0
- package/dist/core/models/input.js.map +1 -0
- package/dist/core/models/picker.d.ts +2 -1
- package/dist/core/models/picker.d.ts.map +1 -1
- package/dist/core/models/picker.js +6 -5
- package/dist/core/models/picker.js.map +1 -1
- package/dist/core/models/tui-screen.d.ts +1 -1
- package/dist/core/models/tui-screen.d.ts.map +1 -1
- package/dist/core/models/tui-screen.js +26 -3
- package/dist/core/models/tui-screen.js.map +1 -1
- package/dist/core/trust/allowlist.d.ts +56 -0
- package/dist/core/trust/allowlist.d.ts.map +1 -0
- package/dist/core/{trust-prompts.js → trust/allowlist.js} +21 -38
- package/dist/core/trust/allowlist.js.map +1 -0
- package/dist/core/trust/prompts.d.ts +4 -46
- package/dist/core/trust/prompts.d.ts.map +1 -1
- package/dist/core/trust/prompts.js +2 -73
- package/dist/core/trust/prompts.js.map +1 -1
- package/dist/core/trust/responder.d.ts +2 -0
- package/dist/core/trust/responder.d.ts.map +1 -1
- package/dist/core/trust/responder.js +4 -0
- package/dist/core/trust/responder.js.map +1 -1
- package/dist/core/types.d.ts +3 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/runtime/launch-arguments.d.ts +12 -0
- package/dist/runtime/launch-arguments.d.ts.map +1 -0
- package/dist/runtime/launch-arguments.js +15 -0
- package/dist/runtime/launch-arguments.js.map +1 -0
- package/dist/runtime/session/base.d.ts.map +1 -1
- package/dist/runtime/session/base.js +4 -1
- package/dist/runtime/session/base.js.map +1 -1
- package/dist/runtime/session/commands.d.ts +2 -1
- package/dist/runtime/session/commands.d.ts.map +1 -1
- package/dist/runtime/session/commands.js +10 -4
- package/dist/runtime/session/commands.js.map +1 -1
- package/dist/runtime/session/lifecycle.d.ts +3 -4
- package/dist/runtime/session/lifecycle.d.ts.map +1 -1
- package/dist/runtime/session/lifecycle.js +6 -5
- package/dist/runtime/session/lifecycle.js.map +1 -1
- package/dist/state/directories.d.ts +4 -0
- package/dist/state/directories.d.ts.map +1 -0
- package/dist/state/directories.js +41 -0
- package/dist/state/directories.js.map +1 -0
- package/dist/state/files.d.ts.map +1 -1
- package/dist/state/files.js +25 -11
- package/dist/state/files.js.map +1 -1
- package/dist/state/private-session.d.ts.map +1 -1
- package/dist/state/private-session.js +2 -0
- package/dist/state/private-session.js.map +1 -1
- package/dist/state/store.d.ts.map +1 -1
- package/dist/state/store.js +7 -1
- package/dist/state/store.js.map +1 -1
- package/docs/cli-behavior.md +89 -1
- package/docs/cli-output.md +60 -0
- package/docs/cli.md +10 -2
- package/docs/codex/cli.md +57 -0
- package/docs/codex/config.md +47 -0
- package/docs/codex/hooks.md +70 -0
- package/examples/README.md +56 -0
- package/examples/full.ts +113 -0
- package/examples/minimal.ts +15 -0
- package/examples/stream.ts +39 -0
- package/examples/support.ts +71 -0
- package/package.json +17 -10
- package/prd/01-overview.md +21 -0
- package/prd/02-goals.md +47 -0
- package/prd/03-terminology.md +32 -0
- package/prd/04-architecture.md +121 -0
- package/prd/05-api/5.1-starting-claude.md +108 -0
- package/prd/05-api/5.2-resuming-claude.md +86 -0
- package/prd/05-api/5.3-claude-session-api.md +658 -0
- package/prd/05-api/5.4-events.md +145 -0
- package/prd/05-api/5.5-starting-codex.md +106 -0
- package/prd/05-api/5.6-resuming-codex.md +48 -0
- package/prd/05-api/5.7-codex-session-api.md +425 -0
- package/prd/05-api/5.8-session-api.md +122 -0
- package/prd/05-api/5.9-loops.md +170 -0
- package/prd/05-api/README.md +19 -0
- package/prd/06-claude-hook-bridge.md +164 -0
- package/prd/07-claude-policy.md +15 -0
- package/prd/07a-codex-hook-bridge.md +76 -0
- package/prd/08-state.md +127 -0
- package/prd/09-lifecycle.md +222 -0
- package/prd/10-errors.md +55 -0
- package/prd/11-test-app.md +53 -0
- package/prd/12-e2e.md +23 -0
- package/prd/12a-cli.md +375 -0
- package/prd/13-latitude.md +12 -0
- package/prd/14-conformance.md +333 -0
- package/prd/15-open-notes.md +8 -0
- package/prd/README.md +45 -0
- package/dist/claude/hook-dispatch.d.ts +0 -9
- package/dist/claude/hook-dispatch.d.ts.map +0 -1
- package/dist/claude/hook-dispatch.js +0 -12
- package/dist/claude/hook-dispatch.js.map +0 -1
- package/dist/claude/hook-events-extra.d.ts +0 -81
- package/dist/claude/hook-events-extra.d.ts.map +0 -1
- package/dist/claude/hook-events-extra.js +0 -6
- package/dist/claude/hook-events-extra.js.map +0 -1
- package/dist/claude/hook-events.d.ts +0 -101
- package/dist/claude/hook-events.d.ts.map +0 -1
- package/dist/claude/hook-events.js +0 -6
- package/dist/claude/hook-events.js.map +0 -1
- package/dist/claude/hook-names.d.ts +0 -24
- package/dist/claude/hook-names.d.ts.map +0 -1
- package/dist/claude/hook-names.js +0 -45
- package/dist/claude/hook-names.js.map +0 -1
- package/dist/claude/hooks.d.ts +0 -78
- package/dist/claude/hooks.d.ts.map +0 -1
- package/dist/claude/hooks.js +0 -6
- package/dist/claude/hooks.js.map +0 -1
- package/dist/claude/session-bridge.d.ts +0 -11
- package/dist/claude/session-bridge.d.ts.map +0 -1
- package/dist/claude/session-bridge.js +0 -18
- package/dist/claude/session-bridge.js.map +0 -1
- package/dist/claude/session-build.d.ts +0 -15
- package/dist/claude/session-build.d.ts.map +0 -1
- package/dist/claude/session-build.js +0 -147
- package/dist/claude/session-build.js.map +0 -1
- package/dist/claude/session-hook-handler.d.ts +0 -34
- package/dist/claude/session-hook-handler.d.ts.map +0 -1
- package/dist/claude/session-hook-handler.js +0 -42
- package/dist/claude/session-hook-handler.js.map +0 -1
- package/dist/claude/session-instance.d.ts +0 -42
- package/dist/claude/session-instance.d.ts.map +0 -1
- package/dist/claude/session-instance.js +0 -146
- package/dist/claude/session-instance.js.map +0 -1
- package/dist/claude/session-interface.d.ts +0 -49
- package/dist/claude/session-interface.d.ts.map +0 -1
- package/dist/claude/session-interface.js +0 -10
- package/dist/claude/session-interface.js.map +0 -1
- package/dist/claude/session-resume.d.ts +0 -8
- package/dist/claude/session-resume.d.ts.map +0 -1
- package/dist/claude/session-resume.js +0 -47
- package/dist/claude/session-resume.js.map +0 -1
- package/dist/claude/session-runtime.d.ts +0 -43
- package/dist/claude/session-runtime.d.ts.map +0 -1
- package/dist/claude/session-runtime.js +0 -105
- package/dist/claude/session-runtime.js.map +0 -1
- package/dist/claude/session-transcript.d.ts +0 -62
- package/dist/claude/session-transcript.d.ts.map +0 -1
- package/dist/claude/session-transcript.js +0 -88
- package/dist/claude/session-transcript.js.map +0 -1
- package/dist/claude/session.d.ts +0 -18
- package/dist/claude/session.d.ts.map +0 -1
- package/dist/claude/session.js +0 -58
- package/dist/claude/session.js.map +0 -1
- package/dist/claude/start-or-resume.d.ts +0 -12
- package/dist/claude/start-or-resume.d.ts.map +0 -1
- package/dist/claude/start-or-resume.js +0 -32
- package/dist/claude/start-or-resume.js.map +0 -1
- package/dist/claude/tool-hook-events.d.ts +0 -10
- package/dist/claude/tool-hook-events.d.ts.map +0 -1
- package/dist/claude/tool-hook-events.js +0 -18
- package/dist/claude/tool-hook-events.js.map +0 -1
- package/dist/claude/tool-types.d.ts +0 -158
- package/dist/claude/tool-types.d.ts.map +0 -1
- package/dist/claude/tool-types.js +0 -6
- package/dist/claude/tool-types.js.map +0 -1
- package/dist/claude/validate-input.d.ts +0 -8
- package/dist/claude/validate-input.d.ts.map +0 -1
- package/dist/claude/validate-input.js +0 -137
- package/dist/claude/validate-input.js.map +0 -1
- package/dist/claude/validate-permission-update.d.ts +0 -10
- package/dist/claude/validate-permission-update.d.ts.map +0 -1
- package/dist/claude/validate-permission-update.js +0 -72
- package/dist/claude/validate-permission-update.js.map +0 -1
- package/dist/claude/validate-result.d.ts +0 -7
- package/dist/claude/validate-result.d.ts.map +0 -1
- package/dist/claude/validate-result.js +0 -118
- package/dist/claude/validate-result.js.map +0 -1
- package/dist/claude/validate-shapes.d.ts +0 -22
- package/dist/claude/validate-shapes.d.ts.map +0 -1
- package/dist/claude/validate-shapes.js +0 -15
- package/dist/claude/validate-shapes.js.map +0 -1
- package/dist/claude/validate-tool-update.d.ts +0 -15
- package/dist/claude/validate-tool-update.d.ts.map +0 -1
- package/dist/claude/validate-tool-update.js +0 -122
- package/dist/claude/validate-tool-update.js.map +0 -1
- package/dist/cli/agent-detect.d.ts +0 -44
- package/dist/cli/agent-detect.d.ts.map +0 -1
- package/dist/cli/agent-detect.js +0 -66
- package/dist/cli/agent-detect.js.map +0 -1
- package/dist/cli/arg-errors.d.ts +0 -6
- package/dist/cli/arg-errors.d.ts.map +0 -1
- package/dist/cli/arg-errors.js +0 -44
- package/dist/cli/arg-errors.js.map +0 -1
- package/dist/cli/arg-options.d.ts +0 -26
- package/dist/cli/arg-options.d.ts.map +0 -1
- package/dist/cli/arg-options.js +0 -50
- package/dist/cli/arg-options.js.map +0 -1
- package/dist/cli/args.d.ts +0 -7
- package/dist/cli/args.d.ts.map +0 -1
- package/dist/cli/args.js +0 -70
- package/dist/cli/args.js.map +0 -1
- package/dist/cli/lifecycle-outcome.d.ts +0 -13
- package/dist/cli/lifecycle-outcome.d.ts.map +0 -1
- package/dist/cli/lifecycle-outcome.js +0 -20
- package/dist/cli/lifecycle-outcome.js.map +0 -1
- package/dist/cli/lifecycle.d.ts +0 -61
- package/dist/cli/lifecycle.d.ts.map +0 -1
- package/dist/cli/lifecycle.js +0 -152
- package/dist/cli/lifecycle.js.map +0 -1
- package/dist/cli/request-finalize.d.ts +0 -10
- package/dist/cli/request-finalize.d.ts.map +0 -1
- package/dist/cli/request-finalize.js +0 -135
- package/dist/cli/request-finalize.js.map +0 -1
- package/dist/cli/request-layers.d.ts +0 -30
- package/dist/cli/request-layers.d.ts.map +0 -1
- package/dist/cli/request-layers.js +0 -44
- package/dist/cli/request-layers.js.map +0 -1
- package/dist/cli/request-settings.d.ts +0 -34
- package/dist/cli/request-settings.d.ts.map +0 -1
- package/dist/cli/request-settings.js +0 -66
- package/dist/cli/request-settings.js.map +0 -1
- package/dist/cli/request-sources.d.ts +0 -13
- package/dist/cli/request-sources.d.ts.map +0 -1
- package/dist/cli/request-sources.js +0 -23
- package/dist/cli/request-sources.js.map +0 -1
- package/dist/cli/request-validation.d.ts +0 -18
- package/dist/cli/request-validation.d.ts.map +0 -1
- package/dist/cli/request-validation.js +0 -84
- package/dist/cli/request-validation.js.map +0 -1
- package/dist/cli/request-values.d.ts +0 -33
- package/dist/cli/request-values.d.ts.map +0 -1
- package/dist/cli/request-values.js +0 -73
- package/dist/cli/request-values.js.map +0 -1
- package/dist/cli/request.d.ts +0 -12
- package/dist/cli/request.d.ts.map +0 -1
- package/dist/cli/request.js +0 -103
- package/dist/cli/request.js.map +0 -1
- package/dist/cli/resolution-types.d.ts +0 -35
- package/dist/cli/resolution-types.d.ts.map +0 -1
- package/dist/cli/resolution-types.js +0 -6
- package/dist/cli/resolution-types.js.map +0 -1
- package/dist/cli/run-output-lines.d.ts +0 -14
- package/dist/cli/run-output-lines.d.ts.map +0 -1
- package/dist/cli/run-output-lines.js +0 -42
- package/dist/cli/run-output-lines.js.map +0 -1
- package/dist/cli/run-output.d.ts +0 -48
- package/dist/cli/run-output.d.ts.map +0 -1
- package/dist/cli/run-output.js +0 -150
- package/dist/cli/run-output.js.map +0 -1
- package/dist/cli/run.d.ts +0 -20
- package/dist/cli/run.d.ts.map +0 -1
- package/dist/cli/run.js +0 -126
- package/dist/cli/run.js.map +0 -1
- package/dist/cli/session-launch.d.ts +0 -23
- package/dist/cli/session-launch.d.ts.map +0 -1
- package/dist/cli/session-launch.js +0 -57
- package/dist/cli/session-launch.js.map +0 -1
- package/dist/cli/session.d.ts +0 -68
- package/dist/cli/session.d.ts.map +0 -1
- package/dist/cli/session.js +0 -124
- package/dist/cli/session.js.map +0 -1
- package/dist/codex/attach-images.d.ts +0 -20
- package/dist/codex/attach-images.d.ts.map +0 -1
- package/dist/codex/attach-images.js +0 -66
- package/dist/codex/attach-images.js.map +0 -1
- package/dist/codex/clipboard-lock.d.ts +0 -15
- package/dist/codex/clipboard-lock.d.ts.map +0 -1
- package/dist/codex/clipboard-lock.js +0 -16
- package/dist/codex/clipboard-lock.js.map +0 -1
- package/dist/codex/clipboard.d.ts +0 -32
- package/dist/codex/clipboard.d.ts.map +0 -1
- package/dist/codex/clipboard.js +0 -92
- package/dist/codex/clipboard.js.map +0 -1
- package/dist/codex/config-lock.d.ts +0 -21
- package/dist/codex/config-lock.d.ts.map +0 -1
- package/dist/codex/config-lock.js +0 -22
- package/dist/codex/config-lock.js.map +0 -1
- package/dist/codex/config-restore.d.ts +0 -33
- package/dist/codex/config-restore.d.ts.map +0 -1
- package/dist/codex/config-restore.js +0 -90
- package/dist/codex/config-restore.js.map +0 -1
- package/dist/codex/config-transaction.d.ts +0 -26
- package/dist/codex/config-transaction.d.ts.map +0 -1
- package/dist/codex/config-transaction.js +0 -47
- package/dist/codex/config-transaction.js.map +0 -1
- package/dist/codex/hook-dispatch.d.ts +0 -9
- package/dist/codex/hook-dispatch.d.ts.map +0 -1
- package/dist/codex/hook-dispatch.js +0 -14
- package/dist/codex/hook-dispatch.js.map +0 -1
- package/dist/codex/hook-names.d.ts +0 -19
- package/dist/codex/hook-names.d.ts.map +0 -1
- package/dist/codex/hook-names.js +0 -17
- package/dist/codex/hook-names.js.map +0 -1
- package/dist/codex/hooks.d.ts +0 -99
- package/dist/codex/hooks.d.ts.map +0 -1
- package/dist/codex/hooks.js +0 -6
- package/dist/codex/hooks.js.map +0 -1
- package/dist/codex/initial-ready.d.ts +0 -19
- package/dist/codex/initial-ready.d.ts.map +0 -1
- package/dist/codex/initial-ready.js +0 -19
- package/dist/codex/initial-ready.js.map +0 -1
- package/dist/codex/serialize.d.ts +0 -8
- package/dist/codex/serialize.d.ts.map +0 -1
- package/dist/codex/serialize.js +0 -48
- package/dist/codex/serialize.js.map +0 -1
- package/dist/codex/session-bridge.d.ts +0 -14
- package/dist/codex/session-bridge.d.ts.map +0 -1
- package/dist/codex/session-bridge.js +0 -20
- package/dist/codex/session-bridge.js.map +0 -1
- package/dist/codex/session-build.d.ts +0 -15
- package/dist/codex/session-build.d.ts.map +0 -1
- package/dist/codex/session-build.js +0 -144
- package/dist/codex/session-build.js.map +0 -1
- package/dist/codex/session-cleanup.d.ts +0 -12
- package/dist/codex/session-cleanup.d.ts.map +0 -1
- package/dist/codex/session-cleanup.js +0 -15
- package/dist/codex/session-cleanup.js.map +0 -1
- package/dist/codex/session-hooks.d.ts +0 -13
- package/dist/codex/session-hooks.d.ts.map +0 -1
- package/dist/codex/session-hooks.js +0 -54
- package/dist/codex/session-hooks.js.map +0 -1
- package/dist/codex/session-instance.d.ts +0 -50
- package/dist/codex/session-instance.d.ts.map +0 -1
- package/dist/codex/session-instance.js +0 -117
- package/dist/codex/session-instance.js.map +0 -1
- package/dist/codex/session-resume.d.ts +0 -7
- package/dist/codex/session-resume.d.ts.map +0 -1
- package/dist/codex/session-resume.js +0 -44
- package/dist/codex/session-resume.js.map +0 -1
- package/dist/codex/session-runtime.d.ts +0 -7
- package/dist/codex/session-runtime.d.ts.map +0 -1
- package/dist/codex/session-runtime.js +0 -10
- package/dist/codex/session-runtime.js.map +0 -1
- package/dist/codex/session-transcript.d.ts +0 -30
- package/dist/codex/session-transcript.d.ts.map +0 -1
- package/dist/codex/session-transcript.js +0 -53
- package/dist/codex/session-transcript.js.map +0 -1
- package/dist/codex/session-types.d.ts +0 -87
- package/dist/codex/session-types.d.ts.map +0 -1
- package/dist/codex/session-types.js +0 -6
- package/dist/codex/session-types.js.map +0 -1
- package/dist/codex/session-warnings.d.ts +0 -27
- package/dist/codex/session-warnings.d.ts.map +0 -1
- package/dist/codex/session-warnings.js +0 -54
- package/dist/codex/session-warnings.js.map +0 -1
- package/dist/codex/session.d.ts +0 -16
- package/dist/codex/session.d.ts.map +0 -1
- package/dist/codex/session.js +0 -61
- package/dist/codex/session.js.map +0 -1
- package/dist/codex/start-or-resume.d.ts +0 -12
- package/dist/codex/start-or-resume.d.ts.map +0 -1
- package/dist/codex/start-or-resume.js +0 -31
- package/dist/codex/start-or-resume.js.map +0 -1
- package/dist/codex/transcript/cursor-io.d.ts +0 -7
- package/dist/codex/transcript/cursor-io.d.ts.map +0 -1
- package/dist/codex/transcript/cursor-io.js +0 -7
- package/dist/codex/transcript/cursor-io.js.map +0 -1
- package/dist/codex/transcript/cursor.d.ts +0 -8
- package/dist/codex/transcript/cursor.d.ts.map +0 -1
- package/dist/codex/transcript/cursor.js +0 -8
- package/dist/codex/transcript/cursor.js.map +0 -1
- package/dist/codex/transcript/drops.d.ts +0 -9
- package/dist/codex/transcript/drops.d.ts.map +0 -1
- package/dist/codex/transcript/drops.js +0 -9
- package/dist/codex/transcript/drops.js.map +0 -1
- package/dist/codex/transcript.d.ts +0 -12
- package/dist/codex/transcript.d.ts.map +0 -1
- package/dist/codex/transcript.js +0 -10
- package/dist/codex/transcript.js.map +0 -1
- package/dist/codex/validate-result.d.ts +0 -7
- package/dist/codex/validate-result.d.ts.map +0 -1
- package/dist/codex/validate-result.js +0 -84
- package/dist/codex/validate-result.js.map +0 -1
- package/dist/codex/validate.d.ts +0 -11
- package/dist/codex/validate.d.ts.map +0 -1
- package/dist/codex/validate.js +0 -88
- package/dist/codex/validate.js.map +0 -1
- package/dist/core/activity-lifecycle.d.ts +0 -21
- package/dist/core/activity-lifecycle.d.ts.map +0 -1
- package/dist/core/activity-lifecycle.js +0 -45
- package/dist/core/activity-lifecycle.js.map +0 -1
- package/dist/core/activity-meta.d.ts +0 -13
- package/dist/core/activity-meta.d.ts.map +0 -1
- package/dist/core/activity-meta.js +0 -67
- package/dist/core/activity-meta.js.map +0 -1
- package/dist/core/activity-transcript.d.ts +0 -19
- package/dist/core/activity-transcript.d.ts.map +0 -1
- package/dist/core/activity-transcript.js +0 -60
- package/dist/core/activity-transcript.js.map +0 -1
- package/dist/core/activity.d.ts +0 -51
- package/dist/core/activity.d.ts.map +0 -1
- package/dist/core/activity.js +0 -81
- package/dist/core/activity.js.map +0 -1
- package/dist/core/control-queue-state.d.ts +0 -29
- package/dist/core/control-queue-state.d.ts.map +0 -1
- package/dist/core/control-queue-state.js +0 -95
- package/dist/core/control-queue-state.js.map +0 -1
- package/dist/core/control-queue-traits.d.ts +0 -54
- package/dist/core/control-queue-traits.d.ts.map +0 -1
- package/dist/core/control-queue-traits.js +0 -118
- package/dist/core/control-queue-traits.js.map +0 -1
- package/dist/core/control-queue-types.d.ts +0 -45
- package/dist/core/control-queue-types.d.ts.map +0 -1
- package/dist/core/control-queue-types.js +0 -7
- package/dist/core/control-queue-types.js.map +0 -1
- package/dist/core/control-queue.d.ts +0 -21
- package/dist/core/control-queue.d.ts.map +0 -1
- package/dist/core/control-queue.js +0 -98
- package/dist/core/control-queue.js.map +0 -1
- package/dist/core/list-models.d.ts +0 -44
- package/dist/core/list-models.d.ts.map +0 -1
- package/dist/core/list-models.js +0 -73
- package/dist/core/list-models.js.map +0 -1
- package/dist/core/model-picker.d.ts +0 -22
- package/dist/core/model-picker.d.ts.map +0 -1
- package/dist/core/model-picker.js +0 -58
- package/dist/core/model-picker.js.map +0 -1
- package/dist/core/model-rows.d.ts +0 -21
- package/dist/core/model-rows.d.ts.map +0 -1
- package/dist/core/model-rows.js +0 -57
- package/dist/core/model-rows.js.map +0 -1
- package/dist/core/probe-state.d.ts +0 -21
- package/dist/core/probe-state.d.ts.map +0 -1
- package/dist/core/probe-state.js +0 -39
- package/dist/core/probe-state.js.map +0 -1
- package/dist/core/session-input-abort.d.ts +0 -10
- package/dist/core/session-input-abort.d.ts.map +0 -1
- package/dist/core/session-input-abort.js +0 -44
- package/dist/core/session-input-abort.js.map +0 -1
- package/dist/core/session-input.d.ts +0 -37
- package/dist/core/session-input.d.ts.map +0 -1
- package/dist/core/session-input.js +0 -154
- package/dist/core/session-input.js.map +0 -1
- package/dist/core/session-warnings.d.ts +0 -20
- package/dist/core/session-warnings.d.ts.map +0 -1
- package/dist/core/session-warnings.js +0 -32
- package/dist/core/session-warnings.js.map +0 -1
- package/dist/core/simple/loop-controls.d.ts +0 -7
- package/dist/core/simple/loop-controls.d.ts.map +0 -1
- package/dist/core/simple/loop-controls.js +0 -7
- package/dist/core/simple/loop-controls.js.map +0 -1
- package/dist/core/startup-automation.d.ts +0 -54
- package/dist/core/startup-automation.d.ts.map +0 -1
- package/dist/core/startup-automation.js +0 -40
- package/dist/core/startup-automation.js.map +0 -1
- package/dist/core/startup-frame.d.ts +0 -39
- package/dist/core/startup-frame.d.ts.map +0 -1
- package/dist/core/startup-frame.js +0 -60
- package/dist/core/startup-frame.js.map +0 -1
- package/dist/core/startup-write.d.ts +0 -47
- package/dist/core/startup-write.d.ts.map +0 -1
- package/dist/core/startup-write.js +0 -73
- package/dist/core/startup-write.js.map +0 -1
- package/dist/core/trust-blocking.d.ts +0 -22
- package/dist/core/trust-blocking.d.ts.map +0 -1
- package/dist/core/trust-blocking.js +0 -38
- package/dist/core/trust-blocking.js.map +0 -1
- package/dist/core/trust-prompts.d.ts +0 -135
- package/dist/core/trust-prompts.d.ts.map +0 -1
- package/dist/core/trust-prompts.js.map +0 -1
- package/dist/core/trust-responder.d.ts +0 -48
- package/dist/core/trust-responder.d.ts.map +0 -1
- package/dist/core/trust-responder.js +0 -119
- package/dist/core/trust-responder.js.map +0 -1
- package/dist/core/tui-screen.d.ts +0 -21
- package/dist/core/tui-screen.d.ts.map +0 -1
- package/dist/core/tui-screen.js +0 -56
- package/dist/core/tui-screen.js.map +0 -1
- package/dist/core/update-warning.d.ts +0 -25
- package/dist/core/update-warning.d.ts.map +0 -1
- package/dist/core/update-warning.js +0 -33
- package/dist/core/update-warning.js.map +0 -1
- package/dist/core/warning-lifecycle.d.ts +0 -23
- package/dist/core/warning-lifecycle.d.ts.map +0 -1
- package/dist/core/warning-lifecycle.js +0 -6
- package/dist/core/warning-lifecycle.js.map +0 -1
- package/dist/core/warning-reasons.d.ts +0 -62
- package/dist/core/warning-reasons.d.ts.map +0 -1
- package/dist/core/warning-reasons.js +0 -121
- package/dist/core/warning-reasons.js.map +0 -1
- package/dist/core/warnings.d.ts +0 -145
- package/dist/core/warnings.d.ts.map +0 -1
- package/dist/core/warnings.js +0 -12
- package/dist/core/warnings.js.map +0 -1
- package/dist/runtime/cleanup-latch.d.ts +0 -27
- package/dist/runtime/cleanup-latch.d.ts.map +0 -1
- package/dist/runtime/cleanup-latch.js +0 -43
- package/dist/runtime/cleanup-latch.js.map +0 -1
- package/dist/runtime/initial-ready-advance.d.ts +0 -22
- package/dist/runtime/initial-ready-advance.d.ts.map +0 -1
- package/dist/runtime/initial-ready-advance.js +0 -39
- package/dist/runtime/initial-ready-advance.js.map +0 -1
- package/dist/runtime/initial-ready-fallback.d.ts +0 -12
- package/dist/runtime/initial-ready-fallback.d.ts.map +0 -1
- package/dist/runtime/initial-ready-fallback.js +0 -20
- package/dist/runtime/initial-ready-fallback.js.map +0 -1
- package/dist/runtime/initial-ready.d.ts +0 -49
- package/dist/runtime/initial-ready.d.ts.map +0 -1
- package/dist/runtime/initial-ready.js +0 -81
- package/dist/runtime/initial-ready.js.map +0 -1
- package/dist/runtime/reap-tree.d.ts +0 -62
- package/dist/runtime/reap-tree.d.ts.map +0 -1
- package/dist/runtime/reap-tree.js +0 -108
- package/dist/runtime/reap-tree.js.map +0 -1
- package/dist/runtime/session-base-types.d.ts +0 -36
- package/dist/runtime/session-base-types.d.ts.map +0 -1
- package/dist/runtime/session-base-types.js +0 -14
- package/dist/runtime/session-base-types.js.map +0 -1
- package/dist/runtime/session-base.d.ts +0 -48
- package/dist/runtime/session-base.d.ts.map +0 -1
- package/dist/runtime/session-base.js +0 -76
- package/dist/runtime/session-base.js.map +0 -1
- package/dist/runtime/session-commands.d.ts +0 -43
- package/dist/runtime/session-commands.d.ts.map +0 -1
- package/dist/runtime/session-commands.js +0 -52
- package/dist/runtime/session-commands.js.map +0 -1
- package/dist/runtime/session-exit.d.ts +0 -16
- package/dist/runtime/session-exit.d.ts.map +0 -1
- package/dist/runtime/session-exit.js +0 -32
- package/dist/runtime/session-exit.js.map +0 -1
- package/dist/runtime/session-image-attach.d.ts +0 -45
- package/dist/runtime/session-image-attach.d.ts.map +0 -1
- package/dist/runtime/session-image-attach.js +0 -82
- package/dist/runtime/session-image-attach.js.map +0 -1
- package/dist/runtime/session-lifecycle.d.ts +0 -61
- package/dist/runtime/session-lifecycle.d.ts.map +0 -1
- package/dist/runtime/session-lifecycle.js +0 -164
- package/dist/runtime/session-lifecycle.js.map +0 -1
- package/dist/runtime/session-loops.d.ts +0 -32
- package/dist/runtime/session-loops.d.ts.map +0 -1
- package/dist/runtime/session-loops.js +0 -62
- package/dist/runtime/session-loops.js.map +0 -1
- package/dist/runtime/session-readiness.d.ts +0 -18
- package/dist/runtime/session-readiness.d.ts.map +0 -1
- package/dist/runtime/session-readiness.js +0 -22
- package/dist/runtime/session-readiness.js.map +0 -1
- package/dist/runtime/session-reap.d.ts +0 -28
- package/dist/runtime/session-reap.d.ts.map +0 -1
- package/dist/runtime/session-reap.js +0 -51
- package/dist/runtime/session-reap.js.map +0 -1
- package/dist/runtime/session-resize.d.ts +0 -20
- package/dist/runtime/session-resize.d.ts.map +0 -1
- package/dist/runtime/session-resize.js +0 -26
- package/dist/runtime/session-resize.js.map +0 -1
- package/dist/runtime/session-shutdown-binding.d.ts +0 -30
- package/dist/runtime/session-shutdown-binding.d.ts.map +0 -1
- package/dist/runtime/session-shutdown-binding.js +0 -37
- package/dist/runtime/session-shutdown-binding.js.map +0 -1
- package/dist/runtime/session-shutdown.d.ts +0 -60
- package/dist/runtime/session-shutdown.d.ts.map +0 -1
- package/dist/runtime/session-shutdown.js +0 -140
- package/dist/runtime/session-shutdown.js.map +0 -1
- package/dist/runtime/session-status-wiring.d.ts +0 -38
- package/dist/runtime/session-status-wiring.d.ts.map +0 -1
- package/dist/runtime/session-status-wiring.js +0 -41
- package/dist/runtime/session-status-wiring.js.map +0 -1
- package/dist/runtime/session-status.d.ts +0 -7
- package/dist/runtime/session-status.d.ts.map +0 -1
- package/dist/runtime/session-status.js +0 -22
- package/dist/runtime/session-status.js.map +0 -1
- package/dist/runtime/shutdown-coordinator.d.ts +0 -57
- package/dist/runtime/shutdown-coordinator.d.ts.map +0 -1
- package/dist/runtime/shutdown-coordinator.js +0 -77
- package/dist/runtime/shutdown-coordinator.js.map +0 -1
- package/dist/runtime/startup-buffer.d.ts +0 -33
- package/dist/runtime/startup-buffer.d.ts.map +0 -1
- package/dist/runtime/startup-buffer.js +0 -53
- package/dist/runtime/startup-buffer.js.map +0 -1
- package/dist/runtime/startup-cleanup.d.ts +0 -43
- package/dist/runtime/startup-cleanup.d.ts.map +0 -1
- package/dist/runtime/startup-cleanup.js +0 -89
- package/dist/runtime/startup-cleanup.js.map +0 -1
- package/dist/runtime/startup.d.ts +0 -17
- package/dist/runtime/startup.d.ts.map +0 -1
- package/dist/runtime/startup.js +0 -47
- package/dist/runtime/startup.js.map +0 -1
- package/dist/runtime/status-emit.d.ts +0 -14
- package/dist/runtime/status-emit.d.ts.map +0 -1
- package/dist/runtime/status-emit.js +0 -15
- package/dist/runtime/status-emit.js.map +0 -1
- package/dist/runtime/teardown.d.ts +0 -15
- package/dist/runtime/teardown.d.ts.map +0 -1
- package/dist/runtime/teardown.js +0 -40
- package/dist/runtime/teardown.js.map +0 -1
- package/dist/runtime/terminate.d.ts +0 -22
- package/dist/runtime/terminate.d.ts.map +0 -1
- package/dist/runtime/terminate.js +0 -129
- package/dist/runtime/terminate.js.map +0 -1
- package/dist/runtime/update-lock.d.ts +0 -19
- package/dist/runtime/update-lock.d.ts.map +0 -1
- package/dist/runtime/update-lock.js +0 -183
- package/dist/runtime/update-lock.js.map +0 -1
- package/dist/runtime/update-once.d.ts +0 -40
- package/dist/runtime/update-once.d.ts.map +0 -1
- package/dist/runtime/update-once.js +0 -88
- package/dist/runtime/update-once.js.map +0 -1
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Runtime validation for Claude `updatedPermissions` (PermissionUpdate[]).
|
|
3
|
-
*
|
|
4
|
-
* Implements PRD §6.4: a `PermissionRequest` result may return
|
|
5
|
-
* `updatedPermissions`, which is serialized to Claude. Each entry must match one
|
|
6
|
-
* of the documented PermissionUpdate variants (see permissions.ts) rather than
|
|
7
|
-
* merely being an array, so a malformed entry cannot slip through.
|
|
8
|
-
*/
|
|
9
|
-
export declare function isPermissionUpdateArray(value: unknown): boolean;
|
|
10
|
-
//# sourceMappingURL=validate-permission-update.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validate-permission-update.d.ts","sourceRoot":"","sources":["../../src/claude/validate-permission-update.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAuCH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAE/D"}
|
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Runtime validation for Claude `updatedPermissions` (PermissionUpdate[]).
|
|
3
|
-
*
|
|
4
|
-
* Implements PRD §6.4: a `PermissionRequest` result may return
|
|
5
|
-
* `updatedPermissions`, which is serialized to Claude. Each entry must match one
|
|
6
|
-
* of the documented PermissionUpdate variants (see permissions.ts) rather than
|
|
7
|
-
* merely being an array, so a malformed entry cannot slip through.
|
|
8
|
-
*/
|
|
9
|
-
import { isOneOf, isRecord, optionalString } from "../core/predicates.js";
|
|
10
|
-
import { claudeHookPermissionModes } from "./hook-names.js";
|
|
11
|
-
const destinations = ["session", "localSettings", "projectSettings", "userSettings"];
|
|
12
|
-
const ruleBehaviors = ["allow", "deny", "ask"];
|
|
13
|
-
const updateTypes = [
|
|
14
|
-
"addRules",
|
|
15
|
-
"replaceRules",
|
|
16
|
-
"removeRules",
|
|
17
|
-
"setMode",
|
|
18
|
-
"addDirectories",
|
|
19
|
-
"removeDirectories",
|
|
20
|
-
];
|
|
21
|
-
// Bidirectional exactness guards (see Exact above). Each stops compiling the moment
|
|
22
|
-
// its allowlist and the public union disagree.
|
|
23
|
-
const _destinationsExact = destinations[0];
|
|
24
|
-
const _behaviorsExact = ruleBehaviors[0];
|
|
25
|
-
const _typesExact = updateTypes[0];
|
|
26
|
-
void _destinationsExact;
|
|
27
|
-
void _behaviorsExact;
|
|
28
|
-
void _typesExact;
|
|
29
|
-
export function isPermissionUpdateArray(value) {
|
|
30
|
-
return Array.isArray(value) && value.every(isPermissionUpdate);
|
|
31
|
-
}
|
|
32
|
-
function isPermissionUpdate(value) {
|
|
33
|
-
if (!isRecord(value))
|
|
34
|
-
return false;
|
|
35
|
-
if (!isOneOf(value["destination"], destinations))
|
|
36
|
-
return false;
|
|
37
|
-
const type = value["type"];
|
|
38
|
-
if (type === "addRules" || type === "replaceRules" || type === "removeRules") {
|
|
39
|
-
return isRulesUpdate(value);
|
|
40
|
-
}
|
|
41
|
-
if (type === "setMode")
|
|
42
|
-
return isSetModeUpdate(value);
|
|
43
|
-
if (type === "addDirectories" || type === "removeDirectories")
|
|
44
|
-
return isDirectoriesUpdate(value);
|
|
45
|
-
return false;
|
|
46
|
-
}
|
|
47
|
-
function isRulesUpdate(value) {
|
|
48
|
-
return (keysAllowed(value, ["type", "rules", "behavior", "destination"]) &&
|
|
49
|
-
isOneOf(value["behavior"], ruleBehaviors) &&
|
|
50
|
-
Array.isArray(value["rules"]) &&
|
|
51
|
-
value["rules"].every(isPermissionRule));
|
|
52
|
-
}
|
|
53
|
-
function isSetModeUpdate(value) {
|
|
54
|
-
return (keysAllowed(value, ["type", "mode", "destination"]) &&
|
|
55
|
-
isOneOf(value["mode"], claudeHookPermissionModes));
|
|
56
|
-
}
|
|
57
|
-
function isDirectoriesUpdate(value) {
|
|
58
|
-
return (keysAllowed(value, ["type", "directories", "destination"]) &&
|
|
59
|
-
Array.isArray(value["directories"]) &&
|
|
60
|
-
value["directories"].every((entry) => typeof entry === "string"));
|
|
61
|
-
}
|
|
62
|
-
function isPermissionRule(value) {
|
|
63
|
-
if (!isRecord(value))
|
|
64
|
-
return false;
|
|
65
|
-
return (keysAllowed(value, ["toolName", "ruleContent"]) &&
|
|
66
|
-
typeof value["toolName"] === "string" &&
|
|
67
|
-
optionalString(value["ruleContent"]));
|
|
68
|
-
}
|
|
69
|
-
function keysAllowed(value, allowed) {
|
|
70
|
-
return Object.keys(value).every((key) => allowed.includes(key));
|
|
71
|
-
}
|
|
72
|
-
//# sourceMappingURL=validate-permission-update.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validate-permission-update.js","sourceRoot":"","sources":["../../src/claude/validate-permission-update.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Runtime validation for Claude hook handler results.
|
|
3
|
-
* Implements PRD §6.4.
|
|
4
|
-
*/
|
|
5
|
-
import type { ClaudeHookEvent, ClaudeHookEventName, ClaudeHookResult } from "./hooks.ts";
|
|
6
|
-
export declare function isClaudeHookResult(event: ClaudeHookEventName | ClaudeHookEvent, value: unknown): value is ClaudeHookResult;
|
|
7
|
-
//# sourceMappingURL=validate-result.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validate-result.d.ts","sourceRoot":"","sources":["../../src/claude/validate-result.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAkBzF,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,mBAAmB,GAAG,eAAe,EAC5C,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,gBAAgB,CAuB3B"}
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Runtime validation for Claude hook handler results.
|
|
3
|
-
* Implements PRD §6.4.
|
|
4
|
-
*/
|
|
5
|
-
import { isOneOf, isRecord, optionalBoolean, optionalString, optionalStringArray, } from "../core/predicates.js";
|
|
6
|
-
import { isPermissionUpdateArray } from "./validate-permission-update.js";
|
|
7
|
-
import { isClaudeToolInputUpdate } from "./validate-tool-update.js";
|
|
8
|
-
const contextResultEvents = new Set(["SessionStart", "Setup", "SubagentStart"]);
|
|
9
|
-
const blockResultEvents = new Set([
|
|
10
|
-
"UserPromptSubmit",
|
|
11
|
-
"UserPromptExpansion",
|
|
12
|
-
"PostToolUse",
|
|
13
|
-
"PostToolUseFailure",
|
|
14
|
-
"PostToolBatch",
|
|
15
|
-
"Stop",
|
|
16
|
-
"SubagentStop",
|
|
17
|
-
"ConfigChange",
|
|
18
|
-
"PreCompact",
|
|
19
|
-
]);
|
|
20
|
-
const continueFalseEvents = new Set(["TeammateIdle", "TaskCreated", "TaskCompleted"]);
|
|
21
|
-
export function isClaudeHookResult(event, value) {
|
|
22
|
-
const eventName = typeof event === "string" ? event : event.hook_event_name;
|
|
23
|
-
const toolName = typeof event === "string" || !("tool_name" in event) || typeof event.tool_name !== "string"
|
|
24
|
-
? undefined
|
|
25
|
-
: event.tool_name;
|
|
26
|
-
if (value === undefined)
|
|
27
|
-
return true;
|
|
28
|
-
if (!isRecord(value))
|
|
29
|
-
return false;
|
|
30
|
-
if ("permissionDecision" in value)
|
|
31
|
-
return isPreToolUseResult(eventName, value, toolName);
|
|
32
|
-
if (eventName === "PreToolUse" && "additionalContext" in value) {
|
|
33
|
-
return isPreToolUseResult(eventName, value, toolName);
|
|
34
|
-
}
|
|
35
|
-
if ("behavior" in value)
|
|
36
|
-
return isPermissionRequestResult(eventName, value, toolName);
|
|
37
|
-
if ("retry" in value)
|
|
38
|
-
return eventName === "PermissionDenied" && value["retry"] === true;
|
|
39
|
-
if ("worktreePath" in value) {
|
|
40
|
-
return eventName === "WorktreeCreate" && typeof value["worktreePath"] === "string";
|
|
41
|
-
}
|
|
42
|
-
if ("action" in value)
|
|
43
|
-
return isElicitationResult(eventName, value);
|
|
44
|
-
if ("decision" in value)
|
|
45
|
-
return isBlockResult(eventName, value);
|
|
46
|
-
if ("continue" in value)
|
|
47
|
-
return isContinueFalseResult(eventName, value);
|
|
48
|
-
if (eventName === "PostToolUse")
|
|
49
|
-
return isPostToolUseResult(value);
|
|
50
|
-
if (!contextResultEvents.has(eventName))
|
|
51
|
-
return false;
|
|
52
|
-
return isContextResult(value);
|
|
53
|
-
}
|
|
54
|
-
function isPreToolUseResult(eventName, value, toolName) {
|
|
55
|
-
if (eventName !== "PreToolUse")
|
|
56
|
-
return false;
|
|
57
|
-
if (!("permissionDecision" in value)) {
|
|
58
|
-
return keysAre(value, ["additionalContext"]) && typeof value["additionalContext"] === "string";
|
|
59
|
-
}
|
|
60
|
-
return (keysAre(value, [
|
|
61
|
-
"permissionDecision",
|
|
62
|
-
"permissionDecisionReason",
|
|
63
|
-
"updatedInput",
|
|
64
|
-
"additionalContext",
|
|
65
|
-
]) &&
|
|
66
|
-
isOneOf(value["permissionDecision"], ["allow", "deny", "ask", "defer"]) &&
|
|
67
|
-
optionalString(value["permissionDecisionReason"]) &&
|
|
68
|
-
optionalString(value["additionalContext"]) &&
|
|
69
|
-
isClaudeToolInputUpdate(toolName, value["updatedInput"]));
|
|
70
|
-
}
|
|
71
|
-
function isPermissionRequestResult(eventName, value, toolName) {
|
|
72
|
-
return (eventName === "PermissionRequest" &&
|
|
73
|
-
keysAre(value, ["behavior", "updatedInput", "updatedPermissions", "message", "interrupt"]) &&
|
|
74
|
-
isOneOf(value["behavior"], ["allow", "deny"]) &&
|
|
75
|
-
optionalString(value["message"]) &&
|
|
76
|
-
optionalBoolean(value["interrupt"]) &&
|
|
77
|
-
optionalPermissionUpdates(value["updatedPermissions"]) &&
|
|
78
|
-
isClaudeToolInputUpdate(toolName, value["updatedInput"]));
|
|
79
|
-
}
|
|
80
|
-
function optionalPermissionUpdates(value) {
|
|
81
|
-
return value === undefined || isPermissionUpdateArray(value);
|
|
82
|
-
}
|
|
83
|
-
function isElicitationResult(eventName, value) {
|
|
84
|
-
return ((eventName === "Elicitation" || eventName === "ElicitationResult") &&
|
|
85
|
-
keysAre(value, ["action", "content"]) &&
|
|
86
|
-
isOneOf(value["action"], ["accept", "decline", "cancel"]) &&
|
|
87
|
-
// `content` is an OPTIONAL non-array record; a string/array/null must fail
|
|
88
|
-
// rather than be serialized as if valid (matches ElicitationResult.content).
|
|
89
|
-
(value["content"] === undefined || isRecord(value["content"])));
|
|
90
|
-
}
|
|
91
|
-
function isBlockResult(eventName, value) {
|
|
92
|
-
return (blockResultEvents.has(eventName) &&
|
|
93
|
-
keysAre(value, ["decision", "reason", "additionalContext"]) &&
|
|
94
|
-
value["decision"] === "block" &&
|
|
95
|
-
typeof value["reason"] === "string" &&
|
|
96
|
-
optionalString(value["additionalContext"]));
|
|
97
|
-
}
|
|
98
|
-
function isContinueFalseResult(eventName, value) {
|
|
99
|
-
return (continueFalseEvents.has(eventName) &&
|
|
100
|
-
keysAre(value, ["continue", "stopReason"]) &&
|
|
101
|
-
value["continue"] === false &&
|
|
102
|
-
optionalString(value["stopReason"]));
|
|
103
|
-
}
|
|
104
|
-
function keysAre(value, allowed) {
|
|
105
|
-
return Object.keys(value).every((key) => allowed.includes(key));
|
|
106
|
-
}
|
|
107
|
-
// Every field is optional, so `{}` is a valid (no-op) result, as it is for context events.
|
|
108
|
-
function isPostToolUseResult(value) {
|
|
109
|
-
return (keysAre(value, ["additionalContext", "updatedToolOutput", "updatedMCPToolOutput"]) &&
|
|
110
|
-
optionalString(value["additionalContext"]));
|
|
111
|
-
}
|
|
112
|
-
function isContextResult(value) {
|
|
113
|
-
return (keysAre(value, ["additionalContext", "initialUserMessage", "watchPaths"]) &&
|
|
114
|
-
optionalString(value["additionalContext"]) &&
|
|
115
|
-
optionalString(value["initialUserMessage"]) &&
|
|
116
|
-
optionalStringArray(value["watchPaths"]));
|
|
117
|
-
}
|
|
118
|
-
//# sourceMappingURL=validate-result.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validate-result.js","sourceRoot":"","sources":["../../src/claude/validate-result.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,OAAO,EACP,QAAQ,EACR,eAAe,EACf,cAAc,EACd,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAS,CAAC,cAAc,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC;AACxF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAS;IACxC,kBAAkB;IAClB,qBAAqB;IACrB,aAAa;IACb,oBAAoB;IACpB,eAAe;IACf,MAAM;IACN,cAAc;IACd,cAAc;IACd,YAAY;CACb,CAAC,CAAC;AACH,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAS,CAAC,cAAc,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC,CAAC;AAE9F,MAAM,UAAU,kBAAkB,CAChC,KAA4C,EAC5C,KAAc;IAEd,MAAM,SAAS,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;IAC5E,MAAM,QAAQ,GACZ,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,WAAW,IAAI,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,SAAS,KAAK,QAAQ;QACzF,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;IACtB,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACrC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,IAAI,oBAAoB,IAAI,KAAK;QAAE,OAAO,kBAAkB,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACzF,IAAI,SAAS,KAAK,YAAY,IAAI,mBAAmB,IAAI,KAAK,EAAE,CAAC;QAC/D,OAAO,kBAAkB,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,UAAU,IAAI,KAAK;QAAE,OAAO,yBAAyB,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACtF,IAAI,OAAO,IAAI,KAAK;QAAE,OAAO,SAAS,KAAK,kBAAkB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IACzF,IAAI,cAAc,IAAI,KAAK,EAAE,CAAC;QAC5B,OAAO,SAAS,KAAK,gBAAgB,IAAI,OAAO,KAAK,CAAC,cAAc,CAAC,KAAK,QAAQ,CAAC;IACrF,CAAC;IACD,IAAI,QAAQ,IAAI,KAAK;QAAE,OAAO,mBAAmB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACpE,IAAI,UAAU,IAAI,KAAK;QAAE,OAAO,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAChE,IAAI,UAAU,IAAI,KAAK;QAAE,OAAO,qBAAqB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACxE,IAAI,SAAS,KAAK,aAAa;QAAE,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACnE,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC;QAAE,OAAO,KAAK,CAAC;IACtD,OAAO,eAAe,CAAC,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,kBAAkB,CACzB,SAA8B,EAC9B,KAAwC,EACxC,QAAiB;IAEjB,IAAI,SAAS,KAAK,YAAY;QAAE,OAAO,KAAK,CAAC;IAC7C,IAAI,CAAC,CAAC,oBAAoB,IAAI,KAAK,CAAC,EAAE,CAAC;QACrC,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC,mBAAmB,CAAC,CAAC,IAAI,OAAO,KAAK,CAAC,mBAAmB,CAAC,KAAK,QAAQ,CAAC;IACjG,CAAC;IACD,OAAO,CACL,OAAO,CAAC,KAAK,EAAE;QACb,oBAAoB;QACpB,0BAA0B;QAC1B,cAAc;QACd,mBAAmB;KACpB,CAAC;QACF,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACvE,cAAc,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QACjD,cAAc,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC1C,uBAAuB,CAAC,QAAQ,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CACzD,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAChC,SAA8B,EAC9B,KAAwC,EACxC,QAAiB;IAEjB,OAAO,CACL,SAAS,KAAK,mBAAmB;QACjC,OAAO,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,cAAc,EAAE,oBAAoB,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QAC1F,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7C,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAChC,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACnC,yBAAyB,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACtD,uBAAuB,CAAC,QAAQ,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CACzD,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAc;IAC/C,OAAO,KAAK,KAAK,SAAS,IAAI,uBAAuB,CAAC,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,mBAAmB,CAC1B,SAA8B,EAC9B,KAAwC;IAExC,OAAO,CACL,CAAC,SAAS,KAAK,aAAa,IAAI,SAAS,KAAK,mBAAmB,CAAC;QAClE,OAAO,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACzD,2EAA2E;QAC3E,6EAA6E;QAC7E,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,SAAS,IAAI,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAC/D,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CACpB,SAA8B,EAC9B,KAAwC;IAExC,OAAO,CACL,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC;QAChC,OAAO,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;QAC3D,KAAK,CAAC,UAAU,CAAC,KAAK,OAAO;QAC7B,OAAO,KAAK,CAAC,QAAQ,CAAC,KAAK,QAAQ;QACnC,cAAc,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAC3C,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,SAA8B,EAC9B,KAAwC;IAExC,OAAO,CACL,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAC;QAClC,OAAO,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QAC1C,KAAK,CAAC,UAAU,CAAC,KAAK,KAAK;QAC3B,cAAc,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CACpC,CAAC;AACJ,CAAC;AAED,SAAS,OAAO,CAAC,KAAwC,EAAE,OAA0B;IACnF,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAClE,CAAC;AAED,2FAA2F;AAC3F,SAAS,mBAAmB,CAAC,KAAwC;IACnE,OAAO,CACL,OAAO,CAAC,KAAK,EAAE,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,sBAAsB,CAAC,CAAC;QAClF,cAAc,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAC3C,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,KAAwC;IAC/D,OAAO,CACL,OAAO,CAAC,KAAK,EAAE,CAAC,mBAAmB,EAAE,oBAAoB,EAAE,YAAY,CAAC,CAAC;QACzE,cAAc,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC1C,cAAc,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC3C,mBAAmB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CACzC,CAAC;AACJ,CAAC"}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Field-shape validation tables for Claude hook payloads, built on the shared
|
|
3
|
-
* trust-boundary predicates in core/predicates.ts.
|
|
4
|
-
* Implements PRD §6.4: value TYPES, not merely key names, are validated.
|
|
5
|
-
*/
|
|
6
|
-
export { isRecord, optionalBoolean, optionalNumber, optionalString, optionalStringArray, } from "../core/predicates.ts";
|
|
7
|
-
export type FieldCheck = (value: unknown) => boolean;
|
|
8
|
-
/**
|
|
9
|
-
* A validator table COUPLED to a public tool input `T`: exactly one field check per
|
|
10
|
-
* key of `T` (required, so adding a field to the public type forces a matching check
|
|
11
|
-
* and can't silently pass validation). Declare each table `satisfies FieldChecks<T>`.
|
|
12
|
-
*/
|
|
13
|
-
export type FieldChecks<T> = {
|
|
14
|
-
readonly [K in keyof Required<T>]-?: FieldCheck;
|
|
15
|
-
};
|
|
16
|
-
/**
|
|
17
|
-
* Validates a partial record: every present key must be one of `checks` and its
|
|
18
|
-
* value must pass that field's check. Absent keys pass (partial rewrites and
|
|
19
|
-
* optional fields), unknown keys fail.
|
|
20
|
-
*/
|
|
21
|
-
export declare function partial(value: Readonly<Record<string, unknown>>, checks: Readonly<Record<string, FieldCheck>>): boolean;
|
|
22
|
-
//# sourceMappingURL=validate-shapes.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validate-shapes.d.ts","sourceRoot":"","sources":["../../src/claude/validate-shapes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,QAAQ,EACR,eAAe,EACf,cAAc,EACd,cAAc,EACd,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;AAErD;;;;GAIG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI;IAAE,QAAQ,EAAE,CAAC,IAAI,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU;CAAE,CAAC;AAEjF;;;;GAIG;AACH,wBAAgB,OAAO,CACrB,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EACxC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,GAC3C,OAAO,CAIT"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Field-shape validation tables for Claude hook payloads, built on the shared
|
|
3
|
-
* trust-boundary predicates in core/predicates.ts.
|
|
4
|
-
* Implements PRD §6.4: value TYPES, not merely key names, are validated.
|
|
5
|
-
*/
|
|
6
|
-
export { isRecord, optionalBoolean, optionalNumber, optionalString, optionalStringArray, } from "../core/predicates.js";
|
|
7
|
-
/**
|
|
8
|
-
* Validates a partial record: every present key must be one of `checks` and its
|
|
9
|
-
* value must pass that field's check. Absent keys pass (partial rewrites and
|
|
10
|
-
* optional fields), unknown keys fail.
|
|
11
|
-
*/
|
|
12
|
-
export function partial(value, checks) {
|
|
13
|
-
return Object.keys(value).every((key) => Object.hasOwn(checks, key) && checks[key](value[key]));
|
|
14
|
-
}
|
|
15
|
-
//# sourceMappingURL=validate-shapes.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validate-shapes.js","sourceRoot":"","sources":["../../src/claude/validate-shapes.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,QAAQ,EACR,eAAe,EACf,cAAc,EACd,cAAc,EACd,mBAAmB,GACpB,MAAM,uBAAuB,CAAC;AAW/B;;;;GAIG;AACH,MAAM,UAAU,OAAO,CACrB,KAAwC,EACxC,MAA4C;IAE5C,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAC7B,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAK,MAAM,CAAC,GAAG,CAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAC/E,CAAC;AACJ,CAAC"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Runtime validation for Claude tool input rewrite payloads.
|
|
3
|
-
*
|
|
4
|
-
* Implements PRD §6.4: a returned `updatedInput` MUST be validated against the
|
|
5
|
-
* actual tool input shape for known built-in tools before it is serialized to
|
|
6
|
-
* Claude. `updatedInput` is a partial rewrite, so every documented field is
|
|
7
|
-
* optional, but each present field must match the tool's documented value TYPE
|
|
8
|
-
* (not merely be a permitted key). Unknown/MCP tools accept any record.
|
|
9
|
-
*
|
|
10
|
-
* Each per-tool table is `satisfies FieldChecks<Input>`, so adding a field to the
|
|
11
|
-
* public tool input type forces a matching check here (a missing key fails to
|
|
12
|
-
* compile) — the validator can no longer silently drift from the shape it guards.
|
|
13
|
-
*/
|
|
14
|
-
export declare function isClaudeToolInputUpdate(toolName: string | undefined, value: unknown): boolean;
|
|
15
|
-
//# sourceMappingURL=validate-tool-update.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validate-tool-update.d.ts","sourceRoot":"","sources":["../../src/claude/validate-tool-update.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AA0BH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAM7F"}
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Runtime validation for Claude tool input rewrite payloads.
|
|
3
|
-
*
|
|
4
|
-
* Implements PRD §6.4: a returned `updatedInput` MUST be validated against the
|
|
5
|
-
* actual tool input shape for known built-in tools before it is serialized to
|
|
6
|
-
* Claude. `updatedInput` is a partial rewrite, so every documented field is
|
|
7
|
-
* optional, but each present field must match the tool's documented value TYPE
|
|
8
|
-
* (not merely be a permitted key). Unknown/MCP tools accept any record.
|
|
9
|
-
*
|
|
10
|
-
* Each per-tool table is `satisfies FieldChecks<Input>`, so adding a field to the
|
|
11
|
-
* public tool input type forces a matching check here (a missing key fails to
|
|
12
|
-
* compile) — the validator can no longer silently drift from the shape it guards.
|
|
13
|
-
*/
|
|
14
|
-
import { isRecord, optionalBoolean, optionalNumber, optionalString, optionalStringArray, partial, } from "./validate-shapes.js";
|
|
15
|
-
export function isClaudeToolInputUpdate(toolName, value) {
|
|
16
|
-
if (value === undefined)
|
|
17
|
-
return true;
|
|
18
|
-
if (!isRecord(value))
|
|
19
|
-
return false;
|
|
20
|
-
// An unknown/MCP tool (or absent name) has no table, so it accepts any record.
|
|
21
|
-
const checks = toolChecks[toolName ?? ""];
|
|
22
|
-
return checks === undefined ? true : partial(value, checks);
|
|
23
|
-
}
|
|
24
|
-
const agentChecks = {
|
|
25
|
-
prompt: optionalString,
|
|
26
|
-
description: optionalString,
|
|
27
|
-
subagent_type: optionalString,
|
|
28
|
-
model: optionalString,
|
|
29
|
-
};
|
|
30
|
-
const askUserQuestionChecks = {
|
|
31
|
-
questions: optionalQuestions,
|
|
32
|
-
answers: optionalAnswers,
|
|
33
|
-
};
|
|
34
|
-
// Shared by the Bash AND PowerShell tools (same documented BashInput shape).
|
|
35
|
-
const shellChecks = {
|
|
36
|
-
command: optionalString,
|
|
37
|
-
description: optionalString,
|
|
38
|
-
timeout: optionalNumber,
|
|
39
|
-
run_in_background: optionalBoolean,
|
|
40
|
-
};
|
|
41
|
-
const editChecks = {
|
|
42
|
-
file_path: optionalString,
|
|
43
|
-
old_string: optionalString,
|
|
44
|
-
new_string: optionalString,
|
|
45
|
-
replace_all: optionalBoolean,
|
|
46
|
-
};
|
|
47
|
-
const exitPlanModeChecks = {
|
|
48
|
-
allowedPrompts: optionalStringArray,
|
|
49
|
-
plan: optionalString,
|
|
50
|
-
planFilePath: optionalString,
|
|
51
|
-
};
|
|
52
|
-
const globChecks = {
|
|
53
|
-
pattern: optionalString,
|
|
54
|
-
path: optionalString,
|
|
55
|
-
};
|
|
56
|
-
const grepChecks = {
|
|
57
|
-
pattern: optionalString,
|
|
58
|
-
path: optionalString,
|
|
59
|
-
glob: optionalString,
|
|
60
|
-
output_mode: optionalOutputMode,
|
|
61
|
-
"-i": optionalBoolean,
|
|
62
|
-
multiline: optionalBoolean,
|
|
63
|
-
};
|
|
64
|
-
const readChecks = {
|
|
65
|
-
file_path: optionalString,
|
|
66
|
-
offset: optionalNumber,
|
|
67
|
-
limit: optionalNumber,
|
|
68
|
-
};
|
|
69
|
-
const webFetchChecks = {
|
|
70
|
-
url: optionalString,
|
|
71
|
-
prompt: optionalString,
|
|
72
|
-
};
|
|
73
|
-
const webSearchChecks = {
|
|
74
|
-
query: optionalString,
|
|
75
|
-
allowed_domains: optionalStringArray,
|
|
76
|
-
blocked_domains: optionalStringArray,
|
|
77
|
-
};
|
|
78
|
-
const writeChecks = {
|
|
79
|
-
file_path: optionalString,
|
|
80
|
-
content: optionalString,
|
|
81
|
-
};
|
|
82
|
-
/** Maps each known built-in tool name to its field-check table; others accept any record. */
|
|
83
|
-
const toolChecks = {
|
|
84
|
-
Agent: agentChecks,
|
|
85
|
-
AskUserQuestion: askUserQuestionChecks,
|
|
86
|
-
Bash: shellChecks,
|
|
87
|
-
PowerShell: shellChecks,
|
|
88
|
-
Edit: editChecks,
|
|
89
|
-
ExitPlanMode: exitPlanModeChecks,
|
|
90
|
-
Glob: globChecks,
|
|
91
|
-
Grep: grepChecks,
|
|
92
|
-
Read: readChecks,
|
|
93
|
-
WebFetch: webFetchChecks,
|
|
94
|
-
WebSearch: webSearchChecks,
|
|
95
|
-
Write: writeChecks,
|
|
96
|
-
};
|
|
97
|
-
function optionalOutputMode(value) {
|
|
98
|
-
return (value === undefined ||
|
|
99
|
-
value === "content" ||
|
|
100
|
-
value === "files_with_matches" ||
|
|
101
|
-
value === "count");
|
|
102
|
-
}
|
|
103
|
-
function optionalQuestions(value) {
|
|
104
|
-
return value === undefined || (Array.isArray(value) && value.every(isQuestion));
|
|
105
|
-
}
|
|
106
|
-
function isQuestion(value) {
|
|
107
|
-
if (!isRecord(value))
|
|
108
|
-
return false;
|
|
109
|
-
return (typeof value["question"] === "string" &&
|
|
110
|
-
typeof value["header"] === "string" &&
|
|
111
|
-
Array.isArray(value["options"]) &&
|
|
112
|
-
value["options"].every(isQuestionOption) &&
|
|
113
|
-
optionalBoolean(value["multiSelect"]));
|
|
114
|
-
}
|
|
115
|
-
function isQuestionOption(value) {
|
|
116
|
-
return (isRecord(value) && typeof value["label"] === "string" && optionalString(value["description"]));
|
|
117
|
-
}
|
|
118
|
-
function optionalAnswers(value) {
|
|
119
|
-
return (value === undefined ||
|
|
120
|
-
(isRecord(value) && Object.values(value).every((entry) => typeof entry === "string")));
|
|
121
|
-
}
|
|
122
|
-
//# sourceMappingURL=validate-tool-update.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validate-tool-update.js","sourceRoot":"","sources":["../../src/claude/validate-tool-update.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Selects the CLI agent, auto-detecting one when no flag, environment variable,
|
|
3
|
-
* or config key chooses it. Implements PRD §12A.1/§12A.4 and C-CLI-03/C-CLI-21:
|
|
4
|
-
* probe `claude` and `codex` concurrently and keep the first, in that order,
|
|
5
|
-
* whose command resolves in the user's login shell — the same resolution the
|
|
6
|
-
* agent PTY launch uses (§4.2) — without running either agent. A probe that
|
|
7
|
-
* cannot run at all is reported as such, not as "no agent installed".
|
|
8
|
-
*/
|
|
9
|
-
import { type SourcedValue } from "./request-sources.ts";
|
|
10
|
-
import { type CliAgent } from "./types.ts";
|
|
11
|
-
/** Detection order: the first agent whose command resolves wins. */
|
|
12
|
-
export declare const agentDetectionOrder: readonly ["claude", "codex"];
|
|
13
|
-
/** Provenance reported for an auto-detected agent (`config effective`, JSON, verbose). */
|
|
14
|
-
export declare const autoDetectedSource = "auto-detected";
|
|
15
|
-
export type AgentDetector = () => Promise<CliAgent>;
|
|
16
|
-
type AgentProbe = (agent: CliAgent) => Promise<boolean>;
|
|
17
|
-
export declare const noAgentFoundMessage: string;
|
|
18
|
-
/**
|
|
19
|
-
* True when the login shell resolves `agent` as a command. Uses the same
|
|
20
|
-
* interactive login shell as the agent PTY so PATH resolution is identical, but
|
|
21
|
-
* asks only `command -v`, so the agent itself never starts (C-CLI-14). A probe
|
|
22
|
-
* that could not run at all (missing or broken shell, probe timeout) is a
|
|
23
|
-
* distinct failure: it says nothing about which agents are installed.
|
|
24
|
-
*/
|
|
25
|
-
export declare function loginShellResolves(agent: CliAgent, shell?: string): Promise<boolean>;
|
|
26
|
-
/**
|
|
27
|
-
* Probes every agent concurrently and returns the first in detection order that
|
|
28
|
-
* `probe` reports available; `no_agent_found` when none is.
|
|
29
|
-
*/
|
|
30
|
-
export declare function detectAvailableAgent(probe?: AgentProbe): Promise<CliAgent>;
|
|
31
|
-
type AgentSelection = {
|
|
32
|
-
readonly flag: string | undefined;
|
|
33
|
-
readonly env: CliAgent | undefined;
|
|
34
|
-
readonly config: SourcedValue<CliAgent>;
|
|
35
|
-
readonly resuming: boolean;
|
|
36
|
-
};
|
|
37
|
-
/**
|
|
38
|
-
* Flag > env > config precedence for the agent (C-CLI-14). Without a choice, a
|
|
39
|
-
* new session auto-detects; a resume keeps a placeholder that
|
|
40
|
-
* `finalizeRunRequest` replaces with the stored adapter, so resume never probes.
|
|
41
|
-
*/
|
|
42
|
-
export declare function selectAgent(selection: AgentSelection, detect: AgentDetector): Promise<SourcedValue<string>>;
|
|
43
|
-
export {};
|
|
44
|
-
//# sourceMappingURL=agent-detect.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-detect.d.ts","sourceRoot":"","sources":["../../src/cli/agent-detect.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAW,KAAK,YAAY,EAAW,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAE,KAAK,QAAQ,EAAsB,MAAM,YAAY,CAAC;AAE/D,oEAAoE;AACpE,eAAO,MAAM,mBAAmB,8BAA6D,CAAC;AAE9F,0FAA0F;AAC1F,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAElD,MAAM,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;AACpD,KAAK,UAAU,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;AAExD,eAAO,MAAM,mBAAmB,QAIgB,CAAC;AAEjD;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,QAAQ,EACf,KAAK,GAAE,MAAoB,GAC1B,OAAO,CAAC,OAAO,CAAC,CAOlB;AAWD;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,GAAE,UAA+B,GACrC,OAAO,CAAC,QAAQ,CAAC,CAKnB;AAED,KAAK,cAAc,GAAG;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,QAAQ,CAAC,GAAG,EAAE,QAAQ,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IACxC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,cAAc,EACzB,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAU/B"}
|
package/dist/cli/agent-detect.js
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Selects the CLI agent, auto-detecting one when no flag, environment variable,
|
|
3
|
-
* or config key chooses it. Implements PRD §12A.1/§12A.4 and C-CLI-03/C-CLI-21:
|
|
4
|
-
* probe `claude` and `codex` concurrently and keep the first, in that order,
|
|
5
|
-
* whose command resolves in the user's login shell — the same resolution the
|
|
6
|
-
* agent PTY launch uses (§4.2) — without running either agent. A probe that
|
|
7
|
-
* cannot run at all is reported as such, not as "no agent installed".
|
|
8
|
-
*/
|
|
9
|
-
import { currentCommandRunner } from "../runtime/seams.js";
|
|
10
|
-
import { probeShellCommand, shellQuote, userShell } from "../runtime/shell.js";
|
|
11
|
-
import { layered, sourced } from "./request-sources.js";
|
|
12
|
-
import { CliValidationError } from "./types.js";
|
|
13
|
-
/** Detection order: the first agent whose command resolves wins. */
|
|
14
|
-
export const agentDetectionOrder = ["claude", "codex"];
|
|
15
|
-
/** Provenance reported for an auto-detected agent (`config effective`, JSON, verbose). */
|
|
16
|
-
export const autoDetectedSource = "auto-detected";
|
|
17
|
-
export const noAgentFoundMessage = "No agent was found: neither `claude` nor `codex` resolves in your login shell. " +
|
|
18
|
-
"Install Claude Code (npm install -g @anthropic-ai/claude-code) or Codex " +
|
|
19
|
-
"(npm install -g @openai/codex), or select one with --agent, ELWOOD_AGENT, " +
|
|
20
|
-
"or `elwood config set agent <claude|codex>`.";
|
|
21
|
-
/**
|
|
22
|
-
* True when the login shell resolves `agent` as a command. Uses the same
|
|
23
|
-
* interactive login shell as the agent PTY so PATH resolution is identical, but
|
|
24
|
-
* asks only `command -v`, so the agent itself never starts (C-CLI-14). A probe
|
|
25
|
-
* that could not run at all (missing or broken shell, probe timeout) is a
|
|
26
|
-
* distinct failure: it says nothing about which agents are installed.
|
|
27
|
-
*/
|
|
28
|
-
export async function loginShellResolves(agent, shell = userShell()) {
|
|
29
|
-
const command = probeShellCommand(`command -v ${shellQuote(agent)}`);
|
|
30
|
-
const result = await currentCommandRunner()(shell, command);
|
|
31
|
-
if (result.error !== undefined) {
|
|
32
|
-
throw new CliValidationError("no_agent_found", probeFailedMessage(shell, result.error));
|
|
33
|
-
}
|
|
34
|
-
return result.status === 0;
|
|
35
|
-
}
|
|
36
|
-
function probeFailedMessage(shell, error) {
|
|
37
|
-
const reason = error.code === undefined ? "did not run" : `failed with ${error.code}`;
|
|
38
|
-
return (`No agent was found because the probe itself failed: login shell ${JSON.stringify(shell)} ` +
|
|
39
|
-
`${reason} while checking for \`claude\` and \`codex\`. Fix the shell, or select an agent ` +
|
|
40
|
-
"with --agent, ELWOOD_AGENT, or `elwood config set agent <claude|codex>`.");
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Probes every agent concurrently and returns the first in detection order that
|
|
44
|
-
* `probe` reports available; `no_agent_found` when none is.
|
|
45
|
-
*/
|
|
46
|
-
export async function detectAvailableAgent(probe = loginShellResolves) {
|
|
47
|
-
const available = await Promise.all(agentDetectionOrder.map((agent) => probe(agent)));
|
|
48
|
-
const found = agentDetectionOrder.find((_agent, index) => available[index] === true);
|
|
49
|
-
if (found === undefined)
|
|
50
|
-
throw new CliValidationError("no_agent_found", noAgentFoundMessage);
|
|
51
|
-
return found;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Flag > env > config precedence for the agent (C-CLI-14). Without a choice, a
|
|
55
|
-
* new session auto-detects; a resume keeps a placeholder that
|
|
56
|
-
* `finalizeRunRequest` replaces with the stored adapter, so resume never probes.
|
|
57
|
-
*/
|
|
58
|
-
export async function selectAgent(selection, detect) {
|
|
59
|
-
const chosen = layered(sourced(selection.flag, "--agent"), sourced(selection.env, "ELWOOD_AGENT"), selection.config, sourced(undefined, autoDetectedSource));
|
|
60
|
-
if (chosen.value !== undefined)
|
|
61
|
-
return chosen;
|
|
62
|
-
if (selection.resuming)
|
|
63
|
-
return sourced("codex", "stored session");
|
|
64
|
-
return sourced(await detect(), autoDetectedSource);
|
|
65
|
-
}
|
|
66
|
-
//# sourceMappingURL=agent-detect.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"agent-detect.js","sourceRoot":"","sources":["../../src/cli/agent-detect.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAqB,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC3E,OAAO,EAAiB,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE/D,oEAAoE;AACpE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAwC,CAAC;AAE9F,0FAA0F;AAC1F,MAAM,CAAC,MAAM,kBAAkB,GAAG,eAAe,CAAC;AAKlD,MAAM,CAAC,MAAM,mBAAmB,GAC9B,iFAAiF;IACjF,0EAA0E;IAC1E,4EAA4E;IAC5E,8CAA8C,CAAC;AAEjD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,KAAe,EACf,QAAgB,SAAS,EAAE;IAE3B,MAAM,OAAO,GAAG,iBAAiB,CAAC,cAAc,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG,MAAM,oBAAoB,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC5D,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/B,MAAM,IAAI,kBAAkB,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC1F,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAa,EAAE,KAA6C;IACtF,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,eAAe,KAAK,CAAC,IAAI,EAAE,CAAC;IACtF,OAAO,CACL,mEAAmE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG;QAC3F,GAAG,MAAM,kFAAkF;QAC3F,0EAA0E,CAC3E,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,QAAoB,kBAAkB;IAEtC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACtF,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;IACrF,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,IAAI,kBAAkB,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,CAAC;IAC7F,OAAO,KAAK,CAAC;AACf,CAAC;AASD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,SAAyB,EACzB,MAAqB;IAErB,MAAM,MAAM,GAAG,OAAO,CACpB,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,EAClC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,cAAc,CAAC,EACtC,SAAS,CAAC,MAAM,EAChB,OAAO,CAAS,SAAS,EAAE,kBAAkB,CAAC,CAC/C,CAAC;IACF,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAC9C,IAAI,SAAS,CAAC,QAAQ;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAClE,OAAO,OAAO,CAAC,MAAM,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC;AACrD,CAAC"}
|
package/dist/cli/arg-errors.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"arg-errors.d.ts","sourceRoot":"","sources":["../../src/cli/arg-errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAS3D"}
|
package/dist/cli/arg-errors.js
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Converts Node argument-parser failures into concise, actionable CLI diagnostics.
|
|
3
|
-
* Implements PRD §12A.5 and C-CLI-20.
|
|
4
|
-
*/
|
|
5
|
-
import { longOptions } from "./arg-options.js";
|
|
6
|
-
export function argumentErrorMessage(error) {
|
|
7
|
-
if (!(error instanceof Error))
|
|
8
|
-
return "Could not parse command-line arguments.";
|
|
9
|
-
const code = error.code;
|
|
10
|
-
const match = code === "ERR_PARSE_ARGS_UNKNOWN_OPTION" ? unknownOption(error.message) : undefined;
|
|
11
|
-
if (match === undefined)
|
|
12
|
-
return error.message;
|
|
13
|
-
const suggestion = nearestOption(match);
|
|
14
|
-
return suggestion === undefined
|
|
15
|
-
? `Unknown option '${match}'.`
|
|
16
|
-
: `Unknown option '${match}'. Did you mean '${suggestion}'?`;
|
|
17
|
-
}
|
|
18
|
-
function unknownOption(message) {
|
|
19
|
-
return /Unknown option '([^']+)'/u.exec(message)?.[1];
|
|
20
|
-
}
|
|
21
|
-
function nearestOption(input) {
|
|
22
|
-
if (!input.startsWith("--"))
|
|
23
|
-
return undefined;
|
|
24
|
-
const ranked = longOptions
|
|
25
|
-
.map((option) => ({ option, distance: editDistance(input, option) }))
|
|
26
|
-
.sort((left, right) => left.distance - right.distance);
|
|
27
|
-
const best = ranked[0];
|
|
28
|
-
if (best === undefined || best.distance > 2 || ranked[1]?.distance === best.distance)
|
|
29
|
-
return undefined;
|
|
30
|
-
return best.option;
|
|
31
|
-
}
|
|
32
|
-
function editDistance(left, right) {
|
|
33
|
-
let row = Array.from({ length: right.length + 1 }, (_, index) => index);
|
|
34
|
-
for (let leftIndex = 1; leftIndex <= left.length; leftIndex += 1) {
|
|
35
|
-
const next = [leftIndex];
|
|
36
|
-
for (let rightIndex = 1; rightIndex <= right.length; rightIndex += 1) {
|
|
37
|
-
const substitution = row[rightIndex - 1] + (left[leftIndex - 1] === right[rightIndex - 1] ? 0 : 1);
|
|
38
|
-
next[rightIndex] = Math.min(row[rightIndex] + 1, next[rightIndex - 1] + 1, substitution);
|
|
39
|
-
}
|
|
40
|
-
row = next;
|
|
41
|
-
}
|
|
42
|
-
return row[right.length];
|
|
43
|
-
}
|
|
44
|
-
//# sourceMappingURL=arg-errors.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"arg-errors.js","sourceRoot":"","sources":["../../src/cli/arg-errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;QAAE,OAAO,yCAAyC,CAAC;IAChF,MAAM,IAAI,GAAI,KAA6C,CAAC,IAAI,CAAC;IACjE,MAAM,KAAK,GAAG,IAAI,KAAK,+BAA+B,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClG,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,OAAO,CAAC;IAC9C,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACxC,OAAO,UAAU,KAAK,SAAS;QAC7B,CAAC,CAAC,mBAAmB,KAAK,IAAI;QAC9B,CAAC,CAAC,mBAAmB,KAAK,oBAAoB,UAAU,IAAI,CAAC;AACjE,CAAC;AAED,SAAS,aAAa,CAAC,OAAe;IACpC,OAAO,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAC9C,MAAM,MAAM,GAAG,WAAW;SACvB,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;SACpE,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,KAAK,IAAI,CAAC,QAAQ;QAClF,OAAO,SAAS,CAAC;IACnB,OAAO,IAAI,CAAC,MAAM,CAAC;AACrB,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,KAAa;IAC/C,IAAI,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;IACxE,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,EAAE,CAAC;QACjE,MAAM,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;QACzB,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,IAAI,KAAK,CAAC,MAAM,EAAE,UAAU,IAAI,CAAC,EAAE,CAAC;YACrE,MAAM,YAAY,GAChB,GAAG,CAAC,UAAU,GAAG,CAAC,CAAE,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACjF,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAE,GAAG,CAAC,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAE,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;QAC7F,CAAC;QACD,GAAG,GAAG,IAAI,CAAC;IACb,CAAC;IACD,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAE,CAAC;AAC5B,CAAC"}
|