@nanonets/graft 0.24.0 → 0.24.1
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/dist/ask/ask.d.ts +8 -0
- package/dist/ask/ask.d.ts.map +1 -1
- package/dist/ask/ask.js +33 -12
- package/dist/ask/ask.js.map +1 -1
- package/dist/claude/hook-io.d.ts +44 -0
- package/dist/claude/hook-io.d.ts.map +1 -0
- package/dist/claude/hook-io.js +144 -0
- package/dist/claude/hook-io.js.map +1 -0
- package/dist/claude/skills-hook-util.d.ts +25 -0
- package/dist/claude/skills-hook-util.d.ts.map +1 -0
- package/dist/claude/skills-hook-util.js +71 -0
- package/dist/claude/skills-hook-util.js.map +1 -0
- package/dist/cli-picker.d.ts +24 -0
- package/dist/cli-picker.d.ts.map +1 -1
- package/dist/cli-picker.js +36 -5
- package/dist/cli-picker.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +278 -29
- package/dist/cli.js.map +1 -1
- package/dist/cloud/lookup-activity.d.ts +16 -0
- package/dist/cloud/lookup-activity.d.ts.map +1 -0
- package/dist/cloud/lookup-activity.js +56 -0
- package/dist/cloud/lookup-activity.js.map +1 -0
- package/dist/cloud/nudge.d.ts.map +1 -1
- package/dist/cloud/nudge.js +3 -0
- package/dist/cloud/nudge.js.map +1 -1
- package/dist/cloud/onboarding.d.ts +237 -0
- package/dist/cloud/onboarding.d.ts.map +1 -0
- package/dist/cloud/onboarding.js +536 -0
- package/dist/cloud/onboarding.js.map +1 -0
- package/dist/cloud/pair.d.ts +76 -0
- package/dist/cloud/pair.d.ts.map +1 -0
- package/dist/cloud/pair.js +249 -0
- package/dist/cloud/pair.js.map +1 -0
- package/dist/cloud/workspace-sync.d.ts +10 -2
- package/dist/cloud/workspace-sync.d.ts.map +1 -1
- package/dist/cloud/workspace-sync.js +119 -7
- package/dist/cloud/workspace-sync.js.map +1 -1
- package/dist/cloud/workspace.d.ts +22 -1
- package/dist/cloud/workspace.d.ts.map +1 -1
- package/dist/cloud/workspace.js +16 -1
- package/dist/cloud/workspace.js.map +1 -1
- package/dist/graph/native.d.ts +2 -0
- package/dist/graph/native.d.ts.map +1 -1
- package/dist/graph/native.js +29 -4
- package/dist/graph/native.js.map +1 -1
- package/dist/hosts/claude-global.d.ts +14 -0
- package/dist/hosts/claude-global.d.ts.map +1 -1
- package/dist/hosts/claude-global.js +38 -3
- package/dist/hosts/claude-global.js.map +1 -1
- package/dist/init/install-record.d.ts +21 -0
- package/dist/init/install-record.d.ts.map +1 -0
- package/dist/init/install-record.js +144 -0
- package/dist/init/install-record.js.map +1 -0
- package/dist/init/plain-file.d.ts +11 -0
- package/dist/init/plain-file.d.ts.map +1 -0
- package/dist/init/plain-file.js +80 -0
- package/dist/init/plain-file.js.map +1 -0
- package/dist/mcp/brains.d.ts +72 -0
- package/dist/mcp/brains.d.ts.map +1 -0
- package/dist/mcp/brains.js +220 -0
- package/dist/mcp/brains.js.map +1 -0
- package/dist/mcp/server.d.ts +3 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +40 -5
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +7 -2
- package/dist/mcp/tools.js.map +1 -1
- package/dist/notes/cold-start.d.ts +30 -1
- package/dist/notes/cold-start.d.ts.map +1 -1
- package/dist/notes/cold-start.js +98 -19
- package/dist/notes/cold-start.js.map +1 -1
- package/dist/notes/every-repo.d.ts +18 -0
- package/dist/notes/every-repo.d.ts.map +1 -0
- package/dist/notes/every-repo.js +86 -0
- package/dist/notes/every-repo.js.map +1 -0
- package/dist/notes/guardrails.d.ts +8 -0
- package/dist/notes/guardrails.d.ts.map +1 -0
- package/dist/notes/guardrails.js +38 -0
- package/dist/notes/guardrails.js.map +1 -0
- package/dist/notes/lesson-index.d.ts +13 -0
- package/dist/notes/lesson-index.d.ts.map +1 -0
- package/dist/notes/lesson-index.js +135 -0
- package/dist/notes/lesson-index.js.map +1 -0
- package/dist/notes/linked-learnings.d.ts +8 -0
- package/dist/notes/linked-learnings.d.ts.map +1 -0
- package/dist/notes/linked-learnings.js +113 -0
- package/dist/notes/linked-learnings.js.map +1 -0
- package/dist/notes/replace.d.ts +14 -0
- package/dist/notes/replace.d.ts.map +1 -0
- package/dist/notes/replace.js +38 -0
- package/dist/notes/replace.js.map +1 -0
- package/dist/notes/repo-notes-dir.d.ts +2 -0
- package/dist/notes/repo-notes-dir.d.ts.map +1 -0
- package/dist/notes/repo-notes-dir.js +16 -0
- package/dist/notes/repo-notes-dir.js.map +1 -0
- package/dist/skills/anchors-cli.d.ts +33 -0
- package/dist/skills/anchors-cli.d.ts.map +1 -0
- package/dist/skills/anchors-cli.js +274 -0
- package/dist/skills/anchors-cli.js.map +1 -0
- package/dist/skills/anchors-git.d.ts +29 -0
- package/dist/skills/anchors-git.d.ts.map +1 -0
- package/dist/skills/anchors-git.js +241 -0
- package/dist/skills/anchors-git.js.map +1 -0
- package/dist/skills/anchors-wide.d.ts +25 -0
- package/dist/skills/anchors-wide.d.ts.map +1 -0
- package/dist/skills/anchors-wide.js +481 -0
- package/dist/skills/anchors-wide.js.map +1 -0
- package/dist/skills/anchors.d.ts +32 -0
- package/dist/skills/anchors.d.ts.map +1 -0
- package/dist/skills/anchors.js +485 -0
- package/dist/skills/anchors.js.map +1 -0
- package/dist/skills/check-result.d.ts +26 -0
- package/dist/skills/check-result.d.ts.map +1 -0
- package/dist/skills/check-result.js +46 -0
- package/dist/skills/check-result.js.map +1 -0
- package/dist/skills/codex-sandbox.d.ts +6 -0
- package/dist/skills/codex-sandbox.d.ts.map +1 -0
- package/dist/skills/codex-sandbox.js +55 -0
- package/dist/skills/codex-sandbox.js.map +1 -0
- package/dist/skills/compile-split.d.ts +57 -0
- package/dist/skills/compile-split.d.ts.map +1 -0
- package/dist/skills/compile-split.js +532 -0
- package/dist/skills/compile-split.js.map +1 -0
- package/dist/skills/compile-version.d.ts +37 -0
- package/dist/skills/compile-version.d.ts.map +1 -0
- package/dist/skills/compile-version.js +56 -0
- package/dist/skills/compile-version.js.map +1 -0
- package/dist/skills/compile-waits.d.ts +12 -0
- package/dist/skills/compile-waits.d.ts.map +1 -0
- package/dist/skills/compile-waits.js +52 -0
- package/dist/skills/compile-waits.js.map +1 -0
- package/dist/skills/compile-words.d.ts +82 -0
- package/dist/skills/compile-words.d.ts.map +1 -0
- package/dist/skills/compile-words.js +385 -0
- package/dist/skills/compile-words.js.map +1 -0
- package/dist/skills/compile.d.ts +35 -0
- package/dist/skills/compile.d.ts.map +1 -0
- package/dist/skills/compile.js +488 -0
- package/dist/skills/compile.js.map +1 -0
- package/dist/skills/credit-facts.d.ts +8 -0
- package/dist/skills/credit-facts.d.ts.map +1 -0
- package/dist/skills/credit-facts.js +32 -0
- package/dist/skills/credit-facts.js.map +1 -0
- package/dist/skills/directive-words.d.ts +11 -0
- package/dist/skills/directive-words.d.ts.map +1 -0
- package/dist/skills/directive-words.js +33 -0
- package/dist/skills/directive-words.js.map +1 -0
- package/dist/skills/fidelity.d.ts +42 -0
- package/dist/skills/fidelity.d.ts.map +1 -0
- package/dist/skills/fidelity.js +138 -0
- package/dist/skills/fidelity.js.map +1 -0
- package/dist/skills/forget-notice.d.ts +44 -0
- package/dist/skills/forget-notice.d.ts.map +1 -0
- package/dist/skills/forget-notice.js +131 -0
- package/dist/skills/forget-notice.js.map +1 -0
- package/dist/skills/found-skill.d.ts +35 -0
- package/dist/skills/found-skill.d.ts.map +1 -0
- package/dist/skills/found-skill.js +66 -0
- package/dist/skills/found-skill.js.map +1 -0
- package/dist/skills/front-version.d.ts +12 -0
- package/dist/skills/front-version.d.ts.map +1 -0
- package/dist/skills/front-version.js +87 -0
- package/dist/skills/front-version.js.map +1 -0
- package/dist/skills/host-facts.d.ts +51 -0
- package/dist/skills/host-facts.d.ts.map +1 -0
- package/dist/skills/host-facts.js +134 -0
- package/dist/skills/host-facts.js.map +1 -0
- package/dist/skills/ledger.d.ts +43 -0
- package/dist/skills/ledger.d.ts.map +1 -0
- package/dist/skills/ledger.js +336 -0
- package/dist/skills/ledger.js.map +1 -0
- package/dist/skills/lessons.d.ts +60 -0
- package/dist/skills/lessons.d.ts.map +1 -0
- package/dist/skills/lessons.js +396 -0
- package/dist/skills/lessons.js.map +1 -0
- package/dist/skills/offer-answers.d.ts +20 -0
- package/dist/skills/offer-answers.d.ts.map +1 -0
- package/dist/skills/offer-answers.js +51 -0
- package/dist/skills/offer-answers.js.map +1 -0
- package/dist/skills/own-folder.d.ts +9 -0
- package/dist/skills/own-folder.d.ts.map +1 -0
- package/dist/skills/own-folder.js +36 -0
- package/dist/skills/own-folder.js.map +1 -0
- package/dist/skills/person.d.ts +34 -0
- package/dist/skills/person.d.ts.map +1 -0
- package/dist/skills/person.js +102 -0
- package/dist/skills/person.js.map +1 -0
- package/dist/skills/probe-clean.d.ts +9 -0
- package/dist/skills/probe-clean.d.ts.map +1 -0
- package/dist/skills/probe-clean.js +48 -0
- package/dist/skills/probe-clean.js.map +1 -0
- package/dist/skills/probes.d.ts +26 -0
- package/dist/skills/probes.d.ts.map +1 -0
- package/dist/skills/probes.js +225 -0
- package/dist/skills/probes.js.map +1 -0
- package/dist/skills/recall.d.ts +119 -0
- package/dist/skills/recall.d.ts.map +1 -0
- package/dist/skills/recall.js +370 -0
- package/dist/skills/recall.js.map +1 -0
- package/dist/skills/receipts.d.ts +44 -0
- package/dist/skills/receipts.d.ts.map +1 -0
- package/dist/skills/receipts.js +223 -0
- package/dist/skills/receipts.js.map +1 -0
- package/dist/skills/run-checkout.d.ts +4 -0
- package/dist/skills/run-checkout.d.ts.map +1 -0
- package/dist/skills/run-checkout.js +37 -0
- package/dist/skills/run-checkout.js.map +1 -0
- package/dist/skills/runblock.d.ts +45 -0
- package/dist/skills/runblock.d.ts.map +1 -0
- package/dist/skills/runblock.js +222 -0
- package/dist/skills/runblock.js.map +1 -0
- package/dist/skills/save-parse.d.ts +42 -0
- package/dist/skills/save-parse.d.ts.map +1 -0
- package/dist/skills/save-parse.js +172 -0
- package/dist/skills/save-parse.js.map +1 -0
- package/dist/skills/save-store.d.ts +12 -0
- package/dist/skills/save-store.d.ts.map +1 -0
- package/dist/skills/save-store.js +22 -0
- package/dist/skills/save-store.js.map +1 -0
- package/dist/skills/settings.d.ts +38 -0
- package/dist/skills/settings.d.ts.map +1 -0
- package/dist/skills/settings.js +133 -0
- package/dist/skills/settings.js.map +1 -0
- package/dist/skills/skill-diff.d.ts +40 -0
- package/dist/skills/skill-diff.d.ts.map +1 -0
- package/dist/skills/skill-diff.js +191 -0
- package/dist/skills/skill-diff.js.map +1 -0
- package/dist/skills/skill-file.d.ts +24 -0
- package/dist/skills/skill-file.d.ts.map +1 -0
- package/dist/skills/skill-file.js +97 -0
- package/dist/skills/skill-file.js.map +1 -0
- package/dist/skills/skill-rebuild.d.ts +27 -0
- package/dist/skills/skill-rebuild.d.ts.map +1 -0
- package/dist/skills/skill-rebuild.js +85 -0
- package/dist/skills/skill-rebuild.js.map +1 -0
- package/dist/skills/skillmd.d.ts +17 -0
- package/dist/skills/skillmd.d.ts.map +1 -0
- package/dist/skills/skillmd.js +219 -0
- package/dist/skills/skillmd.js.map +1 -0
- package/dist/skills/skills.d.ts +2 -0
- package/dist/skills/skills.d.ts.map +1 -1
- package/dist/skills/skills.js +1 -1
- package/dist/skills/skills.js.map +1 -1
- package/dist/skills/staleness.d.ts +27 -0
- package/dist/skills/staleness.d.ts.map +1 -0
- package/dist/skills/staleness.js +178 -0
- package/dist/skills/staleness.js.map +1 -0
- package/dist/skills/state.d.ts +36 -0
- package/dist/skills/state.d.ts.map +1 -0
- package/dist/skills/state.js +259 -0
- package/dist/skills/state.js.map +1 -0
- package/dist/skills/store-fs.d.ts +77 -0
- package/dist/skills/store-fs.d.ts.map +1 -0
- package/dist/skills/store-fs.js +194 -0
- package/dist/skills/store-fs.js.map +1 -0
- package/dist/skills/store-held.d.ts +44 -0
- package/dist/skills/store-held.d.ts.map +1 -0
- package/dist/skills/store-held.js +147 -0
- package/dist/skills/store-held.js.map +1 -0
- package/dist/skills/store.d.ts +73 -0
- package/dist/skills/store.d.ts.map +1 -0
- package/dist/skills/store.js +279 -0
- package/dist/skills/store.js.map +1 -0
- package/dist/skills/validate.d.ts +11 -0
- package/dist/skills/validate.d.ts.map +1 -0
- package/dist/skills/validate.js +112 -0
- package/dist/skills/validate.js.map +1 -0
- package/dist/skills/versions-fs.d.ts +45 -0
- package/dist/skills/versions-fs.d.ts.map +1 -0
- package/dist/skills/versions-fs.js +234 -0
- package/dist/skills/versions-fs.js.map +1 -0
- package/dist/skills/versions.d.ts +56 -0
- package/dist/skills/versions.d.ts.map +1 -0
- package/dist/skills/versions.js +351 -0
- package/dist/skills/versions.js.map +1 -0
- package/dist/trace/checks.d.ts +63 -0
- package/dist/trace/checks.d.ts.map +1 -0
- package/dist/trace/checks.js +487 -0
- package/dist/trace/checks.js.map +1 -0
- package/dist/trace/claude.d.ts +124 -0
- package/dist/trace/claude.d.ts.map +1 -0
- package/dist/trace/claude.js +303 -0
- package/dist/trace/claude.js.map +1 -0
- package/dist/trace/codex-exec.d.ts +22 -0
- package/dist/trace/codex-exec.d.ts.map +1 -0
- package/dist/trace/codex-exec.js +129 -0
- package/dist/trace/codex-exec.js.map +1 -0
- package/dist/trace/codex-meta.d.ts +23 -0
- package/dist/trace/codex-meta.d.ts.map +1 -0
- package/dist/trace/codex-meta.js +112 -0
- package/dist/trace/codex-meta.js.map +1 -0
- package/dist/trace/codex.d.ts +33 -0
- package/dist/trace/codex.d.ts.map +1 -0
- package/dist/trace/codex.js +485 -0
- package/dist/trace/codex.js.map +1 -0
- package/dist/trace/cursor.d.ts +16 -0
- package/dist/trace/cursor.d.ts.map +1 -0
- package/dist/trace/cursor.js +133 -0
- package/dist/trace/cursor.js.map +1 -0
- package/dist/trace/dialect.d.ts +43 -0
- package/dist/trace/dialect.d.ts.map +1 -0
- package/dist/trace/dialect.js +95 -0
- package/dist/trace/dialect.js.map +1 -0
- package/dist/trace/epochs.d.ts +10 -0
- package/dist/trace/epochs.d.ts.map +1 -0
- package/dist/trace/epochs.js +16 -0
- package/dist/trace/epochs.js.map +1 -0
- package/dist/trace/failure.d.ts +15 -0
- package/dist/trace/failure.d.ts.map +1 -0
- package/dist/trace/failure.js +69 -0
- package/dist/trace/failure.js.map +1 -0
- package/dist/trace/gate-file.d.ts +71 -0
- package/dist/trace/gate-file.d.ts.map +1 -0
- package/dist/trace/gate-file.js +329 -0
- package/dist/trace/gate-file.js.map +1 -0
- package/dist/trace/guard-fast.d.ts +22 -0
- package/dist/trace/guard-fast.d.ts.map +1 -0
- package/dist/trace/guard-fast.js +213 -0
- package/dist/trace/guard-fast.js.map +1 -0
- package/dist/trace/housekeeping.d.ts +5 -0
- package/dist/trace/housekeeping.d.ts.map +1 -0
- package/dist/trace/housekeeping.js +93 -0
- package/dist/trace/housekeeping.js.map +1 -0
- package/dist/trace/jobs.d.ts +52 -0
- package/dist/trace/jobs.d.ts.map +1 -0
- package/dist/trace/jobs.js +182 -0
- package/dist/trace/jobs.js.map +1 -0
- package/dist/trace/known-repo.d.ts +3 -0
- package/dist/trace/known-repo.d.ts.map +1 -0
- package/dist/trace/known-repo.js +55 -0
- package/dist/trace/known-repo.js.map +1 -0
- package/dist/trace/pool.d.ts +40 -0
- package/dist/trace/pool.d.ts.map +1 -0
- package/dist/trace/pool.js +154 -0
- package/dist/trace/pool.js.map +1 -0
- package/dist/trace/repairs.d.ts +27 -0
- package/dist/trace/repairs.d.ts.map +1 -0
- package/dist/trace/repairs.js +303 -0
- package/dist/trace/repairs.js.map +1 -0
- package/dist/trace/run-calls.d.ts +82 -0
- package/dist/trace/run-calls.d.ts.map +1 -0
- package/dist/trace/run-calls.js +331 -0
- package/dist/trace/run-calls.js.map +1 -0
- package/dist/trace/run-join.d.ts +20 -0
- package/dist/trace/run-join.d.ts.map +1 -0
- package/dist/trace/run-join.js +99 -0
- package/dist/trace/run-join.js.map +1 -0
- package/dist/trace/run-sheets.d.ts +26 -0
- package/dist/trace/run-sheets.d.ts.map +1 -0
- package/dist/trace/run-sheets.js +145 -0
- package/dist/trace/run-sheets.js.map +1 -0
- package/dist/trace/run-turns.d.ts +24 -0
- package/dist/trace/run-turns.d.ts.map +1 -0
- package/dist/trace/run-turns.js +67 -0
- package/dist/trace/run-turns.js.map +1 -0
- package/dist/trace/run-verdict.d.ts +24 -0
- package/dist/trace/run-verdict.d.ts.map +1 -0
- package/dist/trace/run-verdict.js +176 -0
- package/dist/trace/run-verdict.js.map +1 -0
- package/dist/trace/runs.d.ts +54 -0
- package/dist/trace/runs.d.ts.map +1 -0
- package/dist/trace/runs.js +501 -0
- package/dist/trace/runs.js.map +1 -0
- package/dist/trace/skill-session.d.ts +64 -0
- package/dist/trace/skill-session.d.ts.map +1 -0
- package/dist/trace/skill-session.js +232 -0
- package/dist/trace/skill-session.js.map +1 -0
- package/dist/trace/tamper.d.ts +12 -0
- package/dist/trace/tamper.d.ts.map +1 -0
- package/dist/trace/tamper.js +405 -0
- package/dist/trace/tamper.js.map +1 -0
- package/dist/trace/typed.d.ts +30 -0
- package/dist/trace/typed.d.ts.map +1 -0
- package/dist/trace/typed.js +132 -0
- package/dist/trace/typed.js.map +1 -0
- package/dist/trace/wall-state.d.ts +86 -0
- package/dist/trace/wall-state.d.ts.map +1 -0
- package/dist/trace/wall-state.js +279 -0
- package/dist/trace/wall-state.js.map +1 -0
- package/dist/trace/walls.d.ts +40 -0
- package/dist/trace/walls.d.ts.map +1 -0
- package/dist/trace/walls.js +318 -0
- package/dist/trace/walls.js.map +1 -0
- package/dist/vendor/tree-sitter-swift/LICENSE +21 -0
- package/dist/vendor/tree-sitter-swift/node-types.json +30694 -0
- package/dist/vendor/tree-sitter-swift/prebuilds/darwin-arm64/tree-sitter-swift.node +0 -0
- package/dist/vendor/tree-sitter-swift/prebuilds/darwin-x64/tree-sitter-swift.node +0 -0
- package/dist/vendor/tree-sitter-swift/prebuilds/linux-arm64/tree-sitter-swift.node +0 -0
- package/dist/vendor/tree-sitter-swift/prebuilds/linux-x64/tree-sitter-swift.node +0 -0
- package/dist/vendor/tree-sitter-swift/prebuilds/win32-arm64/tree-sitter-swift.node +0 -0
- package/dist/vendor/tree-sitter-swift/prebuilds/win32-x64/tree-sitter-swift.node +0 -0
- package/package.json +6 -3
- package/scripts/stamp-telemetry-key.mjs +8 -5
- package/scripts/vendor-grammars.mjs +35 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"save-parse.d.ts","sourceRoot":"","sources":["../../src/skills/save-parse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,MAAM,WAAW,YAAY;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE;AAE9E,6FAA6F;AAC7F,eAAO,MAAM,aAAa,QAAqB,CAAC;AAgDhD,gHAAgH;AAChH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CA0BnE;AAID,MAAM,WAAW,eAAe;IAAG,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAA;CAAE;AAE3F,uHAAuH;AACvH,eAAO,MAAM,gBAAgB,QAAwB,CAAC;AAEtD,kGAAkG;AAClG,eAAO,MAAM,YAAY,QAAuC,CAAC;AAEjE,wHAAwH;AACxH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CA0BzE;AAID,MAAM,WAAW,eAAe;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE;AAElE,wEAAwE;AACxE,eAAO,MAAM,gBAAgB,QAAwB,CAAC;AAWtD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAmBzE"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reading a `trail skills add` command (design 4.9 step 1), whatever runs it:
|
|
3
|
+
* `trail`, `graft`, `npx @trailhq/trail-code`, `node .../trail.js`,
|
|
4
|
+
* `bash -c "..."`, `eval`, an alias or xargs. `skills add` anywhere in the
|
|
5
|
+
* command is an add; it must read as exactly `skills add <name> --run <id>`,
|
|
6
|
+
* once. Re-exported from `save-gate.ts`, where the design names it.
|
|
7
|
+
*
|
|
8
|
+
* Phase 2 (4.11): `trail skills update <name> --offer <id>`, read stricter
|
|
9
|
+
* still: nothing chained and no root options, since its gate writes a file.
|
|
10
|
+
*/
|
|
11
|
+
import { leadingCds, onlyTrail, simpleCommands } from '../trace/shell.js';
|
|
12
|
+
/** /\bskills\s+add\b/: anywhere in the command, whatever binary, wrapper or path runs it. */
|
|
13
|
+
export const SKILLS_ADD_RE = /\bskills\s+add\b/;
|
|
14
|
+
const ALL_ADDS = /\bskills\s+add\b/g;
|
|
15
|
+
/** Where the add's own words end, outside quotes: the next command, a redirect, a comment, a subshell's end. */
|
|
16
|
+
const STOP = new Set([';', '&', '|', ')', '<', '>', '\n', '\r', '`']);
|
|
17
|
+
/** The words after `skills add`, up to the end of that command. A quote never closed ends it (the close of `bash -c "..."`). */
|
|
18
|
+
function tailWords(tail) {
|
|
19
|
+
const out = [];
|
|
20
|
+
let cur = '';
|
|
21
|
+
let has = false;
|
|
22
|
+
const flush = () => {
|
|
23
|
+
if (has)
|
|
24
|
+
out.push(cur);
|
|
25
|
+
cur = '';
|
|
26
|
+
has = false;
|
|
27
|
+
};
|
|
28
|
+
for (let i = 0; i < tail.length; i++) {
|
|
29
|
+
const ch = tail[i];
|
|
30
|
+
if (ch === '"' || ch === "'") {
|
|
31
|
+
const end = tail.indexOf(ch, i + 1);
|
|
32
|
+
if (end < 0)
|
|
33
|
+
break;
|
|
34
|
+
cur += tail.slice(i + 1, end);
|
|
35
|
+
has = true;
|
|
36
|
+
i = end;
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
if (ch === '\\' && i + 1 < tail.length && tail[i + 1] !== '\n') {
|
|
40
|
+
cur += tail[i + 1];
|
|
41
|
+
has = true;
|
|
42
|
+
i++;
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
if (STOP.has(ch)) {
|
|
46
|
+
// `2>&1`: digits right before a redirect are the redirect's, not a word.
|
|
47
|
+
if ((ch === '>' || ch === '<') && /^\d+$/.test(cur))
|
|
48
|
+
has = false;
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
if (ch === '#' && !has)
|
|
52
|
+
break;
|
|
53
|
+
if (ch === ' ' || ch === '\t') {
|
|
54
|
+
flush();
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
cur += ch;
|
|
58
|
+
has = true;
|
|
59
|
+
}
|
|
60
|
+
flush();
|
|
61
|
+
return out;
|
|
62
|
+
}
|
|
63
|
+
/** null when the command doesn't parse as `<anything> skills add <name> --run <id>`, or adds more than once. */
|
|
64
|
+
export function parseSkillsAdd(command) {
|
|
65
|
+
const text = String(command ?? '');
|
|
66
|
+
const hits = [...text.matchAll(ALL_ADDS)];
|
|
67
|
+
if (hits.length !== 1)
|
|
68
|
+
return null;
|
|
69
|
+
const words = tailWords(text.slice(hits[0].index + hits[0][0].length));
|
|
70
|
+
let name = null;
|
|
71
|
+
let runId = null;
|
|
72
|
+
const flags = [];
|
|
73
|
+
for (let i = 0; i < words.length; i++) {
|
|
74
|
+
const w = words[i];
|
|
75
|
+
if (w === '--run' && runId === null && i + 1 < words.length) {
|
|
76
|
+
runId = words[++i];
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
if (w.startsWith('--run=') && runId === null) {
|
|
80
|
+
runId = w.slice(6);
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
if (!w.startsWith('-') && name === null) {
|
|
84
|
+
name = w;
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
flags.push(w);
|
|
88
|
+
}
|
|
89
|
+
if (name === null || runId === null || !runId)
|
|
90
|
+
return null;
|
|
91
|
+
return { name, runId, flags };
|
|
92
|
+
}
|
|
93
|
+
/** /\bskills\s+lesson\b/: anywhere in the command, whatever runs it (the lesson gate, R12's twin of SKILLS_ADD_RE). */
|
|
94
|
+
export const SKILLS_LESSON_RE = /\bskills\s+lesson\b/;
|
|
95
|
+
const ALL_LESSONS = /\bskills\s+lesson\b/g;
|
|
96
|
+
/** Every save the gate guards: a skill's add, a lesson's keep, and (phase 2) a skill's update. */
|
|
97
|
+
export const SAVE_GATE_RE = /\bskills\s+(?:add|lesson|update)\b/;
|
|
98
|
+
/** null when the command doesn't parse as `<anything> skills lesson [<skill>] --offer <id>`, or keeps more than one. */
|
|
99
|
+
export function parseSkillsLesson(command) {
|
|
100
|
+
const text = String(command ?? '');
|
|
101
|
+
const hits = [...text.matchAll(ALL_LESSONS)];
|
|
102
|
+
if (hits.length !== 1 || [...text.matchAll(ALL_ADDS)].length)
|
|
103
|
+
return null;
|
|
104
|
+
const words = tailWords(text.slice(hits[0].index + hits[0][0].length));
|
|
105
|
+
let skill = null;
|
|
106
|
+
let offerId = null;
|
|
107
|
+
const flags = [];
|
|
108
|
+
for (let i = 0; i < words.length; i++) {
|
|
109
|
+
const w = words[i];
|
|
110
|
+
if (w === '--offer' && offerId === null && i + 1 < words.length) {
|
|
111
|
+
offerId = words[++i];
|
|
112
|
+
continue;
|
|
113
|
+
}
|
|
114
|
+
if (w.startsWith('--offer=') && offerId === null) {
|
|
115
|
+
offerId = w.slice(8);
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
if (!w.startsWith('-') && skill === null && offerId === null) {
|
|
119
|
+
skill = w;
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
flags.push(w);
|
|
123
|
+
}
|
|
124
|
+
if (!offerId)
|
|
125
|
+
return null;
|
|
126
|
+
return { skill, offerId, flags };
|
|
127
|
+
}
|
|
128
|
+
/** /\bskills\s+update\b/: anywhere in the command, whatever runs it. */
|
|
129
|
+
export const SKILLS_UPDATE_RE = /\bskills\s+update\b/;
|
|
130
|
+
const ALL_UPDATES = /\bskills\s+update\b/g;
|
|
131
|
+
/** Past this the command is not read (D89). */
|
|
132
|
+
const UPDATE_MAX = 64 * 1024;
|
|
133
|
+
/** What comes right before `skills update`: a Trail binary, nothing between it and `skills` (no root option). */
|
|
134
|
+
const TRAIL_BIN = /(?:^|[\s/"'(])(?:trail|graft|trail-code|@trailhq\/trail-code|@nanonets\/graft|(?:trail|graft)\.js)\s+$/;
|
|
135
|
+
const SKILL_NAME = /^[a-z0-9][a-z0-9-]{0,63}$/;
|
|
136
|
+
const OFFER_ID = /^o-[0-9a-f]{6}$/;
|
|
137
|
+
/** A pipe (not `||`): its other side could cut or rewrite what the update prints. */
|
|
138
|
+
const PIPE = /(?:^|[^|])\|(?!\|)/;
|
|
139
|
+
/**
|
|
140
|
+
* null unless the command is exactly one `<trail> skills update <name> --offer <o-id>`, Trail's own and nothing
|
|
141
|
+
* else (1a's `onlyTrail`, one simple command after any leading cds, no pipe), with no other add, lesson or update.
|
|
142
|
+
*/
|
|
143
|
+
export function parseSkillsUpdate(command) {
|
|
144
|
+
const text = String(command ?? '');
|
|
145
|
+
if (text.length > UPDATE_MAX)
|
|
146
|
+
return null;
|
|
147
|
+
const hits = [...text.matchAll(ALL_UPDATES)];
|
|
148
|
+
if (hits.length !== 1 || SKILLS_ADD_RE.test(text) || SKILLS_LESSON_RE.test(text))
|
|
149
|
+
return null;
|
|
150
|
+
if (!TRAIL_BIN.test(text.slice(Math.max(0, hits[0].index - 200), hits[0].index)))
|
|
151
|
+
return null;
|
|
152
|
+
if (PIPE.test(text) || !onlyTrail(text) || simpleCommands(leadingCds(text).rest).length !== 1)
|
|
153
|
+
return null;
|
|
154
|
+
const words = tailWords(text.slice(hits[0].index + hits[0][0].length));
|
|
155
|
+
let name = null;
|
|
156
|
+
let offerId = null;
|
|
157
|
+
for (let i = 0; i < words.length; i++) {
|
|
158
|
+
const w = words[i];
|
|
159
|
+
if (w === '--offer' && offerId === null && i + 1 < words.length)
|
|
160
|
+
offerId = words[++i];
|
|
161
|
+
else if (w.startsWith('--offer=') && offerId === null)
|
|
162
|
+
offerId = w.slice(8);
|
|
163
|
+
else if (!w.startsWith('-') && name === null)
|
|
164
|
+
name = w;
|
|
165
|
+
else
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
if (!name || !offerId || !SKILL_NAME.test(name) || !OFFER_ID.test(offerId))
|
|
169
|
+
return null;
|
|
170
|
+
return { name, offerId };
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=save-parse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"save-parse.js","sourceRoot":"","sources":["../../src/skills/save-parse.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What the save gate reads from the skill store (g4), without changing it:
|
|
3
|
+
* where a name is taken, which runs are already kept, and the run a held
|
|
4
|
+
* item was kept from (D65: a live save for the same run replaces it).
|
|
5
|
+
*/
|
|
6
|
+
import type { SkillState } from './types.js';
|
|
7
|
+
export { nameTaken } from './store.js';
|
|
8
|
+
/** The skills state's entries; {} when it can't be read. */
|
|
9
|
+
export declare function readSkillsStateSafe(env?: NodeJS.ProcessEnv): Record<string, SkillState>;
|
|
10
|
+
/** The run id a held item of this name was kept from (`HeldItem.runId`); null when there is none or it doesn't say. */
|
|
11
|
+
export declare function heldRunId(name: string, env?: NodeJS.ProcessEnv): string | null;
|
|
12
|
+
//# sourceMappingURL=save-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"save-store.d.ts","sourceRoot":"","sources":["../../src/skills/save-store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,4DAA4D;AAC5D,wBAAgB,mBAAmB,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAMvF;AAED,uHAAuH;AACvH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,GAAG,IAAI,CAM9E"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { allHeld } from './store-held.js';
|
|
2
|
+
import { readSkillsState } from './state.js';
|
|
3
|
+
export { nameTaken } from './store.js';
|
|
4
|
+
/** The skills state's entries; {} when it can't be read. */
|
|
5
|
+
export function readSkillsStateSafe(env) {
|
|
6
|
+
try {
|
|
7
|
+
return readSkillsState(env).skills;
|
|
8
|
+
}
|
|
9
|
+
catch {
|
|
10
|
+
return {};
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
/** The run id a held item of this name was kept from (`HeldItem.runId`); null when there is none or it doesn't say. */
|
|
14
|
+
export function heldRunId(name, env) {
|
|
15
|
+
try {
|
|
16
|
+
return allHeld(env).find((h) => h.name === name)?.runId ?? null;
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=save-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"save-store.js","sourceRoot":"","sources":["../../src/skills/save-store.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,4DAA4D;AAC5D,MAAM,UAAU,mBAAmB,CAAC,GAAuB;IACzD,IAAI,CAAC;QACH,OAAO,eAAe,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,uHAAuH;AACvH,MAAM,UAAU,SAAS,CAAC,IAAY,EAAE,GAAuB;IAC7D,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `~/.trail/settings.json`: learned skills on or off (off by default), offers
|
|
3
|
+
* on or off (everywhere or per repo), pauses after two nos, skills a person
|
|
4
|
+
* turned off, and the governor's cache.
|
|
5
|
+
*
|
|
6
|
+
* Who may change what is fixed: only the person's own commands (the setters,
|
|
7
|
+
* imported only by `skills/cli-skills.ts`) turn skills and offers on or off;
|
|
8
|
+
* only the offer bookkeeping (`skills/offers.ts`) writes pauses and the
|
|
9
|
+
* governor. `trail init`, upgrades and `trail connect` never write this file.
|
|
10
|
+
* A test pins who imports what.
|
|
11
|
+
*
|
|
12
|
+
* A missing or broken file reads as the defaults. Keys a later version adds
|
|
13
|
+
* are kept on every write.
|
|
14
|
+
*/
|
|
15
|
+
import type { TrailSkillSettings } from './types.js';
|
|
16
|
+
export { isTestHome, labInteractive } from './host-facts.js';
|
|
17
|
+
export declare const DEFAULT_SETTINGS: TrailSkillSettings;
|
|
18
|
+
/** Defaults on a missing or bad file; unknown keys are kept on every write. */
|
|
19
|
+
export declare function readSettings(env?: NodeJS.ProcessEnv): TrailSkillSettings;
|
|
20
|
+
/** TRAIL_TEST_NOW (ISO) in a test home only; else new Date(). */
|
|
21
|
+
export declare function trailNow(env?: NodeJS.ProcessEnv): Date;
|
|
22
|
+
/** The local calendar date `YYYY-MM-DD` of a time: days (pauses, session-days, last worked) are the person's days. */
|
|
23
|
+
export declare function localDate(at: Date | string): string;
|
|
24
|
+
/** onSince = now when it turns on. */
|
|
25
|
+
export declare function setSkills(on: boolean, env?: NodeJS.ProcessEnv, now?: Date): TrailSkillSettings;
|
|
26
|
+
/** here: adds or removes that repo key in offRepos; a global off sets offersOffAt. */
|
|
27
|
+
export declare function setOffers(on: boolean, here: string | null, env?: NodeJS.ProcessEnv, now?: Date): TrailSkillSettings;
|
|
28
|
+
export declare function setSkillOff(name: string, off: boolean, env?: NodeJS.ProcessEnv): TrailSkillSettings;
|
|
29
|
+
export declare function pauseRepo(repoKey: string, until: Date, env?: NodeJS.ProcessEnv): TrailSkillSettings;
|
|
30
|
+
export declare function noteGovernor(lastNine: Array<'yes' | 'no' | 'none'>, saidAt: string | null, env?: NodeJS.ProcessEnv): TrailSkillSettings;
|
|
31
|
+
export declare function skillsOn(env?: NodeJS.ProcessEnv): boolean;
|
|
32
|
+
export declare function offersHere(repoKey: string, now?: Date, env?: NodeJS.ProcessEnv): {
|
|
33
|
+
ok: true;
|
|
34
|
+
} | {
|
|
35
|
+
ok: false;
|
|
36
|
+
why: 'off' | 'off-here' | 'paused';
|
|
37
|
+
};
|
|
38
|
+
//# sourceMappingURL=settings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../src/skills/settings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAIrD,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAE7D,eAAO,MAAM,gBAAgB,EAAE,kBAIP,CAAC;AAmCzB,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,kBAAkB,CAExE;AAiBD,iEAAiE;AACjE,wBAAgB,QAAQ,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,IAAI,CAOnE;AAED,sHAAsH;AACtH,wBAAgB,SAAS,CAAC,EAAE,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAInD;AAID,sCAAsC;AACtC,wBAAgB,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,GAAE,IAAiB,GAAG,kBAAkB,CAK1G;AAED,sFAAsF;AACtF,wBAAgB,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,EAAE,GAAG,GAAE,IAAiB,GAAG,kBAAkB,CAW/H;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,kBAAkB,CAKnG;AAID,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,kBAAkB,CAInG;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,GAAG,IAAI,GAAG,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,kBAAkB,CAKvI;AAED,wBAAgB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,OAAO,CAEzD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,GAAE,IAAiB,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,KAAK,GAAG,UAAU,GAAG,QAAQ,CAAA;CAAE,CAO7J"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { isTestHome } from './host-facts.js';
|
|
2
|
+
import { readJsonSafe, trailPath, withLock, writePrivate } from '../util/private-fs.js';
|
|
3
|
+
export { isTestHome, labInteractive } from './host-facts.js';
|
|
4
|
+
export const DEFAULT_SETTINGS = Object.freeze({
|
|
5
|
+
v: 1, skills: 'off', onSince: null, offers: 'on', offersOffAt: null, offRepos: Object.freeze([]),
|
|
6
|
+
pausedUntil: Object.freeze({}), skillsOff: Object.freeze([]),
|
|
7
|
+
lastNine: Object.freeze([]), governorSaidAt: null,
|
|
8
|
+
});
|
|
9
|
+
/** How long a person's command waits for the file; a hook's bookkeeping waits less. */
|
|
10
|
+
const PERSON_WAIT_MS = 1000;
|
|
11
|
+
const HOOK_WAIT_MS = 200;
|
|
12
|
+
const ANSWERS = new Set(['yes', 'no', 'none']);
|
|
13
|
+
function settingsPath(env) {
|
|
14
|
+
return trailPath(env, 'settings.json');
|
|
15
|
+
}
|
|
16
|
+
const strOrNull = (v) => (typeof v === 'string' ? v : null);
|
|
17
|
+
const strings = (v) => (Array.isArray(v) ? v.filter((x) => typeof x === 'string') : []);
|
|
18
|
+
/** The known fields of whatever was on disk, each its default when missing or of the wrong shape. */
|
|
19
|
+
function fromRaw(raw) {
|
|
20
|
+
const r = raw && typeof raw === 'object' && !Array.isArray(raw) ? raw : {};
|
|
21
|
+
const paused = {};
|
|
22
|
+
if (r.pausedUntil && typeof r.pausedUntil === 'object' && !Array.isArray(r.pausedUntil)) {
|
|
23
|
+
for (const [k, v] of Object.entries(r.pausedUntil))
|
|
24
|
+
if (typeof v === 'string')
|
|
25
|
+
paused[k] = v;
|
|
26
|
+
}
|
|
27
|
+
return {
|
|
28
|
+
v: 1,
|
|
29
|
+
skills: r.skills === 'on' ? 'on' : 'off',
|
|
30
|
+
onSince: strOrNull(r.onSince),
|
|
31
|
+
offers: r.offers === 'off' ? 'off' : 'on',
|
|
32
|
+
offersOffAt: strOrNull(r.offersOffAt),
|
|
33
|
+
offRepos: strings(r.offRepos),
|
|
34
|
+
pausedUntil: paused,
|
|
35
|
+
skillsOff: strings(r.skillsOff),
|
|
36
|
+
lastNine: (Array.isArray(r.lastNine) ? r.lastNine : []).filter((a) => ANSWERS.has(a)).slice(-9),
|
|
37
|
+
governorSaidAt: strOrNull(r.governorSaidAt),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/** Defaults on a missing or bad file; unknown keys are kept on every write. */
|
|
41
|
+
export function readSettings(env) {
|
|
42
|
+
return fromRaw(readJsonSafe(settingsPath(env)));
|
|
43
|
+
}
|
|
44
|
+
/** Read, change, write back under the file's lock, keeping keys this version doesn't know. */
|
|
45
|
+
function update(env, change, waitMs) {
|
|
46
|
+
const path = settingsPath(env);
|
|
47
|
+
const done = withLock(path, () => {
|
|
48
|
+
const raw = readJsonSafe(path);
|
|
49
|
+
const keep = raw && typeof raw === 'object' && !Array.isArray(raw) ? raw : {};
|
|
50
|
+
const s = fromRaw(raw);
|
|
51
|
+
change(s);
|
|
52
|
+
writePrivate(path, `${JSON.stringify({ ...keep, ...s }, null, 2)}\n`);
|
|
53
|
+
return s;
|
|
54
|
+
}, waitMs);
|
|
55
|
+
if (!done.ok)
|
|
56
|
+
throw new Error('trail: the skills settings are busy (another trail command is writing them). Try again.');
|
|
57
|
+
return done.value;
|
|
58
|
+
}
|
|
59
|
+
/** TRAIL_TEST_NOW (ISO) in a test home only; else new Date(). */
|
|
60
|
+
export function trailNow(env = process.env) {
|
|
61
|
+
const fixed = env.TRAIL_TEST_NOW;
|
|
62
|
+
if (fixed && isTestHome(env)) {
|
|
63
|
+
const d = new Date(fixed);
|
|
64
|
+
if (!Number.isNaN(d.getTime()))
|
|
65
|
+
return d;
|
|
66
|
+
}
|
|
67
|
+
return new Date();
|
|
68
|
+
}
|
|
69
|
+
/** The local calendar date `YYYY-MM-DD` of a time: days (pauses, session-days, last worked) are the person's days. */
|
|
70
|
+
export function localDate(at) {
|
|
71
|
+
const d = typeof at === 'string' ? new Date(at) : at;
|
|
72
|
+
const two = (n) => String(n).padStart(2, '0');
|
|
73
|
+
return `${d.getFullYear()}-${two(d.getMonth() + 1)}-${two(d.getDate())}`;
|
|
74
|
+
}
|
|
75
|
+
// Person-only setters. Only src/skills/cli-skills.ts imports these (a static test, G0).
|
|
76
|
+
/** onSince = now when it turns on. */
|
|
77
|
+
export function setSkills(on, env, now = new Date()) {
|
|
78
|
+
return update(env, (s) => {
|
|
79
|
+
if (on && (s.skills !== 'on' || s.onSince === null))
|
|
80
|
+
s.onSince = now.toISOString();
|
|
81
|
+
s.skills = on ? 'on' : 'off';
|
|
82
|
+
}, PERSON_WAIT_MS);
|
|
83
|
+
}
|
|
84
|
+
/** here: adds or removes that repo key in offRepos; a global off sets offersOffAt. */
|
|
85
|
+
export function setOffers(on, here, env, now = new Date()) {
|
|
86
|
+
return update(env, (s) => {
|
|
87
|
+
if (here !== null) {
|
|
88
|
+
s.offRepos = s.offRepos.filter((k) => k !== here);
|
|
89
|
+
if (!on)
|
|
90
|
+
s.offRepos.push(here);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
if (!on && s.offers !== 'off')
|
|
94
|
+
s.offersOffAt = now.toISOString();
|
|
95
|
+
if (on)
|
|
96
|
+
s.offersOffAt = null;
|
|
97
|
+
s.offers = on ? 'on' : 'off';
|
|
98
|
+
}, PERSON_WAIT_MS);
|
|
99
|
+
}
|
|
100
|
+
export function setSkillOff(name, off, env) {
|
|
101
|
+
return update(env, (s) => {
|
|
102
|
+
s.skillsOff = s.skillsOff.filter((n) => n !== name);
|
|
103
|
+
if (off)
|
|
104
|
+
s.skillsOff.push(name);
|
|
105
|
+
}, PERSON_WAIT_MS);
|
|
106
|
+
}
|
|
107
|
+
// Bookkeeping writers. Only src/skills/offers.ts imports these (the same test).
|
|
108
|
+
export function pauseRepo(repoKey, until, env) {
|
|
109
|
+
return update(env, (s) => {
|
|
110
|
+
s.pausedUntil = { ...s.pausedUntil, [repoKey]: localDate(until) };
|
|
111
|
+
}, HOOK_WAIT_MS);
|
|
112
|
+
}
|
|
113
|
+
export function noteGovernor(lastNine, saidAt, env) {
|
|
114
|
+
return update(env, (s) => {
|
|
115
|
+
s.lastNine = lastNine.filter((a) => ANSWERS.has(a)).slice(-9);
|
|
116
|
+
s.governorSaidAt = saidAt;
|
|
117
|
+
}, HOOK_WAIT_MS);
|
|
118
|
+
}
|
|
119
|
+
export function skillsOn(env) {
|
|
120
|
+
return readSettings(env).skills === 'on';
|
|
121
|
+
}
|
|
122
|
+
export function offersHere(repoKey, now = new Date(), env) {
|
|
123
|
+
const s = readSettings(env);
|
|
124
|
+
if (s.offers === 'off')
|
|
125
|
+
return { ok: false, why: 'off' };
|
|
126
|
+
if (s.offRepos.includes(repoKey))
|
|
127
|
+
return { ok: false, why: 'off-here' };
|
|
128
|
+
const until = s.pausedUntil[repoKey];
|
|
129
|
+
if (until && until > localDate(now))
|
|
130
|
+
return { ok: false, why: 'paused' };
|
|
131
|
+
return { ok: true };
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"settings.js","sourceRoot":"","sources":["../../src/skills/settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The line diff of two skill files, the size gate a fold must pass (phase 2
|
|
3
|
+
* design 4.3, spec 13), and the printed diff a person reads for `show me`, a
|
|
4
|
+
* proposal beside a hand-edited file, or (phase 3) a new file in a repo.
|
|
5
|
+
*
|
|
6
|
+
* Pure and bounded: texts over 64 KB, or a changed middle too big to align
|
|
7
|
+
* cheaply, are read as all removed and all added, never line by line.
|
|
8
|
+
*/
|
|
9
|
+
import type { CompiledSkill } from './types.js';
|
|
10
|
+
export interface LineDiff {
|
|
11
|
+
removed: string[];
|
|
12
|
+
added: string[];
|
|
13
|
+
hunks: Array<{
|
|
14
|
+
at: number;
|
|
15
|
+
del: string[];
|
|
16
|
+
add: string[];
|
|
17
|
+
}>;
|
|
18
|
+
}
|
|
19
|
+
/** Spec 13: a fold changes at most 800 characters, and at most 40% of the file. */
|
|
20
|
+
export declare const FOLD_MAX_CHARS = 800;
|
|
21
|
+
export declare const FOLD_MAX_SHARE = 0.4;
|
|
22
|
+
/** LCS on lines. A hunk's `at` is how many lines of `a` come before it (0-based). */
|
|
23
|
+
export declare function lineDiff(a: string, b: string): LineDiff;
|
|
24
|
+
/**
|
|
25
|
+
* 4.3 as D131 changed it: the characters an edit changes (every removed and added line, its line break counted), step
|
|
26
|
+
* numbers taken out first, so one inserted step anywhere costs about its own length. `share` is of the file as it is.
|
|
27
|
+
*/
|
|
28
|
+
export declare function sizeGate(before: string, after: string): {
|
|
29
|
+
chars: number;
|
|
30
|
+
share: number;
|
|
31
|
+
ok: boolean;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* A unified diff (3 lines of context), at most `maxLines` lines with the more-lines line, step text as it is. '' when
|
|
35
|
+
* the texts are equal. Each line at most 400 characters, control characters and bidi marks as escapes (review). An empty `a` prints a new file: phase 3's `renderNewFileDiff` prints through it.
|
|
36
|
+
*/
|
|
37
|
+
export declare function printDiff(a: string, b: string, labels: [string, string], maxLines?: number): string;
|
|
38
|
+
/** The Run lines a change touches, for "1 line changes": per hunk the larger of what goes and what comes. */
|
|
39
|
+
export declare function runLinesChanged(before: CompiledSkill, after: CompiledSkill): number;
|
|
40
|
+
//# sourceMappingURL=skill-diff.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill-diff.d.ts","sourceRoot":"","sources":["../../src/skills/skill-diff.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAIhD,MAAM,WAAW,QAAQ;IAAG,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,EAAE,CAAC;QAAC,GAAG,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAA;CAAE;AAE5H,mFAAmF;AACnF,eAAO,MAAM,cAAc,MAAM,CAAC;AAClC,eAAO,MAAM,cAAc,MAAM,CAAC;AAyDlC,qFAAqF;AACrF,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,QAAQ,CAWvD;AAWD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,OAAO,CAAA;CAAE,CAMrG;AAmBD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,SAAkB,GAAG,MAAM,CAoC5G;AAKD,6GAA6G;AAC7G,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,GAAG,MAAM,CAGnF"}
|