@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,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Phase 1b's CLI surface (design 1.7), beside `cli-skills.ts`:
|
|
3
|
+
* - `trail skills lesson [<skill>] --offer <offer-id>`: the CLI half of a
|
|
4
|
+
* lesson save (4.15, `keepLessonCli`); it re-decides from the transcript.
|
|
5
|
+
* - `trail skills draft init-<n> --print`: the pending init skill compiled
|
|
6
|
+
* again from its source and printed. Writes nothing.
|
|
7
|
+
* - `trail forget <id or name>`: a skill lesson id (`ls-…`) or a learning id
|
|
8
|
+
* (`l-…`: a guardrail or a wall lesson) first, then a kept guardrail's
|
|
9
|
+
* name (`no-timeout`, the way out its deny names), then a skill. A
|
|
10
|
+
* learning is marked retired, never deleted; a skill lesson moves to its
|
|
11
|
+
* skill's `lessons/.forgotten/`.
|
|
12
|
+
*/
|
|
13
|
+
import { lstatSync, mkdirSync, readdirSync, readFileSync, renameSync, statSync } from 'node:fs';
|
|
14
|
+
import { basename, dirname, join } from 'node:path';
|
|
15
|
+
import { flatLine } from '../notes/flatten.js';
|
|
16
|
+
import { repoPlace, shownPath } from '../notes/home.js';
|
|
17
|
+
import { everyRepoDir } from '../notes/every-repo.js';
|
|
18
|
+
import { refuseLinkedIntoCheckout } from '../notes/linked-learnings.js';
|
|
19
|
+
import { repoNotesDir } from '../notes/repo-notes-dir.js';
|
|
20
|
+
import { LEARNING_ID } from '../notes/learning-fields.js';
|
|
21
|
+
import { parseNote, renderNote } from '../notes/notes.js';
|
|
22
|
+
import { writePrivate } from '../util/private-fs.js';
|
|
23
|
+
import { WALLS } from '../trace/walls.js';
|
|
24
|
+
import { readInitRecord } from '../init/init-record.js';
|
|
25
|
+
import { recompileInitSkill } from '../init/replay-runs.js';
|
|
26
|
+
import { initDraft } from '../init/review-tty.js';
|
|
27
|
+
import { keepLessonCli } from './lesson-gate.js';
|
|
28
|
+
import { skillsDir } from './store-fs.js';
|
|
29
|
+
const one = (t, max = 60) => flatLine(t, max);
|
|
30
|
+
const SKILL_LESSON_ID = /^ls-[0-9a-f]{6}$/;
|
|
31
|
+
/** The guardrail templates by name (`no-timeout`, `push-over-ssh`), from the wall catalog. */
|
|
32
|
+
const GUARDRAILS = new Map(WALLS.flatMap((w) => (w.guardrail ? [[w.guardrail.fileName.replace(/\.md$/, ''), w.guardrail]] : [])));
|
|
33
|
+
/** 4.15's CLI half: the saved line and exit 0, or the held line and exit 1. */
|
|
34
|
+
export function lessonCommand(skill, offerId, env, now) {
|
|
35
|
+
const r = keepLessonCli(skill, offerId, env, now);
|
|
36
|
+
return { code: r.code, lines: [r.line] };
|
|
37
|
+
}
|
|
38
|
+
/** `trail skills draft init-<n> --print`: the pending init skill n, compiled again from its source (R24, R37). */
|
|
39
|
+
export function initDraftCommand(n, cwd, env, now) {
|
|
40
|
+
const key = repoPlace(cwd, env).key;
|
|
41
|
+
const p = key ? readInitRecord(key, env).pending.find((x) => x.n === n) : undefined;
|
|
42
|
+
if (!p)
|
|
43
|
+
return { code: 1, lines: [`✗ no item ${n} waits for an answer in this repo · look back again: trail init --look-back`] };
|
|
44
|
+
if (p.kind !== 'skill' || !p.skill)
|
|
45
|
+
return { code: 1, lines: [`✗ item ${n} is a ${p.kind}, not a skill: it has no steps to show`] };
|
|
46
|
+
const r = recompileInitSkill(p.skill.src, key, env, now);
|
|
47
|
+
if (!r.ok)
|
|
48
|
+
return { code: 1, lines: [`✗ ${one(p.plainName)}: its past session changed or is gone, so Trail can't show the steps.`] };
|
|
49
|
+
return { code: 0, lines: initDraft({ ...r.compiled, name: p.plainName || r.compiled.name }) };
|
|
50
|
+
}
|
|
51
|
+
/** A plain file, not a link, whose text parses as a learning. */
|
|
52
|
+
function readLearning(path) {
|
|
53
|
+
try {
|
|
54
|
+
const st = lstatSync(path);
|
|
55
|
+
if (!st.isFile() || st.size > 64 * 1024)
|
|
56
|
+
return null;
|
|
57
|
+
return parseNote(readFileSync(path, 'utf8'), path);
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* The learnings forget may retire: every-repo ones, then this repo's personal ones. The every-repo folder may be a
|
|
65
|
+
* dotfiles link (D114 (1)), as the session-start lister and the guardrail read it; the per-repo one never is.
|
|
66
|
+
*/
|
|
67
|
+
function learningFiles(cwd, env) {
|
|
68
|
+
const dirs = [[everyRepoDir(env), true]];
|
|
69
|
+
try {
|
|
70
|
+
const key = repoPlace(cwd, env).key;
|
|
71
|
+
if (key)
|
|
72
|
+
dirs.push([repoNotesDir(key, env), false]);
|
|
73
|
+
}
|
|
74
|
+
catch { /* no repo here */ }
|
|
75
|
+
return dirs.flatMap(([d, linkOk]) => {
|
|
76
|
+
try {
|
|
77
|
+
if (!(linkOk ? statSync(d) : lstatSync(d)).isDirectory())
|
|
78
|
+
return [];
|
|
79
|
+
return readdirSync(d).filter((f) => f.endsWith('.md')).sort().map((f) => join(d, f));
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
return [];
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
/** Marks a learning retired (it stops loading and enforcing), never deleting it, and never through a link into a Trail checkout. */
|
|
87
|
+
function retire(n, env) {
|
|
88
|
+
if (n.status === 'retired')
|
|
89
|
+
return { code: 0, lines: [`✓ ${one(n.title)} was already forgotten`] };
|
|
90
|
+
const { path, ...rest } = n;
|
|
91
|
+
try {
|
|
92
|
+
refuseLinkedIntoCheckout(dirname(path), env);
|
|
93
|
+
}
|
|
94
|
+
catch (e) {
|
|
95
|
+
return { code: 1, lines: [`✗ ${e.message}`] };
|
|
96
|
+
}
|
|
97
|
+
writePrivate(path, renderNote({ ...rest, status: 'retired' }));
|
|
98
|
+
const what = n.kind === 'guardrail' ? 'guardrail' : n.kind === 'lesson' ? 'lesson' : 'learning';
|
|
99
|
+
const name = what === 'guardrail' ? basename(path, '.md') : one(n.title, 60);
|
|
100
|
+
return {
|
|
101
|
+
code: 0, lines: [`✓ ${what} forgotten: ${one(n.title, 80)} · it stops loading; the file stays, marked retired: ${shownPath(path)}`],
|
|
102
|
+
dropped: { what, name, back: `change status: retired to status: active in ${shownPath(path)}` },
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
/** A skill lesson by id: its file moves to the skill's `lessons/.forgotten/`. */
|
|
106
|
+
function forgetSkillLesson(id, env) {
|
|
107
|
+
let skills;
|
|
108
|
+
try {
|
|
109
|
+
skills = readdirSync(skillsDir(env)).filter((s) => !s.startsWith('.'));
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
for (const skill of skills) {
|
|
115
|
+
const dir = join(skillsDir(env), skill, 'lessons');
|
|
116
|
+
let files;
|
|
117
|
+
try {
|
|
118
|
+
if (!lstatSync(dir).isDirectory())
|
|
119
|
+
continue;
|
|
120
|
+
files = readdirSync(dir).filter((f) => f.endsWith('.md'));
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
for (const f of files) {
|
|
126
|
+
const path = join(dir, f);
|
|
127
|
+
try {
|
|
128
|
+
if (!lstatSync(path).isFile())
|
|
129
|
+
continue;
|
|
130
|
+
const m = /^id:\s*"?(ls-[0-9a-f]{6})"?\s*$/m.exec(readFileSync(path, 'utf8').slice(0, 4096));
|
|
131
|
+
if (m?.[1] !== id)
|
|
132
|
+
continue;
|
|
133
|
+
const gone = join(dir, '.forgotten');
|
|
134
|
+
mkdirSync(gone, { recursive: true, mode: 0o700 });
|
|
135
|
+
renameSync(path, join(gone, f));
|
|
136
|
+
return {
|
|
137
|
+
code: 0, lines: [`✓ lesson ${id} forgotten · it no longer rides with ${one(skill)}`],
|
|
138
|
+
dropped: { what: 'lesson', name: id, back: `move ${f} from ${shownPath(gone)}/ back into ${shownPath(dir)}/` },
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
catch { /* the next one */ }
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* `trail forget` for what isn't a skill: an id first, then a kept guardrail's name. Null when `arg` is neither, so
|
|
148
|
+
* the caller tries a skill of that name; a lesson-id shape that matches nothing is an error, never a skill (b4 review).
|
|
149
|
+
*/
|
|
150
|
+
export function forgetLearning(arg, cwd, env) {
|
|
151
|
+
if (SKILL_LESSON_ID.test(arg))
|
|
152
|
+
return forgetSkillLesson(arg, env) ?? { code: 1, lines: [`✗ no lesson called ${one(arg, 40)}`] };
|
|
153
|
+
if (LEARNING_ID.test(arg)) {
|
|
154
|
+
const n = learningFiles(cwd, env).map(readLearning).find((x) => x?.id === arg);
|
|
155
|
+
return n ? retire(n, env) : { code: 1, lines: [`✗ no learning called ${one(arg, 40)} here`] };
|
|
156
|
+
}
|
|
157
|
+
const g = GUARDRAILS.get(arg);
|
|
158
|
+
if (g) {
|
|
159
|
+
const n = learningFiles(cwd, env).map(readLearning).find((x) => x && x.kind === 'guardrail'
|
|
160
|
+
&& (x.path.endsWith(`/${arg}.md`) || x.title === g.title) && x.status !== 'retired');
|
|
161
|
+
if (n)
|
|
162
|
+
return retire(n, env);
|
|
163
|
+
}
|
|
164
|
+
return null;
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=cli-skills-1b.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-skills-1b.js","sourceRoot":"","sources":["../../src/skills/cli-skills-1b.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { PersonCheck } from './person.js';
|
|
2
|
+
import type { SkillRef } from './types.js';
|
|
3
|
+
/** What a phase 2 command body needs of `cli-skills.ts`'s io (it fits structurally). */
|
|
4
|
+
export interface CliCtx {
|
|
5
|
+
env: NodeJS.ProcessEnv;
|
|
6
|
+
now: () => Date;
|
|
7
|
+
person: () => PersonCheck;
|
|
8
|
+
track: (event: string, props: Record<string, string>) => void;
|
|
9
|
+
out: (l: string) => void;
|
|
10
|
+
err: (l: string) => void;
|
|
11
|
+
}
|
|
12
|
+
/** `trail skills update <name> --offer <id>`: the exit code, after printing what `cliUpdate` returns. */
|
|
13
|
+
export declare function updateCommand(name: string, opts: {
|
|
14
|
+
offer?: string;
|
|
15
|
+
}, x: CliCtx): number;
|
|
16
|
+
/** 4.12: `trail skills restore <name> --version <n>`, the person only. */
|
|
17
|
+
export declare function restoreVersionCommand(name: string, version: string, x: CliCtx): number;
|
|
18
|
+
/**
|
|
19
|
+
* 4.7 "show me": for a run whose change Trail offered (the pending update or drift offer of the run's session), the
|
|
20
|
+
* change as a diff of the file as it is now. null for any other run: `draft` prints 1a's draft (a split's new skill
|
|
21
|
+
* is one).
|
|
22
|
+
*/
|
|
23
|
+
export declare function draftFoldText(runId: string, env?: NodeJS.ProcessEnv): string | null;
|
|
24
|
+
/** For `trail skills show`: the versions kept and a change waiting beside a hand-edited file; null when neither. */
|
|
25
|
+
export declare function versionsLine(ref: SkillRef, env?: NodeJS.ProcessEnv): string | null;
|
|
26
|
+
/**
|
|
27
|
+
* The CLI's own `-v, --version` is read anywhere on the command line, so it would print Trail's version for
|
|
28
|
+
* `trail skills restore <name> --version <n>`. For that one command the flag is taken out of argv before commander
|
|
29
|
+
* parses, and its value handed to the restore. `{ argv }` alone for any other command.
|
|
30
|
+
*/
|
|
31
|
+
export declare function liftRestoreVersion(argv: readonly string[]): {
|
|
32
|
+
argv: string[];
|
|
33
|
+
version?: string;
|
|
34
|
+
};
|
|
35
|
+
//# sourceMappingURL=cli-skills-2.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-skills-2.d.ts","sourceRoot":"","sources":["../../src/skills/cli-skills-2.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQ3C,wFAAwF;AACxF,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,GAAG,EAAE,MAAM,IAAI,CAAC;IAChB,MAAM,EAAE,MAAM,WAAW,CAAC;IAC1B,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IAC9D,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACzB,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1B;AAKD,yGAAyG;AACzG,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAUvF;AAED,0EAA0E;AAC1E,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CA2BtF;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,IAAI,CAahG;AAED,oHAAoH;AACpH,wBAAgB,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,IAAI,CAO/F;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG;IAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAkBhG"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Phase 2's CLI bodies (design 1.2, 3.6), beside `cli-skills.ts`, which
|
|
3
|
+
* registers them and prints:
|
|
4
|
+
* - `trail skills update <name> --offer <id>`: the CLI half of the update
|
|
5
|
+
* gate (`cliUpdate`); `skill_changed{op}` on a write.
|
|
6
|
+
* - `trail skills restore <name> --version <n>`: an older version back as a
|
|
7
|
+
* new one, the person's only (P28: `personAtTerminal` here, the agent
|
|
8
|
+
* guard before it).
|
|
9
|
+
* - `trail skills draft <run-id> --print` for a run whose change is offered:
|
|
10
|
+
* the change as a diff (4.7 "show me"). Writes nothing.
|
|
11
|
+
* - the versions a skill keeps, for `trail skills show`.
|
|
12
|
+
*
|
|
13
|
+
* Root `--version` (the CLI's own) would take `restore --version <n>`
|
|
14
|
+
* before the subcommand saw it, so `cli-skills.ts` lifts that flag out of
|
|
15
|
+
* argv for the restore (`liftRestoreVersion`) before commander parses.
|
|
16
|
+
*/
|
|
17
|
+
import { flatLine } from '../notes/flatten.js';
|
|
18
|
+
import { readRunSheet } from '../trace/runs.js';
|
|
19
|
+
import { getSkillState } from './state.js';
|
|
20
|
+
import { listAllPersonal } from './store.js';
|
|
21
|
+
import { printDiff } from './skill-diff.js';
|
|
22
|
+
import { listVersions, restoreVersion } from './versions.js';
|
|
23
|
+
import { cliUpdate, replan } from './update-gate.js';
|
|
24
|
+
import { sessionOf } from './update-plan.js';
|
|
25
|
+
const one = (t, max = 60) => flatLine(t, max);
|
|
26
|
+
const personOnly = (command) => `Only the person can run this, in their own terminal: trail ${command}`;
|
|
27
|
+
/** `trail skills update <name> --offer <id>`: the exit code, after printing what `cliUpdate` returns. */
|
|
28
|
+
export function updateCommand(name, opts, x) {
|
|
29
|
+
if (!opts.offer) {
|
|
30
|
+
x.err('✗ trail skills update takes the offer it answers: trail skills update <name> --offer <id>');
|
|
31
|
+
return 1;
|
|
32
|
+
}
|
|
33
|
+
const r = cliUpdate(name, opts.offer, x.env, x.now());
|
|
34
|
+
for (const l of r.lines)
|
|
35
|
+
(r.code === 0 ? x.out : x.err)(l);
|
|
36
|
+
// A proposal changes no file Trail reads; adopting it later is its own `skill_changed{adopted}`.
|
|
37
|
+
if (r.code === 0 && r.op && !r.proposal)
|
|
38
|
+
x.track('skill_changed', { op: r.op });
|
|
39
|
+
return r.code;
|
|
40
|
+
}
|
|
41
|
+
/** 4.12: `trail skills restore <name> --version <n>`, the person only. */
|
|
42
|
+
export function restoreVersionCommand(name, version, x) {
|
|
43
|
+
const v = String(version ?? '');
|
|
44
|
+
const command = `skills restore ${one(name)} --version ${/^[1-9]\d{0,5}$/.test(v) ? v : '<n>'}`;
|
|
45
|
+
if (!x.person().ok) {
|
|
46
|
+
x.err(personOnly(command));
|
|
47
|
+
return 1;
|
|
48
|
+
}
|
|
49
|
+
if (!/^[1-9]\d{0,5}$/.test(v)) {
|
|
50
|
+
x.err('✗ --version takes a version number: trail skills restore <name> --version <n>');
|
|
51
|
+
return 1;
|
|
52
|
+
}
|
|
53
|
+
const ref = listAllPersonal(x.env).find((r) => r.name === name);
|
|
54
|
+
if (!ref) {
|
|
55
|
+
x.err(`✗ no skill called ${one(name)} · trail skills lists them`);
|
|
56
|
+
return 1;
|
|
57
|
+
}
|
|
58
|
+
const r = restoreVersion(ref, Number(v), x.env, x.now());
|
|
59
|
+
if (!r.ok) {
|
|
60
|
+
x.err(r.why === 'unknown' ? `✗ ${one(name)} keeps no v${v} · see what it keeps: trail skills show ${one(name)}`
|
|
61
|
+
: r.why === 'busy' ? '✗ the skill store is busy (another trail command is changing it). Try again.'
|
|
62
|
+
: r.why === 'link' ? `✗ ${one(name)}'s folder in Trail's home is a link, so Trail won't write through it`
|
|
63
|
+
: `✗ Trail couldn't bring back v${v} of ${one(name)}; it is as it was`);
|
|
64
|
+
return 1;
|
|
65
|
+
}
|
|
66
|
+
x.out(`✓ ${one(name)} has v${v}'s steps again, as v${r.version} · go back: trail skills restore ${one(name)} --version ${r.version - 1}`);
|
|
67
|
+
x.track('skill_changed', { op: 'restore-version' });
|
|
68
|
+
return 0;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* 4.7 "show me": for a run whose change Trail offered (the pending update or drift offer of the run's session), the
|
|
72
|
+
* change as a diff of the file as it is now. null for any other run: `draft` prints 1a's draft (a split's new skill
|
|
73
|
+
* is one).
|
|
74
|
+
*/
|
|
75
|
+
export function draftFoldText(runId, env = process.env) {
|
|
76
|
+
try {
|
|
77
|
+
const sheet = readRunSheet(runId, env);
|
|
78
|
+
const st = sheet ? sessionOf(sheet, env) : null;
|
|
79
|
+
const po = st?.pendingOffer;
|
|
80
|
+
if (!sheet || !po || po.runId !== runId || (po.moment !== 'update' && po.moment !== 'drift') || !po.fold || po.fold.op === 'split')
|
|
81
|
+
return null;
|
|
82
|
+
const r = replan(po.fold.skillId, runId, po.fold.op, env, { st });
|
|
83
|
+
if (!r)
|
|
84
|
+
return null;
|
|
85
|
+
const diff = printDiff(r.current, r.text, [`${po.name}/SKILL.md now`, `${po.name}/SKILL.md v${r.next.meta.version}`]);
|
|
86
|
+
return diff || null;
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/** For `trail skills show`: the versions kept and a change waiting beside a hand-edited file; null when neither. */
|
|
93
|
+
export function versionsLine(ref, env = process.env) {
|
|
94
|
+
const kept = listVersions(ref);
|
|
95
|
+
const proposed = getSkillState(ref.id, env)?.proposed;
|
|
96
|
+
const parts = [];
|
|
97
|
+
if (kept.length)
|
|
98
|
+
parts.push(`older versions kept: ${kept.map((v) => `v${v}`).join(', ')}; bring one back in your own terminal: trail skills restore ${one(ref.name)} --version <n>`);
|
|
99
|
+
if (proposed && typeof proposed.version === 'number')
|
|
100
|
+
parts.push(`a change waits beside your edited file in .versions/proposed-v${proposed.version}`);
|
|
101
|
+
return parts.length ? parts.join(' · ') : null;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* The CLI's own `-v, --version` is read anywhere on the command line, so it would print Trail's version for
|
|
105
|
+
* `trail skills restore <name> --version <n>`. For that one command the flag is taken out of argv before commander
|
|
106
|
+
* parses, and its value handed to the restore. `{ argv }` alone for any other command.
|
|
107
|
+
*/
|
|
108
|
+
export function liftRestoreVersion(argv) {
|
|
109
|
+
const a = [...argv];
|
|
110
|
+
const s = a.indexOf('skills');
|
|
111
|
+
if (s < 0 || a[s + 1] !== 'restore')
|
|
112
|
+
return { argv: a };
|
|
113
|
+
for (let i = s + 2; i < a.length; i++) {
|
|
114
|
+
if (a[i] === '--')
|
|
115
|
+
break;
|
|
116
|
+
if (a[i] === '--version') {
|
|
117
|
+
const v = a[i + 1] ?? '';
|
|
118
|
+
a.splice(i, v && !v.startsWith('-') ? 2 : 1);
|
|
119
|
+
return { argv: a, version: v.startsWith('-') ? '' : v };
|
|
120
|
+
}
|
|
121
|
+
if (a[i].startsWith('--version=')) {
|
|
122
|
+
const v = a[i].slice('--version='.length);
|
|
123
|
+
a.splice(i, 1);
|
|
124
|
+
return { argv: a, version: v };
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
return { argv: a };
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=cli-skills-2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-skills-2.js","sourceRoot":"","sources":["../../src/skills/cli-skills-2.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { type RepoPlace } from '../notes/home.js';
|
|
2
|
+
import type { WallClass } from '../trace/types.js';
|
|
3
|
+
import type { ParsedSkill, SkillRef, SkillState } from './types.js';
|
|
4
|
+
export interface SkillExtras {
|
|
5
|
+
lessons: number;
|
|
6
|
+
outOfDate: string | null;
|
|
7
|
+
unusedSince: string | null;
|
|
8
|
+
}
|
|
9
|
+
export interface GuardrailRow {
|
|
10
|
+
name: string;
|
|
11
|
+
applies: string;
|
|
12
|
+
enforced: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface ErrorRow {
|
|
15
|
+
class: WallClass;
|
|
16
|
+
times: number;
|
|
17
|
+
fixed: number;
|
|
18
|
+
}
|
|
19
|
+
/** The repo the command runs in, or null outside one. */
|
|
20
|
+
export declare function placeOf(cwd: string | undefined, env: NodeJS.ProcessEnv): RepoPlace | null;
|
|
21
|
+
/** One skill's 1b facts: lesson files, gone anchors (only where it applies here), unused for 60 days. */
|
|
22
|
+
export declare function skillExtras(ref: SkillRef, parsed: ParsedSkill | null, st: SkillState | undefined, place: RepoPlace | null, env: NodeJS.ProcessEnv, now: Date): SkillExtras;
|
|
23
|
+
/** The part a skill's line gains (2.12). */
|
|
24
|
+
export declare function extrasWords(x: SkillExtras): string;
|
|
25
|
+
/**
|
|
26
|
+
* The guardrails kept: every repo, then this repo's. `enforced` only where the fast path denies (b7 review): skills on
|
|
27
|
+
* (0 rule 1) and the file still says check no-timeout and enforce sure-fail (guard-fast.ts reads both).
|
|
28
|
+
*/
|
|
29
|
+
export declare function guardrailRows(place: RepoPlace | null, env: NodeJS.ProcessEnv, skillsOn?: boolean): GuardrailRow[];
|
|
30
|
+
export declare function guardrailLines(rows: GuardrailRow[]): string[];
|
|
31
|
+
/** The errors in the catalog Trail saw in this repo over 30 days, and how often a repair followed. */
|
|
32
|
+
export declare function errorRows(place: RepoPlace | null, env: NodeJS.ProcessEnv, now: Date): ErrorRow[];
|
|
33
|
+
export declare function errorLine(rows: ErrorRow[]): string | null;
|
|
34
|
+
/** Skill lesson files plus the live wall lessons that hold here (or in every repo). */
|
|
35
|
+
export declare function lessonTotal(skillLessons: number, place: RepoPlace | null, env: NodeJS.ProcessEnv): number;
|
|
36
|
+
export declare const lessonsLine: (n: number) => string | null;
|
|
37
|
+
/**
|
|
38
|
+
* Phase 2 (3.6, 4.14): the weekly value line for the repo `trail skills` runs in, on top of the list, any day once
|
|
39
|
+
* skills have been on for a week (P21). Null outside a repo, in the first week, with skills off, with nothing to say,
|
|
40
|
+
* or on a throw (a count that can't be read says nothing).
|
|
41
|
+
*/
|
|
42
|
+
export declare function valueHere(place: RepoPlace | null, env: NodeJS.ProcessEnv, now: Date): string | null;
|
|
43
|
+
/**
|
|
44
|
+
* Phase 2 (3.6, P2, P3): how the skill's last uses followed it, for `trail skills show`, from the fidelity counts on
|
|
45
|
+
* its ledger's use lines (the last 10 that carry them). Counts of uses only; a use line without counts (1b's, or one
|
|
46
|
+
* whose flush threw) is not counted. Null until there is one. Fidelity never changes a status (P3).
|
|
47
|
+
*/
|
|
48
|
+
export declare function fidelityLine(skillId: string, env: NodeJS.ProcessEnv): string | null;
|
|
49
|
+
//# sourceMappingURL=cli-skills-report-1b.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-skills-report-1b.d.ts","sourceRoot":"","sources":["../../src/skills/cli-skills-report-1b.ts"],"names":[],"mappings":"AAWA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAM7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAMnD,OAAO,KAAK,EAAa,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAO/E,MAAM,WAAW,WAAW;IAAG,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE;AACtG,MAAM,WAAW,YAAY;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE;AAClF,MAAM,WAAW,QAAQ;IAAG,KAAK,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;AAE5E,yDAAyD;AACzD,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,SAAS,GAAG,IAAI,CAQzF;AAKD,yGAAyG;AACzG,wBAAgB,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,GAAG,IAAI,EAAE,EAAE,EAAE,UAAU,GAAG,SAAS,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,EACxH,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,GAAG,WAAW,CAOhD;AAED,4CAA4C;AAC5C,wBAAgB,WAAW,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAMlD;AAgCD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,QAAQ,UAAO,GAAG,YAAY,EAAE,CAM9G;AAOD,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,MAAM,EAAE,CAI7D;AAED,sGAAsG;AACtG,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,GAAG,QAAQ,EAAE,CAahG;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,MAAM,GAAG,IAAI,CAIzD;AAED,uFAAuF;AACvF,wBAAgB,WAAW,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAIzG;AAED,eAAO,MAAM,WAAW,GAAI,GAAG,MAAM,kBAAuE,CAAC;AAE7G;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAOnG;AAID;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,GAAG,IAAI,CAiBnF"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Phase 1b's `trail skills` lines (design 2.12), beside `cli-skills-report.ts`:
|
|
3
|
+
* per skill its lesson count, "may be out of date" for a skill that applies
|
|
4
|
+
* in the repo the command runs in, and "unused since" after 60 days; then the
|
|
5
|
+
* guardrails kept, the errors Trail knows in this repo over 30 days, and the
|
|
6
|
+
* lesson count. Reading only: file reads and stats, no process, no network.
|
|
7
|
+
* The guardrail line has no counts (R62): those are telemetry only.
|
|
8
|
+
*/
|
|
9
|
+
import { lstatSync, readdirSync, readFileSync } from 'node:fs';
|
|
10
|
+
import { basename, join } from 'node:path';
|
|
11
|
+
import { flatLine } from '../notes/flatten.js';
|
|
12
|
+
import { repoPlace } from '../notes/home.js';
|
|
13
|
+
import { everyRepoLearnings } from '../notes/every-repo.js';
|
|
14
|
+
import { repoNotesDir } from '../notes/repo-notes-dir.js';
|
|
15
|
+
import { parseNote } from '../notes/notes.js';
|
|
16
|
+
import { readWalls } from '../trace/wall-state.js';
|
|
17
|
+
import { WALLS } from '../trace/walls.js';
|
|
18
|
+
import { goneAnchors, goneWords } from './anchors.js';
|
|
19
|
+
import { readLedger } from './ledger.js';
|
|
20
|
+
import { readLessons, wallLessons } from './lessons.js';
|
|
21
|
+
import { unusedSince } from './staleness.js';
|
|
22
|
+
import { valueLine, valueWeek } from './value-line.js';
|
|
23
|
+
const DAY_MS = 86_400_000;
|
|
24
|
+
const ERROR_DAYS = 30;
|
|
25
|
+
const one = (t, max = 60) => flatLine(t, max);
|
|
26
|
+
const plural = (n, w) => `${n} ${w}${n === 1 ? '' : 's'}`;
|
|
27
|
+
/** The repo the command runs in, or null outside one. */
|
|
28
|
+
export function placeOf(cwd, env) {
|
|
29
|
+
if (!cwd)
|
|
30
|
+
return null;
|
|
31
|
+
try {
|
|
32
|
+
const p = repoPlace(cwd, env);
|
|
33
|
+
return p.git && p.key ? p : null;
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
const appliesHere = (applies, place) => !!place
|
|
40
|
+
&& (!applies || applies.toLowerCase() === 'every repo' || applies.toLowerCase() === place.key.toLowerCase());
|
|
41
|
+
/** One skill's 1b facts: lesson files, gone anchors (only where it applies here), unused for 60 days. */
|
|
42
|
+
export function skillExtras(ref, parsed, st, place, env, now) {
|
|
43
|
+
let gone = '';
|
|
44
|
+
if (parsed && appliesHere(ref.applies, place)) {
|
|
45
|
+
// Phase 2 (4.13): `trail skills` may scan the repo's CLI for its subcommands (and caches what it found).
|
|
46
|
+
try {
|
|
47
|
+
gone = goneWords(goneAnchors(parsed, place.checkout, env, { scan: true, deadline: Date.now() + 1000 }));
|
|
48
|
+
}
|
|
49
|
+
catch { /* a check that throws says nothing */ }
|
|
50
|
+
}
|
|
51
|
+
return { lessons: readLessons(ref.dir).length, outOfDate: gone || null, unusedSince: st ? unusedSince(st, now) : null };
|
|
52
|
+
}
|
|
53
|
+
/** The part a skill's line gains (2.12). */
|
|
54
|
+
export function extrasWords(x) {
|
|
55
|
+
const parts = [];
|
|
56
|
+
if (x.lessons)
|
|
57
|
+
parts.push(plural(x.lessons, 'lesson'));
|
|
58
|
+
if (x.outOfDate)
|
|
59
|
+
parts.push(`may be out of date: ${one(x.outOfDate, 160)}`);
|
|
60
|
+
if (x.unusedSince)
|
|
61
|
+
parts.push(`unused since ${dayOfLocal(x.unusedSince)} (not in the list agents see; asking for it still brings it)`);
|
|
62
|
+
return parts.map((p) => ` · ${p}`).join('');
|
|
63
|
+
}
|
|
64
|
+
const MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
|
|
65
|
+
function dayOfLocal(d) {
|
|
66
|
+
const m = /^(\d{4})-(\d{2})-(\d{2})$/.exec(d);
|
|
67
|
+
return m ? `${MONTHS[Number(m[2]) - 1] ?? 'Jan'} ${Number(m[3])}` : 'an earlier day';
|
|
68
|
+
}
|
|
69
|
+
/** Active guardrails in this repo's personal folder (plain files only). */
|
|
70
|
+
function repoGuardrails(place, env) {
|
|
71
|
+
if (!place)
|
|
72
|
+
return [];
|
|
73
|
+
let dir;
|
|
74
|
+
let files;
|
|
75
|
+
try {
|
|
76
|
+
dir = repoNotesDir(place.key, env);
|
|
77
|
+
files = readdirSync(dir).filter((f) => f.endsWith('.md')).sort();
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
return [];
|
|
81
|
+
}
|
|
82
|
+
return files.flatMap((f) => {
|
|
83
|
+
try {
|
|
84
|
+
const path = join(dir, f);
|
|
85
|
+
const st = lstatSync(path);
|
|
86
|
+
if (!st.isFile() || st.size > 64 * 1024)
|
|
87
|
+
return [];
|
|
88
|
+
const n = parseNote(readFileSync(path, 'utf8'), path);
|
|
89
|
+
return n ? [n] : [];
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
return [];
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* The guardrails kept: every repo, then this repo's. `enforced` only where the fast path denies (b7 review): skills on
|
|
98
|
+
* (0 rule 1) and the file still says check no-timeout and enforce sure-fail (guard-fast.ts reads both).
|
|
99
|
+
*/
|
|
100
|
+
export function guardrailRows(place, env, skillsOn = true) {
|
|
101
|
+
const live = (n) => n.kind === 'guardrail' && (n.status ?? 'active') === 'active';
|
|
102
|
+
const stops = (n) => skillsOn && n.check === 'no-timeout' && n.enforce === 'sure-fail';
|
|
103
|
+
const every = everyRepoLearnings(env).filter(live).map((n) => ({ name: basename(n.path, '.md'), applies: 'every repo', enforced: stops(n) }));
|
|
104
|
+
const here = repoGuardrails(place, env).filter(live).map((n) => ({ name: basename(n.path, '.md'), applies: 'this repo', enforced: stops(n) }));
|
|
105
|
+
return [...every, ...here];
|
|
106
|
+
}
|
|
107
|
+
/** What a guardrail does, in words. */
|
|
108
|
+
function guardrailDoes(g) {
|
|
109
|
+
return g.enforced ? 'stops `timeout N` while this Mac has no timeout' : 'agents read it at session start';
|
|
110
|
+
}
|
|
111
|
+
export function guardrailLines(rows) {
|
|
112
|
+
if (!rows.length)
|
|
113
|
+
return [];
|
|
114
|
+
const width = Math.max(...rows.map((g) => one(g.name).length)) + 3;
|
|
115
|
+
return ['guardrails:', ...rows.map((g) => ` ${one(g.name).padEnd(width)}${g.applies} · ${guardrailDoes(g)}`)];
|
|
116
|
+
}
|
|
117
|
+
/** The errors in the catalog Trail saw in this repo over 30 days, and how often a repair followed. */
|
|
118
|
+
export function errorRows(place, env, now) {
|
|
119
|
+
if (!place)
|
|
120
|
+
return [];
|
|
121
|
+
const w = readWalls(env);
|
|
122
|
+
const since = now.getTime() - ERROR_DAYS * DAY_MS;
|
|
123
|
+
const recent = (x) => x.repo.toLowerCase() === place.key.toLowerCase() && Date.parse(`${x.d}T12:00:00`) >= since;
|
|
124
|
+
const out = [];
|
|
125
|
+
for (const wall of WALLS) {
|
|
126
|
+
const c = w.classes[wall.cls];
|
|
127
|
+
if (!c)
|
|
128
|
+
continue;
|
|
129
|
+
const times = c.seen.filter(recent).length;
|
|
130
|
+
if (times)
|
|
131
|
+
out.push({ class: wall.cls, times, fixed: c.fixed.filter(recent).length });
|
|
132
|
+
}
|
|
133
|
+
return out.sort((a, b) => b.times - a.times);
|
|
134
|
+
}
|
|
135
|
+
export function errorLine(rows) {
|
|
136
|
+
if (!rows.length)
|
|
137
|
+
return null;
|
|
138
|
+
const words = (r) => `${WALLS.find((x) => x.cls === r.class).words} ${plural(r.times, 'time')}${r.fixed ? `, fixed ${plural(r.fixed, 'time')}` : ''}`;
|
|
139
|
+
return `errors Trail knows here (${ERROR_DAYS} days): ${rows.map(words).join(' · ')}`;
|
|
140
|
+
}
|
|
141
|
+
/** Skill lesson files plus the live wall lessons that hold here (or in every repo). */
|
|
142
|
+
export function lessonTotal(skillLessons, place, env) {
|
|
143
|
+
const ids = new Set();
|
|
144
|
+
for (const w of WALLS)
|
|
145
|
+
for (const l of wallLessons(w.cls, place?.key ?? '', env))
|
|
146
|
+
ids.add(l.id);
|
|
147
|
+
return skillLessons + ids.size;
|
|
148
|
+
}
|
|
149
|
+
export const lessonsLine = (n) => (n ? `lessons: ${n} (trail skills show <name> lists them)` : null);
|
|
150
|
+
/**
|
|
151
|
+
* Phase 2 (3.6, 4.14): the weekly value line for the repo `trail skills` runs in, on top of the list, any day once
|
|
152
|
+
* skills have been on for a week (P21). Null outside a repo, in the first week, with skills off, with nothing to say,
|
|
153
|
+
* or on a throw (a count that can't be read says nothing).
|
|
154
|
+
*/
|
|
155
|
+
export function valueHere(place, env, now) {
|
|
156
|
+
if (!place)
|
|
157
|
+
return null;
|
|
158
|
+
try {
|
|
159
|
+
return valueWeek(env, now) ? valueLine([place.key], env, now) : null;
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
return null;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
const FIDELITY_USES = 10;
|
|
166
|
+
/**
|
|
167
|
+
* Phase 2 (3.6, P2, P3): how the skill's last uses followed it, for `trail skills show`, from the fidelity counts on
|
|
168
|
+
* its ledger's use lines (the last 10 that carry them). Counts of uses only; a use line without counts (1b's, or one
|
|
169
|
+
* whose flush threw) is not counted. Null until there is one. Fidelity never changes a status (P3).
|
|
170
|
+
*/
|
|
171
|
+
export function fidelityLine(skillId, env) {
|
|
172
|
+
let uses;
|
|
173
|
+
try {
|
|
174
|
+
uses = readLedger(skillId, env).filter((l) => l.event === 'use' && !!l.fid && typeof l.fid === 'object').slice(-FIDELITY_USES);
|
|
175
|
+
}
|
|
176
|
+
catch {
|
|
177
|
+
return null;
|
|
178
|
+
}
|
|
179
|
+
if (!uses.length)
|
|
180
|
+
return null;
|
|
181
|
+
const n = (f) => uses.filter(f).length;
|
|
182
|
+
const parts = [
|
|
183
|
+
['every step ran as kept', n((u) => u.fid.missing === 0 && u.fid.changed === 0)],
|
|
184
|
+
['a step was left out', n((u) => u.fid.missing > 0)],
|
|
185
|
+
['a step ran another way', n((u) => u.fid.changed > 0)],
|
|
186
|
+
['an extra command ran', n((u) => u.fid.extra > 0)],
|
|
187
|
+
];
|
|
188
|
+
const said = parts.filter(([, k]) => k > 0).map(([w, k]) => `${w} in ${k}`);
|
|
189
|
+
return `how its last ${plural(uses.length, 'use')} with counts on this machine went: ${said.join(' · ')}`;
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=cli-skills-report-1b.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-skills-report-1b.js","sourceRoot":"","sources":["../../src/skills/cli-skills-report-1b.ts"],"names":[],"mappings":"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"}
|