@nanonets/graft 0.24.1 → 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/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.js +1 -1
- package/dist/claude/hook-io.js.map +1 -1
- 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-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.map +1 -1
- package/dist/cli-picker.js +8 -6
- package/dist/cli-picker.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +238 -402
- 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 +5 -3
- package/dist/cloud/lookup-activity.d.ts.map +1 -1
- package/dist/cloud/lookup-activity.js +8 -8
- package/dist/cloud/lookup-activity.js.map +1 -1
- package/dist/cloud/nudge.d.ts +15 -7
- package/dist/cloud/nudge.d.ts.map +1 -1
- package/dist/cloud/nudge.js +42 -33
- package/dist/cloud/nudge.js.map +1 -1
- package/dist/cloud/onboarding.d.ts +37 -1
- package/dist/cloud/onboarding.d.ts.map +1 -1
- package/dist/cloud/onboarding.js +77 -1
- package/dist/cloud/onboarding.js.map +1 -1
- 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 +17 -7
- package/dist/cloud/pair.d.ts.map +1 -1
- package/dist/cloud/pair.js +81 -60
- package/dist/cloud/pair.js.map +1 -1
- package/dist/cloud/workspace-sync.d.ts +67 -11
- package/dist/cloud/workspace-sync.d.ts.map +1 -1
- package/dist/cloud/workspace-sync.js +299 -55
- package/dist/cloud/workspace-sync.js.map +1 -1
- package/dist/cloud/workspace.d.ts +74 -10
- package/dist/cloud/workspace.d.ts.map +1 -1
- package/dist/cloud/workspace.js +96 -8
- package/dist/cloud/workspace.js.map +1 -1
- package/dist/hosts/claude-global.js +1 -1
- 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/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.map +1 -1
- package/dist/init/plain-file.js +3 -0
- package/dist/init/plain-file.js.map +1 -1
- 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/notes/cold-start.d.ts +5 -213
- package/dist/notes/cold-start.d.ts.map +1 -1
- package/dist/notes/cold-start.js +5 -654
- 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/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/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 +5 -0
- package/dist/skills/anchors-cli.d.ts.map +1 -1
- package/dist/skills/anchors-cli.js +7 -2
- package/dist/skills/anchors-cli.js.map +1 -1
- package/dist/skills/anchors-wide.js +2 -2
- package/dist/skills/anchors-wide.js.map +1 -1
- 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/compile-split.d.ts.map +1 -1
- package/dist/skills/compile-split.js +18 -0
- package/dist/skills/compile-split.js.map +1 -1
- package/dist/skills/compile-words.d.ts +4 -1
- package/dist/skills/compile-words.d.ts.map +1 -1
- package/dist/skills/compile-words.js +68 -8
- package/dist/skills/compile-words.js.map +1 -1
- package/dist/skills/compile.d.ts +7 -0
- package/dist/skills/compile.d.ts.map +1 -1
- package/dist/skills/compile.js +17 -0
- package/dist/skills/compile.js.map +1 -1
- 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/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/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/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/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/runblock.d.ts +2 -0
- package/dist/skills/runblock.d.ts.map +1 -1
- package/dist/skills/runblock.js +11 -6
- package/dist/skills/runblock.js.map +1 -1
- 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-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 +12 -2
- package/dist/skills/settings.d.ts.map +1 -1
- package/dist/skills/settings.js +24 -2
- package/dist/skills/settings.js.map +1 -1
- package/dist/skills/skills.d.ts +26 -8
- package/dist/skills/skills.d.ts.map +1 -1
- package/dist/skills/skills.js +105 -52
- package/dist/skills/skills.js.map +1 -1
- 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/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/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.map +1 -1
- package/dist/trace/checks.js +10 -2
- package/dist/trace/checks.js.map +1 -1
- package/dist/trace/gate-file.d.ts +1 -1
- package/dist/trace/gate-file.d.ts.map +1 -1
- package/dist/trace/gate-file.js +3 -3
- package/dist/trace/gate-file.js.map +1 -1
- 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/package.json +1 -1
- package/dist/skills/found-skill.d.ts +0 -35
- package/dist/skills/found-skill.d.ts.map +0 -1
- package/dist/skills/found-skill.js +0 -66
- package/dist/skills/found-skill.js.map +0 -1
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The weekly value line (design 4.14, P19 to P21): what the skills and the
|
|
3
|
+
* guardrail did in this repo last week, from what this machine kept and
|
|
4
|
+
* nothing else. Uses come from the ledger `use` lines of the skills that
|
|
5
|
+
* apply here (the last 64 KB of each ledger, at most 5 skills, most used
|
|
6
|
+
* first), "before it" from the run each skill came from, and the guardrail
|
|
7
|
+
* stops and wall fixes from `state/value.json`, which Stop adds to per local
|
|
8
|
+
* day. The line says failed commands, not failed pushes: the ledger keeps a
|
|
9
|
+
* count of failed commands per use, not their kind (P19).
|
|
10
|
+
*
|
|
11
|
+
* Said once in 7 days per repo (`valueDue`), never in the first 7 days after
|
|
12
|
+
* skills turned on (there is no week yet, P21), at a startup or resume of an
|
|
13
|
+
* interactive top-level session (`startValue`), and always on top of
|
|
14
|
+
* `trail skills`. `trail skills offers off` doesn't silence it (a count, not
|
|
15
|
+
* an offer); `trail skills off` does.
|
|
16
|
+
*
|
|
17
|
+
* `value.json` holds counts, local days and repo keys only. Every write is a
|
|
18
|
+
* 50 ms lock try (D117): a busy lock drops the count, never waits. Nothing is
|
|
19
|
+
* written through a linked state folder, and a FIFO or link at the file is
|
|
20
|
+
* read as empty, never waited on.
|
|
21
|
+
*/
|
|
22
|
+
import { closeSync, fstatSync, readSync } from 'node:fs';
|
|
23
|
+
import { dirname } from 'node:path';
|
|
24
|
+
import { openPlain, readPlain } from '../init/plain-file.js';
|
|
25
|
+
import { flatLine } from '../notes/flatten.js';
|
|
26
|
+
import { trailPath, withLock, writePrivate } from '../util/private-fs.js';
|
|
27
|
+
import { FROM_TRAIL } from './directive-words.js';
|
|
28
|
+
import { hostFacts } from './host-facts.js';
|
|
29
|
+
import { ledgerPath } from './ledger.js';
|
|
30
|
+
import { isLinked } from './own-folder.js';
|
|
31
|
+
import { localDate, readSettings } from './settings.js';
|
|
32
|
+
import { readSkillsState } from './state.js';
|
|
33
|
+
import { listSkills } from './store.js';
|
|
34
|
+
/** The words of the line and of the context that carries it (0 rule 6: the words test reads them by value). */
|
|
35
|
+
export const VALUE_COPY = {
|
|
36
|
+
head: 'Last week in this repo, on this machine:',
|
|
37
|
+
ran: 'ran',
|
|
38
|
+
withFailed: 'with',
|
|
39
|
+
failedCommand: 'failed command',
|
|
40
|
+
before: 'the run it came from had',
|
|
41
|
+
inAll: 'in all',
|
|
42
|
+
guardrail: 'the timeout guardrail stopped',
|
|
43
|
+
command: 'command',
|
|
44
|
+
knownError: 'known error',
|
|
45
|
+
cameWithIts: 'came with its fix',
|
|
46
|
+
cameWithTheir: 'came with their fix',
|
|
47
|
+
noticePrefix: 'trail:',
|
|
48
|
+
contextHead: 'Its weekly count for this repo, for the person:',
|
|
49
|
+
contextTail: 'Tell them once at the start of your first reply, in one line, then go on with what they asked.',
|
|
50
|
+
};
|
|
51
|
+
/** The longest line (4.14). */
|
|
52
|
+
export const VALUE_MAX = 240;
|
|
53
|
+
const DAY_MS = 86_400_000;
|
|
54
|
+
const WEEK_DAYS = 7;
|
|
55
|
+
const KEEP_DAYS = 14;
|
|
56
|
+
const MAX_SKILLS = 5;
|
|
57
|
+
const LEDGER_TAIL = 64 * 1024;
|
|
58
|
+
const VALUE_MAX_BYTES = 128 * 1024;
|
|
59
|
+
const MAX_REPOS = 50;
|
|
60
|
+
const COUNT_MAX = 1_000_000;
|
|
61
|
+
/** D117: a hook's bookkeeping lock try; a busy lock drops the count. */
|
|
62
|
+
export const VALUE_LOCK_MS = 50;
|
|
63
|
+
const DAY = /^\d{4}-\d{2}-\d{2}$/;
|
|
64
|
+
/** A repo key as Trail makes them (`github.com/acme/shop`, `local/home-dev-shop`): never a sentence. */
|
|
65
|
+
const REPO_KEY = /^[a-z0-9._-]+(?:\/[a-z0-9._-]+)*$/;
|
|
66
|
+
export function valuePath(env) {
|
|
67
|
+
return trailPath(env, 'state', 'value.json');
|
|
68
|
+
}
|
|
69
|
+
const isMap = (v) => typeof v === 'object' && v !== null && !Array.isArray(v);
|
|
70
|
+
const count = (v) => (typeof v === 'number' && Number.isInteger(v) && v >= 0 ? Math.min(v, COUNT_MAX) : 0);
|
|
71
|
+
const keyOf = (repoKey) => {
|
|
72
|
+
const k = typeof repoKey === 'string' ? repoKey.toLowerCase() : '';
|
|
73
|
+
return k.length <= 200 && REPO_KEY.test(k) && !k.split('/').some((p) => p === '.' || p === '..') ? k : null;
|
|
74
|
+
};
|
|
75
|
+
/** The local day `n` days before `now`'s (noon, so a daylight-saving change can't skip or repeat a day). */
|
|
76
|
+
function dayBack(now, n) {
|
|
77
|
+
return localDate(new Date(now.getFullYear(), now.getMonth(), now.getDate() - n, 12));
|
|
78
|
+
}
|
|
79
|
+
/** The 7 local days ending today. */
|
|
80
|
+
const inWeek = (d, now) => d >= dayBack(now, WEEK_DAYS - 1) && d <= localDate(now);
|
|
81
|
+
/** value.json as read: known fields of the right shape only; anything else (a planted word included) is dropped. */
|
|
82
|
+
function readValue(env) {
|
|
83
|
+
const out = { v: 1, repos: {} };
|
|
84
|
+
let raw;
|
|
85
|
+
try {
|
|
86
|
+
const text = readPlain(valuePath(env), VALUE_MAX_BYTES);
|
|
87
|
+
raw = text === null ? null : JSON.parse(text);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return out;
|
|
91
|
+
}
|
|
92
|
+
if (!isMap(raw) || !isMap(raw.repos))
|
|
93
|
+
return out;
|
|
94
|
+
for (const [k, v] of Object.entries(raw.repos)) {
|
|
95
|
+
const key = keyOf(k);
|
|
96
|
+
if (!key || key !== k || !isMap(v))
|
|
97
|
+
continue;
|
|
98
|
+
const days = {};
|
|
99
|
+
if (isMap(v.days)) {
|
|
100
|
+
for (const [d, c] of Object.entries(v.days))
|
|
101
|
+
if (DAY.test(d) && isMap(c))
|
|
102
|
+
days[d] = { g: count(c.g), w: count(c.w) };
|
|
103
|
+
}
|
|
104
|
+
out.repos[key] = { saidAt: typeof v.saidAt === 'string' && DAY.test(v.saidAt) ? v.saidAt : null, days };
|
|
105
|
+
}
|
|
106
|
+
return out;
|
|
107
|
+
}
|
|
108
|
+
/** 14 local days per repo, at most 50 repos (the ones busy most lately). */
|
|
109
|
+
function prune(f, now) {
|
|
110
|
+
const oldest = dayBack(now, KEEP_DAYS - 1);
|
|
111
|
+
for (const r of Object.values(f.repos))
|
|
112
|
+
for (const d of Object.keys(r.days))
|
|
113
|
+
if (d < oldest)
|
|
114
|
+
delete r.days[d];
|
|
115
|
+
const last = (r) => [r.saidAt ?? '', ...Object.keys(r.days)].reduce((m, d) => (d > m ? d : m), '');
|
|
116
|
+
const keys = Object.keys(f.repos);
|
|
117
|
+
if (keys.length <= MAX_REPOS)
|
|
118
|
+
return;
|
|
119
|
+
for (const k of keys.sort((a, b) => last(f.repos[b]).localeCompare(last(f.repos[a]))).slice(MAX_REPOS))
|
|
120
|
+
delete f.repos[k];
|
|
121
|
+
}
|
|
122
|
+
/** One locked rewrite under a 50 ms try. False when busy, linked, it threw, or `fn` said false: nothing changed. */
|
|
123
|
+
function updateValue(env, now, fn) {
|
|
124
|
+
const path = valuePath(env);
|
|
125
|
+
try {
|
|
126
|
+
if (isLinked(dirname(path)))
|
|
127
|
+
return false;
|
|
128
|
+
const done = withLock(path, () => {
|
|
129
|
+
const f = readValue(env);
|
|
130
|
+
if (fn(f) === false)
|
|
131
|
+
return false;
|
|
132
|
+
prune(f, now);
|
|
133
|
+
writePrivate(path, `${JSON.stringify(f)}\n`);
|
|
134
|
+
return true;
|
|
135
|
+
}, VALUE_LOCK_MS);
|
|
136
|
+
return done.ok && done.value;
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Stop (3.5): adds this Stop's guardrail stops and wall fixes to today's counts for the repo. Counts only: anything
|
|
144
|
+
* but a non-negative whole number is 0, a repo key that isn't one is refused, and 0 and 0 writes nothing.
|
|
145
|
+
*/
|
|
146
|
+
export function noteValue(repoKey, d, env, now = new Date()) {
|
|
147
|
+
const key = keyOf(repoKey);
|
|
148
|
+
const g = count(d?.guardrailStops);
|
|
149
|
+
const w = count(d?.wallFixes);
|
|
150
|
+
if (!key || (!g && !w))
|
|
151
|
+
return;
|
|
152
|
+
const today = localDate(now);
|
|
153
|
+
updateValue(env, now, (f) => {
|
|
154
|
+
const r = (f.repos[key] ??= { saidAt: null, days: {} });
|
|
155
|
+
const c = (r.days[today] ??= { g: 0, w: 0 });
|
|
156
|
+
c.g = Math.min(COUNT_MAX, c.g + g);
|
|
157
|
+
c.w = Math.min(COUNT_MAX, c.w + w);
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* The week is due again: never said, said 7 local days back or more, or "said" more than 7 days ahead of today (the
|
|
162
|
+
* clock was wrong then; a day or two ahead is another time zone and still this week's).
|
|
163
|
+
*/
|
|
164
|
+
const dueSince = (said, now) => said === null || said <= dayBack(now, WEEK_DAYS) || said > dayBack(now, -WEEK_DAYS);
|
|
165
|
+
/**
|
|
166
|
+
* Records that the line went out for the repo today, only while the week is still due: the check and the mark are one
|
|
167
|
+
* locked step, so of sessions that start together and all read "due", one marks it (review). False when busy,
|
|
168
|
+
* refused, or already said this week (the caller then says nothing).
|
|
169
|
+
*/
|
|
170
|
+
export function markValueSaid(repoKey, env, now = new Date()) {
|
|
171
|
+
const key = keyOf(repoKey);
|
|
172
|
+
if (!key)
|
|
173
|
+
return false;
|
|
174
|
+
return updateValue(env, now, (f) => {
|
|
175
|
+
const r = (f.repos[key] ??= { saidAt: null, days: {} });
|
|
176
|
+
if (!dueSince(r.saidAt, now))
|
|
177
|
+
return false;
|
|
178
|
+
r.saidAt = localDate(now);
|
|
179
|
+
return true;
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
/** Skills on, and on for 7 days or more (P21: there is no week to count before that). */
|
|
183
|
+
export function valueWeek(env, now = new Date()) {
|
|
184
|
+
const s = readSettings(env);
|
|
185
|
+
const on = s.onSince === null ? NaN : Date.parse(s.onSince);
|
|
186
|
+
return s.skills === 'on' && !Number.isNaN(on) && now.getTime() - on >= WEEK_DAYS * DAY_MS;
|
|
187
|
+
}
|
|
188
|
+
/** Once in 7 days per repo, after the first week (4.14). */
|
|
189
|
+
export function valueDue(repoKey, env, now = new Date()) {
|
|
190
|
+
const key = keyOf(repoKey);
|
|
191
|
+
if (!key || !valueWeek(env, now))
|
|
192
|
+
return false;
|
|
193
|
+
return dueSince(readValue(env).repos[key]?.saidAt ?? null, now);
|
|
194
|
+
}
|
|
195
|
+
/** The ledger's last 64 KB as lines (the first, cut, line dropped), from a plain file only; [] otherwise. */
|
|
196
|
+
function ledgerTail(skillId, env) {
|
|
197
|
+
let fd = -1;
|
|
198
|
+
try {
|
|
199
|
+
fd = openPlain(ledgerPath(skillId, env));
|
|
200
|
+
const size = fstatSync(fd).size;
|
|
201
|
+
const from = Math.max(0, size - LEDGER_TAIL);
|
|
202
|
+
const buf = Buffer.alloc(size - from);
|
|
203
|
+
const got = readSync(fd, buf, 0, buf.length, from);
|
|
204
|
+
const lines = buf.toString('utf8', 0, got).split('\n');
|
|
205
|
+
return from > 0 ? lines.slice(1) : lines;
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
return [];
|
|
209
|
+
}
|
|
210
|
+
finally {
|
|
211
|
+
if (fd >= 0)
|
|
212
|
+
try {
|
|
213
|
+
closeSync(fd);
|
|
214
|
+
}
|
|
215
|
+
catch { /* closed */ }
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
/** A skill's uses in these repos in the week: count, checked, failed commands summed. */
|
|
219
|
+
function weekOf(skillId, keys, now, env) {
|
|
220
|
+
const out = { uses: 0, checked: 0, failed: 0 };
|
|
221
|
+
// A use line written twice (a flush that ran again after its state write failed) is one use (review).
|
|
222
|
+
const seen = new Set();
|
|
223
|
+
for (const raw of ledgerTail(skillId, env)) {
|
|
224
|
+
if (!raw.includes('"use"'))
|
|
225
|
+
continue;
|
|
226
|
+
let l;
|
|
227
|
+
try {
|
|
228
|
+
l = JSON.parse(raw);
|
|
229
|
+
}
|
|
230
|
+
catch {
|
|
231
|
+
continue;
|
|
232
|
+
}
|
|
233
|
+
if (!isMap(l) || l.event !== 'use' || typeof l.at !== 'string' || typeof l.repo !== 'string' || !keys.has(l.repo.toLowerCase()))
|
|
234
|
+
continue;
|
|
235
|
+
const at = new Date(l.at);
|
|
236
|
+
if (Number.isNaN(at.getTime()) || at.getTime() > now.getTime() || !inWeek(localDate(at), now))
|
|
237
|
+
continue;
|
|
238
|
+
if (typeof l.useId === 'string' && l.useId) {
|
|
239
|
+
if (seen.has(l.useId))
|
|
240
|
+
continue;
|
|
241
|
+
seen.add(l.useId);
|
|
242
|
+
}
|
|
243
|
+
out.uses++;
|
|
244
|
+
if (l.check === 'passed')
|
|
245
|
+
out.checked++;
|
|
246
|
+
out.failed = Math.min(COUNT_MAX, out.failed + count(l.failed));
|
|
247
|
+
}
|
|
248
|
+
return out;
|
|
249
|
+
}
|
|
250
|
+
/** The week's counts for these repos (4.14): nothing but the ledgers and value.json. */
|
|
251
|
+
export function valueCounts(repoKeys, env, now = new Date()) {
|
|
252
|
+
const keys = new Set(repoKeys.map(keyOf).filter((k) => k !== null));
|
|
253
|
+
const out = { skills: [], guardrailStops: 0, wallFixes: 0 };
|
|
254
|
+
if (!keys.size)
|
|
255
|
+
return out;
|
|
256
|
+
const state = readSkillsState(env).skills;
|
|
257
|
+
const refs = listSkills({ repoKeys: [...keys], checkout: '', env })
|
|
258
|
+
.filter((r) => r.scope === 'personal')
|
|
259
|
+
.sort((a, b) => (state[b.id]?.uses ?? 0) - (state[a.id]?.uses ?? 0) || a.name.localeCompare(b.name))
|
|
260
|
+
.slice(0, MAX_SKILLS);
|
|
261
|
+
for (const ref of refs) {
|
|
262
|
+
const w = weekOf(ref.id, keys, now, env);
|
|
263
|
+
if (!w.uses)
|
|
264
|
+
continue;
|
|
265
|
+
const src = state[ref.id]?.source ?? null;
|
|
266
|
+
out.skills.push({ id: ref.id, name: ref.name, ...w, before: src ? { commands: src.commands, failed: src.failed } : null });
|
|
267
|
+
}
|
|
268
|
+
// Stable: skills with as many uses this week keep the most-used-first order.
|
|
269
|
+
out.skills.sort((a, b) => b.uses - a.uses);
|
|
270
|
+
const f = readValue(env);
|
|
271
|
+
for (const k of keys) {
|
|
272
|
+
for (const [d, c] of Object.entries(f.repos[k]?.days ?? {})) {
|
|
273
|
+
if (!inWeek(d, now))
|
|
274
|
+
continue;
|
|
275
|
+
out.guardrailStops = Math.min(COUNT_MAX, out.guardrailStops + c.g);
|
|
276
|
+
out.wallFixes = Math.min(COUNT_MAX, out.wallFixes + c.w);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
return out;
|
|
280
|
+
}
|
|
281
|
+
const plural = (n, w) => `${n} ${w}${n === 1 ? '' : 's'}`;
|
|
282
|
+
/**
|
|
283
|
+
* D134: one run says its failed commands beside the run the skill came from; more runs say the sum as a sum ("ran 3
|
|
284
|
+
* times, 6 failed commands in all"), with no single run's count beside it to read as worse than it was.
|
|
285
|
+
*/
|
|
286
|
+
function skillPart(s) {
|
|
287
|
+
const C = VALUE_COPY;
|
|
288
|
+
const head = `${flatLine(s.name, 60)} ${C.ran} ${plural(s.uses, 'time')}`;
|
|
289
|
+
if (s.uses > 1)
|
|
290
|
+
return `${head}, ${plural(s.failed, C.failedCommand)} ${C.inAll}`;
|
|
291
|
+
const before = s.before && s.before.failed > 0 ? ` (${C.before} ${s.before.failed})` : '';
|
|
292
|
+
return `${head} ${C.withFailed} ${plural(s.failed, C.failedCommand)}${before}`;
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* The line from the counts (4.14): parts at 0 left out, null when every part is 0. Cut to 240 characters at whole
|
|
296
|
+
* parts, never inside one, so no number is cut short: the most used skill, the guardrail and the fixes come first,
|
|
297
|
+
* then the other skills; what fits is said in the line's own order.
|
|
298
|
+
*/
|
|
299
|
+
export function valueWords(c) {
|
|
300
|
+
const C = VALUE_COPY;
|
|
301
|
+
const skills = c.skills.filter((s) => s.uses > 0).map(skillPart);
|
|
302
|
+
const guard = c.guardrailStops > 0 ? `${C.guardrail} ${plural(c.guardrailStops, C.command)}` : null;
|
|
303
|
+
const walls = c.wallFixes > 0 ? `${plural(c.wallFixes, C.knownError)} ${c.wallFixes === 1 ? C.cameWithIts : C.cameWithTheir}` : null;
|
|
304
|
+
const ordered = [...skills, guard, walls].filter((p) => p !== null);
|
|
305
|
+
if (!ordered.length)
|
|
306
|
+
return null;
|
|
307
|
+
const byWeight = [skills[0], guard, walls, ...skills.slice(1)].filter((p) => !!p);
|
|
308
|
+
const render = (parts) => `${C.head} ${parts.join('; ')}.`;
|
|
309
|
+
const kept = new Set();
|
|
310
|
+
for (const p of byWeight) {
|
|
311
|
+
const next = ordered.filter((x) => kept.has(x) || x === p);
|
|
312
|
+
if (render(next).length <= VALUE_MAX)
|
|
313
|
+
kept.add(p);
|
|
314
|
+
}
|
|
315
|
+
return kept.size ? render(ordered.filter((x) => kept.has(x))) : null;
|
|
316
|
+
}
|
|
317
|
+
/** 4.14: the line for these repos, or null when there is nothing to say. */
|
|
318
|
+
export function valueLine(repoKeys, env, now = new Date()) {
|
|
319
|
+
return valueWords(valueCounts(repoKeys, env, now));
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* The line as SessionStart context where the host shows no start notice (P20, D107's shape): who it is from, that it
|
|
323
|
+
* is a count for the person, and when to tell them. One line; the quoted line can't close the quote early.
|
|
324
|
+
*/
|
|
325
|
+
export function valueContext(line) {
|
|
326
|
+
const q = flatLine(line, VALUE_MAX + 20).replace(/"/g, "'").replace(/\[(?:trail|graft|trail-code)\]/gi, '');
|
|
327
|
+
return `[trail] ${FROM_TRAIL} ${VALUE_COPY.contextHead} "${q}" ${VALUE_COPY.contextTail}`;
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* 3.1 step 3: at a startup or resume, in a session where learning runs (interactive, top level, tier A) and in a
|
|
331
|
+
* repo, when the week is due and there is something to say: the line goes out once (marked said first; a busy lock
|
|
332
|
+
* says nothing). A notice where the host shows SessionStart notices, else context. Never throws.
|
|
333
|
+
*/
|
|
334
|
+
export function startValue(ctx, env, now = new Date()) {
|
|
335
|
+
try {
|
|
336
|
+
if ((ctx.source !== 'startup' && ctx.source !== 'resume') || !ctx.learn || ctx.subagent || !ctx.repoKey)
|
|
337
|
+
return null;
|
|
338
|
+
if (!valueDue(ctx.repoKey, env, now))
|
|
339
|
+
return null;
|
|
340
|
+
const line = valueLine([ctx.repoKey], env, now);
|
|
341
|
+
if (!line || !markValueSaid(ctx.repoKey, env, now))
|
|
342
|
+
return null;
|
|
343
|
+
return hostFacts(env, ctx.host).startNotice
|
|
344
|
+
? { channel: 'notice', notice: `${VALUE_COPY.noticePrefix} ${line}` }
|
|
345
|
+
: { channel: 'context', context: valueContext(line) };
|
|
346
|
+
}
|
|
347
|
+
catch {
|
|
348
|
+
return null;
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
/** Stop: the timeout guardrail's sure-fail denies this Stop counted (`guardrailCounts`' telemetry), for `noteValue`. The line names that guardrail, so no other class counts. */
|
|
352
|
+
export function guardrailStopsIn(sent) {
|
|
353
|
+
return sent.filter(([e, p]) => e === 'guardrail' && p?.class === 'no-timeout' && p?.outcome === 'sure-fail').length;
|
|
354
|
+
}
|
|
355
|
+
//# sourceMappingURL=value-line.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"value-line.js","sourceRoot":"","sources":["../../src/skills/value-line.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,17 @@
|
|
|
25
25
|
* centrally by `track()` and are deliberately not repeated per event.
|
|
26
26
|
*/
|
|
27
27
|
export declare const EVENTS: Record<string, ReadonlySet<string>>;
|
|
28
|
+
/** The labels {@link hookMsBucket} returns. */
|
|
29
|
+
export declare const HOOK_MS_BUCKETS: readonly ["<50ms", "50-100ms", "100-300ms", "300ms-1s", "1-3s", "3s+"];
|
|
30
|
+
/**
|
|
31
|
+
* The values an event's key may take, where the contract fixes them. `track()`
|
|
32
|
+
* drops a value outside the set, key and all, so a call site that passes a
|
|
33
|
+
* skill's name, a prompt or an error line under an allowed key sends nothing
|
|
34
|
+
* for it. Every key of the skills events is listed here.
|
|
35
|
+
*/
|
|
36
|
+
export declare const VALUES: Record<string, Record<string, ReadonlySet<string>>>;
|
|
37
|
+
/** Whether `value` may go under `key` of `event`: always, unless {@link VALUES} fixes the key's values. */
|
|
38
|
+
export declare function allowedValue(event: string, key: string, value: string): boolean;
|
|
28
39
|
/** Stamped on every event by `track()`; not listed per event above. */
|
|
29
40
|
export declare const COMMON_KEYS: readonly ["app_version", "os", "arch", "node_major", "ci", "agent_host", "cli_name", "repo_id"];
|
|
30
41
|
/** Which surface issued a query. `hook` is Claude Code's prompt hook, which
|
|
@@ -32,7 +43,7 @@ export declare const COMMON_KEYS: readonly ["app_version", "os", "arch", "node_m
|
|
|
32
43
|
export type Surface = 'cli' | 'mcp' | 'hook';
|
|
33
44
|
/** Which editor/agent graft is running under. Derived from the surface and the
|
|
34
45
|
* wiring on disk — never from a hostname, a username, or an env var's value. */
|
|
35
|
-
export type AgentHost = 'claude-code' | 'cursor' | 'mcp' | 'cli';
|
|
46
|
+
export type AgentHost = 'claude-code' | 'cursor' | 'copilot' | 'mcp' | 'cli';
|
|
36
47
|
/**
|
|
37
48
|
* The commands worth counting. A command absent here is simply not reported —
|
|
38
49
|
* `track()` drops the event rather than sending a free-form string, which is
|
|
@@ -79,6 +90,9 @@ export declare function filesBucket(n: number): string;
|
|
|
79
90
|
export declare function durationBucket(ms: number): string;
|
|
80
91
|
/** Generic small-count bucket, for the per-session read counters. */
|
|
81
92
|
export declare function countBucket(n: number): string;
|
|
93
|
+
/** One hook's wall-clock. The budgets are 50 ms (PreToolUse) and 300 ms (the
|
|
94
|
+
* rest), so the labels split there. */
|
|
95
|
+
export declare function hookMsBucket(ms: number): (typeof HOOK_MS_BUCKETS)[number];
|
|
82
96
|
/** Estimated tokens saved in one session — the README's central claim, in the
|
|
83
97
|
* only resolution we need to defend it. */
|
|
84
98
|
export declare function savedTokensBucket(n: number): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/telemetry/contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAMH;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/telemetry/contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAMH;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CA0FtD,CAAC;AAEF,+CAA+C;AAC/C,eAAO,MAAM,eAAe,wEAAyE,CAAC;AAEtG;;;;;GAKG;AACH,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAsBtE,CAAC;AAEF,2GAA2G;AAC3G,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAI/E;AAED,uEAAuE;AACvE,eAAO,MAAM,WAAW,iGASd,CAAC;AAMX;kEACkE;AAClE,MAAM,MAAM,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAE7C;iFACiF;AACjF,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,KAAK,GAAG,KAAK,CAAC;AAE7E;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,iFAEnB,CAAC;AACX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,cAAc,CAErE;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,qBAAqB,uEAAwE,CAAC;AAC3G,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAExE;wCACwC;AACxC,eAAO,MAAM,YAAY,2EAA4E,CAAC;AACtG,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD;;;;GAIG;AACH,eAAO,MAAM,WAAW,6IAGd,CAAC;AACX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,CAoBjD;AAMD;4DAC4D;AAC5D,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAO7C;AAED;yCACyC;AACzC,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAQjD;AAED,qEAAqE;AACrE,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAO7C;AAED;wCACwC;AACxC,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAOzE;AAED;4CAC4C;AAC5C,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAOnD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAK3D"}
|
|
@@ -61,10 +61,6 @@ export const EVENTS = {
|
|
|
61
61
|
* and the paths never travel. The supply side of the notes loop; the
|
|
62
62
|
* `notes` property on `query` is the demand side. */
|
|
63
63
|
note_saved: new Set(['has_cost', 'touches_bucket', 'scope']),
|
|
64
|
-
/** `ask` showed learnings from earlier sessions: whether any was a
|
|
65
|
-
* teammate's, and what they took to work out less reading them, as a
|
|
66
|
-
* bucket. The reuse half of the learnings loop; `note_saved` is supply. */
|
|
67
|
-
learning_reused: new Set(['teammate', 'saved_tokens_bucket']),
|
|
68
64
|
/** Once a day per repo, from the session-start hook, for a repo trail runs
|
|
69
65
|
* in: whether `.trail/` is committed there, how many learnings it holds,
|
|
70
66
|
* as a bucket, and whether this machine shares it with a workspace. With
|
|
@@ -84,13 +80,6 @@ export const EVENTS = {
|
|
|
84
80
|
* as buckets, how long it took, and the model. The messages, the comments,
|
|
85
81
|
* the notes and the findings never travel. */
|
|
86
82
|
cold_start: new Set(['source', 'outcome', 'sessions_bucket', 'reviews_bucket', 'offered_bucket', 'filtered_bucket', 'picked_bucket', 'team_offered_bucket', 'team_picked_bucket', 'duration_bucket', 'model']),
|
|
87
|
-
/** `trail learn` saved a correction as a takeaway on a skill (into
|
|
88
|
-
* `~/.trail/`). `new_skill` says whether it started a skill. The text never
|
|
89
|
-
* travels. */
|
|
90
|
-
takeaway_saved: new Set(['new_skill']),
|
|
91
|
-
/** `trail skills fold` wrote waiting takeaways into a skill's SKILL.md;
|
|
92
|
-
* how many, as a bucket. Whether corrections become the skill. */
|
|
93
|
-
skills_folded: new Set(['takeaways_bucket']),
|
|
94
83
|
/** One closed agent session, summarised. `graft_reads` vs `source_reads` is
|
|
95
84
|
* the single number that says whether an agent prefers graft to grep; the two
|
|
96
85
|
* `*_turns` buckets are the follow-up question — of the turns that used graft,
|
|
@@ -99,7 +88,72 @@ export const EVENTS = {
|
|
|
99
88
|
'graft_reads_bucket', 'source_reads_bucket', 'saved_tokens_bucket',
|
|
100
89
|
'graft_turns_bucket', 'reported_turns_bucket',
|
|
101
90
|
]),
|
|
91
|
+
/* Learned skills (spec section 20). Every value is a member of a closed set
|
|
92
|
+
* in {@link VALUES}; a skill's name, its steps, a command, a prompt, a lesson
|
|
93
|
+
* or a path is never one of them, so none of those can travel. */
|
|
94
|
+
/** Trail offered to keep a skill (or a lesson, an update, a promotion): at which moment. */
|
|
95
|
+
skill_offered: new Set(['moment']),
|
|
96
|
+
/** The person's answer to an offer. A withdrawn offer sends nothing. */
|
|
97
|
+
skill_answer: new Set(['answer']),
|
|
98
|
+
/** A skill was saved: what it came from, and whose it is. */
|
|
99
|
+
skill_saved: new Set(['from', 'scope']),
|
|
100
|
+
/** Trail changed a skill it wrote, on the person's yes or their own command (phase 2): how. */
|
|
101
|
+
skill_changed: new Set(['op']),
|
|
102
|
+
/** A skill moved up a scope (phase 3). */
|
|
103
|
+
skill_promoted: new Set(['to']),
|
|
104
|
+
/** A joined team repo was pulled (phase 3): how it went. */
|
|
105
|
+
team_pull: new Set(['outcome']),
|
|
106
|
+
/** A skill the agent was given ran: whether its own check passed. */
|
|
107
|
+
skill_used: new Set(['outcome']),
|
|
108
|
+
/** The weekly value line was said (phase 2): where it went. */
|
|
109
|
+
skill_value: new Set(['channel']),
|
|
110
|
+
/** A skill stopped being offered to the agent as is: why. */
|
|
111
|
+
skill_stale: new Set(['reason']),
|
|
112
|
+
/** A guardrail fired: which built-in one, and what it did. */
|
|
113
|
+
guardrail: new Set(['class', 'outcome']),
|
|
114
|
+
/** A failing command matched a known wall: which one, and whether the person had kept a lesson for it. */
|
|
115
|
+
wall_hit: new Set(['class', 'had_lesson']),
|
|
116
|
+
/** How long one hook took, as a bucket: which hook. */
|
|
117
|
+
hook_ms: new Set(['event', 'bucket']),
|
|
102
118
|
};
|
|
119
|
+
/** The labels {@link hookMsBucket} returns. */
|
|
120
|
+
export const HOOK_MS_BUCKETS = ['<50ms', '50-100ms', '100-300ms', '300ms-1s', '1-3s', '3s+'];
|
|
121
|
+
/**
|
|
122
|
+
* The values an event's key may take, where the contract fixes them. `track()`
|
|
123
|
+
* drops a value outside the set, key and all, so a call site that passes a
|
|
124
|
+
* skill's name, a prompt or an error line under an allowed key sends nothing
|
|
125
|
+
* for it. Every key of the skills events is listed here.
|
|
126
|
+
*/
|
|
127
|
+
export const VALUES = {
|
|
128
|
+
skill_offered: { moment: new Set(['asked', 'repeated', 'repaired', 'correction', 'update', 'drift', 'retire', 'promote']) },
|
|
129
|
+
skill_answer: { answer: new Set(['yes', 'no', 'show', 'none', 'off', 'retire']) },
|
|
130
|
+
skill_changed: { op: new Set(['update', 'extend', 'split', 'replace', 'retire', 'adopted', 'restore-version']) },
|
|
131
|
+
skill_value: { channel: new Set(['context', 'notice', 'list']) },
|
|
132
|
+
skill_saved: { from: new Set(['init', 'repeated', 'repaired', 'asked']), scope: new Set(['personal', 'repo', 'team']) },
|
|
133
|
+
skill_promoted: { to: new Set(['repo', 'team']) },
|
|
134
|
+
team_pull: { outcome: new Set(['updated', 'unchanged', 'diverged', 'failed']) },
|
|
135
|
+
skill_used: { outcome: new Set(['checked', 'failed', 'unchecked']) },
|
|
136
|
+
skill_stale: { reason: new Set(['failed', 'corrected', 'missing', 'unused', 'unfollowed']) },
|
|
137
|
+
guardrail: {
|
|
138
|
+
class: new Set(['no-timeout', 'prod-after-beta']),
|
|
139
|
+
outcome: new Set(['hint', 'ask', 'deny', 'sure-fail', 'avoided']),
|
|
140
|
+
},
|
|
141
|
+
wall_hit: {
|
|
142
|
+
class: new Set(['timeout-missing', 'zsh-no-match', 'git-https-auth', 'docker-rootless', 'npm-e401-eotp', 'claude-not-logged-in', 'enospc']),
|
|
143
|
+
had_lesson: new Set(['true', 'false']),
|
|
144
|
+
},
|
|
145
|
+
hook_ms: {
|
|
146
|
+
event: new Set(['session-start', 'prompt', 'pre-bash', 'tool-savings', 'post-bash', 'post-bash-fail', 'post-edit', 'post-edit-sync', 'stop']),
|
|
147
|
+
bucket: new Set(HOOK_MS_BUCKETS),
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
/** Whether `value` may go under `key` of `event`: always, unless {@link VALUES} fixes the key's values. */
|
|
151
|
+
export function allowedValue(event, key, value) {
|
|
152
|
+
if (!Object.hasOwn(VALUES, event))
|
|
153
|
+
return true;
|
|
154
|
+
const keys = VALUES[event];
|
|
155
|
+
return !Object.hasOwn(keys, key) || keys[key].has(value);
|
|
156
|
+
}
|
|
103
157
|
/** Stamped on every event by `track()`; not listed per event above. */
|
|
104
158
|
export const COMMON_KEYS = [
|
|
105
159
|
'app_version',
|
|
@@ -231,6 +285,21 @@ export function countBucket(n) {
|
|
|
231
285
|
return '50-199';
|
|
232
286
|
return '200+';
|
|
233
287
|
}
|
|
288
|
+
/** One hook's wall-clock. The budgets are 50 ms (PreToolUse) and 300 ms (the
|
|
289
|
+
* rest), so the labels split there. */
|
|
290
|
+
export function hookMsBucket(ms) {
|
|
291
|
+
if (ms < 50)
|
|
292
|
+
return '<50ms';
|
|
293
|
+
if (ms < 100)
|
|
294
|
+
return '50-100ms';
|
|
295
|
+
if (ms < 300)
|
|
296
|
+
return '100-300ms';
|
|
297
|
+
if (ms < 1000)
|
|
298
|
+
return '300ms-1s';
|
|
299
|
+
if (ms < 3000)
|
|
300
|
+
return '1-3s';
|
|
301
|
+
return '3s+';
|
|
302
|
+
}
|
|
234
303
|
/** Estimated tokens saved in one session — the README's central claim, in the
|
|
235
304
|
* only resolution we need to defend it. */
|
|
236
305
|
export function savedTokensBucket(n) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/telemetry/contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAwC;IACzD;;;;;;kEAM8D;IAC9D,OAAO,EAAE,IAAI,GAAG,CAAS,CAAC,QAAQ,CAAC,CAAC;IACpC;uEACmE;IACnE,SAAS,EAAE,IAAI,GAAG,EAAU;IAC5B;oDACgD;IAChD,cAAc,EAAE,IAAI,GAAG,CAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACtD;2DACuD;IACvD,eAAe,EAAE,IAAI,GAAG,CAAS,CAAC,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,aAAa,CAAC,CAAC;IACrG,0EAA0E;IAC1E,YAAY,EAAE,IAAI,GAAG,CAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAChD,mFAAmF;IACnF,KAAK,EAAE,IAAI,GAAG,CAAS,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC9D;;4DAEwD;IACxD,mBAAmB,EAAE,IAAI,GAAG,CAAS,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACpE;kFAC8E;IAC9E,oBAAoB,EAAE,IAAI,GAAG,CAAS,CAAC,SAAS,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC7E;;;0DAGsD;IACtD,UAAU,EAAE,IAAI,GAAG,CAAS,CAAC,UAAU,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;IACpE
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/telemetry/contract.ts"],"names":[],"mappings":"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"}
|
package/dist/telemetry/gate.js
CHANGED
|
@@ -72,10 +72,10 @@ export function telemetryOn(home, env = process.env) {
|
|
|
72
72
|
* user who thinks they disabled it can see which switch actually took. */
|
|
73
73
|
export function explainOff(reason) {
|
|
74
74
|
switch (reason) {
|
|
75
|
-
case 'no-key': return 'off
|
|
76
|
-
case 'do-not-track': return 'off
|
|
77
|
-
case 'ci': return 'off
|
|
78
|
-
case 'disabled': return `off
|
|
75
|
+
case 'no-key': return 'off: this build has no telemetry key (a fork, or a local `npm run build`), so nothing can be sent';
|
|
76
|
+
case 'do-not-track': return 'off: DO_NOT_TRACK is set in this environment';
|
|
77
|
+
case 'ci': return 'off: this looks like CI';
|
|
78
|
+
case 'disabled': return `off: you disabled it (\`${cmd('graft telemetry enable')}\` to turn it back on)`;
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
//# sourceMappingURL=gate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gate.js","sourceRoot":"","sources":["../../src/telemetry/gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAIlC,wEAAwE;AACxE,MAAM,UAAU,UAAU,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC7D,MAAM,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC;IAC3B,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC;AAClD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU;IAC5D,kBAAkB,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc;CACrD,CAAC;AAEX;;;;;;;;GAQG;AACH,MAAM,UAAU,IAAI,CAAC,MAAyB,OAAO,CAAC,GAAG;IACvD,IAAI,GAAG,CAAC,EAAE,KAAK,SAAS,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IAC/F,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,SAAS,CAAC,IAAa,EAAE,MAAyB,OAAO,CAAC,GAAG;IAC3E,IAAI,CAAC,UAAU,EAAE;QAAE,OAAO,QAAQ,CAAC;IACnC,IAAI,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,cAAc,CAAC;IAC3C,IAAI,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3B,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK,KAAK;QAAE,OAAO,UAAU,CAAC;IAC1D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAa,EAAE,MAAyB,OAAO,CAAC,GAAG;IAC7E,OAAO,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;AACvC,CAAC;AAED;2EAC2E;AAC3E,MAAM,UAAU,UAAU,CAAC,MAAiB;IAC1C,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ,CAAC,CAAQ,OAAO,
|
|
1
|
+
{"version":3,"file":"gate.js","sourceRoot":"","sources":["../../src/telemetry/gate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAIlC,wEAAwE;AACxE,MAAM,UAAU,UAAU,CAAC,MAAyB,OAAO,CAAC,GAAG;IAC7D,MAAM,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC;IAC3B,OAAO,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAG,CAAC;AAClD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,gBAAgB,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU;IAC5D,kBAAkB,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc;CACrD,CAAC;AAEX;;;;;;;;GAQG;AACH,MAAM,UAAU,IAAI,CAAC,MAAyB,OAAO,CAAC,GAAG;IACvD,IAAI,GAAG,CAAC,EAAE,KAAK,SAAS,IAAI,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,OAAO;QAAE,OAAO,IAAI,CAAC;IAC/F,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,SAAS,CAAC,IAAa,EAAE,MAAyB,OAAO,CAAC,GAAG;IAC3E,IAAI,CAAC,UAAU,EAAE;QAAE,OAAO,QAAQ,CAAC;IACnC,IAAI,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,cAAc,CAAC;IAC3C,IAAI,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3B,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK,KAAK;QAAE,OAAO,UAAU,CAAC;IAC1D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAa,EAAE,MAAyB,OAAO,CAAC,GAAG;IAC7E,OAAO,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;AACvC,CAAC;AAED;2EAC2E;AAC3E,MAAM,UAAU,UAAU,CAAC,MAAiB;IAC1C,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ,CAAC,CAAQ,OAAO,mGAAmG,CAAC;QACjI,KAAK,cAAc,CAAC,CAAE,OAAO,8CAA8C,CAAC;QAC5E,KAAK,IAAI,CAAC,CAAY,OAAO,yBAAyB,CAAC;QACvD,KAAK,UAAU,CAAC,CAAM,OAAO,2BAA2B,GAAG,CAAC,wBAAwB,CAAC,wBAAwB,CAAC;IAChH,CAAC;AACH,CAAC"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* carries a key (published releases only), `DO_NOT_TRACK` is unset, this is not
|
|
7
7
|
* CI, and the user has not disabled it. See `gate.ts`.
|
|
8
8
|
*/
|
|
9
|
-
export { EVENTS, COMMON_KEYS, isTrackedCommand, errorCode, filesBucket, durationBucket, countBucket, savedTokensBucket, langsValue } from './contract.js';
|
|
9
|
+
export { EVENTS, VALUES, COMMON_KEYS, isTrackedCommand, errorCode, filesBucket, durationBucket, countBucket, savedTokensBucket, hookMsBucket, langsValue } from './contract.js';
|
|
10
10
|
export type { AgentHost, Surface, TrackedCommand, BuildStage, ErrorCode } from './contract.js';
|
|
11
11
|
export { track, trackFirstRunIfNew, trackInstallIfNew, detectHost } from './track.js';
|
|
12
12
|
export type { QueuedEvent, TrackContext } from './track.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/telemetry/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/telemetry/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,iBAAiB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAChL,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/F,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACtF,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACnG,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
|