@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,385 @@
|
|
|
1
|
+
import { programOf } from '../trace/shell.js';
|
|
2
|
+
import { factsFromCalls } from '../trace/checks.js';
|
|
3
|
+
import { flatLine } from '../notes/flatten.js';
|
|
4
|
+
import { cleanLine } from '../trace/redact.js';
|
|
5
|
+
import { STABLE_BRANCHES } from './params.js';
|
|
6
|
+
import { gatedGroups } from './risk.js';
|
|
7
|
+
import { askText, JUDGEMENT_JOBS, matchJob } from '../trace/jobs.js';
|
|
8
|
+
import { SAVE_REQUEST } from '../trace/typed.js';
|
|
9
|
+
/** At least one letter, so the digits of `trail skills keep 1 3` (init, 1b) can never be a name. */
|
|
10
|
+
export const NAME_RE = /^(?=[a-z0-9-]*[a-z])[a-z0-9][a-z0-9-]{1,47}$/;
|
|
11
|
+
/** Names Trail's own commands use. store.ts (g4) re-exports this list. */
|
|
12
|
+
export const BUILT_IN_NAMES = new Set([
|
|
13
|
+
'trail', 'graft', 'verify', 'run', 'init', 'review', 'skills', 'keep', 'forget', 'restore', 'add', 'show', 'draft', 'offers', 'help', 'on', 'off', 'promote', 'team', 'manual',
|
|
14
|
+
]);
|
|
15
|
+
/** Lesson and learning id shapes (`ls-` + 6 hex, `l-` + hex): `trail forget` reads them as ids first, so no skill takes one (D114 (2)). */
|
|
16
|
+
export const RESERVED_ID = /^(?:ls-[0-9a-f]{6}|l-[0-9a-f]{6,16})$/;
|
|
17
|
+
/** NAME_RE, not built in, not an id's shape, and a valid Agent Skills name (no `--`, no trailing `-`). */
|
|
18
|
+
export function goodName(name) {
|
|
19
|
+
return NAME_RE.test(name) && !/--|-$/.test(name) && !BUILT_IN_NAMES.has(name) && !RESERVED_ID.test(name);
|
|
20
|
+
}
|
|
21
|
+
const MONTHS = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
|
|
22
|
+
/** 'Oct 27', in local time. */
|
|
23
|
+
export function monthDay(iso) {
|
|
24
|
+
const d = new Date(iso);
|
|
25
|
+
return Number.isNaN(d.getTime()) ? 'an earlier day' : `${MONTHS[d.getMonth()]} ${d.getDate()}`;
|
|
26
|
+
}
|
|
27
|
+
const hm = (d) => `${String(d.getHours()).padStart(2, '0')}:${String(d.getMinutes()).padStart(2, '0')}`;
|
|
28
|
+
const slug = (t) => t.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '');
|
|
29
|
+
export const repoName = (key) => key.split('/').filter(Boolean).pop() || 'this repo';
|
|
30
|
+
const cap = (w) => w.charAt(0).toUpperCase() + w.slice(1);
|
|
31
|
+
const joinWith = (items, last) => (items.length < 2 ? items.join('') : `${items.slice(0, -1).join(', ')} ${last} ${items[items.length - 1]}`);
|
|
32
|
+
const REGISTRIES = [
|
|
33
|
+
[/\b(?:npm|pnpm|yarn(?:\s+npm)?)\s+publish\b/, 'npm', 'npm'],
|
|
34
|
+
[/\btwine\s+upload\b/, 'pypi', 'PyPI'],
|
|
35
|
+
[/\bcargo\s+publish\b/, 'crates', 'crates.io'],
|
|
36
|
+
[/\bdocker\s+push\b/, 'docker', 'Docker'],
|
|
37
|
+
[/\bgem\s+push\b/, 'gem', 'RubyGems'],
|
|
38
|
+
];
|
|
39
|
+
/** Stable branches pushed, in order, from the calls the steps came from (`push origin beta` then `beta:prod` too). */
|
|
40
|
+
export function stableBranches(calls, jobWords) {
|
|
41
|
+
const pushed = factsFromCalls(calls.filter((c) => !c.failed), {}).pushedBranches.filter((b) => STABLE_BRANCHES.has(b));
|
|
42
|
+
const out = [...new Set(pushed)];
|
|
43
|
+
if (out.length)
|
|
44
|
+
return out;
|
|
45
|
+
return ['beta', 'staging', 'prod'].filter((b) => jobWords.includes(b));
|
|
46
|
+
}
|
|
47
|
+
/** The program the null-job name and title come from: the first step that isn't a wait. */
|
|
48
|
+
function mainProgram(steps) {
|
|
49
|
+
const s = steps.find((x) => !x.wait) ?? steps[0];
|
|
50
|
+
return s ? programOf(s.cmd) : null;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* The kind of tests the person asked for, in their own words ("run the integration tests"), from the job words their
|
|
54
|
+
* asks matched; null when they said only "the tests". Never the runner's name: nobody asked for "pytest tests".
|
|
55
|
+
*/
|
|
56
|
+
function testsTag(jobWordsSaid) {
|
|
57
|
+
return ['integration', 'e2e'].find((w) => jobWordsSaid.includes(w)) ?? null;
|
|
58
|
+
}
|
|
59
|
+
/** 4.6's stop words, and words that say how to keep a skill or how the job went, not what the job is. */
|
|
60
|
+
const ASK_SKIP = new Set(("a an the to and then please can could would you we i it its this that now also just so okay ok yes lets let's do some me my our for of on in at "
|
|
61
|
+
+ 'first again too as well be is are will save saved keep kept make made turn remember skill skills step steps next time later thanks thank '
|
|
62
|
+
+ 'great nice cool awesome perfect good pls works worked working done everything every all repo repos team when need needs want how what way '
|
|
63
|
+
+ 'us your they them he she was were been has have had there here').split(' '));
|
|
64
|
+
const KEEP_CLAUSE = new RegExp(SAVE_REQUEST.source, 'gi');
|
|
65
|
+
const SCOPE_CLAUSE = /\b(?:for|in|on|across)\s+(?:every|all(?:\s+my)?|this|the|my|our|each)\s+(?:repos?|repositories|team|mac|machine|laptop|projects?)\b|\beverywhere\b|\balways\b/g;
|
|
66
|
+
const CLAUSE_BREAK = /[,.;:!?()[\]"{}\n]+|\s(?:and then|then|so that|so|because|since|but)\s/;
|
|
67
|
+
/**
|
|
68
|
+
* D71 b: the asks of a run with no job class, from the person's own typed save request: its words minus the save
|
|
69
|
+
* clause, scope words, values (a URL, a path, a version, a sha, a number) and filler, clause by clause, kept when a
|
|
70
|
+
* clause leaves 2 to 5 words. At most 2. [] when the request says only how to keep it.
|
|
71
|
+
*/
|
|
72
|
+
export function askPhrases(typed) {
|
|
73
|
+
const t = askText(String(typed ?? '')).toLowerCase().replace(/[\u2018\u2019]/g, "'")
|
|
74
|
+
.replace(KEEP_CLAUSE, ' , ').replace(SCOPE_CLAUSE, ' , ')
|
|
75
|
+
.replace(/\b[a-z][a-z0-9+.-]*:\/\/\S+/g, ' ')
|
|
76
|
+
.replace(/\S*\w[./\\]\w\S*/g, ' ')
|
|
77
|
+
.replace(/(?<![\w-])(?=[0-9a-f]*\d)[0-9a-f]{7,40}(?![\w-])/g, ' ')
|
|
78
|
+
.replace(/(?<![\w-])#?\d[\w-]*/g, ' ');
|
|
79
|
+
const out = [];
|
|
80
|
+
for (const clause of t.split(CLAUSE_BREAK)) {
|
|
81
|
+
const words = clause.split(/[^a-z0-9-]+/).filter((w) => w.length >= 2 && /^[a-z]/.test(w) && !ASK_SKIP.has(w));
|
|
82
|
+
if (words.length < 2 || words.length > 5)
|
|
83
|
+
continue;
|
|
84
|
+
const phrase = words.join(' ');
|
|
85
|
+
if (!out.includes(phrase))
|
|
86
|
+
out.push(phrase);
|
|
87
|
+
if (out.length === 2)
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
return out;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* D99: the job class an asked save names the skill after when the run's typed asks gave none. First the person's
|
|
94
|
+
* typed save request ("save this publish as a skill"), then the run's own commands: a step that publishes to a
|
|
95
|
+
* registry, checked with `npm view` (or not checked at all), is a release; pushes to stable branches are a ship.
|
|
96
|
+
* Null when neither says (the run keeps the first-step name). Judgement jobs never name a skill.
|
|
97
|
+
*/
|
|
98
|
+
export function askedJob(askedWith, steps, calls, checkFamily) {
|
|
99
|
+
const said = askedWith ? matchJob(String(askedWith).replace(KEEP_CLAUSE, ' , '))?.job ?? null : null;
|
|
100
|
+
if (said !== null && !JUDGEMENT_JOBS.has(said))
|
|
101
|
+
return said;
|
|
102
|
+
const text = steps.map((s) => s.cmd).join('\n');
|
|
103
|
+
if (REGISTRIES.some(([re]) => re.test(text)) && (checkFamily === 'npm-view' || checkFamily === null))
|
|
104
|
+
return 'release';
|
|
105
|
+
if (stableBranches(calls, []).length)
|
|
106
|
+
return 'ship';
|
|
107
|
+
return null;
|
|
108
|
+
}
|
|
109
|
+
/** 4.5 step 13's table. `asked`: a job-less run's asks (D71 b), from `askPhrases`; never the run's own words. */
|
|
110
|
+
export function jobWords(sheet, steps, extra = {}) {
|
|
111
|
+
const repo = repoName(sheet.repoKey);
|
|
112
|
+
const other = 'Jobs other than this one.';
|
|
113
|
+
const job = sheet.job;
|
|
114
|
+
if (job === 'release') {
|
|
115
|
+
const text = `${steps.map((s) => s.cmd).join('\n')}\n${extra.helperText ?? ''}`;
|
|
116
|
+
const reg = REGISTRIES.find(([re]) => re.test(text));
|
|
117
|
+
const asks = ['publish', 'release', 'bump', 'redo the publish'];
|
|
118
|
+
if (!reg)
|
|
119
|
+
return { base: 'release', title: `Release ${repo}`, lead: `Releases ${repo}`, asks, statusAsks: ['is it published', 'did it publish'], dontUse: 'Pre-releases, or packages other than the ones above.' };
|
|
120
|
+
return { base: `release-${reg[1]}`, title: `Release ${repo} to ${reg[2]}`, lead: `Publishes ${repo} to ${reg[2]}`, asks: [...asks, `ship to ${reg[1]}`], statusAsks: ['is it published', 'did it publish'], dontUse: 'Pre-releases, or packages other than the ones above.' };
|
|
121
|
+
}
|
|
122
|
+
if (job === 'ship') {
|
|
123
|
+
const b = stableBranches(extra.calls ?? steps.map((s, i) => ({ id: `s${i}`, cmd: s.cmd, failed: false })), sheet.jobWords);
|
|
124
|
+
const dontUse = 'Pushes to other branches, or other repos.';
|
|
125
|
+
if (b.length >= 2) {
|
|
126
|
+
const [b1, b2] = [b[0], b[b.length - 1]];
|
|
127
|
+
return {
|
|
128
|
+
base: `ship-${b1}-then-${b2}`, title: `Ship ${repo}: ${b1}, then ${b2}`, lead: `Ships ${repo} to ${b1}, then fast-forwards ${b2}`,
|
|
129
|
+
asks: [`push to ${b1}`, `ff to ${b2}`, `fast-forward ${b2}`, `promote to ${b2}`, `deploy to ${b2}`, `update ${b2}`, 'ship it'],
|
|
130
|
+
statusAsks: ['is it live', `is ${b2} updated`, 'did it deploy'], dontUse,
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
if (b.length === 1) {
|
|
134
|
+
const one = b[0];
|
|
135
|
+
return { base: `ship-${one}`, title: `Ship ${repo} to ${one}`, lead: `Ships ${repo} to ${one}`, asks: [`push to ${one}`, `deploy to ${one}`, `update ${one}`, 'ship it'], statusAsks: ['is it live', `is ${one} updated`, 'did it deploy'], dontUse };
|
|
136
|
+
}
|
|
137
|
+
return { base: 'ship', title: `Ship ${repo}`, lead: `Ships ${repo}`, asks: ['ship it', 'deploy it'], statusAsks: ['is it live', 'did it deploy'], dontUse };
|
|
138
|
+
}
|
|
139
|
+
if (job === 'tests') {
|
|
140
|
+
const tag = testsTag(sheet.jobWords);
|
|
141
|
+
if (!tag)
|
|
142
|
+
return { base: 'run-tests', title: `Run ${repo}'s tests`, lead: `Runs ${repo}'s tests`, asks: ['run the tests'], statusAsks: ['did the tests pass'], dontUse: 'Other test suites.' };
|
|
143
|
+
return { base: `${tag}-tests`, title: `Run ${repo}'s ${tag} tests`, lead: `Runs ${repo}'s ${tag} tests`, asks: [`${tag} tests`, `run the ${tag} tests`], statusAsks: ['did the tests pass'], dontUse: 'Other test suites.' };
|
|
144
|
+
}
|
|
145
|
+
if (job === 'report') {
|
|
146
|
+
const w = sheet.jobWords.filter((x) => x !== 'report').slice(0, 2);
|
|
147
|
+
const dontUse = 'Other numbers or other tables.';
|
|
148
|
+
if (w.length === 2) {
|
|
149
|
+
const [w1, w2] = w;
|
|
150
|
+
return { base: `${w1}-${w2}-report`, title: `${cap(w1)} ${w2} report for ${repo}`, lead: `Reads the ${w1} ${w2} numbers for ${repo}`, asks: [`any ${w1} ${w2}`, `${w1} ${w2}`, `how many ${w2}`], statusAsks: [], dontUse };
|
|
151
|
+
}
|
|
152
|
+
if (w.length === 1)
|
|
153
|
+
return { base: `${w[0]}-report`, title: `${cap(w[0])} report for ${repo}`, lead: `Reads the ${w[0]} numbers for ${repo}`, asks: [w[0]], statusAsks: [], dontUse };
|
|
154
|
+
return { base: 'report', title: `Report for ${repo}`, lead: `Reads the numbers for ${repo}`, asks: ['report'], statusAsks: [], dontUse };
|
|
155
|
+
}
|
|
156
|
+
if (job === 'run-local')
|
|
157
|
+
return { base: 'run-locally', title: `Run ${repo} locally`, lead: `Starts ${repo} locally`, asks: ['open it locally', 'run it locally', 'localhost'], statusAsks: [], dontUse: other };
|
|
158
|
+
// A check that is a step (tests, a query, a push) is what the run was for: it names the skill.
|
|
159
|
+
const prog = (extra.main !== undefined ? programOf(extra.main) : null) ?? mainProgram(steps) ?? 'these commands';
|
|
160
|
+
// D71 b: a common word of the run ("done", "test", the repo's name) as an ask fired on unrelated prompts.
|
|
161
|
+
return { base: slug(prog) || 'steps', title: `Run ${prog} in ${repo}`, lead: `Runs ${prog} in ${repo}`, asks: extra.asked ?? [], statusAsks: [], dontUse: other };
|
|
162
|
+
}
|
|
163
|
+
/** The base name, then -<repo>, then -2, -3 ...: the first that is a good name and free. */
|
|
164
|
+
export function freeName(base, repoKey, taken) {
|
|
165
|
+
const fit = (n) => n.slice(0, 48).replace(/-+$/, '');
|
|
166
|
+
const b = goodName(fit(base)) ? fit(base) : fit(`run-${base}`);
|
|
167
|
+
const tries = [b, fit(`${b}-${slug(repoName(repoKey))}`)];
|
|
168
|
+
for (let n = 2; n < 100; n++)
|
|
169
|
+
tries.push(`${b.slice(0, 44).replace(/-+$/, '')}-${n}`);
|
|
170
|
+
return tries.find((n) => goodName(n) && !taken(n)) ?? `${b.slice(0, 40)}-${repoKey.length}`;
|
|
171
|
+
}
|
|
172
|
+
export function proposeName(sheet, steps, taken) {
|
|
173
|
+
return freeName(jobWords(sheet, steps).base, sheet.repoKey, taken);
|
|
174
|
+
}
|
|
175
|
+
/** Words an ask starts with when it is something to do: "asked to run the tests", "asked to publish". */
|
|
176
|
+
const ASK_VERBS = new Set(['run', 'rerun', 'push', 'ff', 'fast-forward', 'promote', 'deploy', 'update', 'ship', 'publish', 'release', 'bump', 'redo',
|
|
177
|
+
'open', 'start', 'restart', 'stop', 'build', 'rebuild', 'test', 'check', 'fix', 'merge', 'rebase', 'lint', 'format', 'generate', 'regenerate',
|
|
178
|
+
'install', 'upgrade', 'clean', 'reset', 'sync', 'pull', 'fetch', 'commit', 'tag', 'create', 'make', 'add', 'remove', 'delete', 'migrate', 'seed',
|
|
179
|
+
'serve', 'compile', 'pack', 'upload', 'download', 'review', 'refresh', 'roll', 'revert', 'cut', 'prepare', 'verify', 'show', 'list', 'count',
|
|
180
|
+
'get', 'find', 'read', 'send', 'do', 'try', 'tidy', 'trim', 'backup', 'restore', 'export', 'import', 'reindex', 'index', 'measure', 'profile']);
|
|
181
|
+
const ASK_QUESTION = /^(?:how|what|which|who|when|where|why|is|are|was|were|did|does|can)\b/i;
|
|
182
|
+
/** How one ask follows "asked" or "you ask": `to` a verb, a question bare, `about` a gerund, `for` anything else. */
|
|
183
|
+
function askLead(ask) {
|
|
184
|
+
const first = ask.trim().split(/\s+/)[0]?.toLowerCase() ?? '';
|
|
185
|
+
if (ASK_QUESTION.test(first))
|
|
186
|
+
return '';
|
|
187
|
+
if (/^\S+ tests$/i.test(ask.trim()))
|
|
188
|
+
return 'for';
|
|
189
|
+
if (ASK_VERBS.has(first))
|
|
190
|
+
return 'to';
|
|
191
|
+
return /\w{3,}ing$/.test(first) ? 'about' : 'for';
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* fix-lab5: the asks as words after "asked" (or "you ask"), each the way it reads: "to publish, release or bump",
|
|
195
|
+
* "for integration tests, or to run the integration tests", "about regenerating the api client", "how many users".
|
|
196
|
+
* Asks next to each other that take the same word share it.
|
|
197
|
+
*/
|
|
198
|
+
export function askedWords(asks) {
|
|
199
|
+
const groups = [];
|
|
200
|
+
for (const a of asks) {
|
|
201
|
+
const lead = askLead(a);
|
|
202
|
+
const last = groups[groups.length - 1];
|
|
203
|
+
if (last && last.lead === lead && lead !== '')
|
|
204
|
+
last.items.push(a);
|
|
205
|
+
else
|
|
206
|
+
groups.push({ lead, items: [a] });
|
|
207
|
+
}
|
|
208
|
+
const parts = groups.map((g) => `${g.lead ? `${g.lead} ` : ''}${joinWith(g.items, 'or')}`);
|
|
209
|
+
return parts.length < 2 ? parts.join('') : `${parts.slice(0, -1).join(', ')}, or ${parts[parts.length - 1]}`;
|
|
210
|
+
}
|
|
211
|
+
/** "<lead>, from the steps that worked on <Mon D>. Use when asked to <a, b or c>.", at most 300 characters. */
|
|
212
|
+
export function describe(lead, endedAt, asks) {
|
|
213
|
+
if (!asks.length)
|
|
214
|
+
return flatLine(`${lead}, from the steps that worked on ${monthDay(endedAt)}.`, 300);
|
|
215
|
+
const make = (a) => flatLine(`${lead}, from the steps that worked on ${monthDay(endedAt)}. Use when asked ${askedWords(a)}.`, 1000);
|
|
216
|
+
for (let n = asks.length; n >= 1; n--) {
|
|
217
|
+
const d = make(asks.slice(0, n));
|
|
218
|
+
if (d.length <= 300)
|
|
219
|
+
return d;
|
|
220
|
+
}
|
|
221
|
+
return flatLine(make(asks.slice(0, 1)), 300);
|
|
222
|
+
}
|
|
223
|
+
const split = (s) => (s ? s.split(' ; ').map((x) => x.trim()).filter(Boolean) : []);
|
|
224
|
+
function probeWords(p) {
|
|
225
|
+
let m;
|
|
226
|
+
if (p === 'git status --porcelain')
|
|
227
|
+
return 'no uncommitted changes (git status --porcelain)';
|
|
228
|
+
if ((m = /^git rev-parse --abbrev-ref HEAD = (\S+)$/.exec(p)))
|
|
229
|
+
return `on ${m[1]} (git rev-parse --abbrev-ref HEAD)`;
|
|
230
|
+
if ((m = /^command -v (\S+)$/.exec(p)))
|
|
231
|
+
return `${m[1]} is installed (${p})`;
|
|
232
|
+
if ((m = /^(?:test -\w|\[ -S) (\S+)/.exec(p)))
|
|
233
|
+
return `${m[1]} is there (${p})`;
|
|
234
|
+
if ((m = /^git rev-parse --verify (\S+)$/.exec(p)))
|
|
235
|
+
return `${m[1]} exists (${p})`;
|
|
236
|
+
return p;
|
|
237
|
+
}
|
|
238
|
+
const WAIT_TOKEN = /^s=\$SECONDS; until \[ "\$\((.*)\)" = "([^"]*)" \]; do /;
|
|
239
|
+
const WAIT_ANY = /^s=\$SECONDS; (until|while) (.*) >\/dev\/null 2>&1; do /;
|
|
240
|
+
function stepWords(s) {
|
|
241
|
+
if (s.wait) {
|
|
242
|
+
const t = WAIT_TOKEN.exec(s.cmd);
|
|
243
|
+
if (t)
|
|
244
|
+
return `wait up to 5 min until ${t[1]} shows ${t[2]}`;
|
|
245
|
+
const a = WAIT_ANY.exec(s.cmd);
|
|
246
|
+
if (a)
|
|
247
|
+
return a[1] === 'until' ? `wait up to 5 min until ${a[2]} works` : `wait up to 5 min while ${a[2]} still works`;
|
|
248
|
+
}
|
|
249
|
+
return s.bg ? `${s.cmd} (in the background)` : s.cmd;
|
|
250
|
+
}
|
|
251
|
+
const LEFT = [
|
|
252
|
+
['failed', (n) => `${n} that failed`],
|
|
253
|
+
['lookOnly', (n) => `${n} that only looked around`],
|
|
254
|
+
['duplicates', (n) => `${n} ${n === 1 ? 'repeat' : 'repeats'}`],
|
|
255
|
+
['plumbing', (n) => `${n} that only set up the shell`],
|
|
256
|
+
['work', (n) => `${n} that changed files`],
|
|
257
|
+
];
|
|
258
|
+
/** D58 b: a left-out step as the draft shows it (`clean`: compile's step cleaning and paths), and where it ran. */
|
|
259
|
+
export function elsewhereLines(calls, repoKey, clean) {
|
|
260
|
+
const out = [];
|
|
261
|
+
for (const c of calls) {
|
|
262
|
+
const text = c.cmd === null ? null : cleanLine(clean(c.cmd), 100);
|
|
263
|
+
const cmd = text ?? (c.truncated ? 'a command too long to show' : "a command Trail can't show (it held a secret)");
|
|
264
|
+
const where = c.key === null ? 'outside any repo' : c.key !== repoKey ? `in ${repoName(c.key)}` : "in a folder Trail couldn't follow";
|
|
265
|
+
if (!out.some((x) => x.cmd === cmd && x.where === where))
|
|
266
|
+
out.push({ cmd, where });
|
|
267
|
+
}
|
|
268
|
+
return out;
|
|
269
|
+
}
|
|
270
|
+
/** D59a: a joined sheet's compactions, its first start, and the steps whose every run came before the last compaction. */
|
|
271
|
+
export function carriedSteps(sheet, steps) {
|
|
272
|
+
const n = (sheet.joined ?? []).reduce((a, p) => a + p.calls, 0);
|
|
273
|
+
const before = new Set(sheet.calls.slice(0, n).map((c) => c.id));
|
|
274
|
+
return { compactions: sheet.joined?.length ?? 0, startedAt: sheet.startedAt, steps: steps.filter((s) => s.from?.length && s.from.every((id) => before.has(id))).map((s) => s.n) };
|
|
275
|
+
}
|
|
276
|
+
/** "step 2", "steps 1 and 2", "steps 1, 2 and 3". */
|
|
277
|
+
const stepList = (ns) => `${ns.length === 1 ? 'step' : 'steps'} ${joinWith(ns.map(String), 'and')}`;
|
|
278
|
+
/** D59a: the draft line for a job a compaction cut, and which steps ran before the (last) compaction. */
|
|
279
|
+
function carriedWords(k) {
|
|
280
|
+
const across = k.compactions === 1 ? 'a compaction' : `${k.compactions} compactions`;
|
|
281
|
+
const before = k.compactions === 1 ? 'before it' : 'before the last one';
|
|
282
|
+
return ` compaction the job ran across ${across}: ${k.steps.length ? `${stepList(k.steps)} ran ${before}, the rest after` : `every step ran after ${k.compactions === 1 ? 'it' : 'the last one'}`}`;
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* D59b: a check read with a deploy status tool, not a command: what to read, the same way the run did.
|
|
286
|
+
* The deployment is named by the commit param when one holds its commit, else by its branch, else as the new commit.
|
|
287
|
+
*/
|
|
288
|
+
export function toolCheckWords(tool, facts, params) {
|
|
289
|
+
const [, server = '', name = tool] = /^mcp__(.+)__([^_].*)$/.exec(tool) ?? [];
|
|
290
|
+
const provider = /vercel/i.test(server) ? 'Vercel' : flatLine(server, 40) || 'the deploy';
|
|
291
|
+
const sha = facts.sha;
|
|
292
|
+
const commit = sha ? params.find((p) => p.shape === 'sha' && p.seen.some((v) => v.length >= 7 && (sha.startsWith(v) || v.startsWith(sha)))) : undefined;
|
|
293
|
+
const branch = facts.branch ? params.find((p) => p.seen.includes(facts.branch)) : undefined;
|
|
294
|
+
const target = commit ? `{${commit.name}}` : facts.branch ? `the newest commit on ${branch ? `{${branch.name}}` : facts.branch}` : 'the new commit';
|
|
295
|
+
return `read the ${provider} deployment for ${target} with ${name}`;
|
|
296
|
+
}
|
|
297
|
+
/** The "show me" text (2.1). */
|
|
298
|
+
export function draftText(c, sheet) {
|
|
299
|
+
const from = c.carried?.startedAt ?? sheet.startedAt;
|
|
300
|
+
const start = new Date(from);
|
|
301
|
+
const end = new Date(sheet.endedAt);
|
|
302
|
+
const sameDay = monthDay(from) === monthDay(sheet.endedAt);
|
|
303
|
+
const when = `${monthDay(from)}, ${hm(start)} to ${sameDay ? '' : `${monthDay(sheet.endedAt)}, `}${hm(end)}`;
|
|
304
|
+
const out = [`${c.name} · copied from the run that just ${sheet.checked ? 'worked' : 'ran'} (${when})`];
|
|
305
|
+
if (c.carried)
|
|
306
|
+
out.push(carriedWords(c.carried));
|
|
307
|
+
for (const x of split(c.meta['check-first']))
|
|
308
|
+
out.push(` check first ${x}`);
|
|
309
|
+
for (const x of split(c.meta.ready))
|
|
310
|
+
out.push(` ready ${probeWords(x)}`);
|
|
311
|
+
const groups = gatedGroups(c.steps);
|
|
312
|
+
for (const s of c.steps) {
|
|
313
|
+
const g = groups.find((x) => x.steps[0] === s.n);
|
|
314
|
+
if (g)
|
|
315
|
+
out.push(` ■ can't be undone: Claude Code asks you once, right before step ${s.n}${g.steps.length > 1 ? ` (it covers ${joinWith(g.steps.map(String), 'and')})` : ''}`);
|
|
316
|
+
out.push(` ${s.n} ${stepWords(s)}`);
|
|
317
|
+
}
|
|
318
|
+
if (!c.check)
|
|
319
|
+
out.push(' check none: no check ran in the run this came from');
|
|
320
|
+
else if (c.checkIsStep)
|
|
321
|
+
out.push(` check step ${[...c.steps].reverse().find((s) => s.cmd === c.check)?.n ?? c.steps.length} passing is the check`);
|
|
322
|
+
else if (c.meta['check-tool'])
|
|
323
|
+
out.push(` check ${c.check}: it should show ${c.checkShows ?? 'READY'}`);
|
|
324
|
+
else
|
|
325
|
+
out.push(` check ${c.check} ${c.checkShows ? `shows ${c.checkShows}` : 'works'}`);
|
|
326
|
+
for (const h of c.helpers)
|
|
327
|
+
out.push(` helper ${h.file}, copied into the skill from a temporary folder`);
|
|
328
|
+
for (const p of c.params) {
|
|
329
|
+
const seen = p.seen[0] ? `; it was ${p.seen[0]} this time` : '';
|
|
330
|
+
if (p.default?.startsWith('$('))
|
|
331
|
+
out.push(` {${p.name}} from what you type, or ${p.default.slice(2, -1)}${seen}`);
|
|
332
|
+
else if (p.default !== undefined)
|
|
333
|
+
out.push(` {${p.name}} from what you type, or ${p.default} as last time`);
|
|
334
|
+
else
|
|
335
|
+
out.push(` {${p.name}} from what you type${seen}`);
|
|
336
|
+
}
|
|
337
|
+
const away = c.elsewhere ?? [];
|
|
338
|
+
const total = Object.values(c.leftOut).reduce((a, b) => a + b, 0) + away.length;
|
|
339
|
+
const parts = LEFT.filter(([k]) => c.leftOut[k]).map(([k, f]) => f(c.leftOut[k]));
|
|
340
|
+
if (away.length)
|
|
341
|
+
parts.push(`${away.length} that ran outside this repo`);
|
|
342
|
+
if (total)
|
|
343
|
+
out.push(` left out ${total} ${total === 1 ? 'command' : 'commands'}: ${parts.join(', ')}`);
|
|
344
|
+
// D58 b: what ran elsewhere, so the person sees it before saying yes.
|
|
345
|
+
for (const e of away.slice(0, 6))
|
|
346
|
+
out.push(` elsewhere ${e.cmd} (${e.where})`);
|
|
347
|
+
if (away.length > 6)
|
|
348
|
+
out.push(` elsewhere and ${away.length - 6} more`);
|
|
349
|
+
out.push(` just for you, ${c.meta.applies === 'every repo' ? 'in every repo' : 'in this repo'} · nothing is shared or uploaded`);
|
|
350
|
+
return out.join('\n');
|
|
351
|
+
}
|
|
352
|
+
/** A refusal in plain words: "a step reads a credential file: `TOKEN=$(python3 -c …auth.json…)`". */
|
|
353
|
+
export function refusalWords(reason, detail) {
|
|
354
|
+
const d = flatLine(detail, 120);
|
|
355
|
+
switch (reason) {
|
|
356
|
+
case 'judgement':
|
|
357
|
+
return d === 'sweep'
|
|
358
|
+
? "going through PRs takes judgement each time, so Trail doesn't keep it as fixed steps"
|
|
359
|
+
: "getting checks green takes judgement each time, so Trail doesn't keep it as fixed steps";
|
|
360
|
+
case 'no-steps': return d === 'report'
|
|
361
|
+
? 'the numbers came from a script written inline, not from a command Trail can keep'
|
|
362
|
+
: 'no command in the run did the job itself: they only looked around, set up the shell or changed files';
|
|
363
|
+
case 'too-long': return d === 'overflow' ? 'the run had more commands than Trail keeps for one job' : `the job takes ${d || 'more than 12'} steps, and a skill holds at most 12`;
|
|
364
|
+
case 'step-too-long': return `a step is longer than 300 characters: \`${d}\``;
|
|
365
|
+
case 'multi-line': return /^(?:uses|needs|runs) [^`]*: `/.test(d) ? `a step ${d}` : `a step runs over several lines (a heredoc or an inline script): \`${d}\``;
|
|
366
|
+
case 'never-save': return d.startsWith('bug: ') ? `the skill file came out wrong (${d.slice(5)})` : `a step ${d}`;
|
|
367
|
+
case 'secret': return "a step holds a secret Trail can't turn into a variable name";
|
|
368
|
+
case 'scratch-path': return `a step uses a temporary file: \`${d}\``;
|
|
369
|
+
case 'outside-repo': return `a step ran outside this repo: \`${d}\``;
|
|
370
|
+
case 'truncated': return 'a step is over 2,000 characters';
|
|
371
|
+
case 'no-check': return d === 'version'
|
|
372
|
+
? "the check reads a version, but no step names or makes the version it should show, so it can't tell this release from the last one"
|
|
373
|
+
: 'nothing in the run checked that the job worked';
|
|
374
|
+
case 'trivial': return `every step is already a script in the repo (\`${d}\`), so there is nothing worked out to keep`;
|
|
375
|
+
case 'helper-missing': return `a step runs a temporary script that is gone now: \`${d}\``;
|
|
376
|
+
case 'answers-prompt': return `a step answers a login or confirmation prompt for the person: \`${d}\``;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
/** D56a: what a push check shows, its branch as the param that holds it. */
|
|
380
|
+
export function pushShows(branch, params) {
|
|
381
|
+
const p = branch ? params.find((x) => x.seen.includes(branch)) : undefined;
|
|
382
|
+
const dst = p ? `{${p.name}}` : branch;
|
|
383
|
+
return dst ? `${dst} moved: git prints old..new -> ${dst}, not "Everything up-to-date"` : 'the branch moved: git prints old..new, not "Everything up-to-date"';
|
|
384
|
+
}
|
|
385
|
+
//# sourceMappingURL=compile-words.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile-words.js","sourceRoot":"","sources":["../../src/skills/compile-words.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { RunSheet } from '../trace/types.js';
|
|
2
|
+
import type { CompiledSkill } from './types.js';
|
|
3
|
+
import { type CompileRefusal } from './compile-words.js';
|
|
4
|
+
export { BUILT_IN_NAMES, NAME_RE, askPhrases, draftText, proposeName, refusalWords, type CompileRefusal } from './compile-words.js';
|
|
5
|
+
export type CompileResult = {
|
|
6
|
+
ok: true;
|
|
7
|
+
skill: CompiledSkill;
|
|
8
|
+
} | {
|
|
9
|
+
ok: false;
|
|
10
|
+
reason: CompileRefusal;
|
|
11
|
+
detail: string;
|
|
12
|
+
};
|
|
13
|
+
export interface CompileOpts {
|
|
14
|
+
repoRoot: string;
|
|
15
|
+
home: string;
|
|
16
|
+
platform: NodeJS.Platform;
|
|
17
|
+
prior?: RunSheet | null;
|
|
18
|
+
name?: string;
|
|
19
|
+
moment: 'asked' | 'repeated';
|
|
20
|
+
applies: string;
|
|
21
|
+
/** nameTaken from store.ts, passed in so compile doesn't import the store. */
|
|
22
|
+
taken: (name: string) => boolean;
|
|
23
|
+
now?: Date;
|
|
24
|
+
/** The skill's `metadata.trail` id. Default: 's-' + 6 hex from the run id and the name, so compile stays deterministic. */
|
|
25
|
+
id?: string;
|
|
26
|
+
/** Reads the earlier parts of a carried sheet and prior (D59a). Default: `readRunSheet` in the Trail home. */
|
|
27
|
+
readSheet?: (id: string) => RunSheet | null;
|
|
28
|
+
/**
|
|
29
|
+
* D71 b: the person's own typed save request (4.4), for an asked save. A run with no job class takes its asks from
|
|
30
|
+
* it (`askPhrases`: phrases of 2+ words) and from nothing else. Read, never stored beyond those asks.
|
|
31
|
+
*/
|
|
32
|
+
askedWith?: string | null;
|
|
33
|
+
}
|
|
34
|
+
export declare function compileRun(input: RunSheet, opts: CompileOpts): CompileResult;
|
|
35
|
+
//# sourceMappingURL=compile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/skills/compile.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAmC,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AACnF,OAAO,KAAK,EAAE,aAAa,EAAwB,MAAM,YAAY,CAAC;AAatE,OAAO,EAAE,KAAK,cAAc,EAA8G,MAAM,oBAAoB,CAAC;AAMrK,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpI,MAAM,MAAM,aAAa,GACrB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GAClC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1D,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,KAAK,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,GAAG,UAAU,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACjC,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,2HAA2H;IAC3H,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,8GAA8G;IAC9G,SAAS,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,QAAQ,GAAG,IAAI,CAAC;IAC5C;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAqYD,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,GAAG,aAAa,CAU5E"}
|