@fusengine/harness 0.1.89 → 0.1.91
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/claude/index.d.mts +1 -1
- package/dist/adapters/claude/index.mjs +1 -1
- package/dist/adapters/cline/index.mjs +1 -1
- package/dist/adapters/codex/index.d.mts +2 -2
- package/dist/adapters/codex/index.mjs +5 -4
- package/dist/adapters/cursor/index.d.mts +15 -28
- package/dist/adapters/cursor/index.mjs +35 -46
- package/dist/adapters/gemini/index.mjs +1 -1
- package/dist/adapters/hermes/index.d.mts +1 -1
- package/dist/adapters/hermes/index.mjs +1 -1
- package/dist/adapters/kimi/index.d.mts +1 -1
- package/dist/adapters/kimi/index.mjs +1 -1
- package/dist/{claude-5bC8TDAz.mjs → claude-Ckv2_TgP.mjs} +3 -43
- package/dist/cli/bin.mjs +429 -16
- package/dist/cli/index.mjs +1 -1
- package/dist/command-string-CALMTnwN.mjs +42 -0
- package/dist/{evaluate-C1VSI5pb.mjs → evaluate-CMiIqHeH.mjs} +261 -13
- package/dist/{handle-DHhukRdh.mjs → handle-C43gA-Pr.mjs} +737 -150
- package/dist/{hermes-kP6NUQlG.mjs → hermes-B9-p_3IF.mjs} +3 -2
- package/dist/{index-DBgnIZn9.d.mts → index-B8PG82su.d.mts} +1 -1
- package/dist/{index-D4C2-IIc.d.mts → index-SmKYkk2N.d.mts} +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +2 -2
- package/dist/init/index.d.mts +1 -1
- package/dist/init/index.mjs +1 -1
- package/dist/{kimi-D6X7b8wF.mjs → kimi-G2wcSh5-.mjs} +3 -2
- package/dist/normalize-BjG6unTj.mjs +317 -0
- package/dist/permission-mode-B-SFyR0X.mjs +226 -0
- package/dist/policy/index.d.mts +1 -1
- package/dist/policy/index.mjs +2 -2
- package/dist/prompt/index.d.mts +1 -1
- package/dist/{run-CdIlUtjv.mjs → run-DkrzC0gb.mjs} +1 -1
- package/dist/{run-TAXNRSpD.mjs → run-GHAMqcOn.mjs} +26 -3
- package/dist/runtime/index.d.mts +27 -16
- package/dist/runtime/index.mjs +2 -2
- package/dist/{types-C0-igRKr.d.mts → types-Bh0jEF3_.d.mts} +2 -0
- package/dist/{validate-DZFtAbLP.mjs → validate-KjZ1X9tH.mjs} +1 -1
- package/package.json +3 -2
- package/src/adapters/claude/index.ts +92 -0
- package/src/adapters/cline/index.ts +36 -0
- package/src/adapters/codex/apply-patch.ts +94 -0
- package/src/adapters/codex/index.ts +84 -0
- package/src/adapters/codex/permission-mode.ts +16 -0
- package/src/adapters/cursor/context.ts +46 -0
- package/src/adapters/cursor/events.ts +38 -0
- package/src/adapters/cursor/index.ts +43 -0
- package/src/adapters/cursor/interfaces/types.ts +88 -0
- package/src/adapters/cursor/native-response.ts +158 -0
- package/src/adapters/cursor/normalize.ts +123 -0
- package/src/adapters/cursor/respond.ts +123 -0
- package/src/adapters/gemini/index.ts +36 -0
- package/src/adapters/hermes/index.ts +55 -0
- package/src/adapters/hermes/interfaces/types.ts +26 -0
- package/src/adapters/kimi/index.ts +96 -0
- package/src/adapters/kimi/interfaces/types.ts +55 -0
- package/src/cache/compact.ts +55 -0
- package/src/cache/index.ts +5 -0
- package/src/cache/io.ts +38 -0
- package/src/cache/mcp-response.ts +39 -0
- package/src/cache/mcp-store.ts +70 -0
- package/src/cache/store.ts +93 -0
- package/src/changelog/fetch.ts +79 -0
- package/src/cli/bin.ts +100 -0
- package/src/cli/cursor-event-scanner.ts +175 -0
- package/src/cli/cursor-stdin-reader.ts +65 -0
- package/src/cli/doctor.ts +96 -0
- package/src/cli/hook-io.ts +130 -0
- package/src/cli/hook-sound.ts +49 -0
- package/src/cli/index.ts +1 -0
- package/src/cli/json-primitive-scanner.ts +83 -0
- package/src/cli/run.ts +36 -0
- package/src/cli/scope.ts +31 -0
- package/src/codex-rules/build.ts +63 -0
- package/src/codex-rules/index.ts +8 -0
- package/src/codex-rules/mapping.ts +42 -0
- package/src/codex-rules/rules/absolute-paths.ts +52 -0
- package/src/codex-rules/rules/ask.ts +44 -0
- package/src/codex-rules/rules/chmod-ask.ts +57 -0
- package/src/codex-rules/rules/dd.ts +23 -0
- package/src/codex-rules/rules/diskutil.ts +33 -0
- package/src/codex-rules/rules/mkfs.ts +42 -0
- package/src/codex-rules/rules/privilege.ts +49 -0
- package/src/codex-rules/rules/remote-fetch.ts +31 -0
- package/src/codex-rules/rules/rm-variants.ts +58 -0
- package/src/codex-rules/rules/single-commands.ts +57 -0
- package/src/codex-rules/skip-list.ts +25 -0
- package/src/codex-rules/starlark.ts +46 -0
- package/src/codex-rules/types.ts +36 -0
- package/src/config/dotenv.ts +55 -0
- package/src/config/env.ts +10 -0
- package/src/config/home-dir.ts +36 -0
- package/src/config/index.ts +5 -0
- package/src/config/layout.ts +52 -0
- package/src/config/limits.ts +56 -0
- package/src/config/ttl.ts +30 -0
- package/src/detect/harness.ts +73 -0
- package/src/detect/index.ts +1 -0
- package/src/detect/interfaces/types.ts +18 -0
- package/src/freshness/agent-evidence-record.ts +95 -0
- package/src/freshness/agent-evidence.ts +95 -0
- package/src/freshness/codex-spawn-evidence.ts +91 -0
- package/src/freshness/doc-helpers.ts +90 -0
- package/src/freshness/evidence-harvest-io.ts +72 -0
- package/src/freshness/evidence-harvest.ts +61 -0
- package/src/freshness/explore-tools.ts +95 -0
- package/src/freshness/index.ts +2 -0
- package/src/freshness/query-framework.ts +73 -0
- package/src/freshness/ref-evidence.ts +49 -0
- package/src/freshness/ref-journal.ts +98 -0
- package/src/freshness/trivial-edit-counter.ts +30 -0
- package/src/index.ts +11 -0
- package/src/init/index.ts +2 -0
- package/src/init/run.ts +32 -0
- package/src/init/templates.ts +75 -0
- package/src/memory/gitignore.ts +14 -0
- package/src/memory/index.ts +3 -0
- package/src/memory/registry.ts +39 -0
- package/src/memory/session-roots.ts +99 -0
- package/src/memory/state.ts +58 -0
- package/src/policy/apex-authorization.ts +100 -0
- package/src/policy/apex-gates.ts +91 -0
- package/src/policy/apex-target-steps.ts +73 -0
- package/src/policy/apex-target.ts +49 -0
- package/src/policy/apex-task-context.ts +81 -0
- package/src/policy/apex.ts +94 -0
- package/src/policy/cartographer/build-tree.ts +69 -0
- package/src/policy/cartographer/describe.ts +53 -0
- package/src/policy/cartographer/entry.ts +38 -0
- package/src/policy/cartographer/frontmatter.ts +48 -0
- package/src/policy/cartographer/indicators.ts +34 -0
- package/src/policy/claude-md-context.ts +66 -0
- package/src/policy/conventions/index.ts +11 -0
- package/src/policy/conventions/interfaces.ts +71 -0
- package/src/policy/conventions/langs.ts +53 -0
- package/src/policy/conventions/query.ts +49 -0
- package/src/policy/conventions/react-hooks.ts +18 -0
- package/src/policy/conventions/store-or-query.ts +21 -0
- package/src/policy/conventions/stores.ts +56 -0
- package/src/policy/conventions/strip.ts +87 -0
- package/src/policy/conventions/verdict.ts +38 -0
- package/src/policy/creation-intent.ts +11 -0
- package/src/policy/deny-loop.ts +88 -0
- package/src/policy/design/allowed-write.ts +28 -0
- package/src/policy/design/content-checks.ts +45 -0
- package/src/policy/design/corpus-fs.ts +21 -0
- package/src/policy/design/corpus-resolve-cache.ts +49 -0
- package/src/policy/design/corpus-resolve.ts +99 -0
- package/src/policy/design/corpus.ts +92 -0
- package/src/policy/design/design-system-rules.ts +45 -0
- package/src/policy/design/flag.ts +30 -0
- package/src/policy/design/gates-pipeline.ts +105 -0
- package/src/policy/design/gates.ts +87 -0
- package/src/policy/design/screenshot-tools.ts +24 -0
- package/src/policy/design/skill-evidence.ts +34 -0
- package/src/policy/design/skill-gate.ts +81 -0
- package/src/policy/design/skill-triggers.ts +51 -0
- package/src/policy/design/state.ts +92 -0
- package/src/policy/design/template-urls.ts +54 -0
- package/src/policy/design/transitions.ts +68 -0
- package/src/policy/detect-claude-md-project-type.ts +32 -0
- package/src/policy/detect-framework.ts +99 -0
- package/src/policy/detect-primitive-checks.ts +100 -0
- package/src/policy/detect-primitive-lib.ts +55 -0
- package/src/policy/detect-project.ts +99 -0
- package/src/policy/edit-outcome.ts +53 -0
- package/src/policy/evaluate.ts +81 -0
- package/src/policy/expert-agents.ts +60 -0
- package/src/policy/file-size-scope.ts +32 -0
- package/src/policy/file-size.ts +99 -0
- package/src/policy/framework-solid-exclude.ts +52 -0
- package/src/policy/framework-solid-extended.ts +93 -0
- package/src/policy/framework-solid-gates-systems.ts +99 -0
- package/src/policy/framework-solid-gates.ts +98 -0
- package/src/policy/framework-solid.ts +88 -0
- package/src/policy/gemini-mcp-gate.ts +83 -0
- package/src/policy/git-gates.ts +40 -0
- package/src/policy/guards/bash-command-anchor.ts +40 -0
- package/src/policy/guards/bash-write-patterns.ts +140 -0
- package/src/policy/guards/bash-write-redirects.ts +201 -0
- package/src/policy/guards/bash-write-safe-paths.ts +62 -0
- package/src/policy/guards/bash-write.ts +76 -0
- package/src/policy/guards/context.ts +12 -0
- package/src/policy/guards/index.ts +61 -0
- package/src/policy/guards/install.ts +22 -0
- package/src/policy/guards/interface-separation-ext.ts +41 -0
- package/src/policy/guards/interface-separation.ts +100 -0
- package/src/policy/guards/protected-path.ts +100 -0
- package/src/policy/guards/security.ts +97 -0
- package/src/policy/index.ts +19 -0
- package/src/policy/interfaces/types.ts +46 -0
- package/src/policy/js-gate-route.ts +51 -0
- package/src/policy/lessons/lesson-gate.ts +0 -0
- package/src/policy/lessons/trigger-index.ts +84 -0
- package/src/policy/lessons/types.ts +31 -0
- package/src/policy/module-layout.ts +31 -0
- package/src/policy/nearest-manifest.ts +75 -0
- package/src/policy/never-approval.ts +95 -0
- package/src/policy/patterns.ts +80 -0
- package/src/policy/seo/validate.ts +51 -0
- package/src/policy/shadcn-project.ts +22 -0
- package/src/policy/shadcn-skill-gate.ts +97 -0
- package/src/policy/shell-read-refs.ts +96 -0
- package/src/policy/skill-path.ts +46 -0
- package/src/policy/skill-patterns/laravel.ts +40 -0
- package/src/policy/skill-patterns/nextjs.ts +29 -0
- package/src/policy/skill-patterns/react.ts +27 -0
- package/src/policy/skill-patterns/shadcn-subskills.ts +33 -0
- package/src/policy/skill-patterns/shadcn.ts +66 -0
- package/src/policy/skill-patterns/swift.ts +30 -0
- package/src/policy/skill-patterns/tailwind.ts +40 -0
- package/src/policy/skill-source.ts +52 -0
- package/src/policy/skill-trigger-patterns.ts +33 -0
- package/src/policy/skill-triggers.ts +108 -0
- package/src/policy/tailwind-skill-gate.ts +63 -0
- package/src/policy/trivial-edits.ts +52 -0
- package/src/policy/verbosity.ts +39 -0
- package/src/prompt/index.ts +1 -0
- package/src/prompt/types.ts +36 -0
- package/src/refs/discover.ts +69 -0
- package/src/refs/frontmatter.ts +24 -0
- package/src/refs/index.ts +4 -0
- package/src/refs/loader.ts +59 -0
- package/src/refs/ref-key.ts +41 -0
- package/src/refs/router.ts +63 -0
- package/src/refs/types.ts +25 -0
- package/src/runtime/activity.ts +99 -0
- package/src/runtime/apply-patch-gate.ts +41 -0
- package/src/runtime/burst-window.ts +21 -0
- package/src/runtime/codex-shell-tool.ts +37 -0
- package/src/runtime/command-string.ts +37 -0
- package/src/runtime/confirm/codex-confirm.ts +126 -0
- package/src/runtime/confirm/codex-prompt-origin.ts +16 -0
- package/src/runtime/confirm/confirm-code.ts +33 -0
- package/src/runtime/confirm/confirm-gate.ts +65 -0
- package/src/runtime/confirm/confirm-irreversible.ts +32 -0
- package/src/runtime/confirm/confirm-pending.ts +34 -0
- package/src/runtime/confirm/confirm-state.ts +56 -0
- package/src/runtime/confirm/confirm-subagent.ts +112 -0
- package/src/runtime/confirm/confirm-submit.ts +38 -0
- package/src/runtime/core-guards-active.ts +84 -0
- package/src/runtime/core-guards-wired.ts +47 -0
- package/src/runtime/deny-loop-store.ts +94 -0
- package/src/runtime/deny-notice.ts +52 -0
- package/src/runtime/design-cache-resolve.ts +51 -0
- package/src/runtime/design-content-gate.ts +95 -0
- package/src/runtime/design-files-gate.ts +114 -0
- package/src/runtime/design-helpers.ts +93 -0
- package/src/runtime/design-lifecycle.ts +39 -0
- package/src/runtime/design-read-credit.ts +28 -0
- package/src/runtime/design.ts +116 -0
- package/src/runtime/dev-context.ts +43 -0
- package/src/runtime/dry-patterns.ts +32 -0
- package/src/runtime/dry.ts +96 -0
- package/src/runtime/fragment-registry.ts +33 -0
- package/src/runtime/framework-skill-gate.ts +79 -0
- package/src/runtime/fs-cleanup.ts +71 -0
- package/src/runtime/gate-apex.ts +81 -0
- package/src/runtime/gate-helpers.ts +52 -0
- package/src/runtime/gate-input.ts +26 -0
- package/src/runtime/gate.ts +128 -0
- package/src/runtime/handle-post.ts +104 -0
- package/src/runtime/handle-pre.ts +137 -0
- package/src/runtime/handle-scope-async.ts +29 -0
- package/src/runtime/handle-types.ts +27 -0
- package/src/runtime/handle.ts +116 -0
- package/src/runtime/home-state.ts +55 -0
- package/src/runtime/index.ts +18 -0
- package/src/runtime/inform.ts +28 -0
- package/src/runtime/inject-budget-recap.ts +47 -0
- package/src/runtime/inject-budget.ts +81 -0
- package/src/runtime/inject-context.ts +85 -0
- package/src/runtime/inject-dedup-exclusive.ts +98 -0
- package/src/runtime/inject-dedup.ts +89 -0
- package/src/runtime/is-agent-tool.ts +19 -0
- package/src/runtime/lifecycle/agent-files.ts +49 -0
- package/src/runtime/lifecycle/agent-memory.ts +82 -0
- package/src/runtime/lifecycle/agent-transcript.ts +80 -0
- package/src/runtime/lifecycle/aipilot/analytics.ts +99 -0
- package/src/runtime/lifecycle/aipilot/apex-task-store.ts +61 -0
- package/src/runtime/lifecycle/aipilot/cache-base.ts +48 -0
- package/src/runtime/lifecycle/aipilot/cache-doc.ts +100 -0
- package/src/runtime/lifecycle/aipilot/cache-lessons.ts +58 -0
- package/src/runtime/lifecycle/aipilot/cache-test.ts +70 -0
- package/src/runtime/lifecycle/aipilot/curate-lessons.ts +64 -0
- package/src/runtime/lifecycle/aipilot/dispatch-aipilot.ts +100 -0
- package/src/runtime/lifecycle/aipilot/doc-cache-gate.ts +69 -0
- package/src/runtime/lifecycle/aipilot/inject-apex.ts +98 -0
- package/src/runtime/lifecycle/aipilot/inject-doc.ts +62 -0
- package/src/runtime/lifecycle/aipilot/inject-explore.ts +64 -0
- package/src/runtime/lifecycle/aipilot/inject-lessons.ts +61 -0
- package/src/runtime/lifecycle/aipilot/inject-test.ts +48 -0
- package/src/runtime/lifecycle/aipilot/lesson-archive.ts +60 -0
- package/src/runtime/lifecycle/aipilot/lesson-inject.ts +98 -0
- package/src/runtime/lifecycle/aipilot/lesson-parse.ts +74 -0
- package/src/runtime/lifecycle/aipilot/lessons.ts +72 -0
- package/src/runtime/lifecycle/aipilot/promote-global-lessons.ts +92 -0
- package/src/runtime/lifecycle/aipilot/solid-compliance.ts +69 -0
- package/src/runtime/lifecycle/aipilot/solid-notice.ts +47 -0
- package/src/runtime/lifecycle/aipilot/solid-transcript.ts +60 -0
- package/src/runtime/lifecycle/aipilot/source-scan.ts +56 -0
- package/src/runtime/lifecycle/aipilot/sync-task.ts +75 -0
- package/src/runtime/lifecycle/aipilot/transcript.ts +88 -0
- package/src/runtime/lifecycle/aipilot/types.ts +72 -0
- package/src/runtime/lifecycle/auto-document-reads.ts +73 -0
- package/src/runtime/lifecycle/cartographer/detect.ts +57 -0
- package/src/runtime/lifecycle/cartographer/ecosystem-map.ts +56 -0
- package/src/runtime/lifecycle/cartographer/fs-util.ts +64 -0
- package/src/runtime/lifecycle/cartographer/merge.ts +51 -0
- package/src/runtime/lifecycle/cartographer/project-map.ts +49 -0
- package/src/runtime/lifecycle/cartographer/scan-hooks.ts +48 -0
- package/src/runtime/lifecycle/cartographer/scan.ts +81 -0
- package/src/runtime/lifecycle/cartographer/session-start.ts +33 -0
- package/src/runtime/lifecycle/cartographer/track-enrichment.ts +45 -0
- package/src/runtime/lifecycle/cartographer/write-plugin-map.ts +43 -0
- package/src/runtime/lifecycle/cartographer/write-tree.ts +44 -0
- package/src/runtime/lifecycle/changelog-research.ts +43 -0
- package/src/runtime/lifecycle/check-file-size.ts +61 -0
- package/src/runtime/lifecycle/codex-resync/fingerprint.ts +63 -0
- package/src/runtime/lifecycle/codex-resync/lock.ts +46 -0
- package/src/runtime/lifecycle/codex-resync/managed-destination.ts +39 -0
- package/src/runtime/lifecycle/codex-resync/materialize-agents.ts +57 -0
- package/src/runtime/lifecycle/codex-resync/plugin-files.ts +65 -0
- package/src/runtime/lifecycle/codex-resync/plugin-roots.ts +62 -0
- package/src/runtime/lifecycle/codex-resync/resync.ts +45 -0
- package/src/runtime/lifecycle/codex-resync/symlink-commands.ts +25 -0
- package/src/runtime/lifecycle/dispatch.ts +109 -0
- package/src/runtime/lifecycle/failure-lesson.ts +51 -0
- package/src/runtime/lifecycle/index.ts +34 -0
- package/src/runtime/lifecycle/inject-rules.ts +50 -0
- package/src/runtime/lifecycle/instructions-loaded.ts +22 -0
- package/src/runtime/lifecycle/kimi-rules-native.ts +44 -0
- package/src/runtime/lifecycle/lessons/dispatch.ts +88 -0
- package/src/runtime/lifecycle/lessons/reminder.ts +89 -0
- package/src/runtime/lifecycle/lessons/state.ts +23 -0
- package/src/runtime/lifecycle/memory/agent-lesson.ts +35 -0
- package/src/runtime/lifecycle/memory/capture-error.ts +41 -0
- package/src/runtime/lifecycle/memory/client.ts +65 -0
- package/src/runtime/lifecycle/memory/dispatch.ts +42 -0
- package/src/runtime/lifecycle/memory/recall.ts +30 -0
- package/src/runtime/lifecycle/memory/salience.ts +31 -0
- package/src/runtime/lifecycle/memory/state.ts +49 -0
- package/src/runtime/lifecycle/memory/track-ops.ts +15 -0
- package/src/runtime/lifecycle/post-compact.ts +38 -0
- package/src/runtime/lifecycle/post-edit-ts.ts +49 -0
- package/src/runtime/lifecycle/post-tracking.ts +40 -0
- package/src/runtime/lifecycle/pre-compact.ts +38 -0
- package/src/runtime/lifecycle/rules-root.ts +83 -0
- package/src/runtime/lifecycle/security/check-skill.ts +63 -0
- package/src/runtime/lifecycle/security/scan-patterns.ts +53 -0
- package/src/runtime/lifecycle/security/scan.ts +76 -0
- package/src/runtime/lifecycle/security/skill-state.ts +47 -0
- package/src/runtime/lifecycle/security/track-mcp.ts +29 -0
- package/src/runtime/lifecycle/security/track-skill-read.ts +31 -0
- package/src/runtime/lifecycle/seo/post-tool-use.ts +45 -0
- package/src/runtime/lifecycle/session-end.ts +17 -0
- package/src/runtime/lifecycle/session-start.ts +57 -0
- package/src/runtime/lifecycle/snapshot/board.ts +27 -0
- package/src/runtime/lifecycle/snapshot/format.ts +60 -0
- package/src/runtime/lifecycle/snapshot/git.ts +71 -0
- package/src/runtime/lifecycle/snapshot/index.ts +52 -0
- package/src/runtime/lifecycle/snapshot/version.ts +34 -0
- package/src/runtime/lifecycle/solid-detect.ts +56 -0
- package/src/runtime/lifecycle/stop-core.ts +35 -0
- package/src/runtime/lifecycle/subagent-cache.ts +61 -0
- package/src/runtime/lifecycle/task-completed.ts +94 -0
- package/src/runtime/lifecycle/teammate-idle-check.ts +63 -0
- package/src/runtime/lifecycle/teammate-idle.ts +28 -0
- package/src/runtime/lifecycle/tool-failure.ts +24 -0
- package/src/runtime/lifecycle/track-changes.ts +61 -0
- package/src/runtime/lifecycle/validate-solid.ts +70 -0
- package/src/runtime/lifecycle/validate-tailwind.ts +80 -0
- package/src/runtime/lifecycle-bridge.ts +74 -0
- package/src/runtime/mcp-key.ts +44 -0
- package/src/runtime/mcp-tool-name.ts +92 -0
- package/src/runtime/mcp.ts +91 -0
- package/src/runtime/modular.ts +77 -0
- package/src/runtime/normalize.ts +107 -0
- package/src/runtime/notices.ts +91 -0
- package/src/runtime/notification-sound.ts +49 -0
- package/src/runtime/notifications.ts +77 -0
- package/src/runtime/paths.ts +59 -0
- package/src/runtime/post-fanout.ts +41 -0
- package/src/runtime/post-outcome.ts +61 -0
- package/src/runtime/pre-allow.ts +97 -0
- package/src/runtime/precommit.ts +60 -0
- package/src/runtime/prompt-text.ts +38 -0
- package/src/runtime/receipt-capture.ts +34 -0
- package/src/runtime/record.ts +26 -0
- package/src/runtime/respond.ts +92 -0
- package/src/runtime/solid-file-size-gate.ts +58 -0
- package/src/runtime/solid-pre.ts +53 -0
- package/src/runtime/storage.ts +9 -0
- package/src/statusline/colors.ts +31 -0
- package/src/statusline/constants.ts +17 -0
- package/src/statusline/formatters.ts +54 -0
- package/src/statusline/index.ts +4 -0
- package/src/statusline/progress-bar.ts +46 -0
- package/src/tracking/codex-post-failure.ts +73 -0
- package/src/tracking/index.ts +2 -0
- package/src/tracking/integrity.ts +99 -0
- package/src/tracking/one-shot-dedup.ts +34 -0
- package/src/tracking/one-shot-failure.ts +42 -0
- package/src/tracking/one-shot-store.ts +95 -0
- package/src/tracking/one-shot.ts +93 -0
- package/src/tracking/receipts.ts +95 -0
- package/src/tracking/session-state.ts +94 -0
- package/src/tracking/store.ts +96 -0
- package/src/tracking/track-compact.ts +100 -0
- package/src/tracking/track-diff.ts +50 -0
- package/src/tracking/track-journal.ts +97 -0
- package/src/tracking/track-lock-sync.ts +83 -0
- package/src/tracking/track-lock.ts +67 -0
- package/src/util/compact-json.ts +23 -0
- package/src/util/index.ts +2 -0
- package/src/util/json-io.ts +47 -0
- package/src/util/project-root.ts +41 -0
- package/src/util/runtime-io.ts +85 -0
- package/src/util/semver.ts +30 -0
- package/dist/permission-mode-B0MUl7FT.mjs +0 -136
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as denyResponse, c as informResponse, d as toClaudeResponse, i as contextResponse, l as readClaudeInput, n as attachSystemMessage, o as fileSizeGuard, r as blockResponse, s as guard, t as ClaudeHookInput, u as systemMessage } from "../../index-
|
|
1
|
+
import { a as denyResponse, c as informResponse, d as toClaudeResponse, i as contextResponse, l as readClaudeInput, n as attachSystemMessage, o as fileSizeGuard, r as blockResponse, s as guard, t as ClaudeHookInput, u as systemMessage } from "../../index-SmKYkk2N.mjs";
|
|
2
2
|
export { ClaudeHookInput, attachSystemMessage, blockResponse, contextResponse, denyResponse, fileSizeGuard, guard, informResponse, readClaudeInput, systemMessage, toClaudeResponse };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as fileSizeGuard, c as readClaudeInput, i as denyResponse, l as systemMessage, n as blockResponse, o as guard, r as contextResponse, s as informResponse, t as attachSystemMessage, u as toClaudeResponse } from "../../claude-
|
|
1
|
+
import { a as fileSizeGuard, c as readClaudeInput, i as denyResponse, l as systemMessage, n as blockResponse, o as guard, r as contextResponse, s as informResponse, t as attachSystemMessage, u as toClaudeResponse } from "../../claude-Ckv2_TgP.mjs";
|
|
2
2
|
export { attachSystemMessage, blockResponse, contextResponse, denyResponse, fileSizeGuard, guard, informResponse, readClaudeInput, systemMessage, toClaudeResponse };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { t as Prompt } from "../../types-
|
|
2
|
-
import { a as denyResponse, c as informResponse, i as contextResponse, l as readClaudeInput, t as ClaudeHookInput } from "../../index-
|
|
1
|
+
import { t as Prompt } from "../../types-Bh0jEF3_.mjs";
|
|
2
|
+
import { a as denyResponse, c as informResponse, i as contextResponse, l as readClaudeInput, t as ClaudeHookInput } from "../../index-SmKYkk2N.mjs";
|
|
3
3
|
//#region src/adapters/codex/index.d.ts
|
|
4
4
|
/**
|
|
5
5
|
* Render a portable {@link Prompt} as a Codex hook response, `ask` → explicit deny.
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { t as evaluate } from "../../evaluate-
|
|
1
|
+
import { t as evaluate } from "../../evaluate-CMiIqHeH.mjs";
|
|
2
2
|
import { f as countLines } from "../../home-state-oUGFB4ds.mjs";
|
|
3
3
|
import { t as formatPrompt } from "../../types-ernB1Dy3.mjs";
|
|
4
|
-
import { n as
|
|
5
|
-
import {
|
|
4
|
+
import { i as parseApplyPatch, n as canonicalizeMcpToolName, r as canonicalizeCodexShellTool, t as isBypassPermissions } from "../../permission-mode-B-SFyR0X.mjs";
|
|
5
|
+
import { t as commandToString } from "../../command-string-CALMTnwN.mjs";
|
|
6
|
+
import { c as readClaudeInput, i as denyResponse, r as contextResponse, s as informResponse } from "../../claude-Ckv2_TgP.mjs";
|
|
6
7
|
//#region src/adapters/codex/index.ts
|
|
7
8
|
/**
|
|
8
9
|
* OpenAI Codex CLI adapter (hook-mode). Codex's `PreToolUse` hook (since 2026)
|
|
@@ -51,7 +52,7 @@ function applyPatchPrompt(command) {
|
|
|
51
52
|
function resolvePrompt(input) {
|
|
52
53
|
const i = input.tool_input;
|
|
53
54
|
const r = evaluate({
|
|
54
|
-
tool: canonicalizeCodexShellTool("codex", input.tool_name ?? "Write"),
|
|
55
|
+
tool: canonicalizeCodexShellTool("codex", canonicalizeMcpToolName("codex", input.tool_name ?? "Write")),
|
|
55
56
|
filePath: i?.file_path,
|
|
56
57
|
content: i?.content ?? i?.new_string,
|
|
57
58
|
command: commandToString(i?.command),
|
|
@@ -3,9 +3,15 @@
|
|
|
3
3
|
interface CursorShellPayload {
|
|
4
4
|
command?: string;
|
|
5
5
|
cwd?: string;
|
|
6
|
+
sandbox?: boolean;
|
|
6
7
|
workspace_roots?: string[];
|
|
7
8
|
hook_event_name?: string;
|
|
8
9
|
}
|
|
10
|
+
/** `preToolUse` stdin payload subset consumed by the adapter. */
|
|
11
|
+
interface CursorToolPayload {
|
|
12
|
+
tool_name?: string;
|
|
13
|
+
tool_input?: Record<string, unknown>;
|
|
14
|
+
}
|
|
9
15
|
/** `afterFileEdit` stdin payload (subset). */
|
|
10
16
|
interface CursorEditPayload {
|
|
11
17
|
file_path?: string;
|
|
@@ -15,18 +21,10 @@ interface CursorEditPayload {
|
|
|
15
21
|
}[];
|
|
16
22
|
}
|
|
17
23
|
/**
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
* only — there is NO `agent_message` and NO `updated_input`. Since the edit is
|
|
21
|
-
* already on disk when this "after" hook fires, `deny` cannot revert it and the
|
|
22
|
-
* correction reaches only the HUMAN (`user_message`), never the model — so this
|
|
23
|
-
* path is strictly ADVISORY, not an enforceable gate.
|
|
24
|
+
* Empty afterFileEdit callback. Cursor documents no output fields for this
|
|
25
|
+
* post hook, so pre-execution permission fields are intentionally impossible.
|
|
24
26
|
*/
|
|
25
|
-
|
|
26
|
-
permission: "allow" | "deny";
|
|
27
|
-
/** User-visible correction — snake_case (#141516); the only channel afterFileEdit exposes. */
|
|
28
|
-
user_message?: string;
|
|
29
|
-
}
|
|
27
|
+
type CursorEditResponse = Record<string, never>;
|
|
30
28
|
/**
|
|
31
29
|
* `beforeShellExecution` stdout response. Message keys are snake_case:
|
|
32
30
|
* Cursor silently ignores camelCase `userMessage`/`agentMessage` (#141516,
|
|
@@ -35,7 +33,6 @@ interface CursorEditResponse {
|
|
|
35
33
|
*/
|
|
36
34
|
interface CursorResponse {
|
|
37
35
|
permission: "allow" | "deny" | "ask";
|
|
38
|
-
continue?: boolean;
|
|
39
36
|
/** User-visible message — snake_case required (#141516, #142589). */
|
|
40
37
|
user_message?: string;
|
|
41
38
|
/** Agent-visible message — snake_case required (#141516, #142589). */
|
|
@@ -45,24 +42,14 @@ interface CursorResponse {
|
|
|
45
42
|
//#region src/adapters/cursor/index.d.ts
|
|
46
43
|
/** Guard a shell command (git/install policies). */
|
|
47
44
|
declare function beforeShellExecution(payload: CursorShellPayload): CursorResponse;
|
|
45
|
+
/** Guard a generic Cursor tool call using the same extraction as the runtime. */
|
|
46
|
+
declare function preToolUse(payload: CursorToolPayload): CursorResponse;
|
|
48
47
|
/**
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
* SOLID/DRY violation we surface the correction through `user_message` (the only
|
|
52
|
-
* channel afterFileEdit exposes — no `agent_message`, so the model is never
|
|
53
|
-
* re-informed) while ALWAYS returning `permission: "allow"`.
|
|
54
|
-
*
|
|
55
|
-
* We deliberately never emit `permission: "deny"` here, for two distinct reasons:
|
|
56
|
-
* (1) structural — afterFileEdit was "informational only" at launch (Chacon,
|
|
57
|
-
* Cursor hooks beta 1.7, 2025-09: no channel to stop the agent), and a post-write
|
|
58
|
-
* deny has no documented rollback; (2) empirical — Cursor staff confirm the
|
|
59
|
-
* deny-enforcement path is broken for file operations (forum.cursor.com/t/154377,
|
|
60
|
-
* v2.6.18, 2026-03, open) — proven for file READS, plausibly the same for writes.
|
|
61
|
-
* So a `deny` would be a false blocking signal; `allow` + `user_message` is the
|
|
62
|
-
* only proven-safe shape.
|
|
48
|
+
* Complete an observed file edit without emitting pre-execution permission
|
|
49
|
+
* fields. Cursor does not define a callback schema for this post hook.
|
|
63
50
|
* @param payload - The `afterFileEdit` stdin payload.
|
|
64
|
-
* @returns
|
|
51
|
+
* @returns An empty successful response.
|
|
65
52
|
*/
|
|
66
53
|
declare function afterFileEdit(payload: CursorEditPayload): CursorEditResponse;
|
|
67
54
|
//#endregion
|
|
68
|
-
export { type CursorEditPayload, type CursorEditResponse, type CursorResponse, type CursorShellPayload, afterFileEdit, beforeShellExecution };
|
|
55
|
+
export { type CursorEditPayload, type CursorEditResponse, type CursorResponse, type CursorShellPayload, type CursorToolPayload, afterFileEdit, beforeShellExecution, preToolUse };
|
|
@@ -1,58 +1,47 @@
|
|
|
1
|
-
import { t as evaluate } from "../../evaluate-
|
|
1
|
+
import { t as evaluate } from "../../evaluate-CMiIqHeH.mjs";
|
|
2
2
|
import { t as formatPrompt } from "../../types-ernB1Dy3.mjs";
|
|
3
|
+
import { t as extractCursorEvent } from "../../normalize-BjG6unTj.mjs";
|
|
3
4
|
//#region src/adapters/cursor/index.ts
|
|
4
|
-
/**
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
const r = evaluate({
|
|
14
|
-
tool: "Bash",
|
|
15
|
-
command: payload.command
|
|
5
|
+
/** Cursor hook adapter; post-edit handling remains observe-only. */
|
|
6
|
+
function guardCursor(payload) {
|
|
7
|
+
const event = extractCursorEvent(payload);
|
|
8
|
+
const result = evaluate({
|
|
9
|
+
tool: event.tool,
|
|
10
|
+
filePath: event.filePath,
|
|
11
|
+
content: event.content,
|
|
12
|
+
oldString: event.oldString,
|
|
13
|
+
command: event.command
|
|
16
14
|
});
|
|
17
|
-
if (
|
|
18
|
-
const
|
|
15
|
+
if (result.decision === "allow" || !result.prompt) return { permission: "allow" };
|
|
16
|
+
const message = formatPrompt(result.prompt);
|
|
19
17
|
return {
|
|
20
|
-
permission:
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
18
|
+
permission: "deny",
|
|
19
|
+
user_message: result.prompt.kind === "ask" ? `[downgraded from ask — Cursor preToolUse does not reliably enforce ask]\n${message}` : message,
|
|
20
|
+
agent_message: message
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
function namedPayload(payload, eventName) {
|
|
24
|
+
return Object.hasOwn(payload, "hook_event_name") ? payload : {
|
|
25
|
+
...payload,
|
|
26
|
+
hook_event_name: eventName
|
|
24
27
|
};
|
|
25
28
|
}
|
|
29
|
+
/** Guard a shell command (git/install policies). */
|
|
30
|
+
function beforeShellExecution(payload) {
|
|
31
|
+
return guardCursor(namedPayload(payload, "beforeShellExecution"));
|
|
32
|
+
}
|
|
33
|
+
/** Guard a generic Cursor tool call using the same extraction as the runtime. */
|
|
34
|
+
function preToolUse(payload) {
|
|
35
|
+
return guardCursor(namedPayload(payload, "preToolUse"));
|
|
36
|
+
}
|
|
26
37
|
/**
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
* SOLID/DRY violation we surface the correction through `user_message` (the only
|
|
30
|
-
* channel afterFileEdit exposes — no `agent_message`, so the model is never
|
|
31
|
-
* re-informed) while ALWAYS returning `permission: "allow"`.
|
|
32
|
-
*
|
|
33
|
-
* We deliberately never emit `permission: "deny"` here, for two distinct reasons:
|
|
34
|
-
* (1) structural — afterFileEdit was "informational only" at launch (Chacon,
|
|
35
|
-
* Cursor hooks beta 1.7, 2025-09: no channel to stop the agent), and a post-write
|
|
36
|
-
* deny has no documented rollback; (2) empirical — Cursor staff confirm the
|
|
37
|
-
* deny-enforcement path is broken for file operations (forum.cursor.com/t/154377,
|
|
38
|
-
* v2.6.18, 2026-03, open) — proven for file READS, plausibly the same for writes.
|
|
39
|
-
* So a `deny` would be a false blocking signal; `allow` + `user_message` is the
|
|
40
|
-
* only proven-safe shape.
|
|
38
|
+
* Complete an observed file edit without emitting pre-execution permission
|
|
39
|
+
* fields. Cursor does not define a callback schema for this post hook.
|
|
41
40
|
* @param payload - The `afterFileEdit` stdin payload.
|
|
42
|
-
* @returns
|
|
41
|
+
* @returns An empty successful response.
|
|
43
42
|
*/
|
|
44
43
|
function afterFileEdit(payload) {
|
|
45
|
-
|
|
46
|
-
const r = evaluate({
|
|
47
|
-
tool: "Edit",
|
|
48
|
-
filePath: payload.file_path,
|
|
49
|
-
content
|
|
50
|
-
});
|
|
51
|
-
if (r.decision !== "deny" || !r.prompt) return { permission: "allow" };
|
|
52
|
-
return {
|
|
53
|
-
permission: "allow",
|
|
54
|
-
user_message: formatPrompt(r.prompt)
|
|
55
|
-
};
|
|
44
|
+
return {};
|
|
56
45
|
}
|
|
57
46
|
//#endregion
|
|
58
|
-
export { afterFileEdit, beforeShellExecution };
|
|
47
|
+
export { afterFileEdit, beforeShellExecution, preToolUse };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as readHermesInput, r as toHermesResponse, t as guard } from "../../hermes-
|
|
1
|
+
import { n as readHermesInput, r as toHermesResponse, t as guard } from "../../hermes-B9-p_3IF.mjs";
|
|
2
2
|
export { guard, readHermesInput, toHermesResponse };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { i as toKimiResponse, n as kimiDenyResponse, r as readKimiInput, t as guard } from "../../kimi-
|
|
1
|
+
import { i as toKimiResponse, n as kimiDenyResponse, r as readKimiInput, t as guard } from "../../kimi-G2wcSh5-.mjs";
|
|
2
2
|
export { guard, kimiDenyResponse, readKimiInput, toKimiResponse };
|
|
@@ -1,49 +1,9 @@
|
|
|
1
|
-
import { t as evaluate } from "./evaluate-
|
|
1
|
+
import { t as evaluate } from "./evaluate-CMiIqHeH.mjs";
|
|
2
2
|
import { t as formatPrompt } from "./types-ernB1Dy3.mjs";
|
|
3
|
+
import { t as commandToString } from "./command-string-CALMTnwN.mjs";
|
|
3
4
|
import { dirname, join } from "node:path";
|
|
4
5
|
import { existsSync, mkdirSync, readFileSync, readdirSync, writeFileSync } from "node:fs";
|
|
5
6
|
import { spawnSync } from "node:child_process";
|
|
6
|
-
//#region src/runtime/command-string.ts
|
|
7
|
-
/** Shell basenames whose `-c`-style argv carries the real script in argv[2]. */
|
|
8
|
-
const SHELLS = /* @__PURE__ */ new Set([
|
|
9
|
-
"bash",
|
|
10
|
-
"sh",
|
|
11
|
-
"zsh",
|
|
12
|
-
"dash"
|
|
13
|
-
]);
|
|
14
|
-
/** True when `arg` is (a path to) a POSIX shell we know wraps a `-c` script. */
|
|
15
|
-
function isShell(arg) {
|
|
16
|
-
if (arg === void 0) return false;
|
|
17
|
-
const base = arg.slice(arg.lastIndexOf("/") + 1);
|
|
18
|
-
return SHELLS.has(base);
|
|
19
|
-
}
|
|
20
|
-
/** True for a shell command flag (`-c`, `-lc`, `-ic`, …) — anything ending in `c`. */
|
|
21
|
-
function isCommandFlag(arg) {
|
|
22
|
-
return arg !== void 0 && /^-[a-z]*c$/.test(arg);
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Coerce a hook payload's `command` field to the shell string the guard chain
|
|
26
|
-
* expects. Harnesses disagree on the wire shape: Claude Code, Cursor, and Hermes
|
|
27
|
-
* send a plain string, but Codex CLI sends an argv ARRAY
|
|
28
|
-
* (`["bash", "-lc", "git commit -m x"]`). A naive `typeof === "string"` check
|
|
29
|
-
* dropped the array to `undefined`, blinding every `ctx.command` guard
|
|
30
|
-
* (destructive-git, mutators, install…) into a silent fail-open. This restores
|
|
31
|
-
* the script so the array and string payloads reach an identical verdict.
|
|
32
|
-
*
|
|
33
|
-
* @param v - Raw `command` value off the payload (string, argv array, or other).
|
|
34
|
-
* @returns A string as-is; a `[shell, -c|-lc, script]` argv reduced to its
|
|
35
|
-
* script; any other all-string array joined with spaces; and `undefined` for
|
|
36
|
-
* empty arrays, arrays holding non-strings, or any other type.
|
|
37
|
-
*/
|
|
38
|
-
function commandToString(v) {
|
|
39
|
-
if (typeof v === "string") return v;
|
|
40
|
-
if (!Array.isArray(v)) return void 0;
|
|
41
|
-
if (v.length === 0 || !v.every((e) => typeof e === "string")) return void 0;
|
|
42
|
-
const argv = v;
|
|
43
|
-
if (argv.length >= 3 && isShell(argv[0]) && isCommandFlag(argv[1])) return argv[2];
|
|
44
|
-
return argv.join(" ");
|
|
45
|
-
}
|
|
46
|
-
//#endregion
|
|
47
7
|
//#region src/util/runtime-io.ts
|
|
48
8
|
/**
|
|
49
9
|
* Cross-runtime I/O helpers (Node + Bun). The published CLI ships a `node`
|
|
@@ -216,4 +176,4 @@ function guard(input) {
|
|
|
216
176
|
/** @deprecated use {@link guard}. Kept for back-compat. */
|
|
217
177
|
const fileSizeGuard = guard;
|
|
218
178
|
//#endregion
|
|
219
|
-
export {
|
|
179
|
+
export { fileSizeGuard as a, readClaudeInput as c, collectFiles as d, pathExists as f, writeText as g, spawnCapture as h, denyResponse as i, systemMessage as l, sleep as m, blockResponse as n, guard as o, readText as p, contextResponse as r, informResponse as s, attachSystemMessage as t, toClaudeResponse as u };
|