@nanonets/graft 0.23.0 → 0.24.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/dist/ai/crux.d.ts +31 -3
- package/dist/ai/crux.d.ts.map +1 -1
- package/dist/ai/crux.js +88 -10
- package/dist/ai/crux.js.map +1 -1
- package/dist/ai/llm/openai.d.ts +101 -0
- package/dist/ai/llm/openai.d.ts.map +1 -1
- package/dist/ai/llm/openai.js +396 -6
- package/dist/ai/llm/openai.js.map +1 -1
- package/dist/ai/llm/recover-tool.d.ts +2 -0
- package/dist/ai/llm/recover-tool.d.ts.map +1 -1
- package/dist/ai/llm/recover-tool.js +1 -1
- package/dist/ai/llm/recover-tool.js.map +1 -1
- package/dist/ai/synthesize.d.ts.map +1 -1
- package/dist/ai/synthesize.js +100 -1
- package/dist/ai/synthesize.js.map +1 -1
- package/dist/claude/format.d.ts +21 -0
- package/dist/claude/format.d.ts.map +1 -1
- package/dist/claude/format.js +46 -1
- package/dist/claude/format.js.map +1 -1
- package/dist/claude/hooks.d.ts +5 -9
- package/dist/claude/hooks.d.ts.map +1 -1
- package/dist/claude/hooks.js +71 -58
- package/dist/claude/hooks.js.map +1 -1
- package/dist/claude/init.js +3 -3
- package/dist/claude/init.js.map +1 -1
- package/dist/claude/note-signals.d.ts +28 -0
- package/dist/claude/note-signals.d.ts.map +1 -0
- package/dist/claude/note-signals.js +325 -0
- package/dist/claude/note-signals.js.map +1 -0
- package/dist/claude/shim-template.d.ts.map +1 -1
- package/dist/claude/shim-template.js +17 -6
- package/dist/claude/shim-template.js.map +1 -1
- package/dist/claude/skill-template.d.ts.map +1 -1
- package/dist/claude/skill-template.js +49 -18
- package/dist/claude/skill-template.js.map +1 -1
- package/dist/claude/state.d.ts +4 -3
- package/dist/claude/state.d.ts.map +1 -1
- package/dist/claude/state.js.map +1 -1
- package/dist/claude/sync-run.js +1 -1
- package/dist/claude/sync-run.js.map +1 -1
- package/dist/cli-picker.d.ts +12 -5
- package/dist/cli-picker.d.ts.map +1 -1
- package/dist/cli-picker.js +24 -8
- package/dist/cli-picker.js.map +1 -1
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +149 -43
- package/dist/cli.js.map +1 -1
- package/dist/context/batches.d.ts +29 -0
- package/dist/context/batches.d.ts.map +1 -0
- package/dist/context/batches.js +130 -0
- package/dist/context/batches.js.map +1 -0
- package/dist/context/build.d.ts +7 -2
- package/dist/context/build.d.ts.map +1 -1
- package/dist/context/build.js +84 -50
- package/dist/context/build.js.map +1 -1
- package/dist/context/node-file.d.ts.map +1 -1
- package/dist/context/node-file.js +41 -4
- package/dist/context/node-file.js.map +1 -1
- package/dist/engine.d.ts +2 -0
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +1 -0
- package/dist/engine.js.map +1 -1
- package/dist/graph/cards.d.ts.map +1 -1
- package/dist/graph/cards.js +9 -4
- package/dist/graph/cards.js.map +1 -1
- package/dist/graph/enrich.d.ts.map +1 -1
- package/dist/graph/enrich.js +8 -3
- package/dist/graph/enrich.js.map +1 -1
- package/dist/graph/generic.d.ts.map +1 -1
- package/dist/graph/generic.js +207 -6
- package/dist/graph/generic.js.map +1 -1
- package/dist/graph/lsp/client.d.ts +18 -0
- package/dist/graph/lsp/client.d.ts.map +1 -1
- package/dist/graph/lsp/client.js +40 -2
- package/dist/graph/lsp/client.js.map +1 -1
- package/dist/graph/lsp/enrich.d.ts.map +1 -1
- package/dist/graph/lsp/enrich.js +9 -1
- package/dist/graph/lsp/enrich.js.map +1 -1
- package/dist/graph/lsp/registry.d.ts +7 -0
- package/dist/graph/lsp/registry.d.ts.map +1 -1
- package/dist/graph/lsp/registry.js +27 -2
- package/dist/graph/lsp/registry.js.map +1 -1
- package/dist/graph/queries/gleam.scm +51 -0
- package/dist/graph/resolve.d.ts.map +1 -1
- package/dist/graph/resolve.js +65 -3
- package/dist/graph/resolve.js.map +1 -1
- package/dist/graph/workspace-cli.d.ts +2 -0
- package/dist/graph/workspace-cli.d.ts.map +1 -1
- package/dist/graph/workspace-cli.js +1 -1
- package/dist/graph/workspace-cli.js.map +1 -1
- package/dist/init-guard.d.ts +11 -0
- package/dist/init-guard.d.ts.map +1 -0
- package/dist/init-guard.js +21 -0
- package/dist/init-guard.js.map +1 -0
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +2 -1
- package/dist/mcp/tools.js.map +1 -1
- package/dist/notes/branches.d.ts +7 -1
- package/dist/notes/branches.d.ts.map +1 -1
- package/dist/notes/branches.js +31 -3
- package/dist/notes/branches.js.map +1 -1
- package/dist/notes/cold-start.d.ts +12 -2
- package/dist/notes/cold-start.d.ts.map +1 -1
- package/dist/notes/cold-start.js +46 -5
- package/dist/notes/cold-start.js.map +1 -1
- package/dist/notes/credit.d.ts +37 -0
- package/dist/notes/credit.d.ts.map +1 -0
- package/dist/notes/credit.js +78 -0
- package/dist/notes/credit.js.map +1 -0
- package/dist/notes/find-notes.d.ts +17 -0
- package/dist/notes/find-notes.d.ts.map +1 -0
- package/dist/notes/find-notes.js +48 -0
- package/dist/notes/find-notes.js.map +1 -0
- package/dist/notes/flatten.d.ts +31 -0
- package/dist/notes/flatten.d.ts.map +1 -0
- package/dist/notes/flatten.js +73 -0
- package/dist/notes/flatten.js.map +1 -0
- package/dist/notes/git-facts.d.ts +7 -1
- package/dist/notes/git-facts.d.ts.map +1 -1
- package/dist/notes/git-facts.js +12 -2
- package/dist/notes/git-facts.js.map +1 -1
- package/dist/notes/home.d.ts +24 -6
- package/dist/notes/home.d.ts.map +1 -1
- package/dist/notes/home.js +82 -15
- package/dist/notes/home.js.map +1 -1
- package/dist/notes/learning-fields.d.ts +102 -0
- package/dist/notes/learning-fields.d.ts.map +1 -0
- package/dist/notes/learning-fields.js +214 -0
- package/dist/notes/learning-fields.js.map +1 -0
- package/dist/notes/memory-notes.d.ts +71 -0
- package/dist/notes/memory-notes.d.ts.map +1 -0
- package/dist/notes/memory-notes.js +239 -0
- package/dist/notes/memory-notes.js.map +1 -0
- package/dist/notes/note-gate.d.ts +42 -0
- package/dist/notes/note-gate.d.ts.map +1 -0
- package/dist/notes/note-gate.js +181 -0
- package/dist/notes/note-gate.js.map +1 -0
- package/dist/notes/notes.d.ts +29 -77
- package/dist/notes/notes.d.ts.map +1 -1
- package/dist/notes/notes.js +69 -228
- package/dist/notes/notes.js.map +1 -1
- package/dist/notes/pr-reviews.d.ts +35 -7
- package/dist/notes/pr-reviews.d.ts.map +1 -1
- package/dist/notes/pr-reviews.js +156 -46
- package/dist/notes/pr-reviews.js.map +1 -1
- package/dist/notes/secrets.d.ts +28 -0
- package/dist/notes/secrets.d.ts.map +1 -0
- package/dist/notes/secrets.js +362 -0
- package/dist/notes/secrets.js.map +1 -0
- package/dist/notes/session-cost.d.ts +2 -0
- package/dist/notes/session-cost.d.ts.map +1 -1
- package/dist/notes/session-cost.js +8 -3
- package/dist/notes/session-cost.js.map +1 -1
- package/dist/notes/targets.d.ts +37 -0
- package/dist/notes/targets.d.ts.map +1 -0
- package/dist/notes/targets.js +108 -0
- package/dist/notes/targets.js.map +1 -0
- package/dist/notes/team-check.d.ts +22 -0
- package/dist/notes/team-check.d.ts.map +1 -0
- package/dist/notes/team-check.js +130 -0
- package/dist/notes/team-check.js.map +1 -0
- package/dist/notes/trail-home.d.ts +3 -0
- package/dist/notes/trail-home.d.ts.map +1 -0
- package/dist/notes/trail-home.js +12 -0
- package/dist/notes/trail-home.js.map +1 -0
- package/dist/search/grep-cli.d.ts +5 -2
- package/dist/search/grep-cli.d.ts.map +1 -1
- package/dist/search/grep-cli.js +11 -4
- package/dist/search/grep-cli.js.map +1 -1
- package/dist/search/ignored-code.d.ts +9 -0
- package/dist/search/ignored-code.d.ts.map +1 -0
- package/dist/search/ignored-code.js +73 -0
- package/dist/search/ignored-code.js.map +1 -0
- package/dist/skills/answers-prompt.d.ts +13 -0
- package/dist/skills/answers-prompt.d.ts.map +1 -0
- package/dist/skills/answers-prompt.js +83 -0
- package/dist/skills/answers-prompt.js.map +1 -0
- package/dist/skills/never-save.d.ts +5 -0
- package/dist/skills/never-save.d.ts.map +1 -0
- package/dist/skills/never-save.js +158 -0
- package/dist/skills/never-save.js.map +1 -0
- package/dist/skills/params.d.ts +39 -0
- package/dist/skills/params.d.ts.map +1 -0
- package/dist/skills/params.js +275 -0
- package/dist/skills/params.js.map +1 -0
- package/dist/skills/ran-less.d.ts +5 -0
- package/dist/skills/ran-less.d.ts.map +1 -0
- package/dist/skills/ran-less.js +51 -0
- package/dist/skills/ran-less.js.map +1 -0
- package/dist/skills/risk-delta.d.ts +32 -0
- package/dist/skills/risk-delta.d.ts.map +1 -0
- package/dist/skills/risk-delta.js +56 -0
- package/dist/skills/risk-delta.js.map +1 -0
- package/dist/skills/risk.d.ts +73 -0
- package/dist/skills/risk.d.ts.map +1 -0
- package/dist/skills/risk.js +396 -0
- package/dist/skills/risk.js.map +1 -0
- package/dist/skills/types.d.ts +422 -0
- package/dist/skills/types.d.ts.map +1 -0
- package/dist/skills/types.js +2 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/telemetry/contract.d.ts.map +1 -1
- package/dist/telemetry/contract.js +8 -6
- package/dist/telemetry/contract.js.map +1 -1
- package/dist/telemetry/notice.d.ts.map +1 -1
- package/dist/telemetry/notice.js +3 -1
- package/dist/telemetry/notice.js.map +1 -1
- package/dist/trace/check-reads.d.ts +36 -0
- package/dist/trace/check-reads.d.ts.map +1 -0
- package/dist/trace/check-reads.js +57 -0
- package/dist/trace/check-reads.js.map +1 -0
- package/dist/trace/host.d.ts +40 -0
- package/dist/trace/host.d.ts.map +1 -0
- package/dist/trace/host.js +84 -0
- package/dist/trace/host.js.map +1 -0
- package/dist/trace/redact.d.ts +8 -0
- package/dist/trace/redact.d.ts.map +1 -0
- package/dist/trace/redact.js +63 -0
- package/dist/trace/redact.js.map +1 -0
- package/dist/trace/seen-cache.d.ts +9 -0
- package/dist/trace/seen-cache.d.ts.map +1 -0
- package/dist/trace/seen-cache.js +46 -0
- package/dist/trace/seen-cache.js.map +1 -0
- package/dist/trace/shell-scan.d.ts +52 -0
- package/dist/trace/shell-scan.d.ts.map +1 -0
- package/dist/trace/shell-scan.js +318 -0
- package/dist/trace/shell-scan.js.map +1 -0
- package/dist/trace/shell-words.d.ts +91 -0
- package/dist/trace/shell-words.d.ts.map +1 -0
- package/dist/trace/shell-words.js +558 -0
- package/dist/trace/shell-words.js.map +1 -0
- package/dist/trace/shell.d.ts +91 -0
- package/dist/trace/shell.d.ts.map +1 -0
- package/dist/trace/shell.js +435 -0
- package/dist/trace/shell.js.map +1 -0
- package/dist/trace/state.d.ts +27 -0
- package/dist/trace/state.d.ts.map +1 -0
- package/dist/trace/state.js +98 -0
- package/dist/trace/state.js.map +1 -0
- package/dist/trace/tamper-code.d.ts +9 -0
- package/dist/trace/tamper-code.d.ts.map +1 -0
- package/dist/trace/tamper-code.js +174 -0
- package/dist/trace/tamper-code.js.map +1 -0
- package/dist/trace/tamper-git.d.ts +12 -0
- package/dist/trace/tamper-git.d.ts.map +1 -0
- package/dist/trace/tamper-git.js +77 -0
- package/dist/trace/tamper-git.js.map +1 -0
- package/dist/trace/types.d.ts +477 -0
- package/dist/trace/types.d.ts.map +1 -0
- package/dist/trace/types.js +12 -0
- package/dist/trace/types.js.map +1 -0
- package/dist/trace/walls-glob.d.ts +11 -0
- package/dist/trace/walls-glob.d.ts.map +1 -0
- package/dist/trace/walls-glob.js +264 -0
- package/dist/trace/walls-glob.js.map +1 -0
- package/dist/trace/walls-quoted.d.ts +25 -0
- package/dist/trace/walls-quoted.d.ts.map +1 -0
- package/dist/trace/walls-quoted.js +81 -0
- package/dist/trace/walls-quoted.js.map +1 -0
- package/dist/upkeep.d.ts +1 -1
- package/dist/upkeep.d.ts.map +1 -1
- package/dist/upkeep.js +4 -1
- package/dist/upkeep.js.map +1 -1
- package/dist/util/actions-folder.d.ts +2 -0
- package/dist/util/actions-folder.d.ts.map +1 -0
- package/dist/util/actions-folder.js +9 -0
- package/dist/util/actions-folder.js.map +1 -0
- package/dist/util/front-matter.d.ts +31 -4
- package/dist/util/front-matter.d.ts.map +1 -1
- package/dist/util/front-matter.js +95 -3
- package/dist/util/front-matter.js.map +1 -1
- package/dist/util/private-file.d.ts +14 -0
- package/dist/util/private-file.d.ts.map +1 -0
- package/dist/util/private-file.js +82 -0
- package/dist/util/private-file.js.map +1 -0
- package/dist/util/private-fs.d.ts +25 -0
- package/dist/util/private-fs.d.ts.map +1 -0
- package/dist/util/private-fs.js +253 -0
- package/dist/util/private-fs.js.map +1 -0
- package/dist/util/state.d.ts.map +1 -1
- package/dist/util/state.js +3 -0
- package/dist/util/state.js.map +1 -1
- package/dist/viewer/app.js +2 -2
- package/package.json +5 -5
- package/scripts/run-tests.mjs +14 -2
|
@@ -0,0 +1,422 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The shapes of learned skills: the SKILL.md metadata, compiled and parsed
|
|
3
|
+
* skills, their state and ledger lines, offers, receipts, the person's
|
|
4
|
+
* settings, and what a skills hook part hands back to the hook that writes.
|
|
5
|
+
*
|
|
6
|
+
* Types only.
|
|
7
|
+
*/
|
|
8
|
+
import type { GatedKind, JobClass, OfferChannel } from '../trace/types.js';
|
|
9
|
+
export type Scope = 'personal' | 'repo' | 'team';
|
|
10
|
+
export type SkillStatus = 'candidate' | 'active' | 'needs-fix' | 'retired';
|
|
11
|
+
export type SkillFrom = 'init' | 'repeated' | 'repaired' | 'asked';
|
|
12
|
+
/** Flat quoted strings under `metadata:` in SKILL.md. Key names are the YAML keys. */
|
|
13
|
+
export interface SkillMeta {
|
|
14
|
+
trail: string;
|
|
15
|
+
scope: Scope;
|
|
16
|
+
applies?: string;
|
|
17
|
+
job?: JobClass;
|
|
18
|
+
asks: string;
|
|
19
|
+
'status-asks'?: string;
|
|
20
|
+
params?: string;
|
|
21
|
+
needs?: string;
|
|
22
|
+
ready?: string;
|
|
23
|
+
'check-first'?: string;
|
|
24
|
+
/** D116 item 5: ' | '-separated things the person does first (a login whose keystrokes the run fed, dropped from the steps). */
|
|
25
|
+
'before-you-start'?: string;
|
|
26
|
+
'confirm-before'?: string;
|
|
27
|
+
check?: string;
|
|
28
|
+
'check-shows'?: string;
|
|
29
|
+
/** D59b: the check is a deploy status tool the agent calls (e.g. 'get_deployment'); `check` then says what to read, not a command. */
|
|
30
|
+
'check-tool'?: string;
|
|
31
|
+
version: string;
|
|
32
|
+
}
|
|
33
|
+
export interface ParamDef {
|
|
34
|
+
name: string;
|
|
35
|
+
shape: 'version' | 'sha' | 'pr' | 'port' | 'branch' | 'date' | 'varied';
|
|
36
|
+
/** A literal, or a `$(...)` command for sha and date. */
|
|
37
|
+
default?: string;
|
|
38
|
+
/** Values seen in the run(s) it came from. Shapes only; never secret-flagged. */
|
|
39
|
+
seen: string[];
|
|
40
|
+
}
|
|
41
|
+
export interface SkillStep {
|
|
42
|
+
n: number;
|
|
43
|
+
cmd: string;
|
|
44
|
+
gated: GatedKind | null;
|
|
45
|
+
bg: boolean;
|
|
46
|
+
wait: boolean;
|
|
47
|
+
/** compile only: the tool_use ids it was copied from (the gate re-reads each, 4.9). */
|
|
48
|
+
from?: string[];
|
|
49
|
+
}
|
|
50
|
+
export interface CompiledSkill {
|
|
51
|
+
name: string;
|
|
52
|
+
title: string;
|
|
53
|
+
description: string;
|
|
54
|
+
meta: SkillMeta;
|
|
55
|
+
steps: SkillStep[];
|
|
56
|
+
check: string;
|
|
57
|
+
checkShows: string | null;
|
|
58
|
+
/** tests and query families: the check is also the last Run step (4.5 step 3). */
|
|
59
|
+
checkIsStep: boolean;
|
|
60
|
+
ifFails: string[];
|
|
61
|
+
dontUse: string;
|
|
62
|
+
params: ParamDef[];
|
|
63
|
+
helpers: Array<{
|
|
64
|
+
file: string;
|
|
65
|
+
from: string;
|
|
66
|
+
content: string;
|
|
67
|
+
}>;
|
|
68
|
+
leftOut: {
|
|
69
|
+
failed: number;
|
|
70
|
+
lookOnly: number;
|
|
71
|
+
duplicates: number;
|
|
72
|
+
plumbing: number;
|
|
73
|
+
work: number;
|
|
74
|
+
};
|
|
75
|
+
/** D58 b: steps that ran outside the repo, left out; shown in the draft with where they ran ("in api", "outside any repo"). */
|
|
76
|
+
elsewhere?: Array<{
|
|
77
|
+
cmd: string;
|
|
78
|
+
where: string;
|
|
79
|
+
}>;
|
|
80
|
+
/** D59a: the run a compaction cut, joined: how many compactions, when its first part began, the steps from before the last one. */
|
|
81
|
+
carried?: {
|
|
82
|
+
compactions: number;
|
|
83
|
+
startedAt: string;
|
|
84
|
+
steps: number[];
|
|
85
|
+
};
|
|
86
|
+
/** The run it was copied from, for the Stop use line (3.5 step 5) and `trail skills`. */
|
|
87
|
+
source: {
|
|
88
|
+
runId: string;
|
|
89
|
+
commands: number;
|
|
90
|
+
failed: number;
|
|
91
|
+
at: string;
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
export interface ParsedSkill {
|
|
95
|
+
name: string;
|
|
96
|
+
description: string;
|
|
97
|
+
meta: SkillMeta;
|
|
98
|
+
steps: SkillStep[];
|
|
99
|
+
check: string | null;
|
|
100
|
+
checkShows: string | null;
|
|
101
|
+
ifFails: string[];
|
|
102
|
+
dontUse: string;
|
|
103
|
+
params: ParamDef[];
|
|
104
|
+
hash: string;
|
|
105
|
+
}
|
|
106
|
+
export interface SkillRef {
|
|
107
|
+
id: string;
|
|
108
|
+
name: string;
|
|
109
|
+
scope: Scope;
|
|
110
|
+
applies: string | null;
|
|
111
|
+
dir: string;
|
|
112
|
+
file: string;
|
|
113
|
+
}
|
|
114
|
+
export interface SkillState {
|
|
115
|
+
name: string;
|
|
116
|
+
scope: Scope;
|
|
117
|
+
status: SkillStatus;
|
|
118
|
+
from: SkillFrom;
|
|
119
|
+
runId: string | null;
|
|
120
|
+
addedAt: string;
|
|
121
|
+
lastWorked: string | null;
|
|
122
|
+
lastUsedAt: string | null;
|
|
123
|
+
lastUsedRepo: string | null;
|
|
124
|
+
uses: number;
|
|
125
|
+
checkedUses: number;
|
|
126
|
+
hash: string;
|
|
127
|
+
source: {
|
|
128
|
+
commands: number;
|
|
129
|
+
failed: number;
|
|
130
|
+
at: string;
|
|
131
|
+
} | null;
|
|
132
|
+
/** The failed step of the last two uses, newest last; [] when the last use had no failed step (4.8). */
|
|
133
|
+
lastFails: Array<{
|
|
134
|
+
step: number;
|
|
135
|
+
at: string;
|
|
136
|
+
}>;
|
|
137
|
+
/** Why it is needs-fix, in words: 'step 4 failed on Nov 2 and Nov 4'. */
|
|
138
|
+
statusWhy?: string;
|
|
139
|
+
prevStatus?: SkillStatus;
|
|
140
|
+
/** D65: the SKILL.md hash when it was marked needs-fix. Only an edit after that mark (a hash other than this) brings it back. */
|
|
141
|
+
fixHash?: string;
|
|
142
|
+
promoteOffers: {
|
|
143
|
+
repo?: string;
|
|
144
|
+
team?: string;
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
export interface SkillsStateFile {
|
|
148
|
+
v: 1;
|
|
149
|
+
skills: Record<string, SkillState>;
|
|
150
|
+
}
|
|
151
|
+
export type Answer = 'yes' | 'no' | 'show' | 'none' | 'withdrawn';
|
|
152
|
+
export interface OfferLine {
|
|
153
|
+
id: string;
|
|
154
|
+
at: string;
|
|
155
|
+
/** 1b: 'closed' lines come only from init (moment 'init', answer 'no', 4.20). */
|
|
156
|
+
event: 'shown' | 'answer' | 'not-shown' | 'closed';
|
|
157
|
+
repo: string;
|
|
158
|
+
key: string;
|
|
159
|
+
/** Phase 2: 'update', 'drift' and 'retire' (2.4); widened here because a field's type can't be widened by merging. */
|
|
160
|
+
moment: 'repeated' | 'repaired' | 'correction' | 'init' | 'update' | 'drift' | 'retire';
|
|
161
|
+
runId: string;
|
|
162
|
+
name: string;
|
|
163
|
+
channel: OfferChannel;
|
|
164
|
+
answer?: Answer;
|
|
165
|
+
}
|
|
166
|
+
/** Phase 2: cue 'run' (c10's `trail run` only), and the fidelity facts in LedgerUseFacts (2.3). */
|
|
167
|
+
export type LedgerUse = {
|
|
168
|
+
at: string;
|
|
169
|
+
event: 'use';
|
|
170
|
+
useId: string;
|
|
171
|
+
skill: string;
|
|
172
|
+
v: string;
|
|
173
|
+
host: string;
|
|
174
|
+
cue: 'job' | 'name' | 'compact' | 'run';
|
|
175
|
+
repo: string;
|
|
176
|
+
stepsRan: number[];
|
|
177
|
+
failedStep: number | null;
|
|
178
|
+
readyFailed: string[];
|
|
179
|
+
check: 'passed' | 'failed' | 'none';
|
|
180
|
+
calls: number;
|
|
181
|
+
failed: number;
|
|
182
|
+
} & LedgerUseFacts;
|
|
183
|
+
export type LedgerLine = {
|
|
184
|
+
at: string;
|
|
185
|
+
event: 'saved';
|
|
186
|
+
skill: string;
|
|
187
|
+
v: string;
|
|
188
|
+
from: SkillFrom;
|
|
189
|
+
scope: Scope;
|
|
190
|
+
receipt: {
|
|
191
|
+
consent: 'offer-yes' | 'asked' | 'init';
|
|
192
|
+
stepsVerified: number;
|
|
193
|
+
stepsTotal: number;
|
|
194
|
+
};
|
|
195
|
+
} | LedgerUse | LedgerLesson | LedgerCue | LedgerChanged | {
|
|
196
|
+
at: string;
|
|
197
|
+
event: 'corrected';
|
|
198
|
+
skill: string;
|
|
199
|
+
useId: string;
|
|
200
|
+
} | {
|
|
201
|
+
at: string;
|
|
202
|
+
event: 'status';
|
|
203
|
+
skill: string;
|
|
204
|
+
from: SkillStatus;
|
|
205
|
+
to: SkillStatus;
|
|
206
|
+
/** Phase 2: 'retire-offer', the retire proposal's or drift's retire (2.3). */
|
|
207
|
+
reason: 'checked-use' | 'failed-twice' | 'forget' | 'restore' | 'retire-offer';
|
|
208
|
+
};
|
|
209
|
+
export interface TrailSkillSettings {
|
|
210
|
+
v: 1;
|
|
211
|
+
skills: 'on' | 'off';
|
|
212
|
+
onSince: string | null;
|
|
213
|
+
offers: 'on' | 'off';
|
|
214
|
+
offersOffAt: string | null;
|
|
215
|
+
offRepos: string[];
|
|
216
|
+
pausedUntil: Record<string, string>;
|
|
217
|
+
skillsOff: string[];
|
|
218
|
+
/** Cache of the governor window (4.13); offers.jsonl stays the truth. */
|
|
219
|
+
lastNine: Array<'yes' | 'no' | 'none'>;
|
|
220
|
+
governorSaidAt: string | null;
|
|
221
|
+
}
|
|
222
|
+
export interface Receipt {
|
|
223
|
+
v: 1;
|
|
224
|
+
session: string;
|
|
225
|
+
transcriptPath: string;
|
|
226
|
+
toolUseId: string;
|
|
227
|
+
runId: string;
|
|
228
|
+
name: string;
|
|
229
|
+
at: string;
|
|
230
|
+
host: string;
|
|
231
|
+
tier: 'A' | 'B' | 'C' | 'D';
|
|
232
|
+
consent: 'offer-yes' | 'asked' | 'none';
|
|
233
|
+
offerId: string | null;
|
|
234
|
+
/** The person's typed line that gave consent: its byte offset and the sha256 of the whole line. */
|
|
235
|
+
typed: {
|
|
236
|
+
offset: number;
|
|
237
|
+
lineSha: string;
|
|
238
|
+
} | null;
|
|
239
|
+
typedYes: boolean;
|
|
240
|
+
typedSave: boolean;
|
|
241
|
+
/** What the person's save request said about scope (asked saves only), for the CLI's line (D27). */
|
|
242
|
+
asked: 'this repo' | 'every repo' | 'repo' | 'team' | null;
|
|
243
|
+
stepsTotal: number;
|
|
244
|
+
stepsVerified: number;
|
|
245
|
+
verdict: 'live' | 'held';
|
|
246
|
+
heldWhy?: 'no-yes' | 'host';
|
|
247
|
+
/** D93: the checkout the PreToolUse half compiled the run in ('' for none); the CLI half uses it, never its own cwd. */
|
|
248
|
+
checkout?: string;
|
|
249
|
+
/** Set by the CLI when it acts on the receipt; a used receipt never counts again. */
|
|
250
|
+
usedAt: string | null;
|
|
251
|
+
}
|
|
252
|
+
/** What a skills hook part hands its caller, which writes one JSON object (0.2 `emitHook`). */
|
|
253
|
+
export interface HookOut {
|
|
254
|
+
/** additionalContext: the agent reads it. */
|
|
255
|
+
context?: string;
|
|
256
|
+
/** systemMessage: the person sees it, the agent doesn't. */
|
|
257
|
+
notice?: string;
|
|
258
|
+
/** decision "block" with this reason (UserPromptSubmit: the prompt goes no further; Stop: the agent continues). */
|
|
259
|
+
block?: string;
|
|
260
|
+
}
|
|
261
|
+
/** A lesson kept on a skill (moment 4) or tied to a wall (moment 3). */
|
|
262
|
+
export type LedgerLesson = {
|
|
263
|
+
at: string;
|
|
264
|
+
event: 'lesson';
|
|
265
|
+
skill: string;
|
|
266
|
+
lessonId: string;
|
|
267
|
+
src: 'correction' | 'repair';
|
|
268
|
+
consent: 'offer-yes';
|
|
269
|
+
};
|
|
270
|
+
/** An asks phrase that kept missing was dropped from the cue (4.19). The phrase is never written, only its sha (R30). */
|
|
271
|
+
export type LedgerCue = {
|
|
272
|
+
at: string;
|
|
273
|
+
event: 'cue';
|
|
274
|
+
skill: string;
|
|
275
|
+
phraseSha: string;
|
|
276
|
+
change: 'dropped';
|
|
277
|
+
};
|
|
278
|
+
export interface SkillState {
|
|
279
|
+
/** phraseSha -> misses in a row (4.19, R30). Absent reads as {}. */
|
|
280
|
+
cueMisses?: Record<string, number>;
|
|
281
|
+
/** When skill_stale{unused} was sent. */
|
|
282
|
+
unusedSaidAt?: string | null;
|
|
283
|
+
/** When skill_stale{missing} was last sent (once a day, 4.18). */
|
|
284
|
+
missingSaidAt?: string | null;
|
|
285
|
+
}
|
|
286
|
+
/** receipts/<session-id>.keep.json: the PreToolUse half of a `trail keep` (4.9). */
|
|
287
|
+
export interface KeepReceipt {
|
|
288
|
+
v: 1;
|
|
289
|
+
kind: 'keep';
|
|
290
|
+
session: string;
|
|
291
|
+
/** The very file the hooks read for this session (receiptTranscriptRead, D82). */
|
|
292
|
+
transcriptPath: string;
|
|
293
|
+
toolUseId: string;
|
|
294
|
+
/** Where the list was: the tool_result of a `trail init` call (its offset), or the handover the record names. */
|
|
295
|
+
list: {
|
|
296
|
+
offset: number;
|
|
297
|
+
initRunId: string;
|
|
298
|
+
via: 'init-call' | 'handover';
|
|
299
|
+
};
|
|
300
|
+
/** The first typed line after the list. */
|
|
301
|
+
typed: {
|
|
302
|
+
offset: number;
|
|
303
|
+
lineSha: string;
|
|
304
|
+
};
|
|
305
|
+
/** sha256 of the agent text between the list and the typed line, which named every item (4.9 step 3, R22). */
|
|
306
|
+
replySha: string;
|
|
307
|
+
/** What the command asked for. */
|
|
308
|
+
numbers: number[] | 'none' | 'all';
|
|
309
|
+
at: string;
|
|
310
|
+
verdict: 'live' | 'held';
|
|
311
|
+
heldWhy?: 'no-answer' | 'numbers' | 'not-shown' | 'host';
|
|
312
|
+
usedAt: string | null;
|
|
313
|
+
}
|
|
314
|
+
/** receipts/<session-id>.lesson.json: the PreToolUse half of a lesson save (4.15). */
|
|
315
|
+
export interface LessonReceipt {
|
|
316
|
+
v: 1;
|
|
317
|
+
kind: 'lesson';
|
|
318
|
+
session: string;
|
|
319
|
+
transcriptPath: string;
|
|
320
|
+
toolUseId: string;
|
|
321
|
+
offerId: string;
|
|
322
|
+
/** null for a moment-3 lesson (tied to a wall, no skill). */
|
|
323
|
+
skill: string | null;
|
|
324
|
+
/** The yes. */
|
|
325
|
+
typed: {
|
|
326
|
+
offset: number;
|
|
327
|
+
lineSha: string;
|
|
328
|
+
};
|
|
329
|
+
lessonSha: string;
|
|
330
|
+
at: string;
|
|
331
|
+
verdict: 'live' | 'held';
|
|
332
|
+
heldWhy?: 'no-yes' | 'changed' | 'host';
|
|
333
|
+
usedAt: string | null;
|
|
334
|
+
}
|
|
335
|
+
/** One block that came in for a job and was settled (4.9): followed when a step of it ran. Last 10, oldest first. */
|
|
336
|
+
export interface Firing {
|
|
337
|
+
at: string;
|
|
338
|
+
followed: boolean;
|
|
339
|
+
}
|
|
340
|
+
/** What a fold changes (4.2): a step, steps added, or steps kept as their own skill. */
|
|
341
|
+
export type FoldOp = 'update' | 'extend' | 'split';
|
|
342
|
+
/** A write of the file Trail wrote (4.5): one ledger `changed` line each. A split is a save; a retire is a status line. */
|
|
343
|
+
export type ChangeOp = 'update' | 'extend' | 'replace' | 'adopted' | 'restore-version';
|
|
344
|
+
/** 4.1: what the next run did against the skill. Counts only. */
|
|
345
|
+
export interface FidelityCounts {
|
|
346
|
+
ran: number;
|
|
347
|
+
missing: number;
|
|
348
|
+
extra: number;
|
|
349
|
+
changed: number;
|
|
350
|
+
}
|
|
351
|
+
export interface SkillState {
|
|
352
|
+
/** 4.9: settled job and name cue blocks, last 10, oldest first. Reset when the skill changes version. */
|
|
353
|
+
firings?: Firing[];
|
|
354
|
+
/** 4.6: the proposal Trail wrote beside a hand-edited file; adopted when the file becomes byte-equal to it. */
|
|
355
|
+
proposed?: {
|
|
356
|
+
hash: string;
|
|
357
|
+
version: number;
|
|
358
|
+
op: FoldOp | 'replace';
|
|
359
|
+
at: string;
|
|
360
|
+
} | null;
|
|
361
|
+
/** When Trail last changed the file (fold, replace, adopt, restore by version). */
|
|
362
|
+
changedAt?: string | null;
|
|
363
|
+
/** 4.5 (R8): a write in progress, so a crash between the file and the state is finished, not taken for a hand edit. */
|
|
364
|
+
pendingWrite?: {
|
|
365
|
+
hash: string;
|
|
366
|
+
from: number;
|
|
367
|
+
at: string;
|
|
368
|
+
} | null;
|
|
369
|
+
}
|
|
370
|
+
/** 2.3: the use line's fidelity facts, absent before phase 2. A 1b reader ignores them. */
|
|
371
|
+
export interface LedgerUseFacts {
|
|
372
|
+
/** 4.1: counts only. */
|
|
373
|
+
fid?: FidelityCounts;
|
|
374
|
+
/** 8-hex shas of the compiled text of passing steps the skill lacks (`extraKey`), at most 4. Never the text. */
|
|
375
|
+
extraShas?: string[];
|
|
376
|
+
/** Steps that failed and were then done another way that passed, at most 4. */
|
|
377
|
+
changedSteps?: number[];
|
|
378
|
+
/** D137: gated steps this session couldn't ask for, handed to the person to run (counted in stepsRan). */
|
|
379
|
+
handed?: number[];
|
|
380
|
+
}
|
|
381
|
+
/** A change to the file Trail wrote, one per write (4.5, 2.3). */
|
|
382
|
+
export type LedgerChanged = {
|
|
383
|
+
at: string;
|
|
384
|
+
event: 'changed';
|
|
385
|
+
skill: string;
|
|
386
|
+
op: ChangeOp;
|
|
387
|
+
from: number;
|
|
388
|
+
to: number;
|
|
389
|
+
offerId: string | null;
|
|
390
|
+
lessonIds?: string[];
|
|
391
|
+
};
|
|
392
|
+
export interface OfferLine {
|
|
393
|
+
/** 2.4: on an answer line, what the yes chose: a fold op, drift's 'replace', or 'retire' (drift's or the retire proposal's). */
|
|
394
|
+
op?: FoldOp | 'replace' | 'retire';
|
|
395
|
+
}
|
|
396
|
+
/** receipts/<session-id>.update.json: the PreToolUse half of `trail skills update` (4.11). No step text, only the two hashes. */
|
|
397
|
+
export interface UpdateReceipt {
|
|
398
|
+
v: 1;
|
|
399
|
+
kind: 'update';
|
|
400
|
+
session: string;
|
|
401
|
+
/** The very file the hooks read for this session (receiptTranscriptRead, D82). */
|
|
402
|
+
transcriptPath: string;
|
|
403
|
+
toolUseId: string;
|
|
404
|
+
host: string;
|
|
405
|
+
offerId: string;
|
|
406
|
+
skillId: string;
|
|
407
|
+
name: string;
|
|
408
|
+
runId: string;
|
|
409
|
+
op: FoldOp | 'replace';
|
|
410
|
+
/** The SKILL.md hash the plan was computed from. */
|
|
411
|
+
baseHash: string;
|
|
412
|
+
/** 4.11: sha256 of the proposed file text, 16 hex. */
|
|
413
|
+
proposalSha: string;
|
|
414
|
+
/** The yes. */
|
|
415
|
+
typed: {
|
|
416
|
+
offset: number;
|
|
417
|
+
lineSha: string;
|
|
418
|
+
};
|
|
419
|
+
at: string;
|
|
420
|
+
usedAt: string | null;
|
|
421
|
+
}
|
|
422
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/skills/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/skills/types.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/telemetry/contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAMH;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../src/telemetry/contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAMH;;;GAGG;AACH,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAwEtD,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,WAAW,iGASd,CAAC;AAMX;kEACkE;AAClE,MAAM,MAAM,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAE7C;iFACiF;AACjF,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC;AAEjE;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,iFAEnB,CAAC;AACX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE/D,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,cAAc,CAErE;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,qBAAqB,uEAAwE,CAAC;AAC3G,MAAM,MAAM,kBAAkB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAExE;wCACwC;AACxC,eAAO,MAAM,YAAY,2EAA4E,CAAC;AACtG,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD;;;;GAIG;AACH,eAAO,MAAM,WAAW,6IAGd,CAAC;AACX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,CAoBjD;AAMD;4DAC4D;AAC5D,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAO7C;AAED;yCACyC;AACzC,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAQjD;AAED,qEAAqE;AACrE,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAO7C;AAED;4CAC4C;AAC5C,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAOnD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAK3D"}
|
|
@@ -76,12 +76,14 @@ export const EVENTS = {
|
|
|
76
76
|
* buckets, and whether it's the clone's first look. Committed learnings
|
|
77
77
|
* are trail's activation. Paths and titles never travel. */
|
|
78
78
|
learnings_committed: new Set(['added_bucket', 'total_bucket', 'first_look']),
|
|
79
|
-
/** `trail init` read the repo's past Claude sessions,
|
|
80
|
-
* on its merged PRs (`source`), for
|
|
81
|
-
* sessions or reviewed PRs there were,
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
|
|
79
|
+
/** `trail init` read the repo's past Claude sessions, the review comments
|
|
80
|
+
* on its merged PRs, or Claude Code's memory notes of it (`source`), for
|
|
81
|
+
* learnings: how it went, how many sessions or reviewed PRs there were,
|
|
82
|
+
* findings offered and saved, how many were left out for naming no code
|
|
83
|
+
* (`filtered`), and how many of those offered and saved were the team's,
|
|
84
|
+
* as buckets, how long it took, and the model. The messages, the comments,
|
|
85
|
+
* the notes and the findings never travel. */
|
|
86
|
+
cold_start: new Set(['source', 'outcome', 'sessions_bucket', 'reviews_bucket', 'offered_bucket', 'filtered_bucket', 'picked_bucket', 'team_offered_bucket', 'team_picked_bucket', 'duration_bucket', 'model']),
|
|
85
87
|
/** `trail learn` saved a correction as a takeaway on a skill (into
|
|
86
88
|
* `~/.trail/`). `new_skill` says whether it started a skill. The text never
|
|
87
89
|
* travels. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/telemetry/contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,gFAAgF;AAChF,gFAAgF;AAChF,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,CAAC,MAAM,MAAM,GAAwC;IACzD;;;;;;kEAM8D;IAC9D,OAAO,EAAE,IAAI,GAAG,CAAS,CAAC,QAAQ,CAAC,CAAC;IACpC;uEACmE;IACnE,SAAS,EAAE,IAAI,GAAG,EAAU;IAC5B;oDACgD;IAChD,cAAc,EAAE,IAAI,GAAG,CAAS,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACtD;2DACuD;IACvD,eAAe,EAAE,IAAI,GAAG,CAAS,CAAC,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,aAAa,CAAC,CAAC;IACrG,0EAA0E;IAC1E,YAAY,EAAE,IAAI,GAAG,CAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAChD,mFAAmF;IACnF,KAAK,EAAE,IAAI,GAAG,CAAS,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC9D;;4DAEwD;IACxD,mBAAmB,EAAE,IAAI,GAAG,CAAS,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACpE;kFAC8E;IAC9E,oBAAoB,EAAE,IAAI,GAAG,CAAS,CAAC,SAAS,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAC7E;;;0DAGsD;IACtD,UAAU,EAAE,IAAI,GAAG,CAAS,CAAC,UAAU,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;IACpE;;gFAE4E;IAC5E,eAAe,EAAE,IAAI,GAAG,CAAS,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC;IACrE;;;;oEAIgE;IAChE,SAAS,EAAE,IAAI,GAAG,CAAS,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,WAAW,CAAC,CAAC;IAChF;;;iEAG6D;IAC7D,mBAAmB,EAAE,IAAI,GAAG,CAAS,CAAC,cAAc,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;IACpF
|
|
1
|
+
{"version":3,"file":"contract.js","sourceRoot":"","sources":["../../src/telemetry/contract.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notice.d.ts","sourceRoot":"","sources":["../../src/telemetry/notice.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,iBAAiB,iEAAiE,CAAC;AAEhG,eAAO,MAAM,MAAM,QAGP,CAAC;AAEb;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,GAAG,IAAI,CASpF;AAED;4EAC4E;AAC5E,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"notice.d.ts","sourceRoot":"","sources":["../../src/telemetry/notice.ts"],"names":[],"mappings":"AAsBA,eAAO,MAAM,iBAAiB,iEAAiE,CAAC;AAEhG,eAAO,MAAM,MAAM,QAGP,CAAC;AAEb;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,GAAG,IAAI,CASpF;AAED;4EAC4E;AAC5E,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CAqB3E;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAkBjD"}
|
package/dist/telemetry/notice.js
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* who see it — this catches everyone else.
|
|
15
15
|
*/
|
|
16
16
|
import { patchState, readState } from './identity.js';
|
|
17
|
-
import { explainOff, offReason } from './gate.js';
|
|
17
|
+
import { doNotTrack, explainOff, offReason } from './gate.js';
|
|
18
18
|
import { peek } from './queue.js';
|
|
19
19
|
import { buildBatch } from './send.js';
|
|
20
20
|
import { posthogHost } from './key.js';
|
|
@@ -53,6 +53,8 @@ export function formatStatus(home, env) {
|
|
|
53
53
|
: `telemetry: ${explainOff(reason)}`,
|
|
54
54
|
` contract: ${TELEMETRY_DOC_URL}`,
|
|
55
55
|
];
|
|
56
|
+
if (doNotTrack(env))
|
|
57
|
+
lines.push(' update check: off — DO_NOT_TRACK is set');
|
|
56
58
|
if (reason === null || reason === 'disabled') {
|
|
57
59
|
lines.push(` endpoint: ${posthogHost()}`);
|
|
58
60
|
lines.push(` queued: ${pending} event${pending === 1 ? '' : 's'} waiting for the next daily flush`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notice.js","sourceRoot":"","sources":["../../src/telemetry/notice.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"notice.js","sourceRoot":"","sources":["../../src/telemetry/notice.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAElD,MAAM,CAAC,MAAM,iBAAiB,GAAG,8DAA8D,CAAC;AAEhG,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,8EAA8E;IAC9E,mBAAmB,iBAAiB,kDAAkD;CACvF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAa,EAAE,GAAuB;IACnE,IAAI,CAAC;QACH,IAAI,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,CAAC,6CAA6C;QAC7F,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,aAAa;YAAE,OAAO,IAAI,CAAC;QAChD,UAAU,CAAC,EAAE,aAAa,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAC9D,OAAO,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;4EAC4E;AAC5E,MAAM,UAAU,YAAY,CAAC,IAAa,EAAE,GAAuB;IACjE,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;IAClC,MAAM,KAAK,GAAG;QACZ,MAAM,KAAK,IAAI;YACb,CAAC,CAAC,2CAA2C;YAC7C,CAAC,CAAC,cAAc,UAAU,CAAC,MAAM,CAAC,EAAE;QACtC,gBAAgB,iBAAiB,EAAE;KACpC,CAAC;IACF,IAAI,UAAU,CAAC,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;IAC7E,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,gBAAgB,WAAW,EAAE,EAAE,CAAC,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,gBAAgB,OAAO,SAAS,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,mCAAmC,CAAC,CAAC;IAC1G,CAAC;IACD,KAAK,CAAC,IAAI,CACR,MAAM,KAAK,UAAU;QACnB,CAAC,CAAC,gBAAgB,GAAG,CAAC,wBAAwB,CAAC,EAAE;QACjD,CAAC,CAAC,gBAAgB,GAAG,CAAC,yBAAyB,CAAC,2BAA2B,CAC9E,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,uBAAuB,CAAC,4CAA4C,CAAC,CAAC;IACrG,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,IAAa;IACvC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO;YACL,4BAA4B;YAC5B,kFAAkF;SACnF,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;IACD,4EAA4E;IAC5E,8EAA8E;IAC9E,oCAAoC;IACpC,MAAM,IAAI,GAAG,EAAE,OAAO,EAAE,wCAAwC,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;IAC1F,OAAO;QACL,cAAc,MAAM,CAAC,MAAM,6DAA6D;QACxF,MAAM,WAAW,EAAE,+CAA+C;QAClE,EAAE;QACF,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;KAC9B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* D140: the check families the demo lab's real repos needed, split from checks.ts (500-line rule). Each only reads:
|
|
3
|
+
* - bats, a tests runner: its TAP (`ok 1`, `not ok 2`) and its pretty summary (`2 tests, 0 failures`);
|
|
4
|
+
* - `gcloud run services describe`, a deploy status: passed when the service's Ready condition is True;
|
|
5
|
+
* - a `curl --fail` GET of a health URL (`/healthz`, `/status`, ...), a deploy status only once the run pushed or
|
|
6
|
+
* deployed, passed when it came back with nothing unhealthy in it.
|
|
7
|
+
* A command that changes things (`gcloud run deploy`) is never one of them. Pure: no files, no clock.
|
|
8
|
+
*/
|
|
9
|
+
/** bats with something to run: never `--version`, `--help`, or bats alone. */
|
|
10
|
+
export declare const BATS: string;
|
|
11
|
+
/** `gcloud run services describe <svc>`. */
|
|
12
|
+
export declare const GCLOUD_DESCRIBE: string;
|
|
13
|
+
/**
|
|
14
|
+
* A GET of a deployed service's health path with --fail (`-f` in a flag cluster), so an HTTP error fails the call.
|
|
15
|
+
* Never a write, and never a local server (localhost is a dev server, not a deploy).
|
|
16
|
+
*/
|
|
17
|
+
export declare const HEALTH_CURL: string;
|
|
18
|
+
export declare const isHealthCurl: (bare: string) => boolean;
|
|
19
|
+
/** A loop that waits on something: a health read inside one is the wait step (D58 d), not a check. */
|
|
20
|
+
export declare const inLoop: (cmd: string) => boolean;
|
|
21
|
+
/** A step that deploys (D140: what a health read can follow), as a simple command. */
|
|
22
|
+
export declare const DEPLOY_STEP: RegExp;
|
|
23
|
+
/** bats's own output: TAP, or the pretty formatter's summary. Null when it isn't bats's. */
|
|
24
|
+
export declare function batsPassed(text: string): {
|
|
25
|
+
passed: boolean;
|
|
26
|
+
count?: number;
|
|
27
|
+
} | null;
|
|
28
|
+
/** The service's Ready condition, from JSON, YAML, a `value(...)` read of it, or the default view's first line. */
|
|
29
|
+
export declare function gcloudReady(text: string, shas: string[]): {
|
|
30
|
+
passed: boolean;
|
|
31
|
+
state?: string;
|
|
32
|
+
sha?: string;
|
|
33
|
+
};
|
|
34
|
+
/** A health read that came back: nothing unhealthy, down or failing in it. */
|
|
35
|
+
export declare function healthy(text: string): boolean;
|
|
36
|
+
//# sourceMappingURL=check-reads.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-reads.d.ts","sourceRoot":"","sources":["../../src/trace/check-reads.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,8EAA8E;AAC9E,eAAO,MAAM,IAAI,QAAsF,CAAC;AAExG,4CAA4C;AAC5C,eAAO,MAAM,eAAe,QAAoD,CAAC;AAEjF;;;GAGG;AACH,eAAO,MAAM,WAAW,QAAwX,CAAC;AAGjZ,eAAO,MAAM,YAAY,GAAI,MAAM,MAAM,KAAG,OAA+B,CAAC;AAE5E,sGAAsG;AACtG,eAAO,MAAM,MAAM,GAAI,KAAK,MAAM,KAAG,OAAwE,CAAC;AAE9G,sFAAsF;AACtF,eAAO,MAAM,WAAW,QAAwO,CAAC;AAEjQ,4FAA4F;AAC5F,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAMnF;AAED,mHAAmH;AACnH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAY3G;AAED,8EAA8E;AAC9E,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAG7C"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* D140: the check families the demo lab's real repos needed, split from checks.ts (500-line rule). Each only reads:
|
|
3
|
+
* - bats, a tests runner: its TAP (`ok 1`, `not ok 2`) and its pretty summary (`2 tests, 0 failures`);
|
|
4
|
+
* - `gcloud run services describe`, a deploy status: passed when the service's Ready condition is True;
|
|
5
|
+
* - a `curl --fail` GET of a health URL (`/healthz`, `/status`, ...), a deploy status only once the run pushed or
|
|
6
|
+
* deployed, passed when it came back with nothing unhealthy in it.
|
|
7
|
+
* A command that changes things (`gcloud run deploy`) is never one of them. Pure: no files, no clock.
|
|
8
|
+
*/
|
|
9
|
+
/** bats with something to run: never `--version`, `--help`, or bats alone. */
|
|
10
|
+
export const BATS = String.raw `(?:npx )?bats\b(?=.*\s[^-\s])(?!.*\s(?:--version|--help|-v|-h)(?:\s|$))`;
|
|
11
|
+
/** `gcloud run services describe <svc>`. */
|
|
12
|
+
export const GCLOUD_DESCRIBE = String.raw `gcloud run services describe (?!-)\S+`;
|
|
13
|
+
/**
|
|
14
|
+
* A GET of a deployed service's health path with --fail (`-f` in a flag cluster), so an HTTP error fails the call.
|
|
15
|
+
* Never a write, and never a local server (localhost is a dev server, not a deploy).
|
|
16
|
+
*/
|
|
17
|
+
export const HEALTH_CURL = String.raw `curl\b(?=.*\s(?:-[a-zA-Z]*f[a-zA-Z]*|--fail(?:-with-body)?)(?:\s|$))(?!.*\s(?:-X\s*(?!GET\b)\w|--request\s+(?!GET\b)\w|-d\b|--data\b|--data-\w+|-F\b|--form\b|-T\b|--upload-file\b))(?=.*\shttps?:\/\/(?!(?:localhost|127\.\d+\.\d+\.\d+|0\.0\.0\.0|\[::1\])(?:[:/]|$))[^\s'"]*\/(?:health|healthz|healthcheck|_health|status|ping|ready|readyz|livez|up)(?:[\s'"?#/]|$))`;
|
|
18
|
+
const HEALTH_RE = new RegExp(`^${HEALTH_CURL}`);
|
|
19
|
+
export const isHealthCurl = (bare) => HEALTH_RE.test(bare);
|
|
20
|
+
/** A loop that waits on something: a health read inside one is the wait step (D58 d), not a check. */
|
|
21
|
+
export const inLoop = (cmd) => /(?:^|[\s;&|(])(?:while|until|for)\b[\s\S]*?\bdo\b/.test(cmd);
|
|
22
|
+
/** A step that deploys (D140: what a health read can follow), as a simple command. */
|
|
23
|
+
export const DEPLOY_STEP = /^(?:gcloud run deploy|gcloud app deploy|fly(?:ctl)? deploy|netlify deploy|(?:npx )?vercel(?: deploy)?(?: --prod)?\s*$|(?:npx )?vercel deploy\b|kubectl (?:apply|set image|rollout restart)\b|helm (?:upgrade|install)\b|git push\b)/;
|
|
24
|
+
/** bats's own output: TAP, or the pretty formatter's summary. Null when it isn't bats's. */
|
|
25
|
+
export function batsPassed(text) {
|
|
26
|
+
const summary = /^\s*(\d+) tests?, (\d+) failures?\b/m.exec(text);
|
|
27
|
+
if (summary)
|
|
28
|
+
return { passed: Number(summary[1]) > 0 && summary[2] === '0', count: Number(summary[1]) - Number(summary[2]) };
|
|
29
|
+
if (!/^1\.\.\d+\s*$/m.test(text) && !/^not ok \d+/m.test(text))
|
|
30
|
+
return null;
|
|
31
|
+
const oks = text.match(/^ok \d+/gm)?.length ?? 0;
|
|
32
|
+
return { passed: oks > 0 && !/^not ok \d+/m.test(text), count: oks };
|
|
33
|
+
}
|
|
34
|
+
/** The service's Ready condition, from JSON, YAML, a `value(...)` read of it, or the default view's first line. */
|
|
35
|
+
export function gcloudReady(text, shas) {
|
|
36
|
+
const t = String(text ?? '');
|
|
37
|
+
const sha = shas.find((s) => new RegExp(`(?<![0-9a-f])${s}`).test(t));
|
|
38
|
+
const withSha = (passed) => ({ passed, ...(passed ? { state: 'Ready' } : {}), ...(sha && passed ? { sha } : {}) });
|
|
39
|
+
const json = /"type"\s*:\s*"Ready"[^}]*?"status"\s*:\s*"(\w+)"|"status"\s*:\s*"(\w+)"[^}]*?"type"\s*:\s*"Ready"/.exec(t);
|
|
40
|
+
if (json)
|
|
41
|
+
return withSha((json[1] ?? json[2]) === 'True');
|
|
42
|
+
const yaml = /status:\s*'?(\w+)'?\s*\n\s*type:\s*Ready\b|type:\s*Ready\s*\n\s*status:\s*'?(\w+)'?/.exec(t);
|
|
43
|
+
if (yaml)
|
|
44
|
+
return withSha((yaml[1] ?? yaml[2]) === 'True');
|
|
45
|
+
const lines = t.split(/\r?\n/).map((l) => l.trim()).filter(Boolean);
|
|
46
|
+
if (lines.length === 1 && /^(?:True|False|Unknown)$/.test(lines[0]))
|
|
47
|
+
return withSha(lines[0] === 'True');
|
|
48
|
+
if (/^✔ Service\b/.test(lines[0] ?? ''))
|
|
49
|
+
return withSha(true);
|
|
50
|
+
return { passed: false };
|
|
51
|
+
}
|
|
52
|
+
/** A health read that came back: nothing unhealthy, down or failing in it. */
|
|
53
|
+
export function healthy(text) {
|
|
54
|
+
const t = String(text ?? '').trim();
|
|
55
|
+
return t !== '' && !/\b(?:unhealthy|down|degraded|fail\w*|errors?|starting|unavailable)\b/i.test(t);
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=check-reads.js.map
|