@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
package/dist/claude/tally.js
CHANGED
|
@@ -16,18 +16,14 @@
|
|
|
16
16
|
* it is stored or sent; the session keeps a count and the telemetry contract
|
|
17
17
|
* carries that count as a bucket. See TELEMETRY.md.
|
|
18
18
|
*
|
|
19
|
-
* Only the
|
|
20
|
-
*
|
|
21
|
-
*
|
|
19
|
+
* Only what the transcript gained since the last Stop is read (a transcript
|
|
20
|
+
* grows for the life of a session; a real one passed 233 MB), through the
|
|
21
|
+
* trace layer's cursor, and what has to outlive one read (the reply in
|
|
22
|
+
* progress, the responses already billed) rides in that cursor's memo.
|
|
22
23
|
*/
|
|
23
|
-
import {
|
|
24
|
+
import { readNewEvents, isTypedByPerson, textOf } from '../trace/claude.js';
|
|
25
|
+
import { readJson } from '../util/state.js';
|
|
24
26
|
import { turnInputCostMicros, turnInputTokens } from '../context/price.js';
|
|
25
|
-
/**
|
|
26
|
-
* How much of the transcript's end to read. Comfortably larger than any single
|
|
27
|
-
* turn's worth of entries, small enough that the read cost is flat as the
|
|
28
|
-
* session grows.
|
|
29
|
-
*/
|
|
30
|
-
const TAIL_BYTES = 1024 * 1024;
|
|
31
27
|
/**
|
|
32
28
|
* The tally, as the agent is actually asked to write it: a "graft saved ~N
|
|
33
29
|
* tokens" claim in prose. Deliberately loose about the decoration around it —
|
|
@@ -42,170 +38,120 @@ const TALLY = /(?:graft|trail)\s+saved\s*[~≈]?\s*[\d,.]+\s*[km]?\s*(?:tok|toke
|
|
|
42
38
|
export function hasSavingsTally(text) {
|
|
43
39
|
return TALLY.test(text);
|
|
44
40
|
}
|
|
45
|
-
/**
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
function
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
fd = openSync(path, 'r');
|
|
52
|
-
const size = fstatSync(fd).size;
|
|
53
|
-
const len = Math.min(size, TAIL_BYTES);
|
|
54
|
-
const buf = Buffer.allocUnsafe(len);
|
|
55
|
-
readSync(fd, buf, 0, len, size - len);
|
|
56
|
-
const raw = buf.toString('utf8');
|
|
57
|
-
return len < size ? raw.slice(raw.indexOf('\n') + 1) : raw;
|
|
58
|
-
}
|
|
59
|
-
catch {
|
|
60
|
-
return '';
|
|
61
|
-
}
|
|
62
|
-
finally {
|
|
63
|
-
if (fd !== undefined) {
|
|
64
|
-
try {
|
|
65
|
-
closeSync(fd);
|
|
66
|
-
}
|
|
67
|
-
catch { /* already gone */ }
|
|
68
|
-
}
|
|
69
|
-
}
|
|
41
|
+
/** Responses remembered as billed: one response's lines sit together, so a short list is enough. */
|
|
42
|
+
const BILLED_KEPT = 64;
|
|
43
|
+
/** The memo saved with the cursor, when it has the hooks' key. */
|
|
44
|
+
function savedHooks(memo) {
|
|
45
|
+
const h = memo && typeof memo === 'object' ? memo.hooks : undefined;
|
|
46
|
+
return h && typeof h === 'object' && h.turn && Array.isArray(h.billed) ? h : null;
|
|
70
47
|
}
|
|
71
|
-
/**
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
function isUserPrompt(entry) {
|
|
76
|
-
if (entry?.type !== 'user' || entry?.isMeta)
|
|
77
|
-
return false;
|
|
78
|
-
const content = entry?.message?.content;
|
|
79
|
-
if (typeof content === 'string')
|
|
80
|
-
return true;
|
|
81
|
-
return Array.isArray(content) && !content.some((p) => p?.type === 'tool_result');
|
|
48
|
+
/** A usage count as a bill can take it: a finite number of tokens, never below zero. */
|
|
49
|
+
function count(v) {
|
|
50
|
+
const n = Number(v);
|
|
51
|
+
return Number.isFinite(n) && n > 0 ? n : 0;
|
|
82
52
|
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
if (
|
|
87
|
-
return
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
* Null is meaningfully different from "no tally found": a turn we cannot observe
|
|
96
|
-
* is left out of BOTH the numerator and the denominator by the caller, so a host
|
|
97
|
-
* that exposes no transcript reports no ratio rather than a ratio of zero.
|
|
98
|
-
*
|
|
99
|
-
* Sidechain entries (subagents) are skipped throughout — a subagent's own prose
|
|
100
|
-
* is never what the user read.
|
|
101
|
-
*/
|
|
102
|
-
export function lastAssistantTurn(transcriptPath) {
|
|
103
|
-
if (typeof transcriptPath !== 'string' || !transcriptPath)
|
|
104
|
-
return null;
|
|
105
|
-
const tail = readTail(transcriptPath);
|
|
106
|
-
if (!tail)
|
|
107
|
-
return null;
|
|
108
|
-
const entries = [];
|
|
109
|
-
for (const line of tail.split('\n')) {
|
|
110
|
-
if (!line.trim())
|
|
111
|
-
continue;
|
|
112
|
-
try {
|
|
113
|
-
entries.push(JSON.parse(line));
|
|
53
|
+
/** Fold one transcript line into the memo and this read's bill. */
|
|
54
|
+
function fold(e, m, bill) {
|
|
55
|
+
// Subagent lines are another context's work: never what the user read, never this session's bill.
|
|
56
|
+
if (e.isSidechain)
|
|
57
|
+
return;
|
|
58
|
+
// The person's own prompt starts a new reply. A task notice, a command
|
|
59
|
+
// wrapper, a compaction summary or a hand-back does not.
|
|
60
|
+
if (e.type === 'user') {
|
|
61
|
+
if (isTypedByPerson(e)) {
|
|
62
|
+
m.turn = { uuid: null, tally: false };
|
|
63
|
+
if (bill.open)
|
|
64
|
+
bill.open = { costMicros: 0, tokens: 0 };
|
|
114
65
|
}
|
|
115
|
-
|
|
66
|
+
return;
|
|
116
67
|
}
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
if (
|
|
125
|
-
|
|
126
|
-
if (
|
|
127
|
-
|
|
128
|
-
const text = textOf(e?.message?.content);
|
|
129
|
-
if (!text.trim())
|
|
130
|
-
continue;
|
|
131
|
-
if (uuid === null && typeof e?.uuid === 'string')
|
|
132
|
-
uuid = e.uuid;
|
|
133
|
-
parts.unshift(text);
|
|
68
|
+
if (e.type !== 'assistant' || e.isApiErrorMessage)
|
|
69
|
+
return;
|
|
70
|
+
if (typeof e.uuid === 'string')
|
|
71
|
+
bill.out.lastUuid = e.uuid;
|
|
72
|
+
const msg = e.message;
|
|
73
|
+
const text = textOf(msg?.content);
|
|
74
|
+
if (text.trim()) {
|
|
75
|
+
if (typeof e.uuid === 'string')
|
|
76
|
+
m.turn.uuid = e.uuid;
|
|
77
|
+
if (hasSavingsTally(text))
|
|
78
|
+
m.turn.tally = true;
|
|
134
79
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
80
|
+
billResponse(msg, m, bill);
|
|
81
|
+
// Everything up to here was billed before.
|
|
82
|
+
if (bill.open && bill.billedThrough && e.uuid === bill.billedThrough)
|
|
83
|
+
bill.open = { costMicros: 0, tokens: 0 };
|
|
84
|
+
}
|
|
85
|
+
/** Bill one response's input once, by `message.id`: its lines (thinking, text, tool_use) each repeat the same `usage`. */
|
|
86
|
+
function billResponse(msg, m, bill) {
|
|
87
|
+
const id = msg?.id;
|
|
88
|
+
const usage = msg?.usage;
|
|
89
|
+
if (typeof id !== 'string' || !usage || m.billed.includes(id))
|
|
90
|
+
return;
|
|
91
|
+
m.billed.push(id);
|
|
92
|
+
if (m.billed.length > BILLED_KEPT)
|
|
93
|
+
m.billed.splice(0, m.billed.length - BILLED_KEPT);
|
|
94
|
+
const turn = {
|
|
95
|
+
model: String(msg?.model ?? ''),
|
|
96
|
+
input: count(usage.input_tokens),
|
|
97
|
+
cacheCreate: count(usage.cache_creation_input_tokens),
|
|
98
|
+
cacheRead: count(usage.cache_read_input_tokens),
|
|
99
|
+
};
|
|
100
|
+
const micros = turnInputCostMicros(turn);
|
|
101
|
+
// An unpriced model contributes neither cost nor tokens: leaving its tokens
|
|
102
|
+
// in the denominator alone would drag the blended rate toward zero and
|
|
103
|
+
// quietly under-report every saving after it.
|
|
104
|
+
if (micros === null || !Number.isFinite(micros))
|
|
105
|
+
return;
|
|
106
|
+
const sink = bill.open ?? bill.out;
|
|
107
|
+
sink.costMicros += micros;
|
|
108
|
+
sink.tokens += turnInputTokens(turn);
|
|
138
109
|
}
|
|
139
110
|
/**
|
|
140
|
-
* What
|
|
141
|
-
*
|
|
142
|
-
*
|
|
143
|
-
*
|
|
144
|
-
*
|
|
145
|
-
*
|
|
146
|
-
*
|
|
147
|
-
*
|
|
148
|
-
*
|
|
149
|
-
*
|
|
150
|
-
* Null when there is nothing to bill — no transcript path (a host whose Stop
|
|
151
|
-
* hook names none), an unreadable file, a turn whose entries carry no `usage`,
|
|
152
|
-
* or a model with no price in {@link inputUsdPerMtok}. As everywhere in this
|
|
153
|
-
* file, null means "not observed", never "zero".
|
|
111
|
+
* What a Claude Code transcript gained since the last read with the same
|
|
112
|
+
* cursor: the cost of each response seen for the first time, and the reply in
|
|
113
|
+
* progress. The first read of a session takes at most the transcript's last
|
|
114
|
+
* 8 MB and bills only the reply in progress (see {@link Bill});
|
|
115
|
+
* `billedThrough` is the last reply billed before (kept with the totals, so
|
|
116
|
+
* it outlives a lost cursor). `also` sees each line of the same read, with
|
|
117
|
+
* the same memo, for another turn-end reader (the learning ask) that keeps
|
|
118
|
+
* its state under a key of its own. Never throws; an unreadable file reads
|
|
119
|
+
* as nothing new.
|
|
154
120
|
*/
|
|
155
|
-
export function
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
try {
|
|
166
|
-
entries.push(JSON.parse(line));
|
|
167
|
-
}
|
|
168
|
-
catch { /* clipped or partial line */ }
|
|
121
|
+
export function catchUpTranscript(transcriptPath, cursorPath, opts = {}) {
|
|
122
|
+
const out = { fresh: false, costMicros: 0, tokens: 0, turn: { uuid: null, tally: false }, lastUuid: null };
|
|
123
|
+
const bill = { out, open: null, billedThrough: opts.billedThrough };
|
|
124
|
+
// What the last read billed, kept apart: a read that starts over gets an empty memo.
|
|
125
|
+
let before = [];
|
|
126
|
+
try {
|
|
127
|
+
before = savedHooks((readJson(cursorPath))?.trace?.memo)?.billed.filter((id) => typeof id === 'string') ?? [];
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
// No cursor yet, or one that can't be read: nothing to carry.
|
|
169
131
|
}
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
const turn = {
|
|
193
|
-
model: String(msg?.model ?? ''),
|
|
194
|
-
input: Number(usage.input_tokens) || 0,
|
|
195
|
-
cacheCreate: Number(usage.cache_creation_input_tokens) || 0,
|
|
196
|
-
cacheRead: Number(usage.cache_read_input_tokens) || 0,
|
|
197
|
-
};
|
|
198
|
-
const micros = turnInputCostMicros(turn);
|
|
199
|
-
// An unpriced model contributes neither cost nor tokens: leaving its tokens
|
|
200
|
-
// in the denominator alone would drag the blended rate toward zero and
|
|
201
|
-
// quietly under-report every saving after it.
|
|
202
|
-
if (micros === null)
|
|
203
|
-
continue;
|
|
204
|
-
costMicros += micros;
|
|
205
|
-
tokens += turnInputTokens(turn);
|
|
132
|
+
readNewEvents(transcriptPath, cursorPath, {
|
|
133
|
+
onEntry: (entry, memo) => {
|
|
134
|
+
try {
|
|
135
|
+
let m = savedHooks(memo);
|
|
136
|
+
if (!m) {
|
|
137
|
+
m = { turn: { uuid: null, tally: false }, billed: before.slice(-BILLED_KEPT) };
|
|
138
|
+
memo.hooks = m;
|
|
139
|
+
bill.open = { costMicros: 0, tokens: 0 };
|
|
140
|
+
}
|
|
141
|
+
fold(entry, m, bill);
|
|
142
|
+
opts.also?.(entry, memo);
|
|
143
|
+
out.fresh = true;
|
|
144
|
+
out.turn = m.turn;
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
// One odd line costs that line, never the read.
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
});
|
|
151
|
+
if (bill.open) {
|
|
152
|
+
out.costMicros += bill.open.costMicros;
|
|
153
|
+
out.tokens += bill.open.tokens;
|
|
206
154
|
}
|
|
207
|
-
|
|
208
|
-
return null;
|
|
209
|
-
return { uuid, costMicros, tokens };
|
|
155
|
+
return out;
|
|
210
156
|
}
|
|
211
157
|
//# sourceMappingURL=tally.js.map
|
package/dist/claude/tally.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tally.js","sourceRoot":"","sources":["../../src/claude/tally.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"tally.js","sourceRoot":"","sources":["../../src/claude/tally.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { RunCall, RunState, SkillSessionState, WallClass } from '../trace/types.js';
|
|
2
|
+
import type { GateCtx } from '../trace/skill-session.js';
|
|
3
|
+
import { type WallCtx } from '../trace/walls.js';
|
|
4
|
+
import type { Sent } from './skills-hook-util.js';
|
|
5
|
+
/** How long after a deny a passing call of the same command counts as the deny avoided (3.5 step 5). */
|
|
6
|
+
export declare const AVOIDED_MS: number;
|
|
7
|
+
/** At most this many wall fixes after a compaction (3.1 step 9, R38). */
|
|
8
|
+
export declare const COMPACT_FIXES = 2;
|
|
9
|
+
/**
|
|
10
|
+
* An executable `program` in the hook's PATH or 4.11's fixed folders (the hook's PATH can be narrower than the shell's).
|
|
11
|
+
* On Windows PATH splits on ';', the program is git.exe or npm.cmd (PATHEXT), and any regular file counts: there is no exec bit.
|
|
12
|
+
*/
|
|
13
|
+
export declare function onPathHere(program: string, env: NodeJS.ProcessEnv): boolean;
|
|
14
|
+
/** The facts a fix line may use: which programs are here, and origin's SSH address when it is https (checked by sshRemoteFor). */
|
|
15
|
+
export declare function wallCtxFor(checkout: string, env: NodeJS.ProcessEnv): WallCtx;
|
|
16
|
+
/**
|
|
17
|
+
* 3.4 step 1: the fix line for `cls`, then "what fixed this here before" when a kept lesson for the wall applies
|
|
18
|
+
* here and worked in 2 or more epochs (4.10). `hadLesson`: a live lesson for this wall applies here.
|
|
19
|
+
*/
|
|
20
|
+
export declare function wallContextText(cls: WallClass, place: {
|
|
21
|
+
checkout: string;
|
|
22
|
+
repoKey: string;
|
|
23
|
+
env: NodeJS.ProcessEnv;
|
|
24
|
+
now: Date;
|
|
25
|
+
}): {
|
|
26
|
+
text: string;
|
|
27
|
+
hadLesson: boolean;
|
|
28
|
+
};
|
|
29
|
+
/** 3.4 step 1 on a hook payload: the class the result hits, or null. Exit 0 under P23's limits (matchWall's own). */
|
|
30
|
+
export declare function wallOfResult(result: string, command: string, failed: boolean): WallClass | null;
|
|
31
|
+
/** A run's wall hits that count: not a flake retried as is, not a dropped tail (b2: `ignoredFailure(call, next)`). */
|
|
32
|
+
export declare function countedHits(run: RunState): RunCall[];
|
|
33
|
+
/** `timeout [-s SIG] [-k 5] [--foreground] 60 npm test` without its timeout part: `npm test`; null when there is none. */
|
|
34
|
+
export declare function withoutTimeout(cmd: string | null): string | null;
|
|
35
|
+
/**
|
|
36
|
+
* 3.5 steps 1 and 2 (`learn`): this session's wall hits (`seen`), repairs (`fixed`, an open run's read from its calls
|
|
37
|
+
* now) and the kept lessons that worked again, in one locked write of walls.json, only when something is new.
|
|
38
|
+
* Phase 2 (D129): returns how many new wall hits this Stop recorded whose fix reached the model: a failed call's where
|
|
39
|
+
* the host reads PostToolUseFailure's context (Codex has none), any other's where it reads PostToolUse's.
|
|
40
|
+
*/
|
|
41
|
+
export declare function wallsAtStop(st: SkillSessionState, ctx: GateCtx): number;
|
|
42
|
+
/**
|
|
43
|
+
* 3.5 step 5 (`fold`): one `guardrail{sure-fail}` per deny the fast path marked since the last Stop, and
|
|
44
|
+
* `guardrail{avoided}` for each whose command, without timeout, then passed within 30 minutes. Moves `deniedSeen` on.
|
|
45
|
+
*/
|
|
46
|
+
export declare function guardrailCounts(st: SkillSessionState, ctx: GateCtx, sent: Sent): void;
|
|
47
|
+
/**
|
|
48
|
+
* 3.1 step 9 (R38): the fix lines for the walls hit in the epoch a compaction just closed, at most 2, read from the
|
|
49
|
+
* calls still held and from walls.json's hits for this session and epoch.
|
|
50
|
+
*/
|
|
51
|
+
export declare function compactWallLines(st: SkillSessionState, ctx: GateCtx): string[];
|
|
52
|
+
//# sourceMappingURL=walls-hook.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"walls-hook.d.ts","sourceRoot":"","sources":["../../src/claude/walls-hook.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACzF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAsD,KAAK,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAUrG,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAIlD,wGAAwG;AACxG,eAAO,MAAM,UAAU,QAAiB,CAAC;AACzC,yEAAyE;AACzE,eAAO,MAAM,aAAa,IAAI,CAAC;AAG/B;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAuB3E;AAED,kIAAkI;AAClI,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAW5E;AAOD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,GAAG,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAarK;AAED,qHAAqH;AACrH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI,CAE/F;AAKD,sHAAsH;AACtH,wBAAgB,WAAW,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,EAAE,CAGpD;AAED,0HAA0H;AAC1H,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAGhE;AASD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAAE,EAAE,iBAAiB,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,CAuDvE;AAID;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,iBAAiB,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI,CAyBrF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,iBAAiB,EAAE,GAAG,EAAE,OAAO,GAAG,MAAM,EAAE,CAa9E"}
|