@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,74 @@
|
|
|
1
|
+
import type { ClaudeFailure } from './claude-call.js';
|
|
2
|
+
import type { KeepResult } from './keep.js';
|
|
3
|
+
import type { InitItem, InitKind, LookBack } from './types.js';
|
|
4
|
+
export interface ScreenFacts {
|
|
5
|
+
lookBack: LookBack;
|
|
6
|
+
model: string | 'none';
|
|
7
|
+
why: ClaudeFailure | null;
|
|
8
|
+
tokens: number;
|
|
9
|
+
calls: number;
|
|
10
|
+
offers: 'on' | 'off';
|
|
11
|
+
offersOffAt: string | null;
|
|
12
|
+
repoName: string;
|
|
13
|
+
agent: boolean;
|
|
14
|
+
skills: boolean;
|
|
15
|
+
/** How many skills the naming call was sent (its screen line). */
|
|
16
|
+
sentSkills?: number;
|
|
17
|
+
/** Claude Code's own words when the naming call failed. */
|
|
18
|
+
whySaid?: string;
|
|
19
|
+
/** How many PR reviews the review read went through, when it ran (the twice-asked line). */
|
|
20
|
+
reviewsRead?: number;
|
|
21
|
+
/** false when no look-back ran this init (not due, or off) and the screen holds only #662's team rows. */
|
|
22
|
+
lookedBack?: boolean;
|
|
23
|
+
}
|
|
24
|
+
export declare const INIT_COPY: Record<string, string>;
|
|
25
|
+
/**
|
|
26
|
+
* Part 7: the skill on this screen a preference only repeats a step of (keep.ts folds it in when both are kept), or
|
|
27
|
+
* null. Only a preference just for the person in this repo, as keep.ts folds.
|
|
28
|
+
*/
|
|
29
|
+
export declare function foldTarget(item: InitItem, items: InitItem[]): InitItem | null;
|
|
30
|
+
/** `{x}` filled from `v`. */
|
|
31
|
+
export declare function fill(t: string, v: Record<string, string | number>): string;
|
|
32
|
+
/** 'Jul 3' from '2026-07-03'. */
|
|
33
|
+
export declare function dayWords(day: string | null): string;
|
|
34
|
+
/** The repo's own name for the job phrases: the last part of its key. */
|
|
35
|
+
export declare const repoNameOf: (repoKey: string) => string;
|
|
36
|
+
/** A plain branch name: what a ship item's phrase may carry from its check, nothing else of the command. */
|
|
37
|
+
export declare const BRANCH_NAME: RegExp;
|
|
38
|
+
/** The branches a ship skill's check names (`refs/heads/<b>`), at most 3: the words of its job phrase. */
|
|
39
|
+
export declare function shipBranchesOf(check: string | null | undefined): string[];
|
|
40
|
+
/** 4.7's job phrases. Release reaches init only with an npm-view check (OFFER_FAMILIES), so it publishes to npm. */
|
|
41
|
+
export declare function jobPhrase(item: Pick<InitItem, 'key' | 'skill'>, repoName: string): string;
|
|
42
|
+
/** Where an item goes, in words. */
|
|
43
|
+
export declare function scopeWords(item: Pick<InitItem, 'kind' | 'scope' | 'applies'>): string;
|
|
44
|
+
/** The count sentence, with its full stop. */
|
|
45
|
+
export declare function countSentence(item: InitItem, repoName: string): string;
|
|
46
|
+
/** Items numbered as the screen and the relay show them: by kind, then in pickFive's order within a kind. */
|
|
47
|
+
export declare function numbered<T extends {
|
|
48
|
+
kind: InitKind;
|
|
49
|
+
}>(picked: T[]): Array<T & {
|
|
50
|
+
n: number;
|
|
51
|
+
}>;
|
|
52
|
+
/** The review screen (4.7): header, the items by kind, the open draft under its item, the keys. */
|
|
53
|
+
export declare function screenLines(items: InitItem[], state: {
|
|
54
|
+
cursor: number;
|
|
55
|
+
open: number | null;
|
|
56
|
+
note?: string;
|
|
57
|
+
openLines?: string[];
|
|
58
|
+
}, facts: ScreenFacts): string[];
|
|
59
|
+
/** One relayed item: `{n}. {title} ({kind}) · {count} · {scope}`. */
|
|
60
|
+
export declare function relayItemLine(item: InitItem, repoName: string): string;
|
|
61
|
+
/**
|
|
62
|
+
* The list between the agent's lead and the keep line, the same for the relay and the handover (3.1 step 10), so a
|
|
63
|
+
* list rebuilt from the record reads as the one printed.
|
|
64
|
+
*/
|
|
65
|
+
export declare function relayBlock(items: InitItem[], repoName: string, agent: boolean): string[];
|
|
66
|
+
/** 4.8: the found line, then the list (agent: who it is from, RELAY_LINE, the list, draft, KEEP_LINE; a script: no RELAY_LINE). */
|
|
67
|
+
export declare function relayLines(items: InitItem[], facts: ScreenFacts): string[];
|
|
68
|
+
/** `--yes`'s line (4.9): an agent's keeps nothing; the person's script keeps only their own words. */
|
|
69
|
+
export declare function yesLine(items: Array<Pick<InitItem, 'kind'>>, agent: boolean): string;
|
|
70
|
+
/** After a keep (4.7 "After"). `how`: the key that ended the screen, or the path that kept. */
|
|
71
|
+
export declare function afterKeepLines(r: KeepResult & {
|
|
72
|
+
how?: 'enter' | 'n' | 'esc' | 'keep' | 'yes';
|
|
73
|
+
}, facts: ScreenFacts): string[];
|
|
74
|
+
//# sourceMappingURL=review-screen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-screen.d.ts","sourceRoot":"","sources":["../../src/init/review-screen.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What `trail init` shows (design 4.7, 4.8): the review screen's lines, the
|
|
3
|
+
* relay an agent or a script gets, and the lines after a keep. Pure: no
|
|
4
|
+
* file, no clock, no terminal. The keys are review-tty.ts's; what is kept
|
|
5
|
+
* is keep.ts's.
|
|
6
|
+
*
|
|
7
|
+
* Words are 4.7's. The relay keeps phase 0's RELAY_LINE and KEEP_LINE word
|
|
8
|
+
* for word (the keep gate finds the list by them) and, for an agent, opens
|
|
9
|
+
* with who it is from and why, and ends saying Trail checks the person's
|
|
10
|
+
* typed numbers (D101): it never tells the agent to choose.
|
|
11
|
+
*/
|
|
12
|
+
import { flatLine } from '../notes/flatten.js';
|
|
13
|
+
import { directive } from '../skills/directive-words.js';
|
|
14
|
+
import { WALLS } from '../trace/walls.js';
|
|
15
|
+
import { nameLine } from './name-call.js';
|
|
16
|
+
import { DRAFT_LINE, KEEP_LINE, RELAY_LINE } from './relay.js';
|
|
17
|
+
import { onlyRepeats } from '../skills/follow-learnings.js';
|
|
18
|
+
export const INIT_COPY = {
|
|
19
|
+
found: '✓ looked back at {n} Claude Code sessions about this repo, typed into on {d} days ({from} to {to})',
|
|
20
|
+
foundNone: '· no past Claude Code sessions about this repo on this machine yet',
|
|
21
|
+
parent: ' · {p} started in the parent folder',
|
|
22
|
+
plainNames: ' · names are plain: to name them with Claude, run trail init --look-back in your own terminal',
|
|
23
|
+
alreadyKept: '· {a} already kept {where} (they apply here too)',
|
|
24
|
+
nothing: "· nothing came up on two or more days, so there's nothing to keep from your past sessions yet",
|
|
25
|
+
skills: 'Skills',
|
|
26
|
+
guardrails: 'Guardrails',
|
|
27
|
+
preferences: 'Preferences',
|
|
28
|
+
reviews: 'From PR reviews',
|
|
29
|
+
team: "Your teammates' Claude doesn't know these yet",
|
|
30
|
+
keys1: '↑↓ move · space tick · s see the steps · enter keep ticked · n keep nothing',
|
|
31
|
+
keys2: 'w every repo or this repo · r add a preference to this repo (committed) · esc decide later',
|
|
32
|
+
skillsOff: 'skills are off · trail skills on lets init also find repeated jobs and keep their steps',
|
|
33
|
+
skillCount: 'Claude worked out how to {job} from scratch on {days} different days.',
|
|
34
|
+
guardCount: 'Hit {words} on {days} days.',
|
|
35
|
+
prefCount: 'You said this on {days} days.',
|
|
36
|
+
reviewCount: 'From review on PR {prs}.',
|
|
37
|
+
claudeCount: 'From what your Claude keeps about this repo.',
|
|
38
|
+
personal: 'just for you, in this repo',
|
|
39
|
+
everyRepo: 'just for you, in every repo',
|
|
40
|
+
repo: 'added to this repo, committed',
|
|
41
|
+
reviewRepo: 'added to this repo',
|
|
42
|
+
agentLead: 'trail init found these in the past sessions of the person you are working with. Only they decide what Trail keeps, so the list is theirs to answer.',
|
|
43
|
+
agentKeep: "Trail checks the numbers the person typed in this session before it keeps anything, so run trail keep only with the numbers they typed.",
|
|
44
|
+
pickInTerminal: 'Pick in a terminal: trail init',
|
|
45
|
+
handover: 'trail init found {k} items in this person\'s past sessions that they haven\'t answered yet. Only they decide what Trail keeps.',
|
|
46
|
+
kept: '✓ kept {k}, just for you · in ~/.trail, never committed, never uploaded',
|
|
47
|
+
keptMixed: "✓ kept {k} · {j} just for you in ~/.trail, never uploaded · {r} added to this repo's .trail/learnings (commit it to share)",
|
|
48
|
+
notKept: "Not kept: {names}. Trail won't bring {them} up again.",
|
|
49
|
+
refused: "{name}: its past session changed or is gone, so Trail can't check the steps. It will offer it again after the job checks out.",
|
|
50
|
+
offersOn: 'skills: on · at most one offer per session, only after a job checks out · stop offers: trail skills offers off · all off: trail skills off',
|
|
51
|
+
offersOff: 'skill offers are off (you turned them off on {date}) · trail skills offers on',
|
|
52
|
+
afterEsc: 'kept nothing · they wait until you run trail init again',
|
|
53
|
+
afterN: "kept nothing · Trail won't bring these up again",
|
|
54
|
+
wNoTimeout: 'this Mac has no timeout in any repo, so it stays every repo',
|
|
55
|
+
rLater: 'adding skills and guardrails to the repo comes in a later version',
|
|
56
|
+
yesAgent: 'found {found}. Kept nothing: an agent ran this. The person picks with trail keep <numbers> after seeing the list, or trail init --look-back in their own terminal',
|
|
57
|
+
yesScript: 'found {found}. Kept only the preferences (your own words). To pick the rest: trail init --look-back',
|
|
58
|
+
foldHint: 'kept with skill {n}, it goes into that skill as a lesson, since a step of it already does this',
|
|
59
|
+
folded: '· {pref} went into {skill} as a lesson, since a step of it already does that',
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Part 7: the skill on this screen a preference only repeats a step of (keep.ts folds it in when both are kept), or
|
|
63
|
+
* null. Only a preference just for the person in this repo, as keep.ts folds.
|
|
64
|
+
*/
|
|
65
|
+
export function foldTarget(item, items) {
|
|
66
|
+
if (item.kind !== 'preference' || item.scope === 'repo' || item.applies === 'every repo' || !item.title)
|
|
67
|
+
return null;
|
|
68
|
+
return items.find((s) => s.kind === 'skill' && s.skill?.compiled && onlyRepeats(item.title, s.skill.compiled.steps.map((x) => x.cmd))) ?? null;
|
|
69
|
+
}
|
|
70
|
+
/** `{x}` filled from `v`. */
|
|
71
|
+
export function fill(t, v) {
|
|
72
|
+
return t.replace(/\{(\w+)\}/g, (m, k) => (k in v ? String(v[k]) : m));
|
|
73
|
+
}
|
|
74
|
+
const MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
|
|
75
|
+
/** 'Jul 3' from '2026-07-03'. */
|
|
76
|
+
export function dayWords(day) {
|
|
77
|
+
const m = /^(\d{4})-(\d{2})-(\d{2})/.exec(day ?? '');
|
|
78
|
+
return m ? `${MONTHS[Number(m[2]) - 1]} ${Number(m[3])}` : '';
|
|
79
|
+
}
|
|
80
|
+
const plural = (n, one, many = `${one}s`) => `${n} ${n === 1 ? one : many}`;
|
|
81
|
+
/** The repo's own name for the job phrases: the last part of its key. */
|
|
82
|
+
export const repoNameOf = (repoKey) => repoKey.split('/').filter(Boolean).pop() ?? repoKey;
|
|
83
|
+
/** A plain branch name: what a ship item's phrase may carry from its check, nothing else of the command. */
|
|
84
|
+
export const BRANCH_NAME = /^[\w][\w./-]{0,59}$/;
|
|
85
|
+
/** The branches a ship skill's check names (`refs/heads/<b>`), at most 3: the words of its job phrase. */
|
|
86
|
+
export function shipBranchesOf(check) {
|
|
87
|
+
return [...new Set([...String(check ?? '').matchAll(/refs\/heads\/([\w./-]+)/g)].map((m) => m[1]))].filter((b) => BRANCH_NAME.test(b)).slice(0, 3);
|
|
88
|
+
}
|
|
89
|
+
/** 4.7's job phrases. Release reaches init only with an npm-view check (OFFER_FAMILIES), so it publishes to npm. */
|
|
90
|
+
export function jobPhrase(item, repoName) {
|
|
91
|
+
const job = item.key.slice(item.key.lastIndexOf('|job:') + 5);
|
|
92
|
+
switch (job) {
|
|
93
|
+
case 'release': return /\bnpm view\b/.test(item.skill?.compiled?.check ?? 'npm view') ? `publish ${repoName} to npm` : `release ${repoName}`;
|
|
94
|
+
case 'ship': {
|
|
95
|
+
// The compiled check's branches; a handed-over item has only the names the relay wrote down (D112).
|
|
96
|
+
const branches = item.skill?.compiled ? shipBranchesOf(item.skill.compiled.check) : item.skill?.branches ?? [];
|
|
97
|
+
return branches.length ? `ship ${repoName} to ${branches.join(' and ')}` : `ship ${repoName}`;
|
|
98
|
+
}
|
|
99
|
+
case 'tests': return `run ${repoName}'s tests`;
|
|
100
|
+
case 'pr-green': return "get a PR's checks green";
|
|
101
|
+
case 'run-local': return `run ${repoName} locally`;
|
|
102
|
+
default: return `${job} ${repoName}`;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
/** Where an item goes, in words. */
|
|
106
|
+
export function scopeWords(item) {
|
|
107
|
+
if (item.kind === 'review' || item.kind === 'claude')
|
|
108
|
+
return INIT_COPY.reviewRepo;
|
|
109
|
+
if (item.scope === 'repo')
|
|
110
|
+
return INIT_COPY.repo;
|
|
111
|
+
return item.applies === 'every repo' ? INIT_COPY.everyRepo : INIT_COPY.personal;
|
|
112
|
+
}
|
|
113
|
+
/** The count sentence, with its full stop. */
|
|
114
|
+
export function countSentence(item, repoName) {
|
|
115
|
+
const days = item.count.days;
|
|
116
|
+
switch (item.kind) {
|
|
117
|
+
case 'skill': return fill(INIT_COPY.skillCount, { job: jobPhrase(item, repoName), days });
|
|
118
|
+
case 'guardrail': return fill(INIT_COPY.guardCount, { words: WALLS.find((w) => w.cls === item.guardrail?.cls)?.words ?? 'this error', days });
|
|
119
|
+
case 'preference': return fill(INIT_COPY.prefCount, { days });
|
|
120
|
+
case 'claude': return INIT_COPY.claudeCount;
|
|
121
|
+
default: {
|
|
122
|
+
// #662's source words: the PRs, three at most.
|
|
123
|
+
const prs = item.review?.prs ?? [];
|
|
124
|
+
return fill(INIT_COPY.reviewCount, { prs: `${prs.slice(0, 3).map((p) => `#${p}`).join(', ')}${prs.length > 3 ? ` +${prs.length - 3}` : ''}` });
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/** An item's title or sentence as one plain line (b6 review): no escape, bell or break from a person's line, a review's
|
|
129
|
+
* model text or a description reaches the terminal or the relay, and nothing over 160 characters. */
|
|
130
|
+
const plain = (t) => flatLine(t, 160);
|
|
131
|
+
/** A draft line as one line with its own spacing kept (the steps' columns): no control or invisible character, at
|
|
132
|
+
* most 400 characters. */
|
|
133
|
+
const spaced = (t) => Array.from(String(t ?? '').replace(/\r\n|[\n\r\u000b\u000c\u0085\u2028\u2029]/g, ' ')
|
|
134
|
+
.replace(/[\u0000-\u0008\u000e-\u001f\u007f-\u009f\p{Cf}]/gu, '')).slice(0, 400).join('');
|
|
135
|
+
const quoted = (item) => (item.kind === 'preference' ? `"${plain(item.title).replace(/"/g, "'")}"` : plain(item.title));
|
|
136
|
+
const KIND_ORDER = ['skill', 'guardrail', 'preference', 'review', 'claude'];
|
|
137
|
+
/** The heading over each kind; #662's team rows, from reviews and from what Claude Code keeps (kind 'claude'), share one. */
|
|
138
|
+
const GROUP = { skill: 'skills', guardrail: 'guardrails', preference: 'preferences', review: 'team', claude: 'team' };
|
|
139
|
+
/** Items numbered as the screen and the relay show them: by kind, then in pickFive's order within a kind. */
|
|
140
|
+
export function numbered(picked) {
|
|
141
|
+
const sorted = [...picked].sort((a, b) => KIND_ORDER.indexOf(a.kind) - KIND_ORDER.indexOf(b.kind));
|
|
142
|
+
return sorted.map((x, i) => ({ ...x, n: i + 1 }));
|
|
143
|
+
}
|
|
144
|
+
function foundLine(facts, plain) {
|
|
145
|
+
const lb = facts.lookBack;
|
|
146
|
+
if (!lb.sessions.length)
|
|
147
|
+
return INIT_COPY.foundNone;
|
|
148
|
+
let line = fill(INIT_COPY.found, { n: lb.sessions.length, d: lb.days, from: dayWords(lb.from), to: dayWords(lb.to) });
|
|
149
|
+
if (lb.parent)
|
|
150
|
+
line += fill(INIT_COPY.parent, { p: lb.parent });
|
|
151
|
+
if (plain)
|
|
152
|
+
line += INIT_COPY.plainNames;
|
|
153
|
+
return line;
|
|
154
|
+
}
|
|
155
|
+
function headLines(items, facts, relay) {
|
|
156
|
+
const out = facts.lookedBack === false ? [] : [foundLine(facts, relay && items.some((i) => i.kind === 'skill'))];
|
|
157
|
+
if (!relay) {
|
|
158
|
+
const plainNames = items.filter((i) => i.kind === 'skill').map((i) => i.plainName);
|
|
159
|
+
const said = nameLine({ names: {}, model: facts.model, why: facts.why, sentItems: facts.sentSkills ?? 0, tokens: facts.tokens, ...(facts.whySaid ? { said: facts.whySaid } : {}) }, plainNames, facts.reviewsRead ?? 0);
|
|
160
|
+
if (said)
|
|
161
|
+
out.push(said);
|
|
162
|
+
}
|
|
163
|
+
const kept = facts.lookBack.alreadyKept;
|
|
164
|
+
if (kept.here)
|
|
165
|
+
out.push(fill(INIT_COPY.alreadyKept, { a: kept.here, where: 'for every repo' }));
|
|
166
|
+
for (const e of kept.elsewhere)
|
|
167
|
+
out.push(fill(INIT_COPY.alreadyKept, { a: e.n, where: `in ${e.repo}` }));
|
|
168
|
+
for (const e of facts.lookBack.errors)
|
|
169
|
+
out.push(`· ${e}`);
|
|
170
|
+
return out;
|
|
171
|
+
}
|
|
172
|
+
/** The review screen (4.7): header, the items by kind, the open draft under its item, the keys. */
|
|
173
|
+
export function screenLines(items, state, facts) {
|
|
174
|
+
const out = headLines(items, facts, false);
|
|
175
|
+
if (!items.length) {
|
|
176
|
+
out.push(INIT_COPY.nothing);
|
|
177
|
+
return out;
|
|
178
|
+
}
|
|
179
|
+
out.push('');
|
|
180
|
+
let last = null;
|
|
181
|
+
items.forEach((item, at) => {
|
|
182
|
+
if (GROUP[item.kind] !== last) {
|
|
183
|
+
last = GROUP[item.kind];
|
|
184
|
+
out.push(INIT_COPY[last]);
|
|
185
|
+
}
|
|
186
|
+
const cur = at === state.cursor ? '›' : ' ';
|
|
187
|
+
const desc = item.description ? ` · ${plain(item.description)}` : '';
|
|
188
|
+
out.push(`${cur} [${item.ticked ? 'x' : ' '}] ${item.n} ${quoted(item)}${desc}`);
|
|
189
|
+
const ev = item.evidence.map(plain).map((e) => ` ${e.charAt(0).toUpperCase()}${e.slice(1)}.`).join('');
|
|
190
|
+
const into = foldTarget(item, items);
|
|
191
|
+
const fold = into ? ` · ${fill(INIT_COPY.foldHint, { n: into.n })}` : '';
|
|
192
|
+
out.push(` ${countSentence(item, facts.repoName)}${ev} · ${scopeWords(item)}${fold}`);
|
|
193
|
+
if (state.open === at)
|
|
194
|
+
for (const l of state.openLines ?? [])
|
|
195
|
+
out.push(` ${spaced(l)}`);
|
|
196
|
+
});
|
|
197
|
+
out.push('');
|
|
198
|
+
if (state.note)
|
|
199
|
+
out.push(state.note);
|
|
200
|
+
out.push(INIT_COPY.keys1, INIT_COPY.keys2);
|
|
201
|
+
if (!facts.skills)
|
|
202
|
+
out.push(INIT_COPY.skillsOff);
|
|
203
|
+
return out;
|
|
204
|
+
}
|
|
205
|
+
/** One relayed item: `{n}. {title} ({kind}) · {count} · {scope}`. */
|
|
206
|
+
export function relayItemLine(item, repoName) {
|
|
207
|
+
const kind = item.kind === 'preference' ? 'preference, your own words' : item.kind === 'review' ? 'from PR reviews' : item.kind === 'claude' ? 'from what your Claude keeps' : item.kind;
|
|
208
|
+
return `${item.n}. ${quoted(item)} (${kind}) · ${countSentence(item, repoName).replace(/\.$/, '')} · ${scopeWords(item)}`;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* The list between the agent's lead and the keep line, the same for the relay and the handover (3.1 step 10), so a
|
|
212
|
+
* list rebuilt from the record reads as the one printed.
|
|
213
|
+
*/
|
|
214
|
+
export function relayBlock(items, repoName, agent) {
|
|
215
|
+
const list = items.map((i) => relayItemLine(i, repoName));
|
|
216
|
+
const draft = items.some((i) => i.kind === 'skill') ? [DRAFT_LINE.replace('init-1', `init-${items.find((i) => i.kind === 'skill').n}`)] : [];
|
|
217
|
+
if (!agent)
|
|
218
|
+
return [...list, ...draft, INIT_COPY.pickInTerminal];
|
|
219
|
+
return [directive(null, INIT_COPY.agentLead), RELAY_LINE, ...list, ...draft, KEEP_LINE, INIT_COPY.agentKeep];
|
|
220
|
+
}
|
|
221
|
+
/** 4.8: the found line, then the list (agent: who it is from, RELAY_LINE, the list, draft, KEEP_LINE; a script: no RELAY_LINE). */
|
|
222
|
+
export function relayLines(items, facts) {
|
|
223
|
+
const out = headLines(items, facts, true);
|
|
224
|
+
if (!items.length)
|
|
225
|
+
return [...out, INIT_COPY.nothing];
|
|
226
|
+
return [...out, ...relayBlock(items, facts.repoName, facts.agent)];
|
|
227
|
+
}
|
|
228
|
+
const counts = (items) => {
|
|
229
|
+
const n = (k) => items.filter((i) => i.kind === k).length;
|
|
230
|
+
return `${plural(n('skill'), 'skill')}, ${plural(n('guardrail'), 'guardrail')} and ${plural(n('preference'), 'preference')}`;
|
|
231
|
+
};
|
|
232
|
+
/** `--yes`'s line (4.9): an agent's keeps nothing; the person's script keeps only their own words. */
|
|
233
|
+
export function yesLine(items, agent) {
|
|
234
|
+
return fill(agent ? INIT_COPY.yesAgent : INIT_COPY.yesScript, { found: counts(items) });
|
|
235
|
+
}
|
|
236
|
+
/** After a keep (4.7 "After"). `how`: the key that ended the screen, or the path that kept. */
|
|
237
|
+
export function afterKeepLines(r, facts) {
|
|
238
|
+
const out = [];
|
|
239
|
+
const kept = r.kept.length;
|
|
240
|
+
if (r.how === 'esc')
|
|
241
|
+
return [INIT_COPY.afterEsc];
|
|
242
|
+
if (!kept && !r.refused.length)
|
|
243
|
+
return [INIT_COPY.afterN];
|
|
244
|
+
if (kept) {
|
|
245
|
+
const inRepo = r.kept.filter((i) => i.scope === 'repo' || i.kind === 'review' || i.kind === 'claude').length;
|
|
246
|
+
out.push(inRepo ? fill(INIT_COPY.keptMixed, { k: kept, j: kept - inRepo, r: inRepo }) : fill(INIT_COPY.kept, { k: kept }));
|
|
247
|
+
}
|
|
248
|
+
for (const x of r.refused)
|
|
249
|
+
out.push(fill(INIT_COPY.refused, { name: plain(x.item.title) }));
|
|
250
|
+
for (const f of r.folded ?? [])
|
|
251
|
+
out.push(fill(INIT_COPY.folded, { pref: quoted(f.item), skill: plain(f.skill) }));
|
|
252
|
+
if (r.notKept.length)
|
|
253
|
+
out.push(fill(INIT_COPY.notKept, { names: r.notKept.map((i) => quoted(i)).join(', '), them: r.notKept.length === 1 ? 'it' : 'them' }));
|
|
254
|
+
if (facts.skills)
|
|
255
|
+
out.push(facts.offers === 'off' ? fill(INIT_COPY.offersOff, { date: dayWords(facts.offersOffAt) || 'an earlier day' }) : INIT_COPY.offersOn);
|
|
256
|
+
return out;
|
|
257
|
+
}
|
|
258
|
+
//# sourceMappingURL=review-screen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-screen.js","sourceRoot":"","sources":["../../src/init/review-screen.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { CompiledSkill } from '../skills/types.js';
|
|
2
|
+
import { type ScreenFacts } from './review-screen.js';
|
|
3
|
+
import type { InitItem } from './types.js';
|
|
4
|
+
export interface ScreenAnswer {
|
|
5
|
+
how: 'enter' | 'n' | 'esc';
|
|
6
|
+
ticked: number[];
|
|
7
|
+
scopes: Record<number, {
|
|
8
|
+
applies: string;
|
|
9
|
+
scope: 'personal' | 'repo';
|
|
10
|
+
}>;
|
|
11
|
+
}
|
|
12
|
+
/** A skill's draft as 1a shows it, headed for a run from the past. */
|
|
13
|
+
export declare function initDraft(c: CompiledSkill): string[];
|
|
14
|
+
/** What `s` shows for an item, read now (the person's lines through their pointers, checked by sha). */
|
|
15
|
+
export declare function detailLines(item: InitItem, env: NodeJS.ProcessEnv): string[];
|
|
16
|
+
/** `quit`: Ctrl-C or q, which always leave; `esc` closes an open draft first. */
|
|
17
|
+
type Key = 'up' | 'down' | 'space' | 's' | 'w' | 'r' | 'enter' | 'n' | 'esc' | 'quit' | 'other';
|
|
18
|
+
/** The keys in one chunk of input, in order. */
|
|
19
|
+
export declare function keysOf(chunk: string): Key[];
|
|
20
|
+
/** Raw-mode keys (4.7). Resolves on enter, n, esc, q or Ctrl-C. Never keeps anything itself. */
|
|
21
|
+
export declare function runScreen(items: InitItem[], facts: ScreenFacts, io: {
|
|
22
|
+
stdin: NodeJS.ReadStream;
|
|
23
|
+
stdout: NodeJS.WriteStream;
|
|
24
|
+
}, opts: {
|
|
25
|
+
repoKey: string;
|
|
26
|
+
env?: NodeJS.ProcessEnv;
|
|
27
|
+
}): Promise<ScreenAnswer>;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=review-tty.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-tty.d.ts","sourceRoot":"","sources":["../../src/init/review-tty.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAMxD,OAAO,EAA0B,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3C,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,OAAO,GAAG,GAAG,GAAG,KAAK,CAAC;IAC3B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAAA;KAAE,CAAC,CAAC;CACzE;AAID,sEAAsE;AACtE,wBAAgB,SAAS,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,EAAE,CAIpD;AAED,wGAAwG;AACxG,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,EAAE,CAkB5E;AAED,iFAAiF;AACjF,KAAK,GAAG,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;AAEhG,gDAAgD;AAChD,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,CAsB3C;AAgDD,gGAAgG;AAChG,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAA;CAAE,EAC3H,IAAI,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;CAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CA0D3E"}
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The review screen's keys (design 4.7), in raw mode on the person's own
|
|
3
|
+
* terminal. It never keeps anything itself: it resolves with how the person
|
|
4
|
+
* left it, the numbers ticked, and where each item applies.
|
|
5
|
+
*
|
|
6
|
+
* ↑↓ (or k/j) move · space ticks · s opens the item in place (a skill's
|
|
7
|
+
* draft, a guardrail's text, a preference's lines with their dates, read
|
|
8
|
+
* now and shown, never stored) and esc or s closes it · w flips this repo
|
|
9
|
+
* and every repo (no-timeout stays every repo) · r adds a preference to the
|
|
10
|
+
* repo (anything else: later) · enter keeps the ticked · n keeps nothing ·
|
|
11
|
+
* esc, q and Ctrl-C decide later. A closed stdin is esc.
|
|
12
|
+
*/
|
|
13
|
+
import { draftText, monthDay } from '../skills/compile-words.js';
|
|
14
|
+
import { WALLS } from '../trace/walls.js';
|
|
15
|
+
import { lineAt } from '../skills/receipts.js';
|
|
16
|
+
import { prefText } from './prefs.js';
|
|
17
|
+
import { typedAt } from './replay-runs.js';
|
|
18
|
+
import { INIT_COPY, screenLines } from './review-screen.js';
|
|
19
|
+
/** A skill's draft as 1a shows it, headed for a run from the past. */
|
|
20
|
+
export function initDraft(c) {
|
|
21
|
+
const sheet = { startedAt: c.source.at, endedAt: c.source.at, checked: true };
|
|
22
|
+
const lines = draftText(c, sheet).split('\n');
|
|
23
|
+
return [`${c.name} · copied from a run that worked on ${monthDay(c.source.at)}`, ...lines.slice(1)];
|
|
24
|
+
}
|
|
25
|
+
/** What `s` shows for an item, read now (the person's lines through their pointers, checked by sha). */
|
|
26
|
+
export function detailLines(item, env) {
|
|
27
|
+
if (item.kind === 'skill' && item.skill)
|
|
28
|
+
return initDraft({ ...item.skill.compiled, name: item.title || item.skill.compiled.name });
|
|
29
|
+
if (item.kind === 'guardrail')
|
|
30
|
+
return [WALLS.find((w) => w.cls === item.guardrail?.cls)?.guardrail?.text ?? ''];
|
|
31
|
+
if (item.kind === 'preference') {
|
|
32
|
+
const out = [];
|
|
33
|
+
for (const ref of item.pref?.refs ?? []) {
|
|
34
|
+
const text = typedAt(ref, env);
|
|
35
|
+
if (!text)
|
|
36
|
+
continue;
|
|
37
|
+
let day = '';
|
|
38
|
+
try {
|
|
39
|
+
const at = JSON.parse(lineAt(ref.t, ref.o) ?? 'null')?.timestamp;
|
|
40
|
+
day = typeof at === 'string' ? monthDay(at) : '';
|
|
41
|
+
}
|
|
42
|
+
catch { /* no date */ }
|
|
43
|
+
out.push(`${day ? `${day}: ` : ''}"${prefText(text).slice(0, 120).replace(/"/g, "'")}"`);
|
|
44
|
+
}
|
|
45
|
+
return out.length ? out : ["Trail couldn't read these lines again just now."];
|
|
46
|
+
}
|
|
47
|
+
return [];
|
|
48
|
+
}
|
|
49
|
+
/** The keys in one chunk of input, in order. */
|
|
50
|
+
export function keysOf(chunk) {
|
|
51
|
+
const out = [];
|
|
52
|
+
for (let i = 0; i < chunk.length; i++) {
|
|
53
|
+
const c = chunk[i];
|
|
54
|
+
if (c === '\x1b') {
|
|
55
|
+
if (chunk[i + 1] === '[' || chunk[i + 1] === 'O') {
|
|
56
|
+
const k = chunk[i + 2];
|
|
57
|
+
out.push(k === 'A' ? 'up' : k === 'B' ? 'down' : 'other');
|
|
58
|
+
i += 2;
|
|
59
|
+
}
|
|
60
|
+
else
|
|
61
|
+
out.push('esc');
|
|
62
|
+
}
|
|
63
|
+
else if (c === '\x03' || c === 'q' || c === 'Q')
|
|
64
|
+
out.push('quit');
|
|
65
|
+
else if (c === '\r' || c === '\n')
|
|
66
|
+
out.push('enter');
|
|
67
|
+
else if (c === ' ')
|
|
68
|
+
out.push('space');
|
|
69
|
+
else if (c === 'k')
|
|
70
|
+
out.push('up');
|
|
71
|
+
else if (c === 'j')
|
|
72
|
+
out.push('down');
|
|
73
|
+
else if (c === 's' || c === 'S')
|
|
74
|
+
out.push('s');
|
|
75
|
+
else if (c === 'w' || c === 'W')
|
|
76
|
+
out.push('w');
|
|
77
|
+
else if (c === 'r' || c === 'R')
|
|
78
|
+
out.push('r');
|
|
79
|
+
else if (c === 'n' || c === 'N')
|
|
80
|
+
out.push('n');
|
|
81
|
+
else
|
|
82
|
+
out.push('other');
|
|
83
|
+
}
|
|
84
|
+
return out;
|
|
85
|
+
}
|
|
86
|
+
/** One key: the new state, or how the screen ends. */
|
|
87
|
+
function press(st, key, repoKey, env) {
|
|
88
|
+
const item = st.items[st.cursor];
|
|
89
|
+
st.note = '';
|
|
90
|
+
switch (key) {
|
|
91
|
+
case 'up':
|
|
92
|
+
st.cursor = Math.max(0, st.cursor - 1);
|
|
93
|
+
st.open = null;
|
|
94
|
+
return null;
|
|
95
|
+
case 'down':
|
|
96
|
+
st.cursor = Math.min(st.items.length - 1, st.cursor + 1);
|
|
97
|
+
st.open = null;
|
|
98
|
+
return null;
|
|
99
|
+
case 'space':
|
|
100
|
+
if (item)
|
|
101
|
+
item.ticked = !item.ticked;
|
|
102
|
+
return null;
|
|
103
|
+
case 's':
|
|
104
|
+
if (st.open === st.cursor)
|
|
105
|
+
st.open = null;
|
|
106
|
+
else if (item) {
|
|
107
|
+
st.open = st.cursor;
|
|
108
|
+
st.openLines = detailLines(item, env);
|
|
109
|
+
}
|
|
110
|
+
return null;
|
|
111
|
+
case 'w':
|
|
112
|
+
if (!item || item.kind === 'review' || item.kind === 'claude')
|
|
113
|
+
return null;
|
|
114
|
+
if (item.kind === 'guardrail' && item.guardrail?.check === 'no-timeout') {
|
|
115
|
+
st.note = INIT_COPY.wNoTimeout;
|
|
116
|
+
return null;
|
|
117
|
+
}
|
|
118
|
+
item.applies = item.applies === 'every repo' ? repoKey : 'every repo';
|
|
119
|
+
if (item.applies === 'every repo')
|
|
120
|
+
item.scope = 'personal';
|
|
121
|
+
return null;
|
|
122
|
+
case 'r':
|
|
123
|
+
if (!item)
|
|
124
|
+
return null;
|
|
125
|
+
if (item.kind !== 'preference') {
|
|
126
|
+
st.note = INIT_COPY.rLater;
|
|
127
|
+
return null;
|
|
128
|
+
}
|
|
129
|
+
item.scope = item.scope === 'repo' ? 'personal' : 'repo';
|
|
130
|
+
if (item.scope === 'repo')
|
|
131
|
+
item.applies = repoKey;
|
|
132
|
+
return null;
|
|
133
|
+
case 'enter': return 'enter';
|
|
134
|
+
case 'n': return 'n';
|
|
135
|
+
case 'esc':
|
|
136
|
+
if (st.open !== null) {
|
|
137
|
+
st.open = null;
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
return 'esc';
|
|
141
|
+
case 'quit': return 'esc';
|
|
142
|
+
default: return null;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/** Raw-mode keys (4.7). Resolves on enter, n, esc, q or Ctrl-C. Never keeps anything itself. */
|
|
146
|
+
export function runScreen(items, facts, io, opts) {
|
|
147
|
+
const env = opts.env ?? process.env;
|
|
148
|
+
const st = { items: items.map((i) => ({ ...i })), cursor: 0, open: null, openLines: [], note: '' };
|
|
149
|
+
const { stdin, stdout } = io;
|
|
150
|
+
const draw = () => {
|
|
151
|
+
const lines = screenLines(st.items, { cursor: st.cursor, open: st.open, openLines: st.openLines, note: st.note }, facts);
|
|
152
|
+
stdout.write(`\x1b[2J\x1b[H${lines.join('\n')}\n`);
|
|
153
|
+
};
|
|
154
|
+
const answer = (how) => ({
|
|
155
|
+
how,
|
|
156
|
+
ticked: st.items.filter((i) => i.ticked).map((i) => i.n),
|
|
157
|
+
scopes: Object.fromEntries(st.items.map((i) => [i.n, { applies: i.applies, scope: i.scope }])),
|
|
158
|
+
});
|
|
159
|
+
return new Promise((resolve) => {
|
|
160
|
+
const wasRaw = stdin.isRaw === true;
|
|
161
|
+
let done = false;
|
|
162
|
+
/** Raw mode back as it was, on every way out: a key, a closed or broken stdin, a throw, the process ending. */
|
|
163
|
+
const restore = () => {
|
|
164
|
+
try {
|
|
165
|
+
stdin.setRawMode?.(wasRaw);
|
|
166
|
+
}
|
|
167
|
+
catch { /* not a TTY any more */ }
|
|
168
|
+
};
|
|
169
|
+
const finish = (how) => {
|
|
170
|
+
if (done)
|
|
171
|
+
return;
|
|
172
|
+
done = true;
|
|
173
|
+
stdin.off('data', onData);
|
|
174
|
+
stdin.off('end', onEnd);
|
|
175
|
+
stdin.off('close', onEnd);
|
|
176
|
+
stdin.off('error', onEnd);
|
|
177
|
+
process.off('exit', restore);
|
|
178
|
+
restore();
|
|
179
|
+
try {
|
|
180
|
+
stdin.pause();
|
|
181
|
+
}
|
|
182
|
+
catch { /* gone */ }
|
|
183
|
+
resolve(answer(how));
|
|
184
|
+
};
|
|
185
|
+
const onData = (b) => {
|
|
186
|
+
try {
|
|
187
|
+
for (const k of keysOf(typeof b === 'string' ? b : b.toString('utf8'))) {
|
|
188
|
+
const how = press(st, k, opts.repoKey, env);
|
|
189
|
+
if (how)
|
|
190
|
+
return finish(how);
|
|
191
|
+
}
|
|
192
|
+
draw();
|
|
193
|
+
}
|
|
194
|
+
catch {
|
|
195
|
+
// A key that can't be shown never leaves the terminal raw or init waiting: it decides later (b6 review).
|
|
196
|
+
finish('esc');
|
|
197
|
+
}
|
|
198
|
+
};
|
|
199
|
+
const onEnd = () => finish('esc');
|
|
200
|
+
process.on('exit', restore);
|
|
201
|
+
try {
|
|
202
|
+
stdin.setRawMode?.(true);
|
|
203
|
+
}
|
|
204
|
+
catch { /* drawn anyway */ }
|
|
205
|
+
stdin.on('data', onData);
|
|
206
|
+
stdin.on('end', onEnd);
|
|
207
|
+
stdin.on('close', onEnd);
|
|
208
|
+
stdin.on('error', onEnd);
|
|
209
|
+
stdin.resume();
|
|
210
|
+
try {
|
|
211
|
+
draw();
|
|
212
|
+
}
|
|
213
|
+
catch {
|
|
214
|
+
finish('esc');
|
|
215
|
+
}
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=review-tty.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"review-tty.js","sourceRoot":"","sources":["../../src/init/review-tty.ts"],"names":[],"mappings":"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"}
|