@fusengine/harness 0.1.90 → 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 +3 -2
- 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-CBaOcFZq.mjs → handle-C43gA-Pr.mjs} +701 -134
- 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/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
|
@@ -1,6 +1,7 @@
|
|
|
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 {
|
|
3
|
+
import { t as commandToString } from "./command-string-CALMTnwN.mjs";
|
|
4
|
+
import { c as readClaudeInput } from "./claude-Ckv2_TgP.mjs";
|
|
4
5
|
//#region src/adapters/hermes/index.ts
|
|
5
6
|
/**
|
|
6
7
|
* Hermes Agent adapter (hook-mode). Nous Research's hermes-agent (2026) pipes a
|
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as PromptKind, r as formatPrompt, t as Prompt } from "./types-
|
|
1
|
+
import { n as PromptKind, r as formatPrompt, t as Prompt } from "./types-Bh0jEF3_.mjs";
|
|
2
2
|
import { _ as queryHash, a as cacheLookupSubstringMeta, c as mcpCacheKey, d as extractText, f as IndexSummary, g as jaccardSimilar, h as compactMarkdown, i as cacheLookupSubstring, l as mcpCacheWrite, m as summarizeIndex, n as cacheLookup, o as cachePath, p as loadIndex, r as cacheLookupMeta, s as cacheStore, t as CacheHit, u as webfetchCacheWrite } from "./index-DhmV2MPh.mjs";
|
|
3
3
|
import { _ as DEFAULT_TTL_SEC, a as ProjectLayout, b as ttlLabel, c as projectLayout, d as MAX_LINES_ENV_KEY, f as hookBudget, g as storeBudget, h as splitTarget, i as parseEnvFile, l as DEFAULT_MAX_LINES, m as resolveStdinMaxBytes, n as envCandidates, o as STATE_GITIGNORE, p as resolveMaxLines, r as loadDotenv, s as STATE_ROOT, t as HOME_DIR, u as DEFAULT_STDIN_MAX_BYTES, v as TTL_ENV_KEY, x as parseEnvInt, y as resolveTtlSec } from "./index-oXXPs2xl.mjs";
|
|
4
4
|
import { i as HarnessVia, n as HarnessInfo, r as HarnessMode, t as HarnessId } from "./types-DvXTI71X.mjs";
|
|
@@ -6,7 +6,7 @@ import { n as detectMode, r as modeFor, t as detectHarness } from "./index-CigBu
|
|
|
6
6
|
import { a as isDocConsulted, i as formatDocSatisfactionStatus, n as DocSatisfactionStatus, o as resolveSessions, r as formatDocDeny, t as AuthEntry } from "./doc-helpers-BGCzP9VF.mjs";
|
|
7
7
|
import { t as incrementTrivialEditCounter } from "./index-84heAAm_.mjs";
|
|
8
8
|
import { a as compactJson, i as walkUpFor, n as projectRoot, r as projectRootOrNull, t as isCodeFile } from "./index-p9fLrSOD.mjs";
|
|
9
|
-
import { $ as detectCreationIntent, $t as countFrameworkCodeLines, A as TreeEntry, At as APEX_GATES, B as loadApexTaskState, Bt as evaluate, C as maskCommentsAndStrings, Ct as protectedPathGuard, D as descFromText, Dt as securityGuard, E as missingSeoElements, Et as LabeledPattern, F as EXCLUDE_DIRS, Ft as brainstormGate, G as detectRequiredSkills, Gt as PROJECT_INSTALL, H as buildApexInstruction, Ht as PolicyResult, I as PROJECT_INDICATORS, It as docConsultedGate, J as SKILL_TRIGGERS, Jt as isRalphMode, K as skillTriggerGate, Kt as RALPH_SAFE, L as ApexTaskState, Lt as evaluateApex, M as parseEntry, Mt as ApexGate, N as parseBodyDesc, Nt as POST_AUTH_GATES, O as firstComment, Ot as Guard, P as parseField, Pt as PRE_AUTH_GATES, Q as capVerbosity, Qt as SOLID_REF, R as buildApexTaskContext, Rt as freshnessGate, S as LexProfile, St as PROTECTED_GIT_RE, T as isHtmlLike, Tt as CRITICAL_PATTERNS, U as buildClaudeMdContext, Ut as GIT_ASK, V as DEV_VERBS, Vt as PolicyContext, W as detectClaudeMdProjectType, Wt as GIT_BLOCKED, X as MAX_EXA_RESULTS, Xt as FileSizeVerdict, Y as frameworkSolidGate, Yt as matchPatterns, Z as MAX_TOKENS, Zt as PLUGINS_DIR, _ as isStoresPath, _t as CODE_REDIRECT, a as countStores, an as ProjectType, at as installGuard, b as langOfPath, bt as SESSION_STATE_FRAGMENT, c as InterfaceDeclLevel, cn as isApexCommand, ct as PHP_DECL_RE, d as interfaceDeclLevel, dt as SWIFT_PROTO_RE, en as countLines, et as FAIL_CLOSED, f as LangFamily, ft as TS_DECL_RE, g as isQueryPath, gt as CODE_MUTATORS, h as isInterfacesPath, ht as ASK_WRITERS, i as StoreLib, in as ModularArchitecture, it as runGuards, j as parseEnrichment, jt as ApexContext, k as firstHeading, kt as GuardContext, l as declaresExportedTypeAlias, ln as requiredArchSkill, lt as PY_MODEL_RE, m as isHooksPath, mt as bashWriteGuard, n as importsTanstackQuery, nn as detectFramework, nt as clearUserGuards, o as declaresStore, on as detectModularArchitecture, ot as GO_DECL_RE, p as isComponentsPath, pt as interfaceSeparationGuard, q as usesTailwindUtilities, qt as SYSTEM_INSTALL, r as queryCapActive, rn as DEV_KEYWORDS, rt as registerGuard, s as declaresCustomHook, sn as detectProjectType, st as JAVA_DECL_RE, t as declaresQueryHook, tn as evaluateFileSize, tt as GUARDS, u as declaresInterface, ut as RUST_DECL_RE, v as isTypesPath, vt as FILE_REDIRECT, w as maskCommentsOnly, wt as ASK_PATTERNS, x as lexProfileOf, xt as PROTECTED_FRAGMENTS, y as isVendorPath, yt as SAFE_PREFIXES, z as buildApexTaskInjection, zt as solidReadGate } from "./index-
|
|
9
|
+
import { $ as detectCreationIntent, $t as countFrameworkCodeLines, A as TreeEntry, At as APEX_GATES, B as loadApexTaskState, Bt as evaluate, C as maskCommentsAndStrings, Ct as protectedPathGuard, D as descFromText, Dt as securityGuard, E as missingSeoElements, Et as LabeledPattern, F as EXCLUDE_DIRS, Ft as brainstormGate, G as detectRequiredSkills, Gt as PROJECT_INSTALL, H as buildApexInstruction, Ht as PolicyResult, I as PROJECT_INDICATORS, It as docConsultedGate, J as SKILL_TRIGGERS, Jt as isRalphMode, K as skillTriggerGate, Kt as RALPH_SAFE, L as ApexTaskState, Lt as evaluateApex, M as parseEntry, Mt as ApexGate, N as parseBodyDesc, Nt as POST_AUTH_GATES, O as firstComment, Ot as Guard, P as parseField, Pt as PRE_AUTH_GATES, Q as capVerbosity, Qt as SOLID_REF, R as buildApexTaskContext, Rt as freshnessGate, S as LexProfile, St as PROTECTED_GIT_RE, T as isHtmlLike, Tt as CRITICAL_PATTERNS, U as buildClaudeMdContext, Ut as GIT_ASK, V as DEV_VERBS, Vt as PolicyContext, W as detectClaudeMdProjectType, Wt as GIT_BLOCKED, X as MAX_EXA_RESULTS, Xt as FileSizeVerdict, Y as frameworkSolidGate, Yt as matchPatterns, Z as MAX_TOKENS, Zt as PLUGINS_DIR, _ as isStoresPath, _t as CODE_REDIRECT, a as countStores, an as ProjectType, at as installGuard, b as langOfPath, bt as SESSION_STATE_FRAGMENT, c as InterfaceDeclLevel, cn as isApexCommand, ct as PHP_DECL_RE, d as interfaceDeclLevel, dt as SWIFT_PROTO_RE, en as countLines, et as FAIL_CLOSED, f as LangFamily, ft as TS_DECL_RE, g as isQueryPath, gt as CODE_MUTATORS, h as isInterfacesPath, ht as ASK_WRITERS, i as StoreLib, in as ModularArchitecture, it as runGuards, j as parseEnrichment, jt as ApexContext, k as firstHeading, kt as GuardContext, l as declaresExportedTypeAlias, ln as requiredArchSkill, lt as PY_MODEL_RE, m as isHooksPath, mt as bashWriteGuard, n as importsTanstackQuery, nn as detectFramework, nt as clearUserGuards, o as declaresStore, on as detectModularArchitecture, ot as GO_DECL_RE, p as isComponentsPath, pt as interfaceSeparationGuard, q as usesTailwindUtilities, qt as SYSTEM_INSTALL, r as queryCapActive, rn as DEV_KEYWORDS, rt as registerGuard, s as declaresCustomHook, sn as detectProjectType, st as JAVA_DECL_RE, t as declaresQueryHook, tn as evaluateFileSize, tt as GUARDS, u as declaresInterface, ut as RUST_DECL_RE, v as isTypesPath, vt as FILE_REDIRECT, w as maskCommentsOnly, wt as ASK_PATTERNS, x as lexProfileOf, xt as PROTECTED_FRAGMENTS, y as isVendorPath, yt as SAFE_PREFIXES, z as buildApexTaskInjection, zt as solidReadGate } from "./index-B8PG82su.mjs";
|
|
10
10
|
import { n as RouteResult, r as ScoredRef, t as RefMeta } from "./types-CY5qT2X1.mjs";
|
|
11
11
|
import { a as ReminderState, c as readState, d as throttleMs, i as registryFile, l as setStateField, n as addRoot, o as lessonsFileFor, r as readRoots, s as nowStamp, t as ensureMemoryGitignore, u as stateFileFor } from "./index-DLYhervv.mjs";
|
|
12
12
|
import { a as globToRe, i as scoreReferences, n as toRefMeta, o as parseFrontmatter, r as routeReferences, t as loadRefs } from "./index-DEfz82BP.mjs";
|
package/dist/index.mjs
CHANGED
|
@@ -4,11 +4,11 @@ import { n as STATE_ROOT, r as projectLayout, t as STATE_GITIGNORE } from "./lay
|
|
|
4
4
|
import { t as compactJson } from "./compact-json-DK2nX-MK.mjs";
|
|
5
5
|
import { i as walkUpFor, n as projectRoot, r as projectRootOrNull, t as isCodeFile } from "./project-root-3kk7gCOp.mjs";
|
|
6
6
|
import { n as detectMode, r as modeFor, t as detectHarness } from "./harness-BMuLJ9lm.mjs";
|
|
7
|
-
import { $ as
|
|
7
|
+
import { $ as isRalphMode, B as protectedPathGuard, C as isInterfacesPath, D as isVendorPath, E as isTypesPath, F as FILE_REDIRECT, H as ASK_PATTERNS, I as SAFE_PREFIXES, J as GIT_ASK, L as SESSION_STATE_FRAGMENT, M as ASK_WRITERS, N as CODE_MUTATORS, O as langOfPath, P as CODE_REDIRECT, Q as SYSTEM_INSTALL, R as PROTECTED_FRAGMENTS, S as isHooksPath, T as isStoresPath, U as CRITICAL_PATTERNS, W as securityGuard, X as PROJECT_INSTALL, Y as GIT_BLOCKED, Z as RALPH_SAFE, a as registerGuard, at as maskCommentsOnly, b as interfaceDeclLevel, c as GO_DECL_RE, ct as detectProjectType, d as PY_MODEL_RE, et as matchPatterns, f as RUST_DECL_RE, h as interfaceSeparationGuard, i as clearUserGuards, it as maskCommentsAndStrings, j as bashWriteGuard, k as lexProfileOf, l as JAVA_DECL_RE, lt as isApexCommand, m as TS_DECL_RE, n as FAIL_CLOSED, o as runGuards, ot as DEV_KEYWORDS, p as SWIFT_PROTO_RE, r as GUARDS, s as installGuard, st as detectModularArchitecture, t as evaluate, tt as detectFramework, u as PHP_DECL_RE, ut as requiredArchSkill, v as declaresExportedTypeAlias, w as isQueryPath, x as isComponentsPath, y as declaresInterface, z as PROTECTED_GIT_RE } from "./evaluate-CMiIqHeH.mjs";
|
|
8
8
|
import { d as countFrameworkCodeLines, f as countLines, l as PLUGINS_DIR, p as evaluateFileSize, u as SOLID_REF } from "./home-state-oUGFB4ds.mjs";
|
|
9
9
|
import { i as resolveSessions, n as formatDocSatisfactionStatus, r as isDocConsulted, t as formatDocDeny } from "./doc-helpers-CWZegVdR.mjs";
|
|
10
10
|
import { i as parseFrontmatter, n as scoreReferences, r as globToRe, t as routeReferences } from "./router-PKVNBHge.mjs";
|
|
11
|
-
import { A as importsTanstackQuery, B as APEX_GATES, C as detectRequiredSkills, D as frameworkSolidGate, E as SKILL_TRIGGERS, G as evaluateApex, H as PRE_AUTH_GATES, I as MAX_EXA_RESULTS, K as freshnessGate, L as MAX_TOKENS, M as countStores, N as declaresStore, O as declaresCustomHook, R as capVerbosity, S as parseField, T as usesTailwindUtilities, U as brainstormGate, V as POST_AUTH_GATES, W as docConsultedGate, _ as detectClaudeMdProjectType, a as firstHeading, c as EXCLUDE_DIRS, d as buildApexTaskInjection, f as loadApexTaskState, g as buildClaudeMdContext, h as buildApexInstruction, i as firstComment, j as queryCapActive, k as declaresQueryHook, l as PROJECT_INDICATORS, m as DEV_VERBS, n as missingSeoElements, o as parseEnrichment, q as solidReadGate, r as descFromText, s as parseEntry, t as isHtmlLike, u as buildApexTaskContext, w as skillTriggerGate, x as parseBodyDesc, z as detectCreationIntent } from "./validate-
|
|
11
|
+
import { A as importsTanstackQuery, B as APEX_GATES, C as detectRequiredSkills, D as frameworkSolidGate, E as SKILL_TRIGGERS, G as evaluateApex, H as PRE_AUTH_GATES, I as MAX_EXA_RESULTS, K as freshnessGate, L as MAX_TOKENS, M as countStores, N as declaresStore, O as declaresCustomHook, R as capVerbosity, S as parseField, T as usesTailwindUtilities, U as brainstormGate, V as POST_AUTH_GATES, W as docConsultedGate, _ as detectClaudeMdProjectType, a as firstHeading, c as EXCLUDE_DIRS, d as buildApexTaskInjection, f as loadApexTaskState, g as buildClaudeMdContext, h as buildApexInstruction, i as firstComment, j as queryCapActive, k as declaresQueryHook, l as PROJECT_INDICATORS, m as DEV_VERBS, n as missingSeoElements, o as parseEnrichment, q as solidReadGate, r as descFromText, s as parseEntry, t as isHtmlLike, u as buildApexTaskContext, w as skillTriggerGate, x as parseBodyDesc, z as detectCreationIntent } from "./validate-KjZ1X9tH.mjs";
|
|
12
12
|
import { t as formatPrompt } from "./types-ernB1Dy3.mjs";
|
|
13
13
|
import { a as nowStamp, c as stateFileFor, i as lessonsFileFor, l as throttleMs, n as readRoots, o as readState, r as registryFile, s as setStateField, t as addRoot, u as ensureMemoryGitignore } from "./registry-IhHk2KlT.mjs";
|
|
14
14
|
import { a as cacheLookupSubstring, c as cacheStore, d as loadIndex, f as summarizeIndex, h as queryHash, i as cacheLookupMeta, l as mcpCacheKey, m as jaccardSimilar, n as webfetchCacheWrite, o as cacheLookupSubstringMeta, p as compactMarkdown, r as cacheLookup, s as cachePath, t as mcpCacheWrite, u as extractText } from "./mcp-store-BkBDmuxN.mjs";
|
package/dist/init/index.d.mts
CHANGED
|
@@ -15,7 +15,7 @@ interface InitFile {
|
|
|
15
15
|
declare function claudeInit(command: string): InitFile[];
|
|
16
16
|
/** Codex CLI: `.codex/hooks.json` (Claude-compatible shape). */
|
|
17
17
|
declare function codexInit(command: string): InitFile[];
|
|
18
|
-
/** Cursor: `.cursor/hooks.json` (version 1) —
|
|
18
|
+
/** Cursor: `.cursor/hooks.json` (version 1) — supported pre gates and post observers. */
|
|
19
19
|
declare function cursorInit(command: string): InitFile[];
|
|
20
20
|
/** Gemini CLI: `.gemini/settings.json` — BeforeTool(edits) + AfterTool(all, regex). */
|
|
21
21
|
declare function geminiInit(command: string): InitFile[];
|
package/dist/init/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as codexInit, i as clineInit, n as writeInitFile, o as cursorInit, r as claudeInit, s as geminiInit, t as initFor } from "../run-
|
|
1
|
+
import { a as codexInit, i as clineInit, n as writeInitFile, o as cursorInit, r as claudeInit, s as geminiInit, t as initFor } from "../run-GHAMqcOn.mjs";
|
|
2
2
|
export { claudeInit, clineInit, codexInit, cursorInit, geminiInit, initFor, writeInitFile };
|
|
@@ -1,6 +1,7 @@
|
|
|
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 {
|
|
3
|
+
import { t as commandToString } from "./command-string-CALMTnwN.mjs";
|
|
4
|
+
import { c as readClaudeInput } from "./claude-Ckv2_TgP.mjs";
|
|
4
5
|
//#region src/adapters/kimi/index.ts
|
|
5
6
|
/**
|
|
6
7
|
* Kimi Code CLI adapter (hook-mode). Moonshot AI's Kimi Code CLI (v0.27.0,
|
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
import { t as commandToString } from "./command-string-CALMTnwN.mjs";
|
|
2
|
+
import { isAbsolute, normalize, relative } from "node:path";
|
|
3
|
+
import { realpathSync } from "node:fs";
|
|
4
|
+
//#region src/adapters/cursor/events.ts
|
|
5
|
+
const EVENT_CONTRACTS = {
|
|
6
|
+
sessionStart: {
|
|
7
|
+
phase: "pre",
|
|
8
|
+
lifecycle: "SessionStart",
|
|
9
|
+
response: "session-context",
|
|
10
|
+
blockable: false,
|
|
11
|
+
known: true
|
|
12
|
+
},
|
|
13
|
+
sessionEnd: {
|
|
14
|
+
phase: "post",
|
|
15
|
+
lifecycle: "SessionEnd",
|
|
16
|
+
response: "neutral",
|
|
17
|
+
blockable: false,
|
|
18
|
+
known: true
|
|
19
|
+
},
|
|
20
|
+
beforeSubmitPrompt: {
|
|
21
|
+
phase: "pre",
|
|
22
|
+
lifecycle: "UserPromptSubmit",
|
|
23
|
+
response: "submit-control",
|
|
24
|
+
blockable: true,
|
|
25
|
+
known: true
|
|
26
|
+
},
|
|
27
|
+
preCompact: {
|
|
28
|
+
phase: "pre",
|
|
29
|
+
lifecycle: "PreCompact",
|
|
30
|
+
response: "compact-notice",
|
|
31
|
+
blockable: false,
|
|
32
|
+
known: true
|
|
33
|
+
},
|
|
34
|
+
subagentStart: {
|
|
35
|
+
phase: "pre",
|
|
36
|
+
lifecycle: "SubagentStart",
|
|
37
|
+
response: "permission",
|
|
38
|
+
blockable: true,
|
|
39
|
+
known: true
|
|
40
|
+
},
|
|
41
|
+
subagentStop: {
|
|
42
|
+
phase: "post",
|
|
43
|
+
lifecycle: "SubagentStop",
|
|
44
|
+
response: "followup",
|
|
45
|
+
blockable: false,
|
|
46
|
+
known: true
|
|
47
|
+
},
|
|
48
|
+
preToolUse: {
|
|
49
|
+
phase: "pre",
|
|
50
|
+
lifecycle: "PreToolUse",
|
|
51
|
+
response: "permission",
|
|
52
|
+
blockable: true,
|
|
53
|
+
known: true
|
|
54
|
+
},
|
|
55
|
+
postToolUse: {
|
|
56
|
+
phase: "post",
|
|
57
|
+
lifecycle: "PostToolUse",
|
|
58
|
+
response: "post-context",
|
|
59
|
+
blockable: false,
|
|
60
|
+
known: true
|
|
61
|
+
},
|
|
62
|
+
postToolUseFailure: {
|
|
63
|
+
phase: "post",
|
|
64
|
+
lifecycle: "PostToolUseFailure",
|
|
65
|
+
response: "neutral",
|
|
66
|
+
blockable: false,
|
|
67
|
+
known: true
|
|
68
|
+
},
|
|
69
|
+
beforeShellExecution: {
|
|
70
|
+
phase: "pre",
|
|
71
|
+
lifecycle: "BeforeShellExecution",
|
|
72
|
+
response: "permission",
|
|
73
|
+
blockable: true,
|
|
74
|
+
known: true
|
|
75
|
+
},
|
|
76
|
+
afterShellExecution: {
|
|
77
|
+
phase: "post",
|
|
78
|
+
lifecycle: "AfterShellExecution",
|
|
79
|
+
response: "neutral",
|
|
80
|
+
blockable: false,
|
|
81
|
+
known: true
|
|
82
|
+
},
|
|
83
|
+
beforeMCPExecution: {
|
|
84
|
+
phase: "pre",
|
|
85
|
+
lifecycle: "BeforeMCPExecution",
|
|
86
|
+
response: "permission",
|
|
87
|
+
blockable: true,
|
|
88
|
+
known: true
|
|
89
|
+
},
|
|
90
|
+
afterMCPExecution: {
|
|
91
|
+
phase: "post",
|
|
92
|
+
lifecycle: "AfterMCPExecution",
|
|
93
|
+
response: "neutral",
|
|
94
|
+
blockable: false,
|
|
95
|
+
known: true
|
|
96
|
+
},
|
|
97
|
+
beforeReadFile: {
|
|
98
|
+
phase: "pre",
|
|
99
|
+
lifecycle: "BeforeReadFile",
|
|
100
|
+
response: "permission",
|
|
101
|
+
blockable: true,
|
|
102
|
+
known: true
|
|
103
|
+
},
|
|
104
|
+
afterFileEdit: {
|
|
105
|
+
phase: "post",
|
|
106
|
+
lifecycle: "AfterFileEdit",
|
|
107
|
+
response: "neutral",
|
|
108
|
+
blockable: false,
|
|
109
|
+
known: true
|
|
110
|
+
},
|
|
111
|
+
beforeTabFileRead: {
|
|
112
|
+
phase: "pre",
|
|
113
|
+
lifecycle: "BeforeTabFileRead",
|
|
114
|
+
response: "permission",
|
|
115
|
+
blockable: true,
|
|
116
|
+
known: true
|
|
117
|
+
},
|
|
118
|
+
afterTabFileEdit: {
|
|
119
|
+
phase: "post",
|
|
120
|
+
lifecycle: "AfterTabFileEdit",
|
|
121
|
+
response: "neutral",
|
|
122
|
+
blockable: false,
|
|
123
|
+
known: true
|
|
124
|
+
},
|
|
125
|
+
afterAgentResponse: {
|
|
126
|
+
phase: "post",
|
|
127
|
+
lifecycle: "AfterAgentResponse",
|
|
128
|
+
response: "neutral",
|
|
129
|
+
blockable: false,
|
|
130
|
+
known: true
|
|
131
|
+
},
|
|
132
|
+
afterAgentThought: {
|
|
133
|
+
phase: "post",
|
|
134
|
+
lifecycle: "AfterAgentThought",
|
|
135
|
+
response: "neutral",
|
|
136
|
+
blockable: false,
|
|
137
|
+
known: true
|
|
138
|
+
},
|
|
139
|
+
stop: {
|
|
140
|
+
phase: "post",
|
|
141
|
+
lifecycle: "Stop",
|
|
142
|
+
response: "followup",
|
|
143
|
+
blockable: false,
|
|
144
|
+
known: true
|
|
145
|
+
},
|
|
146
|
+
workspaceOpen: {
|
|
147
|
+
phase: "pre",
|
|
148
|
+
lifecycle: "WorkspaceOpen",
|
|
149
|
+
response: "plugin-paths",
|
|
150
|
+
blockable: false,
|
|
151
|
+
known: true
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
const UNKNOWN_EVENT = {
|
|
155
|
+
phase: "post",
|
|
156
|
+
lifecycle: null,
|
|
157
|
+
response: "neutral",
|
|
158
|
+
blockable: false,
|
|
159
|
+
known: false
|
|
160
|
+
};
|
|
161
|
+
/** Return explicit routing and response metadata for a Cursor event name. */
|
|
162
|
+
function cursorEventContract(eventName) {
|
|
163
|
+
return EVENT_CONTRACTS[eventName] ?? UNKNOWN_EVENT;
|
|
164
|
+
}
|
|
165
|
+
//#endregion
|
|
166
|
+
//#region src/adapters/cursor/context.ts
|
|
167
|
+
/** Preserve a Cursor path value only when it is non-empty and NUL-free. */
|
|
168
|
+
function cursorPath(value) {
|
|
169
|
+
return typeof value === "string" && value.length > 0 && !value.includes("\0") ? value : void 0;
|
|
170
|
+
}
|
|
171
|
+
/** Validate and normalize an absolute path supplied by Cursor. */
|
|
172
|
+
function cursorAbsolutePath(value) {
|
|
173
|
+
const candidate = cursorPath(value);
|
|
174
|
+
if (!candidate || !isAbsolute(candidate)) return void 0;
|
|
175
|
+
const path = normalize(candidate);
|
|
176
|
+
try {
|
|
177
|
+
return realpathSync.native(path);
|
|
178
|
+
} catch {
|
|
179
|
+
return path;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/** Preserve distinct, validated Cursor workspace roots in wire order. */
|
|
183
|
+
function cursorWorkspaceRoots(value) {
|
|
184
|
+
if (!Array.isArray(value)) return [];
|
|
185
|
+
const roots = value.map(cursorAbsolutePath).filter((root) => root !== void 0);
|
|
186
|
+
return [...new Set(roots)];
|
|
187
|
+
}
|
|
188
|
+
function contains(root, filePath) {
|
|
189
|
+
const rel = relative(root, filePath);
|
|
190
|
+
return rel === "" || !rel.startsWith("..") && !isAbsolute(rel);
|
|
191
|
+
}
|
|
192
|
+
/** Select Cursor's project scope without replacing a valid payload cwd. */
|
|
193
|
+
function cursorProjectCwd(cwd, workspaceRoots, filePath, fallback) {
|
|
194
|
+
if (cwd) return cwd;
|
|
195
|
+
if (filePath) {
|
|
196
|
+
const matches = workspaceRoots.filter((root) => contains(root, filePath));
|
|
197
|
+
if (matches.length > 0) return matches.sort((a, b) => b.length - a.length)[0];
|
|
198
|
+
}
|
|
199
|
+
return workspaceRoots[0] ?? fallback;
|
|
200
|
+
}
|
|
201
|
+
//#endregion
|
|
202
|
+
//#region src/adapters/cursor/normalize.ts
|
|
203
|
+
function record(value) {
|
|
204
|
+
return typeof value === "object" && value !== null && !Array.isArray(value) ? value : void 0;
|
|
205
|
+
}
|
|
206
|
+
function str(value) {
|
|
207
|
+
return typeof value === "string" ? value : void 0;
|
|
208
|
+
}
|
|
209
|
+
function inputRecord(value) {
|
|
210
|
+
const direct = record(value);
|
|
211
|
+
if (direct || typeof value !== "string") return direct;
|
|
212
|
+
try {
|
|
213
|
+
return record(JSON.parse(value));
|
|
214
|
+
} catch {
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
const MCP_ROOT_FIELDS = [
|
|
219
|
+
"mcp_server_name",
|
|
220
|
+
"mcp_server_url",
|
|
221
|
+
"url",
|
|
222
|
+
"result_json",
|
|
223
|
+
"duration"
|
|
224
|
+
];
|
|
225
|
+
function cursorMcpInput(raw, input) {
|
|
226
|
+
const merged = { ...input };
|
|
227
|
+
for (const field of MCP_ROOT_FIELDS) if (Object.hasOwn(raw, field)) merged[field] = raw[field];
|
|
228
|
+
return merged;
|
|
229
|
+
}
|
|
230
|
+
function sanitizedCursorInput(input) {
|
|
231
|
+
const safe = { ...input };
|
|
232
|
+
if (typeof safe.file_path === "string" && cursorPath(safe.file_path) === void 0) delete safe.file_path;
|
|
233
|
+
if (typeof safe.path === "string" && cursorPath(safe.path) === void 0) delete safe.path;
|
|
234
|
+
if (Object.hasOwn(safe, "cwd")) {
|
|
235
|
+
const cwd = cursorAbsolutePath(safe.cwd);
|
|
236
|
+
if (cwd) safe.cwd = cwd;
|
|
237
|
+
else delete safe.cwd;
|
|
238
|
+
}
|
|
239
|
+
if (Object.hasOwn(safe, "workspace_roots")) if (Array.isArray(safe.workspace_roots)) safe.workspace_roots = cursorWorkspaceRoots(safe.workspace_roots);
|
|
240
|
+
else delete safe.workspace_roots;
|
|
241
|
+
return safe;
|
|
242
|
+
}
|
|
243
|
+
function cursorToolName(raw, event, tool, hasCommand) {
|
|
244
|
+
if (hasCommand) return "Bash";
|
|
245
|
+
const server = str(raw.mcp_server_name)?.trim().replace(/[^A-Za-z0-9_-]+/g, "_");
|
|
246
|
+
if (/^(before|after)MCPExecution$/i.test(event) && server && tool && !tool.startsWith("mcp__")) return `mcp__${server}__${tool}`;
|
|
247
|
+
if (tool === "Write") return "Edit";
|
|
248
|
+
return tool ?? "";
|
|
249
|
+
}
|
|
250
|
+
function cursorCommands(raw, input) {
|
|
251
|
+
const candidates = [commandToString(raw.command), commandToString(input.command)].filter((candidate) => candidate !== void 0);
|
|
252
|
+
return [...new Set(candidates)];
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Extract one Cursor hook payload into the shared runtime shape.
|
|
256
|
+
*
|
|
257
|
+
* @param payload - Cursor hook stdin payload.
|
|
258
|
+
* @returns Cursor-specific phase, tool, command, and edit fields.
|
|
259
|
+
*/
|
|
260
|
+
function extractCursorEvent(payload) {
|
|
261
|
+
const raw = payload;
|
|
262
|
+
const hookEvent = str(raw.hook_event_name) ?? "";
|
|
263
|
+
const parsedInput = inputRecord(raw.tool_input);
|
|
264
|
+
const input = sanitizedCursorInput((parsedInput && /^(before|after)MCPExecution$/i.test(hookEvent) ? cursorMcpInput(raw, parsedInput) : parsedInput) ?? raw);
|
|
265
|
+
const contract = cursorEventContract(hookEvent);
|
|
266
|
+
const metadata = {
|
|
267
|
+
eventName: hookEvent,
|
|
268
|
+
lifecycleEvent: contract.lifecycle,
|
|
269
|
+
responseKind: contract.response,
|
|
270
|
+
blockable: contract.blockable,
|
|
271
|
+
cwd: cursorAbsolutePath(raw.cwd),
|
|
272
|
+
workspaceRoots: cursorWorkspaceRoots(raw.workspace_roots)
|
|
273
|
+
};
|
|
274
|
+
if (!contract.known) return {
|
|
275
|
+
...metadata,
|
|
276
|
+
phase: contract.phase,
|
|
277
|
+
tool: "",
|
|
278
|
+
input
|
|
279
|
+
};
|
|
280
|
+
const afterFileEdit = /^afterFileEdit$/i.test(hookEvent);
|
|
281
|
+
const beforeReadFile = /^beforeReadFile$/i.test(hookEvent);
|
|
282
|
+
const beforeTabFileRead = /^beforeTabFileRead$/i.test(hookEvent);
|
|
283
|
+
const edits = Array.isArray(raw.edits) ? raw.edits.map(record).filter((edit) => edit !== void 0) : [];
|
|
284
|
+
const filePath = cursorPath(raw.file_path);
|
|
285
|
+
if (filePath && edits.length > 0) {
|
|
286
|
+
const files = edits.map((edit) => ({
|
|
287
|
+
filePath,
|
|
288
|
+
oldString: str(edit.old_string),
|
|
289
|
+
content: str(edit.new_string) ?? "",
|
|
290
|
+
op: "update"
|
|
291
|
+
}));
|
|
292
|
+
return {
|
|
293
|
+
...metadata,
|
|
294
|
+
phase: contract.phase,
|
|
295
|
+
tool: "Edit",
|
|
296
|
+
input,
|
|
297
|
+
filePath,
|
|
298
|
+
content: files.map((file) => file.content).join("\n"),
|
|
299
|
+
files
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
const commands = cursorCommands(raw, input);
|
|
303
|
+
const command = commands[0];
|
|
304
|
+
return {
|
|
305
|
+
...metadata,
|
|
306
|
+
phase: contract.phase,
|
|
307
|
+
tool: afterFileEdit ? "Edit" : beforeReadFile || beforeTabFileRead ? "Read" : cursorToolName(raw, hookEvent, str(raw.tool_name), command !== void 0),
|
|
308
|
+
input,
|
|
309
|
+
filePath: cursorPath(input.file_path) ?? cursorPath(input.path),
|
|
310
|
+
content: str(input.content) ?? str(input.new_string),
|
|
311
|
+
oldString: str(input.old_string),
|
|
312
|
+
command,
|
|
313
|
+
commandCandidates: /^beforeMCPExecution$/i.test(hookEvent) && commands.length > 0 ? commands : void 0
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
//#endregion
|
|
317
|
+
export { cursorProjectCwd as n, cursorEventContract as r, extractCursorEvent as t };
|
package/dist/policy/index.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { $ as detectCreationIntent, $t as countFrameworkCodeLines, A as TreeEntry, At as APEX_GATES, B as loadApexTaskState, Bt as evaluate, C as maskCommentsAndStrings, Ct as protectedPathGuard, D as descFromText, Dt as securityGuard, E as missingSeoElements, Et as LabeledPattern, F as EXCLUDE_DIRS, Ft as brainstormGate, G as detectRequiredSkills, Gt as PROJECT_INSTALL, H as buildApexInstruction, Ht as PolicyResult, I as PROJECT_INDICATORS, It as docConsultedGate, J as SKILL_TRIGGERS, Jt as isRalphMode, K as skillTriggerGate, Kt as RALPH_SAFE, L as ApexTaskState, Lt as evaluateApex, M as parseEntry, Mt as ApexGate, N as parseBodyDesc, Nt as POST_AUTH_GATES, O as firstComment, Ot as Guard, P as parseField, Pt as PRE_AUTH_GATES, Q as capVerbosity, Qt as SOLID_REF, R as buildApexTaskContext, Rt as freshnessGate, S as LexProfile, St as PROTECTED_GIT_RE, T as isHtmlLike, Tt as CRITICAL_PATTERNS, U as buildClaudeMdContext, Ut as GIT_ASK, V as DEV_VERBS, Vt as PolicyContext, W as detectClaudeMdProjectType, Wt as GIT_BLOCKED, X as MAX_EXA_RESULTS, Xt as FileSizeVerdict, Y as frameworkSolidGate, Yt as matchPatterns, Z as MAX_TOKENS, Zt as PLUGINS_DIR, _ as isStoresPath, _t as CODE_REDIRECT, a as countStores, an as ProjectType, at as installGuard, b as langOfPath, bt as SESSION_STATE_FRAGMENT, c as InterfaceDeclLevel, cn as isApexCommand, ct as PHP_DECL_RE, d as interfaceDeclLevel, dt as SWIFT_PROTO_RE, en as countLines, et as FAIL_CLOSED, f as LangFamily, ft as TS_DECL_RE, g as isQueryPath, gt as CODE_MUTATORS, h as isInterfacesPath, ht as ASK_WRITERS, i as StoreLib, in as ModularArchitecture, it as runGuards, j as parseEnrichment, jt as ApexContext, k as firstHeading, kt as GuardContext, l as declaresExportedTypeAlias, ln as requiredArchSkill, lt as PY_MODEL_RE, m as isHooksPath, mt as bashWriteGuard, n as importsTanstackQuery, nn as detectFramework, nt as clearUserGuards, o as declaresStore, on as detectModularArchitecture, ot as GO_DECL_RE, p as isComponentsPath, pt as interfaceSeparationGuard, q as usesTailwindUtilities, qt as SYSTEM_INSTALL, r as queryCapActive, rn as DEV_KEYWORDS, rt as registerGuard, s as declaresCustomHook, sn as detectProjectType, st as JAVA_DECL_RE, t as declaresQueryHook, tn as evaluateFileSize, tt as GUARDS, u as declaresInterface, ut as RUST_DECL_RE, v as isTypesPath, vt as FILE_REDIRECT, w as maskCommentsOnly, wt as ASK_PATTERNS, x as lexProfileOf, xt as PROTECTED_FRAGMENTS, y as isVendorPath, yt as SAFE_PREFIXES, z as buildApexTaskInjection, zt as solidReadGate } from "../index-
|
|
1
|
+
import { $ as detectCreationIntent, $t as countFrameworkCodeLines, A as TreeEntry, At as APEX_GATES, B as loadApexTaskState, Bt as evaluate, C as maskCommentsAndStrings, Ct as protectedPathGuard, D as descFromText, Dt as securityGuard, E as missingSeoElements, Et as LabeledPattern, F as EXCLUDE_DIRS, Ft as brainstormGate, G as detectRequiredSkills, Gt as PROJECT_INSTALL, H as buildApexInstruction, Ht as PolicyResult, I as PROJECT_INDICATORS, It as docConsultedGate, J as SKILL_TRIGGERS, Jt as isRalphMode, K as skillTriggerGate, Kt as RALPH_SAFE, L as ApexTaskState, Lt as evaluateApex, M as parseEntry, Mt as ApexGate, N as parseBodyDesc, Nt as POST_AUTH_GATES, O as firstComment, Ot as Guard, P as parseField, Pt as PRE_AUTH_GATES, Q as capVerbosity, Qt as SOLID_REF, R as buildApexTaskContext, Rt as freshnessGate, S as LexProfile, St as PROTECTED_GIT_RE, T as isHtmlLike, Tt as CRITICAL_PATTERNS, U as buildClaudeMdContext, Ut as GIT_ASK, V as DEV_VERBS, Vt as PolicyContext, W as detectClaudeMdProjectType, Wt as GIT_BLOCKED, X as MAX_EXA_RESULTS, Xt as FileSizeVerdict, Y as frameworkSolidGate, Yt as matchPatterns, Z as MAX_TOKENS, Zt as PLUGINS_DIR, _ as isStoresPath, _t as CODE_REDIRECT, a as countStores, an as ProjectType, at as installGuard, b as langOfPath, bt as SESSION_STATE_FRAGMENT, c as InterfaceDeclLevel, cn as isApexCommand, ct as PHP_DECL_RE, d as interfaceDeclLevel, dt as SWIFT_PROTO_RE, en as countLines, et as FAIL_CLOSED, f as LangFamily, ft as TS_DECL_RE, g as isQueryPath, gt as CODE_MUTATORS, h as isInterfacesPath, ht as ASK_WRITERS, i as StoreLib, in as ModularArchitecture, it as runGuards, j as parseEnrichment, jt as ApexContext, k as firstHeading, kt as GuardContext, l as declaresExportedTypeAlias, ln as requiredArchSkill, lt as PY_MODEL_RE, m as isHooksPath, mt as bashWriteGuard, n as importsTanstackQuery, nn as detectFramework, nt as clearUserGuards, o as declaresStore, on as detectModularArchitecture, ot as GO_DECL_RE, p as isComponentsPath, pt as interfaceSeparationGuard, q as usesTailwindUtilities, qt as SYSTEM_INSTALL, r as queryCapActive, rn as DEV_KEYWORDS, rt as registerGuard, s as declaresCustomHook, sn as detectProjectType, st as JAVA_DECL_RE, t as declaresQueryHook, tn as evaluateFileSize, tt as GUARDS, u as declaresInterface, ut as RUST_DECL_RE, v as isTypesPath, vt as FILE_REDIRECT, w as maskCommentsOnly, wt as ASK_PATTERNS, x as lexProfileOf, xt as PROTECTED_FRAGMENTS, y as isVendorPath, yt as SAFE_PREFIXES, z as buildApexTaskInjection, zt as solidReadGate } from "../index-B8PG82su.mjs";
|
|
2
2
|
export { APEX_GATES, ASK_PATTERNS, ASK_WRITERS, ApexContext, ApexGate, ApexTaskState, CODE_MUTATORS, CODE_REDIRECT, CRITICAL_PATTERNS, DEV_KEYWORDS, DEV_VERBS, EXCLUDE_DIRS, FAIL_CLOSED, FILE_REDIRECT, FileSizeVerdict, GIT_ASK, GIT_BLOCKED, GO_DECL_RE, GUARDS, Guard, GuardContext, InterfaceDeclLevel, JAVA_DECL_RE, LabeledPattern, LangFamily, LexProfile, MAX_EXA_RESULTS, MAX_TOKENS, ModularArchitecture, PHP_DECL_RE, PLUGINS_DIR, POST_AUTH_GATES, PRE_AUTH_GATES, PROJECT_INDICATORS, PROJECT_INSTALL, PROTECTED_FRAGMENTS, PROTECTED_GIT_RE, PY_MODEL_RE, type PolicyContext, type PolicyResult, ProjectType, RALPH_SAFE, RUST_DECL_RE, SAFE_PREFIXES, SESSION_STATE_FRAGMENT, SKILL_TRIGGERS, SOLID_REF, SWIFT_PROTO_RE, SYSTEM_INSTALL, StoreLib, TS_DECL_RE, TreeEntry, bashWriteGuard, brainstormGate, buildApexInstruction, buildApexTaskContext, buildApexTaskInjection, buildClaudeMdContext, capVerbosity, clearUserGuards, countFrameworkCodeLines, countLines, countStores, declaresCustomHook, declaresExportedTypeAlias, declaresInterface, declaresQueryHook, declaresStore, descFromText, detectClaudeMdProjectType, detectCreationIntent, detectFramework, detectModularArchitecture, detectProjectType, detectRequiredSkills, docConsultedGate, evaluate, evaluateApex, evaluateFileSize, firstComment, firstHeading, frameworkSolidGate, freshnessGate, importsTanstackQuery, installGuard, interfaceDeclLevel, interfaceSeparationGuard, isApexCommand, isComponentsPath, isHooksPath, isHtmlLike, isInterfacesPath, isQueryPath, isRalphMode, isStoresPath, isTypesPath, isVendorPath, langOfPath, lexProfileOf, loadApexTaskState, maskCommentsAndStrings, maskCommentsOnly, matchPatterns, missingSeoElements, parseBodyDesc, parseEnrichment, parseEntry, parseField, protectedPathGuard, queryCapActive, registerGuard, requiredArchSkill, runGuards, securityGuard, skillTriggerGate, solidReadGate, usesTailwindUtilities };
|
package/dist/policy/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { $ as
|
|
1
|
+
import { $ as isRalphMode, B as protectedPathGuard, C as isInterfacesPath, D as isVendorPath, E as isTypesPath, F as FILE_REDIRECT, H as ASK_PATTERNS, I as SAFE_PREFIXES, J as GIT_ASK, L as SESSION_STATE_FRAGMENT, M as ASK_WRITERS, N as CODE_MUTATORS, O as langOfPath, P as CODE_REDIRECT, Q as SYSTEM_INSTALL, R as PROTECTED_FRAGMENTS, S as isHooksPath, T as isStoresPath, U as CRITICAL_PATTERNS, W as securityGuard, X as PROJECT_INSTALL, Y as GIT_BLOCKED, Z as RALPH_SAFE, a as registerGuard, at as maskCommentsOnly, b as interfaceDeclLevel, c as GO_DECL_RE, ct as detectProjectType, d as PY_MODEL_RE, et as matchPatterns, f as RUST_DECL_RE, h as interfaceSeparationGuard, i as clearUserGuards, it as maskCommentsAndStrings, j as bashWriteGuard, k as lexProfileOf, l as JAVA_DECL_RE, lt as isApexCommand, m as TS_DECL_RE, n as FAIL_CLOSED, o as runGuards, ot as DEV_KEYWORDS, p as SWIFT_PROTO_RE, r as GUARDS, s as installGuard, st as detectModularArchitecture, t as evaluate, tt as detectFramework, u as PHP_DECL_RE, ut as requiredArchSkill, v as declaresExportedTypeAlias, w as isQueryPath, x as isComponentsPath, y as declaresInterface, z as PROTECTED_GIT_RE } from "../evaluate-CMiIqHeH.mjs";
|
|
2
2
|
import { d as countFrameworkCodeLines, f as countLines, l as PLUGINS_DIR, p as evaluateFileSize, u as SOLID_REF } from "../home-state-oUGFB4ds.mjs";
|
|
3
|
-
import { A as importsTanstackQuery, B as APEX_GATES, C as detectRequiredSkills, D as frameworkSolidGate, E as SKILL_TRIGGERS, G as evaluateApex, H as PRE_AUTH_GATES, I as MAX_EXA_RESULTS, K as freshnessGate, L as MAX_TOKENS, M as countStores, N as declaresStore, O as declaresCustomHook, R as capVerbosity, S as parseField, T as usesTailwindUtilities, U as brainstormGate, V as POST_AUTH_GATES, W as docConsultedGate, _ as detectClaudeMdProjectType, a as firstHeading, c as EXCLUDE_DIRS, d as buildApexTaskInjection, f as loadApexTaskState, g as buildClaudeMdContext, h as buildApexInstruction, i as firstComment, j as queryCapActive, k as declaresQueryHook, l as PROJECT_INDICATORS, m as DEV_VERBS, n as missingSeoElements, o as parseEnrichment, q as solidReadGate, r as descFromText, s as parseEntry, t as isHtmlLike, u as buildApexTaskContext, w as skillTriggerGate, x as parseBodyDesc, z as detectCreationIntent } from "../validate-
|
|
3
|
+
import { A as importsTanstackQuery, B as APEX_GATES, C as detectRequiredSkills, D as frameworkSolidGate, E as SKILL_TRIGGERS, G as evaluateApex, H as PRE_AUTH_GATES, I as MAX_EXA_RESULTS, K as freshnessGate, L as MAX_TOKENS, M as countStores, N as declaresStore, O as declaresCustomHook, R as capVerbosity, S as parseField, T as usesTailwindUtilities, U as brainstormGate, V as POST_AUTH_GATES, W as docConsultedGate, _ as detectClaudeMdProjectType, a as firstHeading, c as EXCLUDE_DIRS, d as buildApexTaskInjection, f as loadApexTaskState, g as buildClaudeMdContext, h as buildApexInstruction, i as firstComment, j as queryCapActive, k as declaresQueryHook, l as PROJECT_INDICATORS, m as DEV_VERBS, n as missingSeoElements, o as parseEnrichment, q as solidReadGate, r as descFromText, s as parseEntry, t as isHtmlLike, u as buildApexTaskContext, w as skillTriggerGate, x as parseBodyDesc, z as detectCreationIntent } from "../validate-KjZ1X9tH.mjs";
|
|
4
4
|
import "../policy-la_KkjCS.mjs";
|
|
5
5
|
export { APEX_GATES, ASK_PATTERNS, ASK_WRITERS, CODE_MUTATORS, CODE_REDIRECT, CRITICAL_PATTERNS, DEV_KEYWORDS, DEV_VERBS, EXCLUDE_DIRS, FAIL_CLOSED, FILE_REDIRECT, GIT_ASK, GIT_BLOCKED, GO_DECL_RE, GUARDS, JAVA_DECL_RE, MAX_EXA_RESULTS, MAX_TOKENS, PHP_DECL_RE, PLUGINS_DIR, POST_AUTH_GATES, PRE_AUTH_GATES, PROJECT_INDICATORS, PROJECT_INSTALL, PROTECTED_FRAGMENTS, PROTECTED_GIT_RE, PY_MODEL_RE, RALPH_SAFE, RUST_DECL_RE, SAFE_PREFIXES, SESSION_STATE_FRAGMENT, SKILL_TRIGGERS, SOLID_REF, SWIFT_PROTO_RE, SYSTEM_INSTALL, TS_DECL_RE, bashWriteGuard, brainstormGate, buildApexInstruction, buildApexTaskContext, buildApexTaskInjection, buildClaudeMdContext, capVerbosity, clearUserGuards, countFrameworkCodeLines, countLines, countStores, declaresCustomHook, declaresExportedTypeAlias, declaresInterface, declaresQueryHook, declaresStore, descFromText, detectClaudeMdProjectType, detectCreationIntent, detectFramework, detectModularArchitecture, detectProjectType, detectRequiredSkills, docConsultedGate, evaluate, evaluateApex, evaluateFileSize, firstComment, firstHeading, frameworkSolidGate, freshnessGate, importsTanstackQuery, installGuard, interfaceDeclLevel, interfaceSeparationGuard, isApexCommand, isComponentsPath, isHooksPath, isHtmlLike, isInterfacesPath, isQueryPath, isRalphMode, isStoresPath, isTypesPath, isVendorPath, langOfPath, lexProfileOf, loadApexTaskState, maskCommentsAndStrings, maskCommentsOnly, matchPatterns, missingSeoElements, parseBodyDesc, parseEnrichment, parseEntry, parseField, protectedPathGuard, queryCapActive, registerGuard, requiredArchSkill, runGuards, securityGuard, skillTriggerGate, solidReadGate, usesTailwindUtilities };
|
package/dist/prompt/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as isCodeFile } from "./project-root-3kk7gCOp.mjs";
|
|
2
|
-
import { t as evaluate } from "./evaluate-
|
|
2
|
+
import { t as evaluate } from "./evaluate-CMiIqHeH.mjs";
|
|
3
3
|
import { t as formatPrompt } from "./types-ernB1Dy3.mjs";
|
|
4
4
|
import { execFileSync } from "node:child_process";
|
|
5
5
|
//#region src/cli/run.ts
|
|
@@ -45,19 +45,42 @@ function codexInit(command) {
|
|
|
45
45
|
type: "command",
|
|
46
46
|
command
|
|
47
47
|
}]
|
|
48
|
+
}],
|
|
49
|
+
UserPromptSubmit: [{
|
|
50
|
+
matcher: "",
|
|
51
|
+
hooks: [{
|
|
52
|
+
type: "command",
|
|
53
|
+
command
|
|
54
|
+
}]
|
|
48
55
|
}]
|
|
49
56
|
} })
|
|
50
57
|
}];
|
|
51
58
|
}
|
|
52
|
-
/** Cursor: `.cursor/hooks.json` (version 1) —
|
|
59
|
+
/** Cursor: `.cursor/hooks.json` (version 1) — supported pre gates and post observers. */
|
|
53
60
|
function cursorInit(command) {
|
|
54
61
|
return [{
|
|
55
62
|
path: ".cursor/hooks.json",
|
|
56
63
|
content: json({
|
|
57
64
|
version: 1,
|
|
58
65
|
hooks: {
|
|
59
|
-
beforeShellExecution: [{
|
|
60
|
-
|
|
66
|
+
beforeShellExecution: [{
|
|
67
|
+
command,
|
|
68
|
+
failClosed: true
|
|
69
|
+
}],
|
|
70
|
+
preToolUse: [{
|
|
71
|
+
command,
|
|
72
|
+
failClosed: true
|
|
73
|
+
}],
|
|
74
|
+
beforeMCPExecution: [{
|
|
75
|
+
command,
|
|
76
|
+
failClosed: true
|
|
77
|
+
}],
|
|
78
|
+
beforeReadFile: [{
|
|
79
|
+
command,
|
|
80
|
+
failClosed: true
|
|
81
|
+
}],
|
|
82
|
+
afterShellExecution: [{ command }],
|
|
83
|
+
postToolUse: [{ command }],
|
|
61
84
|
afterFileEdit: [{ command }]
|
|
62
85
|
}
|
|
63
86
|
})
|
package/dist/runtime/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as Prompt } from "../types-
|
|
1
|
+
import { t as Prompt } from "../types-Bh0jEF3_.mjs";
|
|
2
2
|
import { t as RefMeta } from "../types-CY5qT2X1.mjs";
|
|
3
3
|
import { t as AgentQuality } from "../session-state-D5gLr66m.mjs";
|
|
4
4
|
//#region src/runtime/paths.d.ts
|
|
@@ -124,6 +124,12 @@ declare const TRIVIAL_BUDGET = 4;
|
|
|
124
124
|
* {@link withDenyLoop} rewrite an identical retried deny (decision unchanged).
|
|
125
125
|
*/
|
|
126
126
|
declare function gate(input: GateInput): Promise<Prompt | null>;
|
|
127
|
+
/**
|
|
128
|
+
* Gate independent Cursor command candidates without merging their shell syntax.
|
|
129
|
+
* Stateful outcome bookkeeping runs once, against the command that decided the
|
|
130
|
+
* aggregate result. A single distinct candidate follows {@link gate} verbatim.
|
|
131
|
+
*/
|
|
132
|
+
declare function gateCommandCandidates(input: GateInput, candidates: readonly string[]): Promise<Prompt | null>;
|
|
127
133
|
//#endregion
|
|
128
134
|
//#region src/runtime/dry.d.ts
|
|
129
135
|
/** Extract long (>12 char) declared symbol names from new file content. */
|
|
@@ -153,14 +159,17 @@ declare function dryGate(tool: string, filePath: string, content: string | undef
|
|
|
153
159
|
declare function preCommitGate(tool: string, command: string | undefined, cwd: string | undefined): Prompt | null;
|
|
154
160
|
//#endregion
|
|
155
161
|
//#region src/runtime/normalize.d.ts
|
|
156
|
-
/** One file fanned out
|
|
162
|
+
/** One file/edit fanned out from Codex `apply_patch` or Cursor `afterFileEdit`. */
|
|
157
163
|
interface NormalizedFile {
|
|
158
164
|
filePath: string;
|
|
159
165
|
content: string;
|
|
166
|
+
oldString?: string;
|
|
160
167
|
op: "add" | "update" | "delete";
|
|
161
168
|
}
|
|
162
169
|
/** A hook event normalized across harnesses. */
|
|
163
170
|
interface NormalizedEvent {
|
|
171
|
+
/** Native event name when the adapter exposes one explicitly (Cursor). */
|
|
172
|
+
eventName?: string;
|
|
164
173
|
phase: "pre" | "post";
|
|
165
174
|
tool: string;
|
|
166
175
|
input: Record<string, unknown>;
|
|
@@ -170,22 +179,26 @@ interface NormalizedEvent {
|
|
|
170
179
|
/** Edit only: the tool_input.old_string being replaced — lets the file-size gate (policy/evaluate.ts + policy/edit-outcome.ts) compute the post-edit outcome instead of judging the stale on-disk count alone. Undefined for Write (no such field) and for cline/apply_patch (parsed separately, no equivalent field). */
|
|
171
180
|
oldString?: string;
|
|
172
181
|
command?: string;
|
|
182
|
+
/** Cursor-only independent command candidates from beforeMCPExecution. */
|
|
183
|
+
commandCandidates?: string[];
|
|
173
184
|
/** Subagent type, if the tool-use came from one (Explore/Plan are file-size-exempt). */
|
|
174
185
|
agentType?: string;
|
|
175
186
|
/** Harness-resolved permission mode (Claude emits it natively; Codex maps `AskForApproval::Never` to the same "bypassPermissions" string — see adapters/codex/permission-mode.ts). Generic field, Codex-only consumer today. */
|
|
176
187
|
permissionMode?: string;
|
|
188
|
+
/** Codex logical tool-use identity, shared by sibling hook callbacks. */
|
|
189
|
+
toolUseId?: string;
|
|
190
|
+
/** Harness-reported working directory used to scope Codex authorization. */
|
|
191
|
+
cwd?: string;
|
|
192
|
+
/** Validated Cursor multi-root workspace paths in wire order. */
|
|
193
|
+
workspaceRoots?: string[];
|
|
177
194
|
/**
|
|
178
|
-
* Per-file changes
|
|
179
|
-
* `
|
|
180
|
-
* entry's verdict so one violating hunk blocks the whole envelope. Left
|
|
181
|
-
* undefined for every other tool/harness (single-file `filePath`/`content`).
|
|
195
|
+
* Per-file changes for Codex `apply_patch` and per-edit changes for Cursor
|
|
196
|
+
* `afterFileEdit`; undefined for single-file events.
|
|
182
197
|
*/
|
|
183
198
|
files?: NormalizedFile[];
|
|
184
199
|
}
|
|
185
200
|
/**
|
|
186
|
-
* Normalize a
|
|
187
|
-
* `preToolUse`/`postToolUse` shape and the top-level `tool_name`/`tool_input`
|
|
188
|
-
* shape used by Claude, Codex, Gemini, and Cursor.
|
|
201
|
+
* Normalize a hook payload, including Cline nesting and native Cursor events.
|
|
189
202
|
*/
|
|
190
203
|
declare function normalizeEvent(id: string, payload: Record<string, unknown>): NormalizedEvent;
|
|
191
204
|
//#endregion
|
|
@@ -201,8 +214,8 @@ declare function normalizeEvent(id: string, payload: Record<string, unknown>): N
|
|
|
201
214
|
* - gemini-cli/cline: their real hook schemas have no interactive "ask"
|
|
202
215
|
* state (deny is the only blocking outcome), so `ask` and `inform` already
|
|
203
216
|
* both resolve to non-blocking context injection — unchanged.
|
|
204
|
-
* - cursor: `ask`
|
|
205
|
-
*
|
|
217
|
+
* - cursor: `ask` degrades to a native `permission:"deny"` because Cursor does
|
|
218
|
+
* not reliably apply `ask` on `preToolUse`; `inform` stays non-blocking.
|
|
206
219
|
* - hermes: delegated to the adapter's `toHermesResponse` — `block` ->
|
|
207
220
|
* `{decision:"block",reason}`; `ask`/`inform` degrade to non-blocking
|
|
208
221
|
* `{context}` (Hermes has no interactive "ask" state).
|
|
@@ -891,10 +904,8 @@ interface HandleOutcome {
|
|
|
891
904
|
//#endregion
|
|
892
905
|
//#region src/runtime/handle.d.ts
|
|
893
906
|
/**
|
|
894
|
-
*
|
|
895
|
-
*
|
|
896
|
-
* POST event it records the activity into the track. The loop that makes the
|
|
897
|
-
* package behave like the Claude plugin, on any harness.
|
|
907
|
+
* Run one hook and adapt every Cursor scope outcome at the common runtime exit.
|
|
908
|
+
* Other harnesses retain the core handler's stdout and exit status unchanged.
|
|
898
909
|
*/
|
|
899
910
|
declare function handleHook(id: string, payload: Record<string, unknown>, opts: HandleOptions): Promise<HandleOutcome>;
|
|
900
911
|
//#endregion
|
|
@@ -923,4 +934,4 @@ interface PreContext {
|
|
|
923
934
|
*/
|
|
924
935
|
declare function handlePre(ctx: PreContext): Promise<HandleOutcome>;
|
|
925
936
|
//#endregion
|
|
926
|
-
export { Activity, DEFAULT_WINDOW_MS, DuplicationVerdict, type GateInput, type HandleOptions, type HandleOutcome, LifecycleInput, MCP_TTL_MS, McpIntercept, NormalizedEvent, NormalizedFile, PluginScope, PreContext, REQUIRED_AGENTS, SolidProfile, TRIVIAL_BUDGET, ToolEvent, WEBFETCH_TTL_MS, activityFor, aipilotPostToolUse, cacheQueryOf, cartoSessionStart, checkFileSize, claudeHome, claudeMdKey, cleanupSession, countFiles, countLoc, defaultStateDir, detectDuplication, detectSolidProfile, devContext, dispatchAipilot, dispatchLessons, dispatchLifecycle, dispatchMemory, dryGate, extractSymbols, fuseHarnessHome, fusengineCache, gate, generateEcosystemMap, generateProjectMap, getFileDesc, gitContext, handleHook, handlePre, harnessStateDir, injectRules, isMcpTool, isProject, isoUtc, lessonsArchiveFileFor, lessonsFileFor, lessonsStateFileFor, lifecycleStdout, listChildren, loadEnriched, loadSecurityState, loadSessionState, logToolFailure, mcpPostStore, mcpPreIntercept, mergeLines, normalizeEvent, postEditContext, postEditTypescript, postTrackingSideEffects, preCommitGate, projectContext, projectHash, promptSubmitContext, pruneEmptyDirs, purgeTtlTree, queryOf, readRules, recordActivity, removeOldFiles, respond, runSessionStartCleanups, sanitizeSessionId, saveApexState, saveSecurityState, saveSessionState, securityAdvisory, securityAdvisoryForPatch, securityStateDir, securityStatePath, seoPostToolUse, seoPostToolUseResponse, sessionStartCore, sessionStatePath, sessionsDir, solidDetectStart, subagentCacheContext, taskContext, todayUtc, trackAgentMemory, trackEnrichment, trackFile, trackMcpResearch, trackSessionChanges, trackSkillRead, trackWatchResearch, trimLogFile, validateRulesLoaded, validateSolidGate, validateTailwind, validateTeammateOutput, writePluginMap, writeTree };
|
|
937
|
+
export { Activity, DEFAULT_WINDOW_MS, DuplicationVerdict, type GateInput, type HandleOptions, type HandleOutcome, LifecycleInput, MCP_TTL_MS, McpIntercept, NormalizedEvent, NormalizedFile, PluginScope, PreContext, REQUIRED_AGENTS, SolidProfile, TRIVIAL_BUDGET, ToolEvent, WEBFETCH_TTL_MS, activityFor, aipilotPostToolUse, cacheQueryOf, cartoSessionStart, checkFileSize, claudeHome, claudeMdKey, cleanupSession, countFiles, countLoc, defaultStateDir, detectDuplication, detectSolidProfile, devContext, dispatchAipilot, dispatchLessons, dispatchLifecycle, dispatchMemory, dryGate, extractSymbols, fuseHarnessHome, fusengineCache, gate, gateCommandCandidates, generateEcosystemMap, generateProjectMap, getFileDesc, gitContext, handleHook, handlePre, harnessStateDir, injectRules, isMcpTool, isProject, isoUtc, lessonsArchiveFileFor, lessonsFileFor, lessonsStateFileFor, lifecycleStdout, listChildren, loadEnriched, loadSecurityState, loadSessionState, logToolFailure, mcpPostStore, mcpPreIntercept, mergeLines, normalizeEvent, postEditContext, postEditTypescript, postTrackingSideEffects, preCommitGate, projectContext, projectHash, promptSubmitContext, pruneEmptyDirs, purgeTtlTree, queryOf, readRules, recordActivity, removeOldFiles, respond, runSessionStartCleanups, sanitizeSessionId, saveApexState, saveSecurityState, saveSessionState, securityAdvisory, securityAdvisoryForPatch, securityStateDir, securityStatePath, seoPostToolUse, seoPostToolUseResponse, sessionStartCore, sessionStatePath, sessionsDir, solidDetectStart, subagentCacheContext, taskContext, todayUtc, trackAgentMemory, trackEnrichment, trackFile, trackMcpResearch, trackSessionChanges, trackSkillRead, trackWatchResearch, trimLogFile, validateRulesLoaded, validateSolidGate, validateTailwind, validateTeammateOutput, writePluginMap, writeTree };
|