@nanonets/graft 0.24.0 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -21
- 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/blast/render.js +1 -1
- package/dist/blast/render.js.map +1 -1
- package/dist/brand.js +1 -1
- package/dist/brand.js.map +1 -1
- package/dist/check/learning-edits.d.ts +18 -3
- package/dist/check/learning-edits.d.ts.map +1 -1
- package/dist/check/learning-edits.js +54 -10
- package/dist/check/learning-edits.js.map +1 -1
- package/dist/check/local-check.d.ts +7 -3
- package/dist/check/local-check.d.ts.map +1 -1
- package/dist/check/local-check.js +55 -11
- package/dist/check/local-check.js.map +1 -1
- package/dist/check/types.d.ts +11 -2
- package/dist/check/types.d.ts.map +1 -1
- package/dist/claude/format.d.ts +11 -7
- package/dist/claude/format.d.ts.map +1 -1
- package/dist/claude/format.js +50 -28
- 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/hook-layers.d.ts +4 -2
- package/dist/claude/hook-layers.d.ts.map +1 -1
- package/dist/claude/hook-layers.js +21 -4
- package/dist/claude/hook-layers.js.map +1 -1
- package/dist/claude/hooks.d.ts +9 -32
- package/dist/claude/hooks.d.ts.map +1 -1
- package/dist/claude/hooks.js +154 -350
- package/dist/claude/hooks.js.map +1 -1
- package/dist/claude/init.d.ts.map +1 -1
- package/dist/claude/init.js +56 -18
- package/dist/claude/init.js.map +1 -1
- package/dist/claude/note-signals.d.ts +6 -0
- package/dist/claude/note-signals.d.ts.map +1 -1
- package/dist/claude/note-signals.js +14 -3
- package/dist/claude/note-signals.js.map +1 -1
- package/dist/claude/post-bash.d.ts +26 -0
- package/dist/claude/post-bash.d.ts.map +1 -0
- package/dist/claude/post-bash.js +191 -0
- package/dist/claude/post-bash.js.map +1 -0
- package/dist/claude/pre-bash-skills.d.ts +21 -0
- package/dist/claude/pre-bash-skills.d.ts.map +1 -0
- package/dist/claude/pre-bash-skills.js +253 -0
- package/dist/claude/pre-bash-skills.js.map +1 -0
- package/dist/claude/pre-bash.d.ts +50 -0
- package/dist/claude/pre-bash.d.ts.map +1 -0
- package/dist/claude/pre-bash.js +245 -0
- package/dist/claude/pre-bash.js.map +1 -0
- package/dist/claude/prompt-consent.d.ts +19 -0
- package/dist/claude/prompt-consent.d.ts.map +1 -0
- package/dist/claude/prompt-consent.js +14 -0
- package/dist/claude/prompt-consent.js.map +1 -0
- package/dist/claude/prompt-hook.d.ts +76 -0
- package/dist/claude/prompt-hook.d.ts.map +1 -0
- package/dist/claude/prompt-hook.js +303 -0
- package/dist/claude/prompt-hook.js.map +1 -0
- package/dist/claude/prompt-skills.d.ts +19 -0
- package/dist/claude/prompt-skills.d.ts.map +1 -0
- package/dist/claude/prompt-skills.js +305 -0
- package/dist/claude/prompt-skills.js.map +1 -0
- package/dist/claude/session-metrics.js +4 -4
- package/dist/claude/session-metrics.js.map +1 -1
- package/dist/claude/settings-merge.d.ts +10 -0
- package/dist/claude/settings-merge.d.ts.map +1 -1
- package/dist/claude/settings-merge.js +46 -17
- package/dist/claude/settings-merge.js.map +1 -1
- package/dist/claude/shim-template.d.ts.map +1 -1
- package/dist/claude/shim-template.js +86 -28
- package/dist/claude/shim-template.js.map +1 -1
- package/dist/claude/skill-template.d.ts +2 -0
- package/dist/claude/skill-template.d.ts.map +1 -1
- package/dist/claude/skill-template.js +53 -34
- package/dist/claude/skill-template.js.map +1 -1
- package/dist/claude/skill-use.d.ts +16 -0
- package/dist/claude/skill-use.d.ts.map +1 -0
- package/dist/claude/skill-use.js +78 -0
- package/dist/claude/skill-use.js.map +1 -0
- 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/skills-wiring.d.ts +26 -0
- package/dist/claude/skills-wiring.d.ts.map +1 -0
- package/dist/claude/skills-wiring.js +110 -0
- package/dist/claude/skills-wiring.js.map +1 -0
- package/dist/claude/start-init.d.ts +13 -0
- package/dist/claude/start-init.d.ts.map +1 -0
- package/dist/claude/start-init.js +75 -0
- package/dist/claude/start-init.js.map +1 -0
- package/dist/claude/start-skills.d.ts +31 -0
- package/dist/claude/start-skills.d.ts.map +1 -0
- package/dist/claude/start-skills.js +274 -0
- package/dist/claude/start-skills.js.map +1 -0
- package/dist/claude/state.d.ts +19 -7
- package/dist/claude/state.d.ts.map +1 -1
- package/dist/claude/state.js +59 -4
- package/dist/claude/state.js.map +1 -1
- package/dist/claude/stop-skills.d.ts +23 -0
- package/dist/claude/stop-skills.d.ts.map +1 -0
- package/dist/claude/stop-skills.js +233 -0
- package/dist/claude/stop-skills.js.map +1 -0
- package/dist/claude/stop.d.ts +23 -0
- package/dist/claude/stop.d.ts.map +1 -0
- package/dist/claude/stop.js +219 -0
- package/dist/claude/stop.js.map +1 -0
- package/dist/claude/tally.d.ts +29 -41
- package/dist/claude/tally.d.ts.map +1 -1
- package/dist/claude/tally.js +111 -165
- package/dist/claude/tally.js.map +1 -1
- package/dist/claude/walls-hook.d.ts +52 -0
- package/dist/claude/walls-hook.d.ts.map +1 -0
- package/dist/claude/walls-hook.js +279 -0
- package/dist/claude/walls-hook.js.map +1 -0
- package/dist/cli-epilogue.d.ts.map +1 -1
- package/dist/cli-epilogue.js +24 -14
- package/dist/cli-epilogue.js.map +1 -1
- package/dist/cli-meta.js +3 -3
- package/dist/cli-meta.js.map +1 -1
- package/dist/cli-picker.d.ts +24 -0
- package/dist/cli-picker.d.ts.map +1 -1
- package/dist/cli-picker.js +44 -11
- package/dist/cli-picker.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +475 -390
- package/dist/cli.js.map +1 -1
- package/dist/cloud/head-learnings.d.ts +13 -0
- package/dist/cloud/head-learnings.d.ts.map +1 -0
- package/dist/cloud/head-learnings.js +84 -0
- package/dist/cloud/head-learnings.js.map +1 -0
- package/dist/cloud/lookup-activity.d.ts +18 -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 +15 -7
- package/dist/cloud/nudge.d.ts.map +1 -1
- package/dist/cloud/nudge.js +45 -33
- package/dist/cloud/nudge.js.map +1 -1
- package/dist/cloud/onboarding.d.ts +273 -0
- package/dist/cloud/onboarding.d.ts.map +1 -0
- package/dist/cloud/onboarding.js +612 -0
- package/dist/cloud/onboarding.js.map +1 -0
- package/dist/cloud/other-repos.d.ts +39 -0
- package/dist/cloud/other-repos.d.ts.map +1 -0
- package/dist/cloud/other-repos.js +137 -0
- package/dist/cloud/other-repos.js.map +1 -0
- package/dist/cloud/pair.d.ts +86 -0
- package/dist/cloud/pair.d.ts.map +1 -0
- package/dist/cloud/pair.js +270 -0
- package/dist/cloud/pair.js.map +1 -0
- package/dist/cloud/workspace-sync.d.ts +75 -11
- package/dist/cloud/workspace-sync.d.ts.map +1 -1
- package/dist/cloud/workspace-sync.js +409 -53
- package/dist/cloud/workspace-sync.js.map +1 -1
- package/dist/cloud/workspace.d.ts +95 -10
- package/dist/cloud/workspace.d.ts.map +1 -1
- package/dist/cloud/workspace.js +112 -9
- package/dist/cloud/workspace.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/hosts/claude-global.d.ts +14 -0
- package/dist/hosts/claude-global.d.ts.map +1 -1
- package/dist/hosts/claude-global.js +39 -4
- package/dist/hosts/claude-global.js.map +1 -1
- package/dist/hosts/codex-hooks.d.ts +6 -0
- package/dist/hosts/codex-hooks.d.ts.map +1 -1
- package/dist/hosts/codex-hooks.js +89 -16
- package/dist/hosts/codex-hooks.js.map +1 -1
- package/dist/hosts/codex-trust.d.ts +28 -0
- package/dist/hosts/codex-trust.d.ts.map +1 -0
- package/dist/hosts/codex-trust.js +280 -0
- package/dist/hosts/codex-trust.js.map +1 -0
- package/dist/hosts/cursor-hooks.d.ts.map +1 -1
- package/dist/hosts/cursor-hooks.js +3 -1
- package/dist/hosts/cursor-hooks.js.map +1 -1
- package/dist/init/candidates.d.ts +60 -0
- package/dist/init/candidates.d.ts.map +1 -0
- package/dist/init/candidates.js +202 -0
- package/dist/init/candidates.js.map +1 -0
- package/dist/init/claude-call.d.ts +51 -0
- package/dist/init/claude-call.d.ts.map +1 -0
- package/dist/init/claude-call.js +199 -0
- package/dist/init/claude-call.js.map +1 -0
- package/dist/init/discover-worker.d.ts +18 -0
- package/dist/init/discover-worker.d.ts.map +1 -0
- package/dist/init/discover-worker.js +111 -0
- package/dist/init/discover-worker.js.map +1 -0
- package/dist/init/handover.d.ts +16 -0
- package/dist/init/handover.d.ts.map +1 -0
- package/dist/init/handover.js +92 -0
- package/dist/init/handover.js.map +1 -0
- package/dist/init/howtos.d.ts +20 -0
- package/dist/init/howtos.d.ts.map +1 -0
- package/dist/init/howtos.js +90 -0
- package/dist/init/howtos.js.map +1 -0
- package/dist/init/init-record.d.ts +134 -0
- package/dist/init/init-record.d.ts.map +1 -0
- package/dist/init/init-record.js +339 -0
- package/dist/init/init-record.js.map +1 -0
- package/dist/init/install-paths.d.ts +6 -0
- package/dist/init/install-paths.d.ts.map +1 -0
- package/dist/init/install-paths.js +87 -0
- package/dist/init/install-paths.js.map +1 -0
- 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/keep-answer.d.ts +43 -0
- package/dist/init/keep-answer.d.ts.map +1 -0
- package/dist/init/keep-answer.js +118 -0
- package/dist/init/keep-answer.js.map +1 -0
- package/dist/init/keep-gate.d.ts +30 -0
- package/dist/init/keep-gate.d.ts.map +1 -0
- package/dist/init/keep-gate.js +178 -0
- package/dist/init/keep-gate.js.map +1 -0
- package/dist/init/keep-list.d.ts +67 -0
- package/dist/init/keep-list.d.ts.map +1 -0
- package/dist/init/keep-list.js +232 -0
- package/dist/init/keep-list.js.map +1 -0
- package/dist/init/keep.d.ts +52 -0
- package/dist/init/keep.d.ts.map +1 -0
- package/dist/init/keep.js +393 -0
- package/dist/init/keep.js.map +1 -0
- package/dist/init/look-back-mine.d.ts +37 -0
- package/dist/init/look-back-mine.d.ts.map +1 -0
- package/dist/init/look-back-mine.js +215 -0
- package/dist/init/look-back-mine.js.map +1 -0
- package/dist/init/look-back.d.ts +81 -0
- package/dist/init/look-back.d.ts.map +1 -0
- package/dist/init/look-back.js +170 -0
- package/dist/init/look-back.js.map +1 -0
- package/dist/init/miners.d.ts +46 -0
- package/dist/init/miners.d.ts.map +1 -0
- package/dist/init/miners.js +141 -0
- package/dist/init/miners.js.map +1 -0
- package/dist/init/name-call.d.ts +37 -0
- package/dist/init/name-call.d.ts.map +1 -0
- package/dist/init/name-call.js +151 -0
- package/dist/init/name-call.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 +83 -0
- package/dist/init/plain-file.js.map +1 -0
- package/dist/init/prefs.d.ts +70 -0
- package/dist/init/prefs.d.ts.map +1 -0
- package/dist/init/prefs.js +282 -0
- package/dist/init/prefs.js.map +1 -0
- package/dist/init/relay.d.ts +15 -0
- package/dist/init/relay.d.ts.map +1 -0
- package/dist/init/relay.js +15 -0
- package/dist/init/relay.js.map +1 -0
- package/dist/init/replay-runs.d.ts +121 -0
- package/dist/init/replay-runs.d.ts.map +1 -0
- package/dist/init/replay-runs.js +457 -0
- package/dist/init/replay-runs.js.map +1 -0
- package/dist/init/replay-tamper.d.ts +18 -0
- package/dist/init/replay-tamper.d.ts.map +1 -0
- package/dist/init/replay-tamper.js +87 -0
- package/dist/init/replay-tamper.js.map +1 -0
- package/dist/init/review-screen.d.ts +74 -0
- package/dist/init/review-screen.d.ts.map +1 -0
- package/dist/init/review-screen.js +258 -0
- package/dist/init/review-screen.js.map +1 -0
- package/dist/init/review-tty.d.ts +29 -0
- package/dist/init/review-tty.d.ts.map +1 -0
- package/dist/init/review-tty.js +218 -0
- package/dist/init/review-tty.js.map +1 -0
- package/dist/init/review.d.ts +12 -0
- package/dist/init/review.d.ts.map +1 -0
- package/dist/init/review.js +12 -0
- package/dist/init/review.js.map +1 -0
- package/dist/init/run.d.ts +87 -0
- package/dist/init/run.d.ts.map +1 -0
- package/dist/init/run.js +347 -0
- package/dist/init/run.js.map +1 -0
- package/dist/init/sessions.d.ts +63 -0
- package/dist/init/sessions.d.ts.map +1 -0
- package/dist/init/sessions.js +377 -0
- package/dist/init/sessions.js.map +1 -0
- package/dist/init/transcript.d.ts +81 -0
- package/dist/init/transcript.d.ts.map +1 -0
- package/dist/init/transcript.js +216 -0
- package/dist/init/transcript.js.map +1 -0
- package/dist/init/types.d.ts +139 -0
- package/dist/init/types.d.ts.map +1 -0
- package/dist/init/types.js +2 -0
- package/dist/init/types.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/cold-start.d.ts +5 -184
- package/dist/notes/cold-start.d.ts.map +1 -1
- package/dist/notes/cold-start.js +5 -575
- package/dist/notes/cold-start.js.map +1 -1
- package/dist/notes/edit-overlap.d.ts.map +1 -1
- package/dist/notes/edit-overlap.js +4 -1
- package/dist/notes/edit-overlap.js.map +1 -1
- 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/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/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/notes.d.ts +8 -4
- package/dist/notes/notes.d.ts.map +1 -1
- package/dist/notes/notes.js +9 -7
- package/dist/notes/notes.js.map +1 -1
- package/dist/notes/pr-reviews.d.ts +4 -0
- package/dist/notes/pr-reviews.d.ts.map +1 -1
- package/dist/notes/pr-reviews.js +6 -5
- 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/repo-trail.d.ts +1 -1
- package/dist/notes/repo-trail.d.ts.map +1 -1
- package/dist/notes/repo-trail.js +24 -4
- package/dist/notes/repo-trail.js.map +1 -1
- package/dist/search/grep.d.ts.map +1 -1
- package/dist/search/grep.js +4 -2
- package/dist/search/grep.js.map +1 -1
- package/dist/search/user-regexp.d.ts +26 -0
- package/dist/search/user-regexp.d.ts.map +1 -0
- package/dist/search/user-regexp.js +150 -0
- package/dist/search/user-regexp.js.map +1 -0
- package/dist/skills/anchors-cli.d.ts +38 -0
- package/dist/skills/anchors-cli.d.ts.map +1 -0
- package/dist/skills/anchors-cli.js +279 -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/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/cli-skills-1b.d.ts +17 -0
- package/dist/skills/cli-skills-1b.d.ts.map +1 -0
- package/dist/skills/cli-skills-1b.js +166 -0
- package/dist/skills/cli-skills-1b.js.map +1 -0
- package/dist/skills/cli-skills-2.d.ts +35 -0
- package/dist/skills/cli-skills-2.d.ts.map +1 -0
- package/dist/skills/cli-skills-2.js +129 -0
- package/dist/skills/cli-skills-2.js.map +1 -0
- package/dist/skills/cli-skills-report-1b.d.ts +49 -0
- package/dist/skills/cli-skills-report-1b.d.ts.map +1 -0
- package/dist/skills/cli-skills-report-1b.js +191 -0
- package/dist/skills/cli-skills-report-1b.js.map +1 -0
- package/dist/skills/cli-skills-report.d.ts +86 -0
- package/dist/skills/cli-skills-report.d.ts.map +1 -0
- package/dist/skills/cli-skills-report.js +121 -0
- package/dist/skills/cli-skills-report.js.map +1 -0
- package/dist/skills/cli-skills.d.ts +30 -0
- package/dist/skills/cli-skills.d.ts.map +1 -0
- package/dist/skills/cli-skills.js +379 -0
- package/dist/skills/cli-skills.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 +550 -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 +85 -0
- package/dist/skills/compile-words.d.ts.map +1 -0
- package/dist/skills/compile-words.js +445 -0
- package/dist/skills/compile-words.js.map +1 -0
- package/dist/skills/compile.d.ts +42 -0
- package/dist/skills/compile.d.ts.map +1 -0
- package/dist/skills/compile.js +505 -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/credit.d.ts +86 -0
- package/dist/skills/credit.d.ts.map +1 -0
- package/dist/skills/credit.js +259 -0
- package/dist/skills/credit.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/fold-gated.d.ts +3 -0
- package/dist/skills/fold-gated.d.ts.map +1 -0
- package/dist/skills/fold-gated.js +78 -0
- package/dist/skills/fold-gated.js.map +1 -0
- package/dist/skills/fold.d.ts +87 -0
- package/dist/skills/fold.d.ts.map +1 -0
- package/dist/skills/fold.js +348 -0
- package/dist/skills/fold.js.map +1 -0
- package/dist/skills/follow-learnings.d.ts +128 -0
- package/dist/skills/follow-learnings.d.ts.map +1 -0
- package/dist/skills/follow-learnings.js +278 -0
- package/dist/skills/follow-learnings.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/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/learning-steps.d.ts +43 -0
- package/dist/skills/learning-steps.d.ts.map +1 -0
- package/dist/skills/learning-steps.js +294 -0
- package/dist/skills/learning-steps.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/lesson-gate.d.ts +25 -0
- package/dist/skills/lesson-gate.d.ts.map +1 -0
- package/dist/skills/lesson-gate.js +316 -0
- package/dist/skills/lesson-gate.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/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/offer-drift.d.ts +35 -0
- package/dist/skills/offer-drift.d.ts.map +1 -0
- package/dist/skills/offer-drift.js +98 -0
- package/dist/skills/offer-drift.js.map +1 -0
- package/dist/skills/offer-lesson.d.ts +31 -0
- package/dist/skills/offer-lesson.d.ts.map +1 -0
- package/dist/skills/offer-lesson.js +123 -0
- package/dist/skills/offer-lesson.js.map +1 -0
- package/dist/skills/offer-lines.d.ts +40 -0
- package/dist/skills/offer-lines.d.ts.map +1 -0
- package/dist/skills/offer-lines.js +80 -0
- package/dist/skills/offer-lines.js.map +1 -0
- package/dist/skills/offer-moment.d.ts +102 -0
- package/dist/skills/offer-moment.d.ts.map +1 -0
- package/dist/skills/offer-moment.js +260 -0
- package/dist/skills/offer-moment.js.map +1 -0
- package/dist/skills/offer-repair.d.ts +36 -0
- package/dist/skills/offer-repair.d.ts.map +1 -0
- package/dist/skills/offer-repair.js +212 -0
- package/dist/skills/offer-repair.js.map +1 -0
- package/dist/skills/offer-retire.d.ts +53 -0
- package/dist/skills/offer-retire.d.ts.map +1 -0
- package/dist/skills/offer-retire.js +149 -0
- package/dist/skills/offer-retire.js.map +1 -0
- package/dist/skills/offer-update.d.ts +54 -0
- package/dist/skills/offer-update.d.ts.map +1 -0
- package/dist/skills/offer-update.js +115 -0
- package/dist/skills/offer-update.js.map +1 -0
- package/dist/skills/offer-words-1b.d.ts +32 -0
- package/dist/skills/offer-words-1b.d.ts.map +1 -0
- package/dist/skills/offer-words-1b.js +80 -0
- package/dist/skills/offer-words-1b.js.map +1 -0
- package/dist/skills/offer-words-2.d.ts +123 -0
- package/dist/skills/offer-words-2.d.ts.map +1 -0
- package/dist/skills/offer-words-2.js +194 -0
- package/dist/skills/offer-words-2.js.map +1 -0
- package/dist/skills/offer-words.d.ts +65 -0
- package/dist/skills/offer-words.d.ts.map +1 -0
- package/dist/skills/offer-words.js +205 -0
- package/dist/skills/offer-words.js.map +1 -0
- package/dist/skills/offers.d.ts +66 -0
- package/dist/skills/offers.d.ts.map +1 -0
- package/dist/skills/offers.js +284 -0
- package/dist/skills/offers.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/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/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/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 +47 -0
- package/dist/skills/runblock.d.ts.map +1 -0
- package/dist/skills/runblock.js +227 -0
- package/dist/skills/runblock.js.map +1 -0
- package/dist/skills/save-gate.d.ts +64 -0
- package/dist/skills/save-gate.d.ts.map +1 -0
- package/dist/skills/save-gate.js +354 -0
- package/dist/skills/save-gate.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/save-verify.d.ts +59 -0
- package/dist/skills/save-verify.d.ts.map +1 -0
- package/dist/skills/save-verify.js +390 -0
- package/dist/skills/save-verify.js.map +1 -0
- package/dist/skills/settings.d.ts +48 -0
- package/dist/skills/settings.d.ts.map +1 -0
- package/dist/skills/settings.js +155 -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 +28 -8
- package/dist/skills/skills.d.ts.map +1 -1
- package/dist/skills/skills.js +106 -53
- 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 +8 -0
- package/dist/skills/types.d.ts.map +1 -1
- package/dist/skills/update-gate.d.ts +36 -0
- package/dist/skills/update-gate.d.ts.map +1 -0
- package/dist/skills/update-gate.js +357 -0
- package/dist/skills/update-gate.js.map +1 -0
- package/dist/skills/update-plan.d.ts +40 -0
- package/dist/skills/update-plan.d.ts.map +1 -0
- package/dist/skills/update-plan.js +196 -0
- package/dist/skills/update-plan.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/value-line.d.ts +94 -0
- package/dist/skills/value-line.d.ts.map +1 -0
- package/dist/skills/value-line.js +355 -0
- package/dist/skills/value-line.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 +15 -1
- package/dist/telemetry/contract.d.ts.map +1 -1
- package/dist/telemetry/contract.js +80 -11
- package/dist/telemetry/contract.js.map +1 -1
- package/dist/telemetry/gate.js +4 -4
- package/dist/telemetry/gate.js.map +1 -1
- package/dist/telemetry/index.d.ts +1 -1
- package/dist/telemetry/index.d.ts.map +1 -1
- package/dist/telemetry/index.js +1 -1
- package/dist/telemetry/index.js.map +1 -1
- package/dist/telemetry/notice.js +5 -5
- package/dist/telemetry/notice.js.map +1 -1
- package/dist/telemetry/queue.d.ts.map +1 -1
- package/dist/telemetry/queue.js +7 -7
- package/dist/telemetry/queue.js.map +1 -1
- package/dist/telemetry/track.d.ts.map +1 -1
- package/dist/telemetry/track.js +4 -3
- package/dist/telemetry/track.js.map +1 -1
- package/dist/trace/checks.d.ts +63 -0
- package/dist/trace/checks.d.ts.map +1 -0
- package/dist/trace/checks.js +495 -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/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/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/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/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/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.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-run.d.ts.map +1 -1
- package/dist/upkeep-run.js +2 -23
- package/dist/upkeep-run.js.map +1 -1
- package/dist/upkeep.d.ts.map +1 -1
- package/dist/upkeep.js +2 -3
- package/dist/upkeep.js.map +1 -1
- package/dist/util/private-fs.d.ts +6 -0
- package/dist/util/private-fs.d.ts.map +1 -1
- package/dist/util/private-fs.js +9 -1
- package/dist/util/private-fs.js.map +1 -1
- package/dist/util/state.d.ts.map +1 -1
- package/dist/util/state.js +17 -3
- 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/package.json +6 -3
- package/scripts/stamp-telemetry-key.mjs +8 -5
- package/scripts/vendor-grammars.mjs +35 -0
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
import { askText, JOB_CLASSES, PROBLEM_REPORT, promptParams, STATUS_OR_HISTORY, wordCount } from '../trace/jobs.js';
|
|
2
|
+
import { flatLine } from '../notes/flatten.js';
|
|
3
|
+
import { fillParams, resolveParams } from './params.js';
|
|
4
|
+
import { literalPassword, neverSave } from './never-save.js';
|
|
5
|
+
import { listSkills, readSkill } from './store.js';
|
|
6
|
+
import { readSkillsState } from './state.js';
|
|
7
|
+
import { readLedger } from './ledger.js';
|
|
8
|
+
import { adoptIfCopied } from './versions.js';
|
|
9
|
+
import { phraseSha, unusedSince } from './staleness.js';
|
|
10
|
+
import { ANCHOR_COPY } from './anchors.js';
|
|
11
|
+
const STOP = new Set(("a an the to and then please can could would you we i it its this that now also just so okay ok yes lets let's do some me my our for of on in at "
|
|
12
|
+
+ 'first again too as well be is are will').split(' '));
|
|
13
|
+
/** Spellings of one word, as the asks are written (4.6). */
|
|
14
|
+
const CANON = { puch: 'push', psuh: 'push', 'fast-forward': 'ff', fastforward: 'ff', production: 'prod', publishing: 'publish' };
|
|
15
|
+
const URL = /\b[a-z][a-z0-9+.-]*:\/\/\S+/gi;
|
|
16
|
+
const VERSION_RE = /\bv?\d+\.\d+\.\d+(?:-[0-9a-z.]+)?\b/gi;
|
|
17
|
+
const PR_RE = /(?:^|\s)#\d+\b|\bpr\s*#?\d+\b|\/pull\/\d+/gi;
|
|
18
|
+
const MAX_WORDS = 25;
|
|
19
|
+
/** D71 a: an ask up to 60 words still cues a skill when it names one of the skill's places and its job verb. */
|
|
20
|
+
const LONG_MAX_WORDS = 60;
|
|
21
|
+
const DAY_MS = 24 * 60 * 60 * 1000;
|
|
22
|
+
const canon = (w) => CANON[w] ?? w;
|
|
23
|
+
/** Words of a lowercased text: split on anything but letters, digits, `{}#.-`; dots and dashes at a word's ends go. */
|
|
24
|
+
const split = (t) => t.split(/[^a-z0-9{}#.-]+/).map((w) => w.replace(/^[.-]+|[.-]+$/g, '')).filter(Boolean).map(canon);
|
|
25
|
+
const lower = (t) => t.toLowerCase().replace(/\bfast forward/g, 'fast-forward');
|
|
26
|
+
/** 4.6: the ask's words, its shape values as params and placeholders, its content words, and its kind. */
|
|
27
|
+
export function normalizePrompt(typed) {
|
|
28
|
+
const raw = askText(String(typed ?? ''));
|
|
29
|
+
const params = promptParams(raw);
|
|
30
|
+
let t = lower(now(raw)).replace(URL, ' url ').replace(VERSION_RE, ' {version} ').replace(PR_RE, ' {pr} ');
|
|
31
|
+
// "push the new version on npm": with npm, a push is a publish.
|
|
32
|
+
if (/\bnpm\b/.test(t))
|
|
33
|
+
t = t.replace(/\b(?:push|puch|psuh)\w*/g, 'publish');
|
|
34
|
+
if (params.sha)
|
|
35
|
+
t = t.replace(new RegExp(`\\b${params.sha.toLowerCase()}\\b`, 'g'), ' {sha} ');
|
|
36
|
+
const words = split(t);
|
|
37
|
+
return {
|
|
38
|
+
raw,
|
|
39
|
+
words,
|
|
40
|
+
content: words.filter((w) => !STOP.has(w) && !/^\{\w+\}$/.test(w)),
|
|
41
|
+
params,
|
|
42
|
+
status: STATUS_OR_HISTORY.test(raw),
|
|
43
|
+
problem: PROBLEM_REPORT.test(raw) || PASTED_ERROR.test(raw),
|
|
44
|
+
wordCount: wordCount(raw),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Where a phrase hits the prompt's words: every phrase word in order, with at most one extra word in total
|
|
49
|
+
* between them. The indexes of the words it covered, or null. Greedy is exact here: taking the next word when it
|
|
50
|
+
* matches never costs the one skip.
|
|
51
|
+
*/
|
|
52
|
+
export function phraseHit(words, phrase) {
|
|
53
|
+
if (!phrase.length)
|
|
54
|
+
return null;
|
|
55
|
+
for (let s = 0; s < words.length; s++) {
|
|
56
|
+
if (words[s] !== phrase[0])
|
|
57
|
+
continue;
|
|
58
|
+
const at = [s];
|
|
59
|
+
let skip = 1;
|
|
60
|
+
for (let j = 1; j < phrase.length; j++) {
|
|
61
|
+
const pos = at[at.length - 1];
|
|
62
|
+
if (words[pos + 1] === phrase[j])
|
|
63
|
+
at.push(pos + 1);
|
|
64
|
+
else if (skip && words[pos + 2] === phrase[j]) {
|
|
65
|
+
skip -= 1;
|
|
66
|
+
at.push(pos + 2);
|
|
67
|
+
}
|
|
68
|
+
else
|
|
69
|
+
break;
|
|
70
|
+
}
|
|
71
|
+
if (at.length === phrase.length)
|
|
72
|
+
return at;
|
|
73
|
+
}
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
/** "... before publishing", "before we ff to prod": a later step, not what this prompt asks for; left out of the match. */
|
|
77
|
+
const LATER = /\bbefore\s+(?:we\s+|you\s+|i\s+|it\s+)?(?:publish|releas|deploy|push|puch|psuh|ship|ff|fast.?forward|promot|merg)\w*[^.?!\n]*/gi;
|
|
78
|
+
/**
|
|
79
|
+
* What the speaker says they will do themselves ("I'll push to prod after lunch"), or a pasted reply of the agent's
|
|
80
|
+
* ("Say the word and I'll ... ship it to beta"): a statement, not an ask. Left out to the end of its sentence.
|
|
81
|
+
*/
|
|
82
|
+
const SPEAKER = /\bI(?:'ll|\u2019ll| will| am going to|'m going to|\u2019m going to)\b[^.?!\n]*/gi;
|
|
83
|
+
const now = (raw) => raw.replace(LATER, ' ').replace(SPEAKER, ' ');
|
|
84
|
+
/** Asked to talk it through first ("ask me questions first", "plan it first"): not a go for a job's steps. */
|
|
85
|
+
const NOT_YET = /\bask me (?:some |any |a few )?questions\b|\bquestions? first\b|\bplan (?:it |this )?first\b|\bdon'?t (?:start|run|do) (?:anything|it) yet\b/i;
|
|
86
|
+
/** Two ways real asks name where a ship goes without a ship verb: "make it to prod", "make sure the changes are on prod". */
|
|
87
|
+
const SHIP_IDIOM = /\bmake (?:it|this|that|them|these|those|everything|all of it) (?:to|on|onto|into) (?:the )?(?:prod|production|beta|staging)\b|\bmake sure\b[^.?!\n]{0,80}?\b(?:is|are) (?:both |all |also )?(?:on|in) (?:the )?(?:prod|production|beta|staging)\b/;
|
|
88
|
+
const shipIdiom = (s, text) => s.meta.job === 'ship' && SHIP_IDIOM.test(text);
|
|
89
|
+
/** A pasted error the agent should look at, not a job: "page not found", "got this on localhost". */
|
|
90
|
+
const PASTED_ERROR = /\bpage not found\b|\bgot this (?:error|on|in|when|after)\b/i;
|
|
91
|
+
/** How the person wants things done from now on ("always ...", "never ..."): a lesson, never an ask for a skill. */
|
|
92
|
+
const PREFERENCE = /^\s*(?:(?:okay|ok|so|and|also|but|please|no)[\s,]+)*(?:always|never|from now on|going forward|in (?:the )?future)\b/i;
|
|
93
|
+
/** The places a job goes to: a skill for one never comes for an ask that names only another. */
|
|
94
|
+
const TARGETS = new Set(['beta', 'prod', 'staging', 'main', 'master', 'dev', 'preview']);
|
|
95
|
+
const phrasesOf = (list) => String(list ?? '').split(',').map((p) => split(lower(p.trim()))).filter((p) => p.length > 0);
|
|
96
|
+
/** Each asks phrase as written (for its phraseSha) and as words. */
|
|
97
|
+
const rawPhrases = (list) => String(list ?? '').split(',').map((p) => ({ raw: p.trim(), words: split(lower(p.trim())) })).filter((p) => p.words.length > 0);
|
|
98
|
+
/** The places a skill is for: the place words of its asks and its name. */
|
|
99
|
+
const placesOf = (s) => new Set([...phrasesOf(s.meta.asks).flat(), ...split(s.name.toLowerCase().replace(/-/g, ' '))].filter((w) => TARGETS.has(w)));
|
|
100
|
+
/**
|
|
101
|
+
* D71 a: a 26 to 60 word ask is for this skill only when it names one of the skill's places and a verb of its job
|
|
102
|
+
* ("... and push to prod if you need to"). A skill with no place keeps the 25-word cap.
|
|
103
|
+
*/
|
|
104
|
+
function longAskFits(np, s) {
|
|
105
|
+
const cls = s.meta.job ? JOB_CLASSES.find((c) => c.job === s.meta.job) : undefined;
|
|
106
|
+
const places = placesOf(s);
|
|
107
|
+
if (!cls || !places.size || !np.words.some((w) => places.has(w)))
|
|
108
|
+
return false;
|
|
109
|
+
if (shipIdiom(s, classText(now(np.raw))))
|
|
110
|
+
return true;
|
|
111
|
+
return np.words.some((w) => { const v = cls.vocab[w]; return v !== undefined && !TARGETS.has(v) && !TARGETS.has(canon(v)); });
|
|
112
|
+
}
|
|
113
|
+
/** The text a job class is matched on, as matchJob reads it. */
|
|
114
|
+
const classText = (raw) => lower(raw).replace(URL, ' url ').replace(VERSION_RE, ' ver ').replace(/\s+/g, ' ').trim();
|
|
115
|
+
/** 4.6 job cue for one skill: its class matched, an ask hit word for word, and how much of the prompt the asks cover. */
|
|
116
|
+
export function scoreJobCue(np, s) {
|
|
117
|
+
const cls = s.meta.job ? JOB_CLASSES.find((c) => c.job === s.meta.job) : undefined;
|
|
118
|
+
const text = classText(now(np.raw));
|
|
119
|
+
// The class's exclusions ("call it publish", "release notes", "I have released") say the prompt is not this
|
|
120
|
+
// job at all, so they veto an ask word too: "publish" alone would otherwise hit them.
|
|
121
|
+
if (cls?.exclude?.test(text))
|
|
122
|
+
return { score: 0, hits: 0, classMatch: false, exact: false, phrase: null };
|
|
123
|
+
// Real asks name where a job goes; a skill for prod is not the one for an ask about staging only.
|
|
124
|
+
const mine = placesOf(s);
|
|
125
|
+
const asked = np.words.filter((w) => TARGETS.has(w));
|
|
126
|
+
if (mine.size && asked.length && !asked.some((w) => mine.has(w)))
|
|
127
|
+
return { score: 0, hits: 0, classMatch: false, exact: false, phrase: null };
|
|
128
|
+
const classMatch = !!cls && (cls.pattern.test(text) || shipIdiom(s, text));
|
|
129
|
+
const covered = new Set();
|
|
130
|
+
let exact = false;
|
|
131
|
+
// 1b: the phrase that covered the most words (the first of equals), for the cue-miss count (4.19).
|
|
132
|
+
let phrase = null;
|
|
133
|
+
for (const { raw, words: p } of rawPhrases(s.meta.asks)) {
|
|
134
|
+
// A one-word ask is a cue only when it is the job's own word ("publish"), never a common one ("done", "test").
|
|
135
|
+
if (p.length < 2 && !(cls && p[0] in cls.vocab))
|
|
136
|
+
continue;
|
|
137
|
+
if (p.every((w) => STOP.has(w)))
|
|
138
|
+
continue;
|
|
139
|
+
const at = phraseHit(np.words, p);
|
|
140
|
+
if (!at)
|
|
141
|
+
continue;
|
|
142
|
+
exact = true;
|
|
143
|
+
if (!phrase || at.length > phrase.n)
|
|
144
|
+
phrase = { raw, n: at.length };
|
|
145
|
+
for (const i of at)
|
|
146
|
+
covered.add(i);
|
|
147
|
+
}
|
|
148
|
+
const hits = new Set([...covered].map((i) => np.words[i]).filter((w) => np.content.includes(w))).size;
|
|
149
|
+
const ratio = hits / Math.max(1, np.content.length);
|
|
150
|
+
return { score: classMatch || exact ? Math.max(0.5, ratio) : ratio, hits, classMatch, exact, phrase: phrase?.raw ?? null };
|
|
151
|
+
}
|
|
152
|
+
/** Asking about the skill, not for it: "forget release-npm", "trail skills show release-npm". */
|
|
153
|
+
const MANAGES = /\b(?:trail\s+(?:skills?|forget)|forget|restore|retire|delete|remove|rename|edit)\b/i;
|
|
154
|
+
/** 4.6 name cue: the prompt holds the skill's name, or its dash words as a phrase. A one-word name is a common word, never a cue on its own. */
|
|
155
|
+
function nameCue(np, s) {
|
|
156
|
+
const name = s.name.toLowerCase();
|
|
157
|
+
const parts = split(name.replace(/-/g, ' '));
|
|
158
|
+
if (parts.length < 2 || MANAGES.test(np.raw))
|
|
159
|
+
return false;
|
|
160
|
+
return np.words.includes(name) || phraseHit(np.words, parts) !== null;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* "is it live", "did the deploy finish", "is 1.4.3 out", "is #4211 live": the subject a check answers (4.6), after
|
|
164
|
+
* the lead words a person starts with.
|
|
165
|
+
*/
|
|
166
|
+
const CHECK_SUBJECT = /^\s*(?:(?:okay|ok|so|and|also|tell me)[\s,]+)*(?:is|did|has|was) (?:(?:it|that|this|the (?:deploy|release|publish|push|build|site|app|new version)|prod|production|beta)\b|v?\d+\.\d+\.\d+(?:-[0-9a-z.]+)?(?=[\s?!.,]|$)|#\d+\b|pr #?\d+\b)/i;
|
|
167
|
+
function checkCue(np, s) {
|
|
168
|
+
const words = s.meta.job ? JOB_CLASSES.find((c) => c.job === s.meta.job)?.checkWords ?? [] : [];
|
|
169
|
+
const raw = np.raw.toLowerCase();
|
|
170
|
+
if (CHECK_SUBJECT.test(raw) && words.some((w) => np.words.includes(w) || new RegExp(`\\b${w}\\b`).test(raw)))
|
|
171
|
+
return true;
|
|
172
|
+
return phrasesOf(s.meta['status-asks']).some((p) => phraseHit(np.words, p) !== null);
|
|
173
|
+
}
|
|
174
|
+
const SAFE_VALUE = /^[A-Za-z0-9][A-Za-z0-9._@:+\/-]{0,99}$/;
|
|
175
|
+
const SCOPE_RANK = { personal: 0, repo: 1, team: 2 };
|
|
176
|
+
const worked = (c) => c.state?.lastWorked ?? '';
|
|
177
|
+
/** Higher score, then more checked uses, then narrower scope, then newer last worked. */
|
|
178
|
+
function better(a, b) {
|
|
179
|
+
return b.score - a.score
|
|
180
|
+
|| (b.cand.state?.checkedUses ?? 0) - (a.cand.state?.checkedUses ?? 0)
|
|
181
|
+
|| SCOPE_RANK[a.cand.ref.scope] - SCOPE_RANK[b.cand.ref.scope]
|
|
182
|
+
|| worked(b.cand).localeCompare(worked(a.cand));
|
|
183
|
+
}
|
|
184
|
+
const safeParams = (p) => Object.fromEntries(Object.entries(p).filter(([, v]) => typeof v === 'string' && SAFE_VALUE.test(v)));
|
|
185
|
+
/**
|
|
186
|
+
* D118 b: the cue's values with the run's own bound ones under this prompt's: a version (or sha, PR, ...) an
|
|
187
|
+
* earlier ask of the same run named holds for the run's life, across turns and re-sent blocks; one this prompt
|
|
188
|
+
* names wins.
|
|
189
|
+
*/
|
|
190
|
+
export function withRunParams(cue, runParams, np) {
|
|
191
|
+
const { values, notes } = resolveParams(cue.cand.skill.params, { ...safeParams(runParams), ...safeParams(np.params) });
|
|
192
|
+
return { ...cue, values, notes };
|
|
193
|
+
}
|
|
194
|
+
/** 4.6. Ignores once-per-epoch: the caller decides between a block and a re-arm (3.2 step 8). */
|
|
195
|
+
export function matchCue(np, cands, lastUsed, now = new Date()) {
|
|
196
|
+
if (np.raw.trim().length < 3 || np.wordCount > LONG_MAX_WORDS || np.problem || PREFERENCE.test(np.raw) || NOT_YET.test(np.raw))
|
|
197
|
+
return null;
|
|
198
|
+
if (np.wordCount > MAX_WORDS) {
|
|
199
|
+
if (np.status)
|
|
200
|
+
return null;
|
|
201
|
+
cands = cands.filter((c) => longAskFits(np, c.skill));
|
|
202
|
+
}
|
|
203
|
+
// Only a value of a shape's own characters goes into a step: never `;`, a space, `$(` or a backtick.
|
|
204
|
+
const shaped = Object.fromEntries(Object.entries(np.params).filter(([, v]) => typeof v === 'string' && SAFE_VALUE.test(v)));
|
|
205
|
+
const result = (kind, cand, score) => {
|
|
206
|
+
const { values, notes } = resolveParams(cand.skill.params, shaped);
|
|
207
|
+
return { kind, cand, score, values, notes };
|
|
208
|
+
};
|
|
209
|
+
if (np.status) {
|
|
210
|
+
if (!lastUsed)
|
|
211
|
+
return null;
|
|
212
|
+
const at = Date.parse(lastUsed.at);
|
|
213
|
+
if (Number.isNaN(at) || now.getTime() - at > DAY_MS)
|
|
214
|
+
return null;
|
|
215
|
+
const c = cands.find((x) => x.ref.id === lastUsed.id);
|
|
216
|
+
if (!c || !c.skill.check || !checkCue(np, c.skill))
|
|
217
|
+
return null;
|
|
218
|
+
return result('check', c, 1);
|
|
219
|
+
}
|
|
220
|
+
const named = cands.filter((c) => nameCue(np, c.skill)).map((cand) => ({ cand, score: scoreJobCue(np, cand.skill).score }));
|
|
221
|
+
if (named.length) {
|
|
222
|
+
const best = named.sort(better)[0];
|
|
223
|
+
return result('name', best.cand, best.score);
|
|
224
|
+
}
|
|
225
|
+
const jobs = cands.flatMap((cand) => {
|
|
226
|
+
const s = scoreJobCue(np, cand.skill);
|
|
227
|
+
return s.classMatch || s.exact ? [{ cand, score: s.score, phrase: s.phrase }] : [];
|
|
228
|
+
});
|
|
229
|
+
if (!jobs.length)
|
|
230
|
+
return null;
|
|
231
|
+
const best = jobs.sort(better)[0];
|
|
232
|
+
// 1b (R30): the phrase that fired it, as its sha only; the candidate carries it to its injection.
|
|
233
|
+
const sha = best.phrase ? phraseSha(best.phrase) : null;
|
|
234
|
+
return { ...result('job', { ...best.cand, phraseSha: sha }, best.score), phraseSha: sha };
|
|
235
|
+
}
|
|
236
|
+
/** Why a command can't come back in a block: the risk rules' reason (4.11), or a password written in it. */
|
|
237
|
+
const riskOf = (cmd) => neverSave(cmd) ?? (literalPassword(cmd) ? 'has a password written in it' : null);
|
|
238
|
+
/**
|
|
239
|
+
* The risk rules again at recall time, on what a block would show: a SKILL.md can be edited by hand after Trail
|
|
240
|
+
* wrote it, so a step, the check or a check-first line the rules refuse (a download piped into a shell, `rm -rf ~`,
|
|
241
|
+
* sudo, a credential file, Trail itself) keeps the whole skill out. `values`: the block's values, filled in first
|
|
242
|
+
* (a param default can be edited too). The reason in words ("step 3 runs sudo"), or null.
|
|
243
|
+
*/
|
|
244
|
+
export function refusedAtRecall(s, values = {}) {
|
|
245
|
+
for (const st of s.steps) {
|
|
246
|
+
const why = riskOf(fillParams(st.cmd, values));
|
|
247
|
+
if (why)
|
|
248
|
+
return `step ${st.n} ${why}`;
|
|
249
|
+
}
|
|
250
|
+
if (s.check) {
|
|
251
|
+
const why = riskOf(fillParams(s.check, values));
|
|
252
|
+
if (why)
|
|
253
|
+
return `its check ${why}`;
|
|
254
|
+
}
|
|
255
|
+
for (const line of String(s.meta['check-first'] ?? '').split(' ; ').map((x) => x.trim()).filter(Boolean)) {
|
|
256
|
+
const why = riskOf(fillParams(line, values));
|
|
257
|
+
if (why)
|
|
258
|
+
return `a check-first line ${why}`;
|
|
259
|
+
}
|
|
260
|
+
return null;
|
|
261
|
+
}
|
|
262
|
+
/** The step both of the last two corrected uses touched (the step that failed, else the last that ran), or null. */
|
|
263
|
+
function correctedStepOf(id, env) {
|
|
264
|
+
const lines = readLedger(id, env);
|
|
265
|
+
const corrected = new Set(lines.flatMap((l) => (l.event === 'corrected' ? [l.useId] : [])));
|
|
266
|
+
const touched = lines.flatMap((l) => (l.event === 'use' && corrected.has(l.useId) ? [l.failedStep ?? (l.stepsRan.length ? Math.max(...l.stepsRan) : null)] : []));
|
|
267
|
+
const [a, b] = touched.slice(-2);
|
|
268
|
+
return a !== undefined && a !== null && a === b ? a : null;
|
|
269
|
+
}
|
|
270
|
+
const CORRECTED_WHY = /^corrected after its use on (.+) and (.+)$/;
|
|
271
|
+
/** Candidate and active skills in scope; needs-fix ones, and ones the risk rules refuse now, come back separately for the index line. */
|
|
272
|
+
export function candidatesHere(ctx) {
|
|
273
|
+
// A needs-fix skill fixed by hand goes back to what it was in readSkill, so the state is read again after any.
|
|
274
|
+
const before = readSkillsState(ctx.env).skills;
|
|
275
|
+
let fixed = false;
|
|
276
|
+
// Phase 2 (4.6, R8): a proposal the person copied over the file is Trail's own again; an unfinished write is finished.
|
|
277
|
+
const adopted = [];
|
|
278
|
+
const read = listSkills(ctx).flatMap((ref) => {
|
|
279
|
+
const known = before[ref.id] ?? null;
|
|
280
|
+
const skill = readSkill(ref, known);
|
|
281
|
+
if (known?.status === 'needs-fix')
|
|
282
|
+
fixed = true;
|
|
283
|
+
if (skill && (known?.proposed || known?.pendingWrite)) {
|
|
284
|
+
fixed = true;
|
|
285
|
+
try {
|
|
286
|
+
if (adoptIfCopied(ref, known, skill.hash, ctx.env))
|
|
287
|
+
adopted.push(ref.name);
|
|
288
|
+
}
|
|
289
|
+
catch { /* the skill still reads */ }
|
|
290
|
+
}
|
|
291
|
+
return skill ? [{ ref, skill }] : [];
|
|
292
|
+
});
|
|
293
|
+
const states = fixed ? readSkillsState(ctx.env).skills : before;
|
|
294
|
+
const cands = [];
|
|
295
|
+
const needsFix = [];
|
|
296
|
+
// 1b: where it was found, so a block can check its anchors at injection (4.18).
|
|
297
|
+
const here = { checkout: ctx.checkout, env: ctx.env };
|
|
298
|
+
for (const { ref, skill } of read) {
|
|
299
|
+
const state = states[ref.id] ?? null;
|
|
300
|
+
const status = state?.status ?? 'candidate';
|
|
301
|
+
if (status !== 'needs-fix' && status !== 'candidate' && status !== 'active')
|
|
302
|
+
continue;
|
|
303
|
+
const refused = refusedAtRecall(skill);
|
|
304
|
+
if (refused)
|
|
305
|
+
needsFix.push({ ref, skill, state, here, why: refused });
|
|
306
|
+
else if (status === 'needs-fix') {
|
|
307
|
+
const step = state && CORRECTED_WHY.test(state.statusWhy ?? '') ? correctedStepOf(ref.id, ctx.env) : null;
|
|
308
|
+
needsFix.push({ ref, skill, state, here, ...(step !== null ? { correctedStep: step } : {}) });
|
|
309
|
+
}
|
|
310
|
+
else
|
|
311
|
+
cands.push({ ref, skill, state, here });
|
|
312
|
+
}
|
|
313
|
+
return { cands, needsFix, adopted };
|
|
314
|
+
}
|
|
315
|
+
const GATED_WORDS = {
|
|
316
|
+
publish: 'publishing', 'push-prod': 'the prod push', deploy: 'deploying', merge: 'merging', migrate: 'migrating', prune: 'pruning', login: 'logging in',
|
|
317
|
+
};
|
|
318
|
+
const INDEX_MAX = 500;
|
|
319
|
+
const INDEX_TAIL = '. When the person asks for one of these jobs, its exact steps come in with their message.';
|
|
320
|
+
/** The name a skill goes by in anything Trail says or an agent runs: its folder's, never a name edited into the file. */
|
|
321
|
+
export const nameOf = (c) => flatLine(c.ref.name || c.skill.name, 60);
|
|
322
|
+
function indexItem(c, gone) {
|
|
323
|
+
const asks = String(c.skill.meta.asks ?? '').split(',').map((a) => flatLine(a, 60)).filter(Boolean).slice(0, 3);
|
|
324
|
+
const kinds = [...new Set(c.skill.steps.flatMap((s) => (s.gated ? [GATED_WORDS[s.gated] ?? 'running it'] : [])))].slice(0, 2);
|
|
325
|
+
const flags = [c.state?.status === 'candidate' || !c.state ? 'new' : '', kinds.length ? `asks before ${kinds.join(' and ')}` : ''].filter(Boolean);
|
|
326
|
+
return `${nameOf(c)}${asks.length ? ` (${asks.join(', ')})` : ''}${flags.length ? ` ${flags.join(', ')}` : ''}${gone ? ` ${ANCHOR_COPY.index}` : ''}`;
|
|
327
|
+
}
|
|
328
|
+
/**
|
|
329
|
+
* Why a needs-fix skill isn't used, in the index's words (4.17, J14a): 1a's failed words as they are; two
|
|
330
|
+
* corrections as `step {n} was corrected on {d1} and {d2}`, or `corrected on {d1} and {d2}` when they touched no
|
|
331
|
+
* one step.
|
|
332
|
+
*/
|
|
333
|
+
export function needsFixWords(c) {
|
|
334
|
+
if (c.why)
|
|
335
|
+
return c.why;
|
|
336
|
+
const why = c.state?.statusWhy;
|
|
337
|
+
const m = why ? CORRECTED_WHY.exec(why) : null;
|
|
338
|
+
if (!m)
|
|
339
|
+
return why;
|
|
340
|
+
return typeof c.correctedStep === 'number' ? `step ${c.correctedStep} was corrected on ${m[1]} and ${m[2]}` : `corrected on ${m[1]} and ${m[2]}`;
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* The SessionStart index line (4.7), '' when none. 1b (4.18, 4.19): with `now`, a skill unused for 60 days is left
|
|
344
|
+
* out (its cues still fire); `gone` says which listed skills may be out of date (checked for the 5 listed only).
|
|
345
|
+
*/
|
|
346
|
+
export function indexLine(cands, needsFix, opts = {}) {
|
|
347
|
+
const top = [...cands]
|
|
348
|
+
.filter((c) => !c.state || c.state.status === 'candidate' || c.state.status === 'active')
|
|
349
|
+
.filter((c) => !(opts.now && c.state && unusedSince(c.state, opts.now)))
|
|
350
|
+
.sort((a, b) => (b.state?.checkedUses ?? 0) - (a.state?.checkedUses ?? 0) || worked(b).localeCompare(worked(a)))
|
|
351
|
+
.slice(0, 5)
|
|
352
|
+
.map((c) => {
|
|
353
|
+
let gone = false;
|
|
354
|
+
try {
|
|
355
|
+
gone = !!opts.gone?.(c);
|
|
356
|
+
}
|
|
357
|
+
catch { /* a check that throws is not gone */ }
|
|
358
|
+
return indexItem(c, gone);
|
|
359
|
+
});
|
|
360
|
+
const fix = needsFix.slice(0, 2).map((c) => {
|
|
361
|
+
const why = needsFixWords(c);
|
|
362
|
+
return `${nameOf(c)} needs a fix${why ? ` (${flatLine(why, 80)})` : ''}, not used`;
|
|
363
|
+
});
|
|
364
|
+
const items = [...top, ...fix];
|
|
365
|
+
const line = (list) => `[trail] Trail skills here: ${list.join(' · ')}${INDEX_TAIL}`;
|
|
366
|
+
while (items.length && line(items).length > INDEX_MAX)
|
|
367
|
+
items.pop();
|
|
368
|
+
return items.length ? line(items) : '';
|
|
369
|
+
}
|
|
370
|
+
//# sourceMappingURL=recall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recall.js","sourceRoot":"","sources":["../../src/skills/recall.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { Receipt } from './types.js';
|
|
2
|
+
/** <home>/receipts/<session-id>.json */
|
|
3
|
+
export declare function receiptPath(sessionId: string, env?: NodeJS.ProcessEnv): string;
|
|
4
|
+
/** Replaces the session's previous receipt. */
|
|
5
|
+
export declare function writeReceipt(r: Receipt, env?: NodeJS.ProcessEnv): void;
|
|
6
|
+
/** The unused receipt (usedAt null) for this run and name, fresh (<= 10 min old, not > 5 s in the future). Scans receipts/*.json. */
|
|
7
|
+
export declare function findReceipt(runId: string, name: string, now?: Date, env?: NodeJS.ProcessEnv): Receipt | null;
|
|
8
|
+
/** Sets usedAt on the receipt on disk, when it is still this one (a newer add replaces it, and stays unused). */
|
|
9
|
+
export declare function markReceiptUsed(r: Receipt, now?: Date, env?: NodeJS.ProcessEnv): void;
|
|
10
|
+
/**
|
|
11
|
+
* The transcript line that starts at offset: one positioned read of at most maxBytes (default 1 MB), from the
|
|
12
|
+
* byte before it, so an offset inside a line is refused. null past the end, with no newline within maxBytes, or
|
|
13
|
+
* unreadable.
|
|
14
|
+
*/
|
|
15
|
+
export declare function lineAt(transcriptPath: string, offset: number, maxBytes?: number): string | null;
|
|
16
|
+
/**
|
|
17
|
+
* The whole lines that end right before `offset` (which must be a line start), oldest first: one positioned read of
|
|
18
|
+
* at most maxBytes (default 1 MB) back from it. A line cut by the window is left out. [] at offset 0, inside a
|
|
19
|
+
* line, or unreadable.
|
|
20
|
+
*/
|
|
21
|
+
export declare function linesBefore(transcriptPath: string, offset: number, maxBytes?: number): string[];
|
|
22
|
+
/** sha256 hex of the whole line, as read (no newline). */
|
|
23
|
+
export declare function lineSha(line: string): string;
|
|
24
|
+
export declare function typedLineStillThere(transcriptPath: string, typed: {
|
|
25
|
+
offset: number;
|
|
26
|
+
lineSha: string;
|
|
27
|
+
}): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* The receipt names the host's own transcript for its session (g7, D74), as its host's dialect knows it (4.16):
|
|
30
|
+
* for Claude Code `<projects>/<folder>/<session_id>.jsonl`, for Codex `CODEX_HOME/sessions/.../rollout-*-<session>.jsonl`
|
|
31
|
+
* whose first line names the session, each compared through realpath, so a link to a file elsewhere, a copy in /tmp
|
|
32
|
+
* or another session's file is not it. A host with no dialect can't save live; its receipt can only be held for its
|
|
33
|
+
* host, so it passes as it is, unless it claims tier A.
|
|
34
|
+
*/
|
|
35
|
+
export declare function receiptTranscriptOk(r: Receipt, env?: NodeJS.ProcessEnv): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* The receipt names the very file the hooks read for its session (g7 review): the session state's cursor keeps the
|
|
38
|
+
* transcript's device and inode, from the path Claude Code itself gave the hooks. The path check above trusts the
|
|
39
|
+
* projects folders, and `$CLAUDE_CONFIG_DIR` comes from the env of `trail skills add`, which is the agent's; a copy
|
|
40
|
+
* under a folder the agent names, or in another project folder, is not the file the hooks read. A hard link to it
|
|
41
|
+
* is (same inode). No cursor (the hooks never read this session): no. Another host's receipt is held anyway: passes.
|
|
42
|
+
*/
|
|
43
|
+
export declare function receiptTranscriptRead(r: Receipt, env?: NodeJS.ProcessEnv): boolean;
|
|
44
|
+
//# sourceMappingURL=receipts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"receipts.d.ts","sourceRoot":"","sources":["../../src/skills/receipts.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAsB1C,wCAAwC;AACxC,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAE9E;AAED,+CAA+C;AAC/C,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAEtE;AA6BD,qIAAqI;AACrI,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,GAAG,IAAI,CAiBxH;AAKD,iHAAiH;AACjH,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,GAAE,IAAiB,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,IAAI,CAOjG;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAyB,GAAG,MAAM,GAAG,IAAI,CAuBjH;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,MAAyB,GAAG,MAAM,EAAE,CAoBjH;AAED,0DAA0D;AAC1D,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,MAAM,EAAE,KAAK,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAG/G;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAI7F;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAU/F"}
|