@nanonets/graft 0.23.1 → 0.24.1
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/README.md +4 -4
- package/dist/ai/crux.d.ts +31 -3
- package/dist/ai/crux.d.ts.map +1 -1
- package/dist/ai/crux.js +88 -10
- package/dist/ai/crux.js.map +1 -1
- package/dist/ai/llm/openai.d.ts +101 -0
- package/dist/ai/llm/openai.d.ts.map +1 -1
- package/dist/ai/llm/openai.js +396 -6
- package/dist/ai/llm/openai.js.map +1 -1
- package/dist/ai/llm/recover-tool.d.ts +2 -0
- package/dist/ai/llm/recover-tool.d.ts.map +1 -1
- package/dist/ai/llm/recover-tool.js +1 -1
- package/dist/ai/llm/recover-tool.js.map +1 -1
- package/dist/ai/synthesize.d.ts.map +1 -1
- package/dist/ai/synthesize.js +100 -1
- package/dist/ai/synthesize.js.map +1 -1
- package/dist/ask/ask.d.ts +8 -0
- package/dist/ask/ask.d.ts.map +1 -1
- package/dist/ask/ask.js +33 -12
- package/dist/ask/ask.js.map +1 -1
- package/dist/claude/format.js +1 -1
- package/dist/claude/format.js.map +1 -1
- package/dist/claude/hook-io.d.ts +44 -0
- package/dist/claude/hook-io.d.ts.map +1 -0
- package/dist/claude/hook-io.js +144 -0
- package/dist/claude/hook-io.js.map +1 -0
- package/dist/claude/hooks.d.ts +0 -18
- package/dist/claude/hooks.d.ts.map +1 -1
- package/dist/claude/hooks.js +24 -77
- package/dist/claude/hooks.js.map +1 -1
- package/dist/claude/init.js +3 -3
- package/dist/claude/init.js.map +1 -1
- package/dist/claude/note-signals.d.ts +28 -0
- package/dist/claude/note-signals.d.ts.map +1 -0
- package/dist/claude/note-signals.js +325 -0
- package/dist/claude/note-signals.js.map +1 -0
- package/dist/claude/shim-template.d.ts.map +1 -1
- package/dist/claude/shim-template.js +10 -4
- package/dist/claude/shim-template.js.map +1 -1
- package/dist/claude/skill-template.d.ts.map +1 -1
- package/dist/claude/skill-template.js +49 -18
- package/dist/claude/skill-template.js.map +1 -1
- package/dist/claude/skills-hook-util.d.ts +25 -0
- package/dist/claude/skills-hook-util.d.ts.map +1 -0
- package/dist/claude/skills-hook-util.js +71 -0
- package/dist/claude/skills-hook-util.js.map +1 -0
- package/dist/claude/state.d.ts +4 -3
- package/dist/claude/state.d.ts.map +1 -1
- package/dist/claude/state.js.map +1 -1
- package/dist/claude/sync-run.js +1 -1
- package/dist/claude/sync-run.js.map +1 -1
- package/dist/cli-picker.d.ts +36 -5
- package/dist/cli-picker.d.ts.map +1 -1
- package/dist/cli-picker.js +60 -13
- package/dist/cli-picker.js.map +1 -1
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +406 -64
- package/dist/cli.js.map +1 -1
- package/dist/cloud/lookup-activity.d.ts +16 -0
- package/dist/cloud/lookup-activity.d.ts.map +1 -0
- package/dist/cloud/lookup-activity.js +56 -0
- package/dist/cloud/lookup-activity.js.map +1 -0
- package/dist/cloud/nudge.d.ts.map +1 -1
- package/dist/cloud/nudge.js +3 -0
- package/dist/cloud/nudge.js.map +1 -1
- package/dist/cloud/onboarding.d.ts +237 -0
- package/dist/cloud/onboarding.d.ts.map +1 -0
- package/dist/cloud/onboarding.js +536 -0
- package/dist/cloud/onboarding.js.map +1 -0
- package/dist/cloud/pair.d.ts +76 -0
- package/dist/cloud/pair.d.ts.map +1 -0
- package/dist/cloud/pair.js +249 -0
- package/dist/cloud/pair.js.map +1 -0
- package/dist/cloud/workspace-sync.d.ts +10 -2
- package/dist/cloud/workspace-sync.d.ts.map +1 -1
- package/dist/cloud/workspace-sync.js +119 -7
- package/dist/cloud/workspace-sync.js.map +1 -1
- package/dist/cloud/workspace.d.ts +22 -1
- package/dist/cloud/workspace.d.ts.map +1 -1
- package/dist/cloud/workspace.js +16 -1
- package/dist/cloud/workspace.js.map +1 -1
- package/dist/context/batches.d.ts +29 -0
- package/dist/context/batches.d.ts.map +1 -0
- package/dist/context/batches.js +130 -0
- package/dist/context/batches.js.map +1 -0
- package/dist/context/build.d.ts +7 -2
- package/dist/context/build.d.ts.map +1 -1
- package/dist/context/build.js +84 -50
- package/dist/context/build.js.map +1 -1
- package/dist/context/node-file.d.ts.map +1 -1
- package/dist/context/node-file.js +41 -4
- package/dist/context/node-file.js.map +1 -1
- package/dist/engine.d.ts +2 -0
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +1 -0
- package/dist/engine.js.map +1 -1
- package/dist/graph/cards.d.ts.map +1 -1
- package/dist/graph/cards.js +9 -4
- package/dist/graph/cards.js.map +1 -1
- package/dist/graph/enrich.d.ts.map +1 -1
- package/dist/graph/enrich.js +8 -3
- package/dist/graph/enrich.js.map +1 -1
- package/dist/graph/generic.d.ts.map +1 -1
- package/dist/graph/generic.js +207 -6
- package/dist/graph/generic.js.map +1 -1
- package/dist/graph/lsp/client.d.ts +18 -0
- package/dist/graph/lsp/client.d.ts.map +1 -1
- package/dist/graph/lsp/client.js +40 -2
- package/dist/graph/lsp/client.js.map +1 -1
- package/dist/graph/lsp/enrich.d.ts.map +1 -1
- package/dist/graph/lsp/enrich.js +9 -1
- package/dist/graph/lsp/enrich.js.map +1 -1
- package/dist/graph/lsp/registry.d.ts +7 -0
- package/dist/graph/lsp/registry.d.ts.map +1 -1
- package/dist/graph/lsp/registry.js +27 -2
- package/dist/graph/lsp/registry.js.map +1 -1
- package/dist/graph/native.d.ts +2 -0
- package/dist/graph/native.d.ts.map +1 -1
- package/dist/graph/native.js +29 -4
- package/dist/graph/native.js.map +1 -1
- package/dist/graph/queries/gleam.scm +51 -0
- package/dist/graph/resolve.d.ts.map +1 -1
- package/dist/graph/resolve.js +65 -3
- package/dist/graph/resolve.js.map +1 -1
- package/dist/graph/workspace-cli.d.ts +2 -0
- package/dist/graph/workspace-cli.d.ts.map +1 -1
- package/dist/graph/workspace-cli.js +1 -1
- package/dist/graph/workspace-cli.js.map +1 -1
- package/dist/hosts/claude-global.d.ts +14 -0
- package/dist/hosts/claude-global.d.ts.map +1 -1
- package/dist/hosts/claude-global.js +38 -3
- package/dist/hosts/claude-global.js.map +1 -1
- package/dist/init/install-record.d.ts +21 -0
- package/dist/init/install-record.d.ts.map +1 -0
- package/dist/init/install-record.js +144 -0
- package/dist/init/install-record.js.map +1 -0
- package/dist/init/plain-file.d.ts +11 -0
- package/dist/init/plain-file.d.ts.map +1 -0
- package/dist/init/plain-file.js +80 -0
- package/dist/init/plain-file.js.map +1 -0
- package/dist/mcp/brains.d.ts +72 -0
- package/dist/mcp/brains.d.ts.map +1 -0
- package/dist/mcp/brains.js +220 -0
- package/dist/mcp/brains.js.map +1 -0
- package/dist/mcp/server.d.ts +3 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +40 -5
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +7 -2
- package/dist/mcp/tools.js.map +1 -1
- package/dist/notes/branches.d.ts +7 -1
- package/dist/notes/branches.d.ts.map +1 -1
- package/dist/notes/branches.js +31 -3
- package/dist/notes/branches.js.map +1 -1
- package/dist/notes/cold-start.d.ts +42 -3
- package/dist/notes/cold-start.d.ts.map +1 -1
- package/dist/notes/cold-start.js +144 -24
- package/dist/notes/cold-start.js.map +1 -1
- package/dist/notes/credit.d.ts +37 -0
- package/dist/notes/credit.d.ts.map +1 -0
- package/dist/notes/credit.js +78 -0
- package/dist/notes/credit.js.map +1 -0
- package/dist/notes/every-repo.d.ts +18 -0
- package/dist/notes/every-repo.d.ts.map +1 -0
- package/dist/notes/every-repo.js +86 -0
- package/dist/notes/every-repo.js.map +1 -0
- package/dist/notes/find-notes.d.ts +17 -0
- package/dist/notes/find-notes.d.ts.map +1 -0
- package/dist/notes/find-notes.js +48 -0
- package/dist/notes/find-notes.js.map +1 -0
- package/dist/notes/flatten.d.ts +31 -0
- package/dist/notes/flatten.d.ts.map +1 -0
- package/dist/notes/flatten.js +73 -0
- package/dist/notes/flatten.js.map +1 -0
- package/dist/notes/git-facts.d.ts +2 -0
- package/dist/notes/git-facts.d.ts.map +1 -1
- package/dist/notes/git-facts.js +6 -0
- package/dist/notes/git-facts.js.map +1 -1
- package/dist/notes/guardrails.d.ts +8 -0
- package/dist/notes/guardrails.d.ts.map +1 -0
- package/dist/notes/guardrails.js +38 -0
- package/dist/notes/guardrails.js.map +1 -0
- package/dist/notes/home.d.ts +24 -6
- package/dist/notes/home.d.ts.map +1 -1
- package/dist/notes/home.js +82 -15
- package/dist/notes/home.js.map +1 -1
- package/dist/notes/learning-fields.d.ts +102 -0
- package/dist/notes/learning-fields.d.ts.map +1 -0
- package/dist/notes/learning-fields.js +214 -0
- package/dist/notes/learning-fields.js.map +1 -0
- package/dist/notes/lesson-index.d.ts +13 -0
- package/dist/notes/lesson-index.d.ts.map +1 -0
- package/dist/notes/lesson-index.js +135 -0
- package/dist/notes/lesson-index.js.map +1 -0
- package/dist/notes/linked-learnings.d.ts +8 -0
- package/dist/notes/linked-learnings.d.ts.map +1 -0
- package/dist/notes/linked-learnings.js +113 -0
- package/dist/notes/linked-learnings.js.map +1 -0
- package/dist/notes/memory-notes.d.ts +71 -0
- package/dist/notes/memory-notes.d.ts.map +1 -0
- package/dist/notes/memory-notes.js +239 -0
- package/dist/notes/memory-notes.js.map +1 -0
- package/dist/notes/note-gate.d.ts +42 -0
- package/dist/notes/note-gate.d.ts.map +1 -0
- package/dist/notes/note-gate.js +181 -0
- package/dist/notes/note-gate.js.map +1 -0
- package/dist/notes/notes.d.ts +29 -85
- package/dist/notes/notes.d.ts.map +1 -1
- package/dist/notes/notes.js +69 -254
- package/dist/notes/notes.js.map +1 -1
- package/dist/notes/pr-reviews.d.ts +35 -7
- package/dist/notes/pr-reviews.d.ts.map +1 -1
- package/dist/notes/pr-reviews.js +156 -46
- package/dist/notes/pr-reviews.js.map +1 -1
- package/dist/notes/replace.d.ts +14 -0
- package/dist/notes/replace.d.ts.map +1 -0
- package/dist/notes/replace.js +38 -0
- package/dist/notes/replace.js.map +1 -0
- package/dist/notes/repo-notes-dir.d.ts +2 -0
- package/dist/notes/repo-notes-dir.d.ts.map +1 -0
- package/dist/notes/repo-notes-dir.js +16 -0
- package/dist/notes/repo-notes-dir.js.map +1 -0
- package/dist/notes/secrets.d.ts +28 -0
- package/dist/notes/secrets.d.ts.map +1 -0
- package/dist/notes/secrets.js +362 -0
- package/dist/notes/secrets.js.map +1 -0
- package/dist/notes/targets.d.ts +37 -0
- package/dist/notes/targets.d.ts.map +1 -0
- package/dist/notes/targets.js +108 -0
- package/dist/notes/targets.js.map +1 -0
- package/dist/notes/team-check.d.ts +22 -0
- package/dist/notes/team-check.d.ts.map +1 -0
- package/dist/notes/team-check.js +130 -0
- package/dist/notes/team-check.js.map +1 -0
- package/dist/notes/trail-home.d.ts +3 -0
- package/dist/notes/trail-home.d.ts.map +1 -0
- package/dist/notes/trail-home.js +12 -0
- package/dist/notes/trail-home.js.map +1 -0
- package/dist/skills/anchors-cli.d.ts +33 -0
- package/dist/skills/anchors-cli.d.ts.map +1 -0
- package/dist/skills/anchors-cli.js +274 -0
- package/dist/skills/anchors-cli.js.map +1 -0
- package/dist/skills/anchors-git.d.ts +29 -0
- package/dist/skills/anchors-git.d.ts.map +1 -0
- package/dist/skills/anchors-git.js +241 -0
- package/dist/skills/anchors-git.js.map +1 -0
- package/dist/skills/anchors-wide.d.ts +25 -0
- package/dist/skills/anchors-wide.d.ts.map +1 -0
- package/dist/skills/anchors-wide.js +481 -0
- package/dist/skills/anchors-wide.js.map +1 -0
- package/dist/skills/anchors.d.ts +32 -0
- package/dist/skills/anchors.d.ts.map +1 -0
- package/dist/skills/anchors.js +485 -0
- package/dist/skills/anchors.js.map +1 -0
- package/dist/skills/answers-prompt.d.ts +13 -0
- package/dist/skills/answers-prompt.d.ts.map +1 -0
- package/dist/skills/answers-prompt.js +83 -0
- package/dist/skills/answers-prompt.js.map +1 -0
- package/dist/skills/check-result.d.ts +26 -0
- package/dist/skills/check-result.d.ts.map +1 -0
- package/dist/skills/check-result.js +46 -0
- package/dist/skills/check-result.js.map +1 -0
- package/dist/skills/codex-sandbox.d.ts +6 -0
- package/dist/skills/codex-sandbox.d.ts.map +1 -0
- package/dist/skills/codex-sandbox.js +55 -0
- package/dist/skills/codex-sandbox.js.map +1 -0
- package/dist/skills/compile-split.d.ts +57 -0
- package/dist/skills/compile-split.d.ts.map +1 -0
- package/dist/skills/compile-split.js +532 -0
- package/dist/skills/compile-split.js.map +1 -0
- package/dist/skills/compile-version.d.ts +37 -0
- package/dist/skills/compile-version.d.ts.map +1 -0
- package/dist/skills/compile-version.js +56 -0
- package/dist/skills/compile-version.js.map +1 -0
- package/dist/skills/compile-waits.d.ts +12 -0
- package/dist/skills/compile-waits.d.ts.map +1 -0
- package/dist/skills/compile-waits.js +52 -0
- package/dist/skills/compile-waits.js.map +1 -0
- package/dist/skills/compile-words.d.ts +82 -0
- package/dist/skills/compile-words.d.ts.map +1 -0
- package/dist/skills/compile-words.js +385 -0
- package/dist/skills/compile-words.js.map +1 -0
- package/dist/skills/compile.d.ts +35 -0
- package/dist/skills/compile.d.ts.map +1 -0
- package/dist/skills/compile.js +488 -0
- package/dist/skills/compile.js.map +1 -0
- package/dist/skills/credit-facts.d.ts +8 -0
- package/dist/skills/credit-facts.d.ts.map +1 -0
- package/dist/skills/credit-facts.js +32 -0
- package/dist/skills/credit-facts.js.map +1 -0
- package/dist/skills/directive-words.d.ts +11 -0
- package/dist/skills/directive-words.d.ts.map +1 -0
- package/dist/skills/directive-words.js +33 -0
- package/dist/skills/directive-words.js.map +1 -0
- package/dist/skills/fidelity.d.ts +42 -0
- package/dist/skills/fidelity.d.ts.map +1 -0
- package/dist/skills/fidelity.js +138 -0
- package/dist/skills/fidelity.js.map +1 -0
- package/dist/skills/forget-notice.d.ts +44 -0
- package/dist/skills/forget-notice.d.ts.map +1 -0
- package/dist/skills/forget-notice.js +131 -0
- package/dist/skills/forget-notice.js.map +1 -0
- package/dist/skills/found-skill.d.ts +35 -0
- package/dist/skills/found-skill.d.ts.map +1 -0
- package/dist/skills/found-skill.js +66 -0
- package/dist/skills/found-skill.js.map +1 -0
- package/dist/skills/front-version.d.ts +12 -0
- package/dist/skills/front-version.d.ts.map +1 -0
- package/dist/skills/front-version.js +87 -0
- package/dist/skills/front-version.js.map +1 -0
- package/dist/skills/host-facts.d.ts +51 -0
- package/dist/skills/host-facts.d.ts.map +1 -0
- package/dist/skills/host-facts.js +134 -0
- package/dist/skills/host-facts.js.map +1 -0
- package/dist/skills/ledger.d.ts +43 -0
- package/dist/skills/ledger.d.ts.map +1 -0
- package/dist/skills/ledger.js +336 -0
- package/dist/skills/ledger.js.map +1 -0
- package/dist/skills/lessons.d.ts +60 -0
- package/dist/skills/lessons.d.ts.map +1 -0
- package/dist/skills/lessons.js +396 -0
- package/dist/skills/lessons.js.map +1 -0
- package/dist/skills/never-save.d.ts +5 -0
- package/dist/skills/never-save.d.ts.map +1 -0
- package/dist/skills/never-save.js +158 -0
- package/dist/skills/never-save.js.map +1 -0
- package/dist/skills/offer-answers.d.ts +20 -0
- package/dist/skills/offer-answers.d.ts.map +1 -0
- package/dist/skills/offer-answers.js +51 -0
- package/dist/skills/offer-answers.js.map +1 -0
- package/dist/skills/own-folder.d.ts +9 -0
- package/dist/skills/own-folder.d.ts.map +1 -0
- package/dist/skills/own-folder.js +36 -0
- package/dist/skills/own-folder.js.map +1 -0
- package/dist/skills/params.d.ts +39 -0
- package/dist/skills/params.d.ts.map +1 -0
- package/dist/skills/params.js +275 -0
- package/dist/skills/params.js.map +1 -0
- package/dist/skills/person.d.ts +34 -0
- package/dist/skills/person.d.ts.map +1 -0
- package/dist/skills/person.js +102 -0
- package/dist/skills/person.js.map +1 -0
- package/dist/skills/probe-clean.d.ts +9 -0
- package/dist/skills/probe-clean.d.ts.map +1 -0
- package/dist/skills/probe-clean.js +48 -0
- package/dist/skills/probe-clean.js.map +1 -0
- package/dist/skills/probes.d.ts +26 -0
- package/dist/skills/probes.d.ts.map +1 -0
- package/dist/skills/probes.js +225 -0
- package/dist/skills/probes.js.map +1 -0
- package/dist/skills/ran-less.d.ts +5 -0
- package/dist/skills/ran-less.d.ts.map +1 -0
- package/dist/skills/ran-less.js +51 -0
- package/dist/skills/ran-less.js.map +1 -0
- package/dist/skills/recall.d.ts +119 -0
- package/dist/skills/recall.d.ts.map +1 -0
- package/dist/skills/recall.js +370 -0
- package/dist/skills/recall.js.map +1 -0
- package/dist/skills/receipts.d.ts +44 -0
- package/dist/skills/receipts.d.ts.map +1 -0
- package/dist/skills/receipts.js +223 -0
- package/dist/skills/receipts.js.map +1 -0
- package/dist/skills/risk-delta.d.ts +32 -0
- package/dist/skills/risk-delta.d.ts.map +1 -0
- package/dist/skills/risk-delta.js +56 -0
- package/dist/skills/risk-delta.js.map +1 -0
- package/dist/skills/risk.d.ts +73 -0
- package/dist/skills/risk.d.ts.map +1 -0
- package/dist/skills/risk.js +396 -0
- package/dist/skills/risk.js.map +1 -0
- package/dist/skills/run-checkout.d.ts +4 -0
- package/dist/skills/run-checkout.d.ts.map +1 -0
- package/dist/skills/run-checkout.js +37 -0
- package/dist/skills/run-checkout.js.map +1 -0
- package/dist/skills/runblock.d.ts +45 -0
- package/dist/skills/runblock.d.ts.map +1 -0
- package/dist/skills/runblock.js +222 -0
- package/dist/skills/runblock.js.map +1 -0
- package/dist/skills/save-parse.d.ts +42 -0
- package/dist/skills/save-parse.d.ts.map +1 -0
- package/dist/skills/save-parse.js +172 -0
- package/dist/skills/save-parse.js.map +1 -0
- package/dist/skills/save-store.d.ts +12 -0
- package/dist/skills/save-store.d.ts.map +1 -0
- package/dist/skills/save-store.js +22 -0
- package/dist/skills/save-store.js.map +1 -0
- package/dist/skills/settings.d.ts +38 -0
- package/dist/skills/settings.d.ts.map +1 -0
- package/dist/skills/settings.js +133 -0
- package/dist/skills/settings.js.map +1 -0
- package/dist/skills/skill-diff.d.ts +40 -0
- package/dist/skills/skill-diff.d.ts.map +1 -0
- package/dist/skills/skill-diff.js +191 -0
- package/dist/skills/skill-diff.js.map +1 -0
- package/dist/skills/skill-file.d.ts +24 -0
- package/dist/skills/skill-file.d.ts.map +1 -0
- package/dist/skills/skill-file.js +97 -0
- package/dist/skills/skill-file.js.map +1 -0
- package/dist/skills/skill-rebuild.d.ts +27 -0
- package/dist/skills/skill-rebuild.d.ts.map +1 -0
- package/dist/skills/skill-rebuild.js +85 -0
- package/dist/skills/skill-rebuild.js.map +1 -0
- package/dist/skills/skillmd.d.ts +17 -0
- package/dist/skills/skillmd.d.ts.map +1 -0
- package/dist/skills/skillmd.js +219 -0
- package/dist/skills/skillmd.js.map +1 -0
- package/dist/skills/skills.d.ts +2 -0
- package/dist/skills/skills.d.ts.map +1 -1
- package/dist/skills/skills.js +1 -1
- package/dist/skills/skills.js.map +1 -1
- package/dist/skills/staleness.d.ts +27 -0
- package/dist/skills/staleness.d.ts.map +1 -0
- package/dist/skills/staleness.js +178 -0
- package/dist/skills/staleness.js.map +1 -0
- package/dist/skills/state.d.ts +36 -0
- package/dist/skills/state.d.ts.map +1 -0
- package/dist/skills/state.js +259 -0
- package/dist/skills/state.js.map +1 -0
- package/dist/skills/store-fs.d.ts +77 -0
- package/dist/skills/store-fs.d.ts.map +1 -0
- package/dist/skills/store-fs.js +194 -0
- package/dist/skills/store-fs.js.map +1 -0
- package/dist/skills/store-held.d.ts +44 -0
- package/dist/skills/store-held.d.ts.map +1 -0
- package/dist/skills/store-held.js +147 -0
- package/dist/skills/store-held.js.map +1 -0
- package/dist/skills/store.d.ts +73 -0
- package/dist/skills/store.d.ts.map +1 -0
- package/dist/skills/store.js +279 -0
- package/dist/skills/store.js.map +1 -0
- package/dist/skills/types.d.ts +422 -0
- package/dist/skills/types.d.ts.map +1 -0
- package/dist/skills/types.js +2 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/skills/validate.d.ts +11 -0
- package/dist/skills/validate.d.ts.map +1 -0
- package/dist/skills/validate.js +112 -0
- package/dist/skills/validate.js.map +1 -0
- package/dist/skills/versions-fs.d.ts +45 -0
- package/dist/skills/versions-fs.d.ts.map +1 -0
- package/dist/skills/versions-fs.js +234 -0
- package/dist/skills/versions-fs.js.map +1 -0
- package/dist/skills/versions.d.ts +56 -0
- package/dist/skills/versions.d.ts.map +1 -0
- package/dist/skills/versions.js +351 -0
- package/dist/skills/versions.js.map +1 -0
- package/dist/telemetry/contract.d.ts.map +1 -1
- package/dist/telemetry/contract.js +8 -6
- package/dist/telemetry/contract.js.map +1 -1
- package/dist/telemetry/notice.d.ts.map +1 -1
- package/dist/telemetry/notice.js +3 -1
- package/dist/telemetry/notice.js.map +1 -1
- package/dist/trace/check-reads.d.ts +36 -0
- package/dist/trace/check-reads.d.ts.map +1 -0
- package/dist/trace/check-reads.js +57 -0
- package/dist/trace/check-reads.js.map +1 -0
- package/dist/trace/checks.d.ts +63 -0
- package/dist/trace/checks.d.ts.map +1 -0
- package/dist/trace/checks.js +487 -0
- package/dist/trace/checks.js.map +1 -0
- package/dist/trace/claude.d.ts +124 -0
- package/dist/trace/claude.d.ts.map +1 -0
- package/dist/trace/claude.js +303 -0
- package/dist/trace/claude.js.map +1 -0
- package/dist/trace/codex-exec.d.ts +22 -0
- package/dist/trace/codex-exec.d.ts.map +1 -0
- package/dist/trace/codex-exec.js +129 -0
- package/dist/trace/codex-exec.js.map +1 -0
- package/dist/trace/codex-meta.d.ts +23 -0
- package/dist/trace/codex-meta.d.ts.map +1 -0
- package/dist/trace/codex-meta.js +112 -0
- package/dist/trace/codex-meta.js.map +1 -0
- package/dist/trace/codex.d.ts +33 -0
- package/dist/trace/codex.d.ts.map +1 -0
- package/dist/trace/codex.js +485 -0
- package/dist/trace/codex.js.map +1 -0
- package/dist/trace/cursor.d.ts +16 -0
- package/dist/trace/cursor.d.ts.map +1 -0
- package/dist/trace/cursor.js +133 -0
- package/dist/trace/cursor.js.map +1 -0
- package/dist/trace/dialect.d.ts +43 -0
- package/dist/trace/dialect.d.ts.map +1 -0
- package/dist/trace/dialect.js +95 -0
- package/dist/trace/dialect.js.map +1 -0
- package/dist/trace/epochs.d.ts +10 -0
- package/dist/trace/epochs.d.ts.map +1 -0
- package/dist/trace/epochs.js +16 -0
- package/dist/trace/epochs.js.map +1 -0
- package/dist/trace/failure.d.ts +15 -0
- package/dist/trace/failure.d.ts.map +1 -0
- package/dist/trace/failure.js +69 -0
- package/dist/trace/failure.js.map +1 -0
- package/dist/trace/gate-file.d.ts +71 -0
- package/dist/trace/gate-file.d.ts.map +1 -0
- package/dist/trace/gate-file.js +329 -0
- package/dist/trace/gate-file.js.map +1 -0
- package/dist/trace/guard-fast.d.ts +22 -0
- package/dist/trace/guard-fast.d.ts.map +1 -0
- package/dist/trace/guard-fast.js +213 -0
- package/dist/trace/guard-fast.js.map +1 -0
- package/dist/trace/host.d.ts +40 -0
- package/dist/trace/host.d.ts.map +1 -0
- package/dist/trace/host.js +84 -0
- package/dist/trace/host.js.map +1 -0
- package/dist/trace/housekeeping.d.ts +5 -0
- package/dist/trace/housekeeping.d.ts.map +1 -0
- package/dist/trace/housekeeping.js +93 -0
- package/dist/trace/housekeeping.js.map +1 -0
- package/dist/trace/jobs.d.ts +52 -0
- package/dist/trace/jobs.d.ts.map +1 -0
- package/dist/trace/jobs.js +182 -0
- package/dist/trace/jobs.js.map +1 -0
- package/dist/trace/known-repo.d.ts +3 -0
- package/dist/trace/known-repo.d.ts.map +1 -0
- package/dist/trace/known-repo.js +55 -0
- package/dist/trace/known-repo.js.map +1 -0
- package/dist/trace/pool.d.ts +40 -0
- package/dist/trace/pool.d.ts.map +1 -0
- package/dist/trace/pool.js +154 -0
- package/dist/trace/pool.js.map +1 -0
- package/dist/trace/redact.d.ts +8 -0
- package/dist/trace/redact.d.ts.map +1 -0
- package/dist/trace/redact.js +63 -0
- package/dist/trace/redact.js.map +1 -0
- package/dist/trace/repairs.d.ts +27 -0
- package/dist/trace/repairs.d.ts.map +1 -0
- package/dist/trace/repairs.js +303 -0
- package/dist/trace/repairs.js.map +1 -0
- package/dist/trace/run-calls.d.ts +82 -0
- package/dist/trace/run-calls.d.ts.map +1 -0
- package/dist/trace/run-calls.js +331 -0
- package/dist/trace/run-calls.js.map +1 -0
- package/dist/trace/run-join.d.ts +20 -0
- package/dist/trace/run-join.d.ts.map +1 -0
- package/dist/trace/run-join.js +99 -0
- package/dist/trace/run-join.js.map +1 -0
- package/dist/trace/run-sheets.d.ts +26 -0
- package/dist/trace/run-sheets.d.ts.map +1 -0
- package/dist/trace/run-sheets.js +145 -0
- package/dist/trace/run-sheets.js.map +1 -0
- package/dist/trace/run-turns.d.ts +24 -0
- package/dist/trace/run-turns.d.ts.map +1 -0
- package/dist/trace/run-turns.js +67 -0
- package/dist/trace/run-turns.js.map +1 -0
- package/dist/trace/run-verdict.d.ts +24 -0
- package/dist/trace/run-verdict.d.ts.map +1 -0
- package/dist/trace/run-verdict.js +176 -0
- package/dist/trace/run-verdict.js.map +1 -0
- package/dist/trace/runs.d.ts +54 -0
- package/dist/trace/runs.d.ts.map +1 -0
- package/dist/trace/runs.js +501 -0
- package/dist/trace/runs.js.map +1 -0
- package/dist/trace/seen-cache.d.ts +9 -0
- package/dist/trace/seen-cache.d.ts.map +1 -0
- package/dist/trace/seen-cache.js +46 -0
- package/dist/trace/seen-cache.js.map +1 -0
- package/dist/trace/shell-scan.d.ts +52 -0
- package/dist/trace/shell-scan.d.ts.map +1 -0
- package/dist/trace/shell-scan.js +318 -0
- package/dist/trace/shell-scan.js.map +1 -0
- package/dist/trace/shell-words.d.ts +91 -0
- package/dist/trace/shell-words.d.ts.map +1 -0
- package/dist/trace/shell-words.js +558 -0
- package/dist/trace/shell-words.js.map +1 -0
- package/dist/trace/shell.d.ts +91 -0
- package/dist/trace/shell.d.ts.map +1 -0
- package/dist/trace/shell.js +435 -0
- package/dist/trace/shell.js.map +1 -0
- package/dist/trace/skill-session.d.ts +64 -0
- package/dist/trace/skill-session.d.ts.map +1 -0
- package/dist/trace/skill-session.js +232 -0
- package/dist/trace/skill-session.js.map +1 -0
- package/dist/trace/state.d.ts +27 -0
- package/dist/trace/state.d.ts.map +1 -0
- package/dist/trace/state.js +98 -0
- package/dist/trace/state.js.map +1 -0
- package/dist/trace/tamper-code.d.ts +9 -0
- package/dist/trace/tamper-code.d.ts.map +1 -0
- package/dist/trace/tamper-code.js +174 -0
- package/dist/trace/tamper-code.js.map +1 -0
- package/dist/trace/tamper-git.d.ts +12 -0
- package/dist/trace/tamper-git.d.ts.map +1 -0
- package/dist/trace/tamper-git.js +77 -0
- package/dist/trace/tamper-git.js.map +1 -0
- package/dist/trace/tamper.d.ts +12 -0
- package/dist/trace/tamper.d.ts.map +1 -0
- package/dist/trace/tamper.js +405 -0
- package/dist/trace/tamper.js.map +1 -0
- package/dist/trace/typed.d.ts +30 -0
- package/dist/trace/typed.d.ts.map +1 -0
- package/dist/trace/typed.js +132 -0
- package/dist/trace/typed.js.map +1 -0
- package/dist/trace/types.d.ts +477 -0
- package/dist/trace/types.d.ts.map +1 -0
- package/dist/trace/types.js +12 -0
- package/dist/trace/types.js.map +1 -0
- package/dist/trace/wall-state.d.ts +86 -0
- package/dist/trace/wall-state.d.ts.map +1 -0
- package/dist/trace/wall-state.js +279 -0
- package/dist/trace/wall-state.js.map +1 -0
- package/dist/trace/walls-glob.d.ts +11 -0
- package/dist/trace/walls-glob.d.ts.map +1 -0
- package/dist/trace/walls-glob.js +264 -0
- package/dist/trace/walls-glob.js.map +1 -0
- package/dist/trace/walls-quoted.d.ts +25 -0
- package/dist/trace/walls-quoted.d.ts.map +1 -0
- package/dist/trace/walls-quoted.js +81 -0
- package/dist/trace/walls-quoted.js.map +1 -0
- package/dist/trace/walls.d.ts +40 -0
- package/dist/trace/walls.d.ts.map +1 -0
- package/dist/trace/walls.js +318 -0
- package/dist/trace/walls.js.map +1 -0
- package/dist/upkeep.d.ts +1 -1
- package/dist/upkeep.d.ts.map +1 -1
- package/dist/upkeep.js +4 -1
- package/dist/upkeep.js.map +1 -1
- package/dist/util/actions-folder.d.ts +2 -0
- package/dist/util/actions-folder.d.ts.map +1 -0
- package/dist/util/actions-folder.js +9 -0
- package/dist/util/actions-folder.js.map +1 -0
- package/dist/util/front-matter.d.ts +31 -4
- package/dist/util/front-matter.d.ts.map +1 -1
- package/dist/util/front-matter.js +95 -3
- package/dist/util/front-matter.js.map +1 -1
- package/dist/util/private-file.d.ts +14 -0
- package/dist/util/private-file.d.ts.map +1 -0
- package/dist/util/private-file.js +82 -0
- package/dist/util/private-file.js.map +1 -0
- package/dist/util/private-fs.d.ts +25 -0
- package/dist/util/private-fs.d.ts.map +1 -0
- package/dist/util/private-fs.js +253 -0
- package/dist/util/private-fs.js.map +1 -0
- package/dist/util/state.d.ts.map +1 -1
- package/dist/util/state.js +3 -0
- package/dist/util/state.js.map +1 -1
- package/dist/vendor/tree-sitter-swift/LICENSE +21 -0
- package/dist/vendor/tree-sitter-swift/node-types.json +30694 -0
- package/dist/vendor/tree-sitter-swift/prebuilds/darwin-arm64/tree-sitter-swift.node +0 -0
- package/dist/vendor/tree-sitter-swift/prebuilds/darwin-x64/tree-sitter-swift.node +0 -0
- package/dist/vendor/tree-sitter-swift/prebuilds/linux-arm64/tree-sitter-swift.node +0 -0
- package/dist/vendor/tree-sitter-swift/prebuilds/linux-x64/tree-sitter-swift.node +0 -0
- package/dist/vendor/tree-sitter-swift/prebuilds/win32-arm64/tree-sitter-swift.node +0 -0
- package/dist/vendor/tree-sitter-swift/prebuilds/win32-x64/tree-sitter-swift.node +0 -0
- package/dist/viewer/app.js +2 -2
- package/package.json +10 -7
- package/scripts/run-tests.mjs +14 -2
- package/scripts/stamp-telemetry-key.mjs +8 -5
- package/scripts/vendor-grammars.mjs +35 -0
|
@@ -0,0 +1,396 @@
|
|
|
1
|
+
import { hookUnrun, quotedTextHit, simpleCommands } from '../trace/shell.js';
|
|
2
|
+
export const MAX_RUN_LINES = 12;
|
|
3
|
+
export const MAX_STEP_CHARS = 300;
|
|
4
|
+
/** The words after a program, to the end of its command (an unquoted-looking `;`, `&`, `|`, `)`, newline or backtick), quotes dropped. */
|
|
5
|
+
/** How far past a program word its arguments are read: a call's own arguments, never the rest of a 2 MB command. */
|
|
6
|
+
const ARGS_MAX = 4096;
|
|
7
|
+
/**
|
|
8
|
+
* The words after `from`, up to the end of that call. `until` is where the next match of the same program starts
|
|
9
|
+
* (callers pass it), so `git push git push …` reads each call once and the whole scan stays linear (g7 review).
|
|
10
|
+
*/
|
|
11
|
+
export function argsAfter(text, from, until = text.length) {
|
|
12
|
+
// `$(git rev-parse HEAD)` is one word to the shell, not the end of the command.
|
|
13
|
+
const rest = text.slice(from, Math.min(until, from + ARGS_MAX)).replace(/\$\([^()]*\)/g, '$X');
|
|
14
|
+
const end = rest.search(/[;&|)\n`]/);
|
|
15
|
+
return (end < 0 ? rest : rest.slice(0, end)).split(/\s+/).map((w) => w.replace(/^['"]+|['"]+$/g, '')).filter(Boolean);
|
|
16
|
+
}
|
|
17
|
+
/** Where a program word starts: not inside another word or path name (`/bin/rm` counts, `git-rm` doesn't). */
|
|
18
|
+
export const word = (name) => new RegExp(String.raw `(?<![\w./-])(?:[\w./-]*\/)?${name}(?=\s|$)`, 'g');
|
|
19
|
+
const PROD = new Set(['main', 'master', 'prod', 'production']);
|
|
20
|
+
const GIT_PUSH = /(?<![\w./-])(?:[\w./-]*\/)?git((?:\s+(?:-C|-c|--git-dir|--work-tree|--namespace)\s+\S+|\s+(?!(?:-C|-c|--git-dir|--work-tree|--namespace)\s)-[\w-]+(?:=\S+)?)*)\s+push(?=\s|$|[;&|)'"])/g;
|
|
21
|
+
export function pushes(text) {
|
|
22
|
+
const out = [];
|
|
23
|
+
const calls = [...text.matchAll(GIT_PUSH)];
|
|
24
|
+
for (const [i, m] of calls.entries()) {
|
|
25
|
+
const words = argsAfter(text, m.index + m[0].length, calls[i + 1]?.index);
|
|
26
|
+
let force = false;
|
|
27
|
+
let all = false;
|
|
28
|
+
let tags = false;
|
|
29
|
+
let flagsDone = false;
|
|
30
|
+
const pos = [];
|
|
31
|
+
for (let i = 0; i < words.length; i++) {
|
|
32
|
+
const w = words[i];
|
|
33
|
+
if (!flagsDone && w === '--')
|
|
34
|
+
flagsDone = true;
|
|
35
|
+
else if (flagsDone || !w.startsWith('-'))
|
|
36
|
+
pos.push(w);
|
|
37
|
+
else if (/^--force(?:-with-lease)?(?:=.*)?$/.test(w) || /^-[a-zA-Z]*f[a-zA-Z]*$/.test(w))
|
|
38
|
+
force = true;
|
|
39
|
+
else if (w === '--mirror')
|
|
40
|
+
force = all = true;
|
|
41
|
+
else if (w === '--all' || w === '--branches')
|
|
42
|
+
all = true;
|
|
43
|
+
else if (w === '--tags')
|
|
44
|
+
tags = true;
|
|
45
|
+
else if (/^(?:-o|--push-option|--repo|--receive-pack|--exec)$/.test(w))
|
|
46
|
+
i++;
|
|
47
|
+
}
|
|
48
|
+
const refspecs = pos.slice(1);
|
|
49
|
+
const dsts = [];
|
|
50
|
+
const srcs = [];
|
|
51
|
+
for (const r of refspecs) {
|
|
52
|
+
if (r.startsWith('+'))
|
|
53
|
+
force = true;
|
|
54
|
+
const x = r.replace(/^\+/, '');
|
|
55
|
+
const colon = x.lastIndexOf(':');
|
|
56
|
+
const src = colon < 0 ? x : x.slice(0, colon);
|
|
57
|
+
const dst = (colon < 0 ? x : x.slice(colon + 1)).replace(/^refs\/heads\//, '');
|
|
58
|
+
srcs.push(src);
|
|
59
|
+
dsts.push(dst === 'HEAD' || dst === '@' ? '<current>' : /[$`{}]/.test(dst) || !dst ? '<unknown>' : dst);
|
|
60
|
+
}
|
|
61
|
+
if (all)
|
|
62
|
+
dsts.push('<all>');
|
|
63
|
+
else if (!refspecs.length && !tags)
|
|
64
|
+
dsts.push('<current>');
|
|
65
|
+
out.push({ force, dsts, srcs });
|
|
66
|
+
}
|
|
67
|
+
return out;
|
|
68
|
+
}
|
|
69
|
+
export const unknownDst = (d) => d.startsWith('<');
|
|
70
|
+
const pushProd = (c) => pushes(c).some((p) => p.dsts.some((d) => PROD.has(d.toLowerCase()) || unknownDst(d)));
|
|
71
|
+
/** A value written out in the command, not read from a variable or a {param} (`$PW`, `"${PW:?set PW}"`, `{password}`, `<pw>`). */
|
|
72
|
+
export const written = (v) => {
|
|
73
|
+
const u = v.replace(/^['"]+|['"]+$/g, '');
|
|
74
|
+
return u.length >= 4 && !/^\$|^\{[A-Za-z_]\w*\}$|^<[^>]*>$|^\*+$|^-/.test(u);
|
|
75
|
+
};
|
|
76
|
+
/** The end of a branch name: not more of a name (`main-fix`, `main/x`, `main.old`). */
|
|
77
|
+
const SEP_END = String.raw `(?![\w:-])`;
|
|
78
|
+
/**
|
|
79
|
+
* The gated patterns, built once (they ran on every call: a 2 MB command split into pieces built them per piece). Every
|
|
80
|
+
* span inside a call is bounded, and migrate's flags can't be read two ways, so no command makes them backtrack (g7 review).
|
|
81
|
+
*/
|
|
82
|
+
const PUBLISH_RE = new RegExp(String.raw `\b(?:npm|pnpm|yarn|bun)\b(?:\s+[^\s;&|]+){0,12}?\s+(?:publish|pub)(?![\w:.-])|\b(?:changeset|lerna)\s+publish\b|\bnpx\s+np(?![\w-])|\b(?:poetry|uv|flit|hatch|deno|jsr|vsce|ovsx)\s+publish\b|\bcargo\s+publish\b|\btwine\s+upload\b|\bgem\s+push\b|\b(?:docker|podman)\s+(?:image\s+)?push\b|\bdocker\s+buildx\s+build\b[^;&|\n]{0,300}\s--push\b|\bdotnet\s+nuget\s+push\b|\bpod\s+trunk\s+push\b|\b(?:flutter|dart)\s+pub\s+publish\b|\bmix\s+hex\.publish\b|\bmvn\b[^;&|\n]{0,300}\sdeploy\b|\bgradlew?\b[^;&|\n]{0,300}\spublish\w*\b`, 'i');
|
|
83
|
+
const DEPLOY_RE = new RegExp(String.raw `\bvercel\b[^;&|\n]{0,300}\s--prod\b|\bvercel\s+(?:deploy|promote|rollback)\b|\bvercel\s+alias\s+set\b|\bnetlify(?:-cli)?\s+deploy\b[^;&|\n]{0,300}\s--prod\b|\bfly(?:ctl)?\s+deploy\b|\bkubectl\b[^;&|\n]{0,300}?\s(?:apply|create|replace|patch|delete|scale|set|edit|rollout\s+(?:restart|undo))(?![\w-])|\bhelm\b[^;&|\n]{0,300}?\s(?:upgrade|install|uninstall|rollback|delete)(?![\w-])|\b(?:terraform|tofu)\b(?:\s+-chdir=\S+)?\s+(?:apply|destroy)\b|\bwrangler\b[^;&|\n]{0,300}\s(?:deploy|publish)\b|\bgcloud\b[^;&|\n]{0,300}\sdeploy\b|\b(?:serverless|sls|cdk|sam)\s+deploy\b|\bpulumi\s+up\b|\bfirebase\s+deploy\b|\brailway\s+up\b|\bheroku\s+(?:releases:rollback|container:release)\b|\b(?:npm|pnpm|yarn|bun)\s+(?:run\s+)?deploy(?:[:-]prod(?:uction)?)?${SEP_END}|\bmake\s+deploy(?:-prod(?:uction)?)?${SEP_END}`, 'i');
|
|
84
|
+
const MIGRATE_RE = new RegExp(String.raw `\bprisma\s+(?:migrate\s+deploy|db\s+push)\b|\bsupabase\s+(?:db\s+push|migration\s+up)\b|\bknex\s+migrate:latest\b|\balembic\s+upgrade\b|\bdb:migrate\b|\bmanage\.py\s+migrate\b|\becto\.migrate\b|\bflyway\s+migrate\b|\bliquibase\s+update\b|\bdbmate\s+(?:up|migrate)\b|\bdrizzle-kit\s+(?:push|migrate)\b|\bgoose\b[^;&|\n]{0,300}\sup\b|\batlas\s+migrate\s+apply\b|(?:^|[\s/])migrat\w*(?:\s+-{1,2}\w[\w-]*(?:=\S+|\s+(?!-)(?!(?:up|deploy|apply|run)\b)\S+)?){0,16}\s+(?:up|deploy|apply|run)\b|\b(?:npm|pnpm|yarn|bun)\s+(?:run\s+)?(?:db:)?migrat\w*(?::(?:up|deploy|prod|latest))?${SEP_END}`, 'i');
|
|
85
|
+
/**
|
|
86
|
+
* D93: logging in to a service, wherever it sits in the call (`script -q /dev/null npm login`, `env … npm login`,
|
|
87
|
+
* `npx vercel login`). Flags before npm's command are read only as `--flag` or `--flag=value` (a value after a space
|
|
88
|
+
* would let every word be either, which costs a second on 2 MB of `npm --a `); aws's flags take a value either way,
|
|
89
|
+
* a flag word starting with `-` and a value not. Every span is bounded.
|
|
90
|
+
*/
|
|
91
|
+
const LOGIN_RE = new RegExp([
|
|
92
|
+
String.raw `\b(?:npm|pnpm)(?:\s+-{1,2}[\w-]{1,64}(?:=[^\s;&|]{0,256})?){0,6}\s+(?:login|adduser|add-user)(?![\w:.-])`,
|
|
93
|
+
String.raw `\byarn(?:\s+npm)?\s+login(?![\w:.-])`,
|
|
94
|
+
String.raw `\bgh\s+auth\s+login\b`,
|
|
95
|
+
String.raw `\bvercel\s+login\b`,
|
|
96
|
+
String.raw `\b(?:docker|podman)\s+login\b`,
|
|
97
|
+
String.raw `\baws(?:\s+--[\w-]{1,64}(?:=[^\s;&|]{0,256}|\s+(?!-)[^\s;&|]{1,256})?){0,6}\s+(?:configure(?![\w-])(?!\s+(?:get|list|list-profiles|export-credentials)\b)|sso\s+login\b)`,
|
|
98
|
+
String.raw `\bgcloud\s+auth\s+(?:application-default\s+)?login\b`,
|
|
99
|
+
String.raw `\bfirebase(?:-tools)?\s+login\b`,
|
|
100
|
+
String.raw `\bheroku\s+(?:auth:)?login\b`,
|
|
101
|
+
String.raw `\baz\s+login\b`,
|
|
102
|
+
].join('|'), 'i');
|
|
103
|
+
const GATED = [
|
|
104
|
+
['publish', (c) => PUBLISH_RE.test(c)],
|
|
105
|
+
['push-prod', pushProd],
|
|
106
|
+
['deploy', (c) => DEPLOY_RE.test(c)],
|
|
107
|
+
['merge', (c) => /\bgh\s+pr\s+merge\b|\bglab\s+mr\s+merge\b/i.test(c)
|
|
108
|
+
|| (/\bgh\s+api\b/i.test(c) && /(?:-X|--method)[\s=]+(?:PUT|POST)\b/i.test(c) && /\/pulls\/[^/\s'"]+\/merge\b|\/merges\b/i.test(c))],
|
|
109
|
+
['migrate', (c) => MIGRATE_RE.test(c)],
|
|
110
|
+
['prune', (c) => /\b(?:docker|podman)\s+(?:system|volume|image|container)\s+prune\b|\b(?:docker|podman)\s+volume\s+rm\b/i.test(c)],
|
|
111
|
+
['login', (c) => LOGIN_RE.test(c)],
|
|
112
|
+
];
|
|
113
|
+
/** `--dry-run`, `--dry-run=client`: changes nothing. `--dry-run=false` and kubectl's `--dry-run=none` do. */
|
|
114
|
+
const DRY = /(?:^|\s)--dry-run(?:=(?!(?:false|0|none)\b)\S+)?(?=\s|$|[;&|)])/;
|
|
115
|
+
/** Every gated kind whose pattern appears anywhere in `cmd`, dry run or not: linear, for a command too long to split (3.3). */
|
|
116
|
+
export function gatedAnywhere(cmd) {
|
|
117
|
+
const c = String(cmd ?? '');
|
|
118
|
+
return new Set(GATED.filter(([, hit]) => hit(c)).map(([kind]) => kind));
|
|
119
|
+
}
|
|
120
|
+
export function gatedKind(cmd) {
|
|
121
|
+
const c = String(cmd ?? '');
|
|
122
|
+
// A dry run changes nothing: only the commands without one count.
|
|
123
|
+
const parts = DRY.test(c) ? simpleCommands(c).filter((x) => !DRY.test(x)) : [c];
|
|
124
|
+
for (const p of parts)
|
|
125
|
+
for (const [kind, hit] of GATED)
|
|
126
|
+
if (hit(p))
|
|
127
|
+
return kind;
|
|
128
|
+
return null;
|
|
129
|
+
}
|
|
130
|
+
const REGISTRY = [
|
|
131
|
+
[/\bcargo\s+publish\b/i, 'crates.io'], [/\btwine\s+upload\b|\b(?:poetry|uv|flit|hatch)\s+publish\b/i, 'PyPI'], [/\bgem\s+push\b/i, 'RubyGems'],
|
|
132
|
+
[/\b(?:docker|podman)\b/i, 'the image registry'], [/\b(?:vsce|ovsx)\s+publish\b/i, 'the extension marketplace'],
|
|
133
|
+
];
|
|
134
|
+
const SHA = /^[0-9a-f]{7,40}$/;
|
|
135
|
+
/** Which service a login step logs in to, for its ask. */
|
|
136
|
+
const LOGIN_TO = [
|
|
137
|
+
[/\b(?:npm|pnpm|yarn)\b/i, 'npm'], [/\bgh\s+auth\b/i, 'GitHub'], [/\bvercel\b/i, 'Vercel'], [/\b(?:docker|podman)\s+login\b/i, 'the image registry'],
|
|
138
|
+
[/\baws\b/i, 'AWS'], [/\bgcloud\b/i, 'Google Cloud'], [/\bfirebase/i, 'Firebase'], [/\bheroku\b/i, 'Heroku'], [/\baz\s+login\b/i, 'Azure'],
|
|
139
|
+
];
|
|
140
|
+
/** D116 item 5: the login a command runs, as the person would type it (flags dropped), and the service; null when none. */
|
|
141
|
+
export function loginOf(cmd) {
|
|
142
|
+
const m = LOGIN_RE.exec(String(cmd ?? ''));
|
|
143
|
+
if (!m)
|
|
144
|
+
return null;
|
|
145
|
+
const login = m[0].replace(/\s+-{1,2}[\w-]+(?:=\S*)?/g, '').replace(/\s+/g, ' ').trim().toLowerCase();
|
|
146
|
+
return { service: LOGIN_TO.find(([re]) => re.test(m[0]))?.[1] ?? 'the service', login };
|
|
147
|
+
}
|
|
148
|
+
/** "publishes 0.22.1 to npm", "moves prod to 4e1c9a2", ... (4.11). */
|
|
149
|
+
export function gatedWhat(kind, cmd, values) {
|
|
150
|
+
// A value worked out when it runs (`$(git rev-parse HEAD)`) reads as a variable.
|
|
151
|
+
const fill = (t) => t.replace(/\{([A-Za-z_]\w*)\}/g, (m, k) => (values[k] === undefined ? m : /[$`]/.test(values[k]) ? '$X' : values[k]));
|
|
152
|
+
const c = fill(String(cmd ?? ''));
|
|
153
|
+
if (kind === 'publish') {
|
|
154
|
+
const where = REGISTRY.find(([re]) => re.test(c))?.[1] ?? 'npm';
|
|
155
|
+
const v = values.version;
|
|
156
|
+
return `publishes ${v && !v.includes('$') ? v : 'a new version'} to ${where}`;
|
|
157
|
+
}
|
|
158
|
+
if (kind === 'push-prod') {
|
|
159
|
+
for (const p of pushes(c)) {
|
|
160
|
+
const i = p.dsts.findIndex((d) => PROD.has(d.toLowerCase()));
|
|
161
|
+
if (i >= 0) {
|
|
162
|
+
const src = p.srcs[i] ?? '';
|
|
163
|
+
const to = SHA.test(src) ? src.slice(0, 7) : !src || /[$`{}]/.test(src) || src === 'HEAD' || src === p.dsts[i] ? 'HEAD' : src;
|
|
164
|
+
return `moves ${p.dsts[i]} to ${to}`;
|
|
165
|
+
}
|
|
166
|
+
if (p.dsts.includes('<all>'))
|
|
167
|
+
return 'pushes every branch';
|
|
168
|
+
if (p.dsts.includes('<current>'))
|
|
169
|
+
return 'pushes the current branch';
|
|
170
|
+
if (p.dsts.includes('<unknown>'))
|
|
171
|
+
return 'pushes to a branch named when it runs';
|
|
172
|
+
}
|
|
173
|
+
// A branch the skill fills in when it runs: not a branch name to show.
|
|
174
|
+
if (c !== String(cmd ?? '') && pushes(String(cmd).replace(/\{[A-Za-z_]\w*\}/g, '$X')).some((p) => p.dsts.includes('<unknown>'))) {
|
|
175
|
+
return 'pushes to a branch named when it runs';
|
|
176
|
+
}
|
|
177
|
+
return 'moves prod';
|
|
178
|
+
}
|
|
179
|
+
if (kind === 'deploy')
|
|
180
|
+
return 'deploys to production';
|
|
181
|
+
if (kind === 'merge') {
|
|
182
|
+
const pr = values.pr ?? /\bmerge\s+#?(\d+)\b|\/pulls\/(\d+)\/merge\b/.exec(c)?.slice(1).find(Boolean);
|
|
183
|
+
return pr && /^\d+$/.test(pr) ? `merges PR #${pr}` : 'merges a PR';
|
|
184
|
+
}
|
|
185
|
+
if (kind === 'migrate')
|
|
186
|
+
return 'runs a database migration';
|
|
187
|
+
if (kind === 'login')
|
|
188
|
+
return `logs in to ${LOGIN_TO.find(([re]) => re.test(c))?.[1] ?? 'a service'}`;
|
|
189
|
+
return 'deletes unused Docker data';
|
|
190
|
+
}
|
|
191
|
+
/** Consecutive steps of one gated kind form one group; one host ask covers a group (3.3). */
|
|
192
|
+
export function gatedGroups(steps) {
|
|
193
|
+
const out = [];
|
|
194
|
+
let prev = null;
|
|
195
|
+
for (const s of steps) {
|
|
196
|
+
if (s.gated && s.gated === prev)
|
|
197
|
+
out[out.length - 1].steps.push(s.n);
|
|
198
|
+
else if (s.gated)
|
|
199
|
+
out.push({ kind: s.gated, steps: [s.n] });
|
|
200
|
+
prev = s.gated;
|
|
201
|
+
}
|
|
202
|
+
return out;
|
|
203
|
+
}
|
|
204
|
+
/** A Trail program word anywhere in the call: named, through a package, an alias or a variable (`t=trail`). */
|
|
205
|
+
const TRAIL_WORD = /(?<![\w./-])(?:trail|graft|trail-code)(?![\w./-])|@trailhq\/trail-code\b|@nanonets\/graft\b|\bbin\/(?:trail|graft)\.js\b/i;
|
|
206
|
+
/**
|
|
207
|
+
* Flags between `skills` and the switch. Bounded, like every quantifier below: the guard reads commands of up to
|
|
208
|
+
* 2 MB on the 5 s PreToolUse budget, after which Claude Code runs the command anyway (g7 review).
|
|
209
|
+
*/
|
|
210
|
+
const FL = String.raw `(?:-[^\s]{1,64}\s+){0,8}`;
|
|
211
|
+
const REASONS = {
|
|
212
|
+
'offers-on': 'Only the person turns skill offers on, in their own terminal: trail skills offers on. Tell the person; don\'t run it for them.',
|
|
213
|
+
'skills-on': 'Only the person turns skills on, in their own terminal: trail skills on. Tell the person; don\'t run it for them.',
|
|
214
|
+
'keep-held': 'Keeping a held skill is the person\'s yes, so only the person runs trail skills keep, in their own terminal. Tell the person; don\'t run it for them.',
|
|
215
|
+
'hook-script': 'Trail\'s hook scripts run only from the host\'s hooks, never by hand. If something about Trail looks wrong, tell the person.',
|
|
216
|
+
'restore-version': 'Only the person brings back an older version of a skill, in their own terminal: trail skills restore {name} --version {n}. Tell the person; don\'t run it for them.',
|
|
217
|
+
};
|
|
218
|
+
/**
|
|
219
|
+
* The person-only switches after `skills`, whatever runs them: a Trail binary, a renamed or copied one
|
|
220
|
+
* (`node /tmp/t.js skills on`), an alias or a variable (`T=trail; $T skills on`). Printing them is denied too.
|
|
221
|
+
*/
|
|
222
|
+
const SWITCH = [
|
|
223
|
+
['offers-on', new RegExp(String.raw `\bskills\s+${FL}offers\s+${FL}on\b`, 'i')],
|
|
224
|
+
['skills-on', new RegExp(String.raw `\bskills\s+${FL}on\b`, 'i')],
|
|
225
|
+
['keep-held', new RegExp(String.raw `\bskills\s+${FL}keep\b`, 'i')],
|
|
226
|
+
];
|
|
227
|
+
/** With a Trail word in the call: the switch not written out (`trail skills $x`, `trail skills $(echo on)`). */
|
|
228
|
+
const DYNAMIC_SWITCH = [
|
|
229
|
+
['offers-on', new RegExp(String.raw `\bskills\s+${FL}offers\s+${FL}[$\x60]`, 'i')],
|
|
230
|
+
['skills-on', new RegExp(String.raw `\bskills\s+${FL}[$\x60]`, 'i')],
|
|
231
|
+
];
|
|
232
|
+
/** With a Trail word in the call: the word `skills` not written out (`trail $s on`, `trail $(echo skills) on`). */
|
|
233
|
+
const AFTER = String.raw `\s+${FL}(?:(offers)\s+${FL}on|(on)|(keep))\b`;
|
|
234
|
+
const DYNAMIC_WORD = [
|
|
235
|
+
[/\$\w/, new RegExp(String.raw `\$\w{1,64}${AFTER}`, 'i')],
|
|
236
|
+
[/\$\{/, new RegExp(String.raw `\}${AFTER}`, 'i')],
|
|
237
|
+
[/\$\(/, new RegExp(String.raw `\)${AFTER}`, 'i')],
|
|
238
|
+
[/\x60/, new RegExp(String.raw `\x60${AFTER}`, 'i')],
|
|
239
|
+
];
|
|
240
|
+
/** xargs or parallel supplying the switch from stdin: `skills` ends the call or a placeholder follows it. */
|
|
241
|
+
const XARGS = /\b(?:xargs|parallel)\b/i;
|
|
242
|
+
const XARGS_SKILLS = /\bskills(?:\s+-[^\s]{1,64}){0,8}\s*(?:$|\{\}|%)/i;
|
|
243
|
+
/**
|
|
244
|
+
* P28: `skills restore <name> --version <n>`, read per command (split on `; & | newline`, one pass, so a flag
|
|
245
|
+
* any distance after the verb is found and a 2 MB command stays linear). With a Trail word in the call, also the
|
|
246
|
+
* forms that don't write it out: the flag or the verb from a variable or a substitution, or `skills` itself.
|
|
247
|
+
*/
|
|
248
|
+
const RESTORE_AT = new RegExp(String.raw `\bskills\s+${FL}restore\b`, 'i');
|
|
249
|
+
const RESTORE_SKILLS_DYNAMIC = new RegExp(String.raw `\bskills\s+${FL}[$\x60]`, 'i');
|
|
250
|
+
const RESTORE_WORD_DYNAMIC = new RegExp(String.raw `(?:\$\w{1,64}|[})\x60])\s+${FL}restore\b`, 'i');
|
|
251
|
+
const VERSION_FLAG = /(?<![\w-])--version(?![\w-])/;
|
|
252
|
+
function restoreVersionIn(c, trailWord) {
|
|
253
|
+
if (!/restore|--version/i.test(c))
|
|
254
|
+
return false;
|
|
255
|
+
for (const seg of c.split(/[;&|\n]/)) {
|
|
256
|
+
const m = RESTORE_AT.exec(seg);
|
|
257
|
+
const rest = m ? seg.slice(m.index + m[0].length) : '';
|
|
258
|
+
if (m && VERSION_FLAG.test(rest))
|
|
259
|
+
return true;
|
|
260
|
+
if (!trailWord)
|
|
261
|
+
continue;
|
|
262
|
+
if (m && /[$\x60]/.test(rest))
|
|
263
|
+
return true;
|
|
264
|
+
if (VERSION_FLAG.test(seg) && (RESTORE_SKILLS_DYNAMIC.test(seg) || RESTORE_WORD_DYNAMIC.test(seg)))
|
|
265
|
+
return true;
|
|
266
|
+
}
|
|
267
|
+
return false;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Trail's hook scripts and hook modules: the shims by name or by a glob (`t*-hooks.cjs`, `trail-hook?.cjs`), a
|
|
271
|
+
* helpers path the shell works out (`.claude/helpers/*`, `.claude/helpers/$(ls …)`), and the package's
|
|
272
|
+
* `dist/claude/<module>.js` run or imported by hand.
|
|
273
|
+
*/
|
|
274
|
+
const HOOK_SCRIPT = [
|
|
275
|
+
/\b(?:trail|graft)-hooks?[\w*?[\]-]{0,64}(?:\.cjs\b|\*)/i,
|
|
276
|
+
/hooks?[*?[\]]{0,8}\.cjs\b/i,
|
|
277
|
+
/\.claude\/helpers\/[^\s/]{0,64}[*?[$\x60]/i,
|
|
278
|
+
/(?:@trailhq\/trail-code|@nanonets\/graft|\bdist)\/(?:dist\/)?claude\/[\w-]{1,64}\.js\b/i,
|
|
279
|
+
];
|
|
280
|
+
/** What `shellWords` drops: a line continuation, then any quote or backslash. */
|
|
281
|
+
const UNSAID = /\\\n|["'\\]/g;
|
|
282
|
+
/** The words the shell runs: quotes and backslashes don't change them, and a line continuation joins with nothing. */
|
|
283
|
+
export function shellWords(cmd) {
|
|
284
|
+
const s = String(cmd ?? '');
|
|
285
|
+
// Slices between the few dropped characters; past 4,096 of them, one pass over char codes (two regex
|
|
286
|
+
// replaces cost 20+ ms on 2 MB of `"a" `; a copy of a 2 MB command with a few quotes costs 13).
|
|
287
|
+
let r = '';
|
|
288
|
+
let last = 0;
|
|
289
|
+
let n = 0;
|
|
290
|
+
UNSAID.lastIndex = 0;
|
|
291
|
+
for (let m = UNSAID.exec(s); m; m = UNSAID.exec(s)) {
|
|
292
|
+
r += s.slice(last, m.index);
|
|
293
|
+
last = m.index + m[0].length;
|
|
294
|
+
if (++n > 4096)
|
|
295
|
+
return r + dropUnsaid(s, last);
|
|
296
|
+
}
|
|
297
|
+
return last ? r + s.slice(last) : s;
|
|
298
|
+
}
|
|
299
|
+
function dropUnsaid(s, from) {
|
|
300
|
+
const out = new Uint16Array(s.length - from);
|
|
301
|
+
let k = 0;
|
|
302
|
+
for (let i = from; i < s.length; i++) {
|
|
303
|
+
const c = s.charCodeAt(i);
|
|
304
|
+
if (c === 34 || c === 39)
|
|
305
|
+
continue;
|
|
306
|
+
if (c === 92) {
|
|
307
|
+
if (s.charCodeAt(i + 1) === 10)
|
|
308
|
+
i++;
|
|
309
|
+
continue;
|
|
310
|
+
}
|
|
311
|
+
out[k++] = c;
|
|
312
|
+
}
|
|
313
|
+
let r = '';
|
|
314
|
+
for (let i = 0; i < k; i += 8192)
|
|
315
|
+
r += String.fromCharCode.apply(null, out.subarray(i, Math.min(k, i + 8192)));
|
|
316
|
+
return r;
|
|
317
|
+
}
|
|
318
|
+
function hitOf(m) {
|
|
319
|
+
return m[1] ? 'offers-on' : m[2] ? 'skills-on' : 'keep-held';
|
|
320
|
+
}
|
|
321
|
+
/** Past this a command is read whole: any switch denies, wherever it sits (the lexer on 2 MB takes seconds). */
|
|
322
|
+
const TEXT_MAX = 64 * 1024;
|
|
323
|
+
/** The switch written out, as the shell's words read: `skills on`, `skills offers on`, `skills keep`. */
|
|
324
|
+
function staticSwitch(c) {
|
|
325
|
+
if (!/skills/i.test(c))
|
|
326
|
+
return null;
|
|
327
|
+
for (const [hit, re] of SWITCH)
|
|
328
|
+
if (re.test(c))
|
|
329
|
+
return hit;
|
|
330
|
+
return restoreVersionIn(c, false) ? 'restore-version' : null;
|
|
331
|
+
}
|
|
332
|
+
/** The switch or the word `skills` not written out, with a Trail word in the call, and xargs supplying it. */
|
|
333
|
+
function dynamicSwitch(c, trailWord) {
|
|
334
|
+
if (trailWord && restoreVersionIn(c, true))
|
|
335
|
+
return 'restore-version';
|
|
336
|
+
if (trailWord) {
|
|
337
|
+
for (const [hit, re] of DYNAMIC_SWITCH)
|
|
338
|
+
if (re.test(c))
|
|
339
|
+
return hit;
|
|
340
|
+
for (const [has, re] of DYNAMIC_WORD) {
|
|
341
|
+
const m = has.test(c) ? re.exec(c) : null;
|
|
342
|
+
if (m)
|
|
343
|
+
return hitOf(m);
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
if (XARGS.test(c)) {
|
|
347
|
+
for (const seg of c.split(/[;&|\n]/))
|
|
348
|
+
if (XARGS.test(seg) && XARGS_SKILLS.test(seg))
|
|
349
|
+
return 'skills-on';
|
|
350
|
+
}
|
|
351
|
+
return null;
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* D89: a switch found in the text is denied where the shell runs it, not where it is only words: inside quoted
|
|
355
|
+
* arguments of grep, rg, git commit or log, echo or printf not fed to a shell, sed, awk patterns, cat. Over
|
|
356
|
+
* TEXT_MAX, or when no one command carries it, the whole text decides.
|
|
357
|
+
*/
|
|
358
|
+
function runsSwitch(cmd, whole, find) {
|
|
359
|
+
if (cmd.length > TEXT_MAX)
|
|
360
|
+
return whole;
|
|
361
|
+
return quotedTextHit(cmd, (t) => find(shellWords(t)), whole);
|
|
362
|
+
}
|
|
363
|
+
const hookNamed = (t) => (HOOK_SCRIPT.some((re) => re.test(shellWords(t))) ? true : null);
|
|
364
|
+
const namesHook = (t) => hookNamed(t) === true;
|
|
365
|
+
/** fix-lab5: a command only naming a hook script leaves it unrun (shell-words' hookUnrun: a read, a delete, a check, an edit of another file). */
|
|
366
|
+
const leavesHookUnrun = (head, bodies, hitOf) => hookUnrun(head, bodies, hitOf, namesHook);
|
|
367
|
+
/** D116 item 2: the hook script is run, not only read (an argument of grep, sed, cat, a pager, head, git log) or named (fix-lab5). */
|
|
368
|
+
function runsHookScript(raw) {
|
|
369
|
+
if (raw.length > TEXT_MAX)
|
|
370
|
+
return true;
|
|
371
|
+
return quotedTextHit(raw, hookNamed, true, 0, leavesHookUnrun) !== null;
|
|
372
|
+
}
|
|
373
|
+
/** P28's words, with the person's own command when the name and version are written out (else `<name>`, `<n>`). */
|
|
374
|
+
function restoreReason(c) {
|
|
375
|
+
const m = /\bskills\s+restore\s+([a-z0-9][a-z0-9-]{0,63})\s+--version[=\s]([1-9]\d{0,5})(?![\w-])/i.exec(c)
|
|
376
|
+
?? /\bskills\s+restore\s+--version[=\s]([1-9]\d{0,5})\s+([a-z0-9][a-z0-9-]{0,63})(?![\w-])/i.exec(c);
|
|
377
|
+
const [name, n] = m ? (/^\d/.test(m[1]) ? [m[2], m[1]] : [m[1], m[2]]) : ['<name>', '<n>'];
|
|
378
|
+
return REASONS['restore-version'].replace('{name}', name).replace('{n}', n);
|
|
379
|
+
}
|
|
380
|
+
/** 4.11 agent guard: commands only the person may run, and Trail's hook scripts run by hand. Linear in the command. */
|
|
381
|
+
export function agentGuard(cmd) {
|
|
382
|
+
const raw = String(cmd ?? '');
|
|
383
|
+
const c = shellWords(raw);
|
|
384
|
+
const found = (hit) => ({ hit, reason: hit === 'restore-version' ? restoreReason(c) : REASONS[hit] });
|
|
385
|
+
const fixed = staticSwitch(c);
|
|
386
|
+
const ran = fixed && runsSwitch(raw, fixed, staticSwitch);
|
|
387
|
+
if (ran)
|
|
388
|
+
return found(ran);
|
|
389
|
+
if (HOOK_SCRIPT.some((re) => re.test(c)) && runsHookScript(raw))
|
|
390
|
+
return found('hook-script');
|
|
391
|
+
const trailWord = TRAIL_WORD.test(c);
|
|
392
|
+
const dynamic = dynamicSwitch(c, trailWord);
|
|
393
|
+
const ranDynamic = dynamic && runsSwitch(raw, dynamic, (t) => dynamicSwitch(t, trailWord));
|
|
394
|
+
return ranDynamic ? found(ranDynamic) : null;
|
|
395
|
+
}
|
|
396
|
+
//# sourceMappingURL=risk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"risk.js","sourceRoot":"","sources":["../../src/skills/risk.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { RunSheet } from '../trace/types.js';
|
|
2
|
+
/** The run's own checkout when it holds, else the first hint that does (an older sheet has none); '' when none. */
|
|
3
|
+
export declare function runCheckout(sheet: Pick<RunSheet, 'repoKey' | 'checkout'>, env?: NodeJS.ProcessEnv, ...hints: Array<string | null | undefined>): string;
|
|
4
|
+
//# sourceMappingURL=run-checkout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-checkout.d.ts","sourceRoot":"","sources":["../../src/skills/run-checkout.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAelD,mHAAmH;AACnH,wBAAgB,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,GAAG,UAAU,CAAC,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,EAAE,GAAG,KAAK,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,MAAM,CAGnK"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The checkout a run ran in (D93), for everything that compiles the run as a
|
|
3
|
+
* skill: the prompt hook's asked save, the offer moment, both halves of the
|
|
4
|
+
* save gate and the held copy. Compile reads paths relative to that root, so
|
|
5
|
+
* every one of them must use the same one, taken from the run itself (its
|
|
6
|
+
* sheet, or the receipt the PreToolUse half wrote), never from the folder a
|
|
7
|
+
* command happens to run in: a session that starts in a folder above the
|
|
8
|
+
* repo and cds into it runs `trail skills add` up there.
|
|
9
|
+
*
|
|
10
|
+
* A folder is used only when it still exists and is the top of a git
|
|
11
|
+
* checkout whose repo key is the run's. Otherwise ''.
|
|
12
|
+
*/
|
|
13
|
+
import { statSync } from 'node:fs';
|
|
14
|
+
import { isAbsolute, resolve } from 'node:path';
|
|
15
|
+
import { repoPlace } from '../notes/home.js';
|
|
16
|
+
/** `dir` is an existing checkout's top, with the key `repoKey`. */
|
|
17
|
+
function holds(dir, repoKey, env) {
|
|
18
|
+
if (typeof dir !== 'string' || !dir || !isAbsolute(dir) || !repoKey)
|
|
19
|
+
return false;
|
|
20
|
+
try {
|
|
21
|
+
if (!statSync(dir).isDirectory())
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
const place = repoPlace(dir, env);
|
|
28
|
+
return place.git && place.key === repoKey && resolve(place.checkout) === resolve(dir);
|
|
29
|
+
}
|
|
30
|
+
/** The run's own checkout when it holds, else the first hint that does (an older sheet has none); '' when none. */
|
|
31
|
+
export function runCheckout(sheet, env = process.env, ...hints) {
|
|
32
|
+
for (const dir of [sheet.checkout, ...hints])
|
|
33
|
+
if (holds(dir, sheet.repoKey, env))
|
|
34
|
+
return resolve(dir);
|
|
35
|
+
return '';
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=run-checkout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-checkout.js","sourceRoot":"","sources":["../../src/skills/run-checkout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEhD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,mEAAmE;AACnE,SAAS,KAAK,CAAC,GAAY,EAAE,OAAe,EAAE,GAAsB;IAClE,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAClF,IAAI,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;YAAE,OAAO,KAAK,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAClC,OAAO,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;AACxF,CAAC;AAED,mHAAmH;AACnH,MAAM,UAAU,WAAW,CAAC,KAA6C,EAAE,MAAyB,OAAO,CAAC,GAAG,EAAE,GAAG,KAAuC;IACzJ,KAAK,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC;QAAE,IAAI,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC;YAAE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC;IACtG,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { SkillInjection } from '../trace/types.js';
|
|
2
|
+
import { type Candidate } from './recall.js';
|
|
3
|
+
import type { ParsedSkill } from './types.js';
|
|
4
|
+
import { type ProbeResult } from './probes.js';
|
|
5
|
+
import { type Lesson } from './lessons.js';
|
|
6
|
+
import { type Anchor } from './anchors.js';
|
|
7
|
+
export { runProbes, probePassWords, readyProbes, PROBE_BUDGET_MS, type ProbeResult, type ProbeOpts, type ProbeGit } from './probes.js';
|
|
8
|
+
export declare const RUN_BLOCK_MAX = 1200;
|
|
9
|
+
/** 'Oct 14' for a local date (`2026-10-14`) or an ISO time, in local time. */
|
|
10
|
+
export declare function dayWords(d: string | null | undefined): string;
|
|
11
|
+
/**
|
|
12
|
+
* canAsk: interactive entry, permission_mode in hostFacts.askModes, host claude (4.15 step 5).
|
|
13
|
+
* 1b: `lessons` (default: the skill folder's) end the block, guardrail-kind first (4.16); `gone` (default: the
|
|
14
|
+
* anchors gone where the candidate was found) opens it with the out-of-date line (4.18). Both count toward 1,200:
|
|
15
|
+
* lessons are the second thing cut, oldest first; guardrail-kind lessons and the out-of-date line never are.
|
|
16
|
+
*/
|
|
17
|
+
export declare function runBlock(c: Candidate, ctx: {
|
|
18
|
+
values: Record<string, string>;
|
|
19
|
+
notes: string[];
|
|
20
|
+
probes: ProbeResult[];
|
|
21
|
+
canAsk: boolean;
|
|
22
|
+
header: 'job' | 'compact';
|
|
23
|
+
lastFail: {
|
|
24
|
+
step: number;
|
|
25
|
+
at: string;
|
|
26
|
+
} | null;
|
|
27
|
+
lessons?: Lesson[];
|
|
28
|
+
gone?: Anchor[];
|
|
29
|
+
anchorDeadline?: number;
|
|
30
|
+
}): string;
|
|
31
|
+
/**
|
|
32
|
+
* D116 item 1: the check is a step that only reads (a status, a view, a log, a GET, a tests or query run), so a
|
|
33
|
+
* status question may run it. A push (it is the step that moved the branch), anything gated, or a command
|
|
34
|
+
* that changes things is not: that skill gets no check line.
|
|
35
|
+
*/
|
|
36
|
+
export declare function readOnlyCheck(s: Pick<ParsedSkill, 'check' | 'steps' | 'meta'>): boolean;
|
|
37
|
+
/** The check line for a status question; '' when the skill has no check, or none that only reads (D116 item 1). */
|
|
38
|
+
export declare function checkLine(c: Candidate, values: Record<string, string>): string;
|
|
39
|
+
/** The SkillInjection recorded for a block or check line (live: true for job, name and compact cues). */
|
|
40
|
+
export declare function injectionFor(c: Candidate, values: Record<string, string>, cue: SkillInjection['cue'], epoch: number, now?: Date): SkillInjection;
|
|
41
|
+
/** g4's open issue 4 (D71 d): the ready probes that failed for a block ride on its injection, for the use line (never counted against the skill). */
|
|
42
|
+
export declare function withReadyFailed(inj: SkillInjection, probes: ProbeResult[]): SkillInjection;
|
|
43
|
+
/** 'trail: using skill <name> (v<n>, worked <Mon D>)'. */
|
|
44
|
+
export declare function useNotice(c: Candidate): string;
|
|
45
|
+
//# sourceMappingURL=runblock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runblock.d.ts","sourceRoot":"","sources":["../../src/skills/runblock.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAU,KAAK,SAAS,EAAE,MAAM,aAAa,CAAC;AAQrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAA8D,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AACvG,OAAO,EAA8B,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAGvE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvI,eAAO,MAAM,aAAa,OAAO,CAAC;AAMlC,8EAA8E;AAC9E,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAI7D;AA+CD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,EAAE,WAAW,EAAE,CAAC;IAAC,MAAM,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,KAAK,GAAG,SAAS,CAAC;IAAC,QAAQ,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CA0DvR;AAMD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC,GAAG,OAAO,CASvF;AAED,mHAAmH;AACnH,wBAAgB,SAAS,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAM9E;AAUD,yGAAyG;AACzG,wBAAgB,YAAY,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,GAAG,cAAc,CAsB5J;AAED,qJAAqJ;AACrJ,wBAAgB,eAAe,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,cAAc,CAG1F;AAED,0DAA0D;AAC1D,wBAAgB,SAAS,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAG9C"}
|