@dungle-scrubs/harness-cli-normalizer 0.1.2 → 0.3.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.
Files changed (151) hide show
  1. package/README.md +144 -7
  2. package/dist/cli/args.d.ts +74 -0
  3. package/dist/cli/args.d.ts.map +1 -0
  4. package/dist/cli/args.js +339 -0
  5. package/dist/cli/args.js.map +1 -0
  6. package/dist/cli/check.d.ts +2 -0
  7. package/dist/cli/check.d.ts.map +1 -0
  8. package/dist/cli/check.js +110 -0
  9. package/dist/cli/check.js.map +1 -0
  10. package/dist/cli/exit-codes.d.ts +7 -0
  11. package/dist/cli/exit-codes.d.ts.map +1 -0
  12. package/dist/cli/exit-codes.js +11 -0
  13. package/dist/cli/exit-codes.js.map +1 -0
  14. package/dist/cli/help.d.ts +7 -0
  15. package/dist/cli/help.d.ts.map +1 -0
  16. package/dist/cli/help.js +110 -0
  17. package/dist/cli/help.js.map +1 -0
  18. package/dist/cli/index.d.ts +4 -0
  19. package/dist/cli/index.d.ts.map +1 -0
  20. package/dist/cli/index.js +170 -0
  21. package/dist/cli/index.js.map +1 -0
  22. package/dist/cli/inspect.d.ts +3 -0
  23. package/dist/cli/inspect.d.ts.map +1 -0
  24. package/dist/cli/inspect.js +170 -0
  25. package/dist/cli/inspect.js.map +1 -0
  26. package/dist/cli/ls.d.ts +2 -0
  27. package/dist/cli/ls.d.ts.map +1 -0
  28. package/dist/cli/ls.js +10 -0
  29. package/dist/cli/ls.js.map +1 -0
  30. package/dist/cli/render.d.ts +8 -0
  31. package/dist/cli/render.d.ts.map +1 -0
  32. package/dist/cli/render.js +55 -0
  33. package/dist/cli/render.js.map +1 -0
  34. package/dist/cli/resolve-harness.d.ts +4 -0
  35. package/dist/cli/resolve-harness.d.ts.map +1 -0
  36. package/dist/cli/resolve-harness.js +31 -0
  37. package/dist/cli/resolve-harness.js.map +1 -0
  38. package/dist/cli/run.d.ts +2 -0
  39. package/dist/cli/run.d.ts.map +1 -0
  40. package/dist/cli/run.js +280 -0
  41. package/dist/cli/run.js.map +1 -0
  42. package/dist/cli/session.d.ts +2 -0
  43. package/dist/cli/session.d.ts.map +1 -0
  44. package/dist/cli/session.js +128 -0
  45. package/dist/cli/session.js.map +1 -0
  46. package/dist/cli/version.d.ts +2 -0
  47. package/dist/cli/version.d.ts.map +1 -0
  48. package/dist/cli/version.js +34 -0
  49. package/dist/cli/version.js.map +1 -0
  50. package/dist/cli.js +2 -0
  51. package/dist/execution/decode.d.ts.map +1 -1
  52. package/dist/execution/decode.js +32 -0
  53. package/dist/execution/decode.js.map +1 -1
  54. package/dist/execution/deps.d.ts +7 -1
  55. package/dist/execution/deps.d.ts.map +1 -1
  56. package/dist/execution/events.d.ts +6 -2
  57. package/dist/execution/events.d.ts.map +1 -1
  58. package/dist/execution/events.js.map +1 -1
  59. package/dist/execution/failure.d.ts +45 -0
  60. package/dist/execution/failure.d.ts.map +1 -0
  61. package/dist/execution/failure.js +121 -0
  62. package/dist/execution/failure.js.map +1 -0
  63. package/dist/execution/node-deps.d.ts.map +1 -1
  64. package/dist/execution/node-deps.js +19 -0
  65. package/dist/execution/node-deps.js.map +1 -1
  66. package/dist/execution/stream-turn.d.ts +2 -0
  67. package/dist/execution/stream-turn.d.ts.map +1 -1
  68. package/dist/execution/stream-turn.js +181 -16
  69. package/dist/execution/stream-turn.js.map +1 -1
  70. package/dist/interpretation/argv.d.ts +16 -4
  71. package/dist/interpretation/argv.d.ts.map +1 -1
  72. package/dist/interpretation/argv.js +68 -19
  73. package/dist/interpretation/argv.js.map +1 -1
  74. package/dist/interpretation/dimensions.d.ts +0 -2
  75. package/dist/interpretation/dimensions.d.ts.map +1 -1
  76. package/dist/interpretation/dimensions.js +0 -2
  77. package/dist/interpretation/dimensions.js.map +1 -1
  78. package/dist/interpretation/limits.d.ts +10 -1
  79. package/dist/interpretation/limits.d.ts.map +1 -1
  80. package/dist/interpretation/limits.js +84 -5
  81. package/dist/interpretation/limits.js.map +1 -1
  82. package/dist/interpretation/refusal.d.ts +31 -0
  83. package/dist/interpretation/refusal.d.ts.map +1 -0
  84. package/dist/interpretation/refusal.js +87 -0
  85. package/dist/interpretation/refusal.js.map +1 -0
  86. package/dist/interpretation/turn-options.d.ts +18 -0
  87. package/dist/interpretation/turn-options.d.ts.map +1 -0
  88. package/dist/interpretation/turn-options.js +417 -0
  89. package/dist/interpretation/turn-options.js.map +1 -0
  90. package/dist/interpretation/vocabulary.d.ts +5 -0
  91. package/dist/interpretation/vocabulary.d.ts.map +1 -1
  92. package/dist/interpretation/vocabulary.js +1 -1
  93. package/dist/interpretation/vocabulary.js.map +1 -1
  94. package/dist/knowledge/claude-code.d.ts +13 -1
  95. package/dist/knowledge/claude-code.d.ts.map +1 -1
  96. package/dist/knowledge/claude-code.js +35 -13
  97. package/dist/knowledge/claude-code.js.map +1 -1
  98. package/dist/knowledge/codex.d.ts.map +1 -1
  99. package/dist/knowledge/codex.js +25 -14
  100. package/dist/knowledge/codex.js.map +1 -1
  101. package/dist/knowledge/descriptor.d.ts +118 -14
  102. package/dist/knowledge/descriptor.d.ts.map +1 -1
  103. package/dist/knowledge/descriptor.js +58 -0
  104. package/dist/knowledge/descriptor.js.map +1 -1
  105. package/dist/knowledge/matchers.d.ts +3 -3
  106. package/dist/knowledge/matchers.d.ts.map +1 -1
  107. package/dist/knowledge/matchers.js +19 -6
  108. package/dist/knowledge/matchers.js.map +1 -1
  109. package/dist/knowledge/muse.d.ts +2 -2
  110. package/dist/knowledge/muse.d.ts.map +1 -1
  111. package/dist/knowledge/muse.js +22 -6
  112. package/dist/knowledge/muse.js.map +1 -1
  113. package/dist/knowledge/overrides.d.ts +7 -0
  114. package/dist/knowledge/overrides.d.ts.map +1 -1
  115. package/dist/knowledge/overrides.js +76 -0
  116. package/dist/knowledge/overrides.js.map +1 -1
  117. package/dist/knowledge/pi.d.ts.map +1 -1
  118. package/dist/knowledge/pi.js +25 -3
  119. package/dist/knowledge/pi.js.map +1 -1
  120. package/package.json +5 -2
  121. package/src/cli/args.ts +381 -0
  122. package/src/cli/check.ts +136 -0
  123. package/src/cli/exit-codes.ts +13 -0
  124. package/src/cli/help.ts +114 -0
  125. package/src/cli/index.ts +177 -0
  126. package/src/cli/inspect.ts +174 -0
  127. package/src/cli/ls.ts +14 -0
  128. package/src/cli/render.ts +62 -0
  129. package/src/cli/resolve-harness.ts +33 -0
  130. package/src/cli/run.ts +280 -0
  131. package/src/cli/session.ts +137 -0
  132. package/src/cli/version.ts +32 -0
  133. package/src/execution/decode.ts +32 -0
  134. package/src/execution/deps.ts +7 -1
  135. package/src/execution/events.ts +9 -2
  136. package/src/execution/failure.ts +159 -0
  137. package/src/execution/node-deps.ts +17 -0
  138. package/src/execution/stream-turn.ts +189 -17
  139. package/src/interpretation/argv.ts +85 -27
  140. package/src/interpretation/dimensions.ts +0 -6
  141. package/src/interpretation/limits.ts +97 -6
  142. package/src/interpretation/refusal.ts +116 -0
  143. package/src/interpretation/turn-options.ts +424 -0
  144. package/src/interpretation/vocabulary.ts +1 -1
  145. package/src/knowledge/claude-code.ts +35 -13
  146. package/src/knowledge/codex.ts +25 -14
  147. package/src/knowledge/descriptor.ts +138 -12
  148. package/src/knowledge/matchers.ts +22 -9
  149. package/src/knowledge/muse.ts +22 -6
  150. package/src/knowledge/overrides.ts +97 -0
  151. package/src/knowledge/pi.ts +25 -3
@@ -0,0 +1,417 @@
1
+ import { DISCOVERY_FACETS, resolveRender, TURN_OPTION_KEYS } from "../knowledge/descriptor.js";
2
+ import { ArgvRefusalError } from "./refusal.js";
3
+ import { CLEAN_SELECTOR, resolveModel, validateEffort } from "./vocabulary.js";
4
+ // TOML-quoted value for config-kv: JSON.stringify is sufficient for the
5
+ // closed vocabularies that may use it (enum, effort) - no value contains a
6
+ // quote that would need escaping beyond JSON's.
7
+ const tomlQuote = (value) => JSON.stringify(value);
8
+ const isPlainObject = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
9
+ /** Render turn options for a given phase, in TURN_OPTION_KEYS order and with
10
+ * discovery facets in DISCOVERY_FACETS order, de-duplicating by exact token
11
+ * sequence (first wins) so claude's two facets sharing one flag emit once. */
12
+ export const renderTurnOptions = (h, opts, phase) => {
13
+ const sequences = [];
14
+ for (const key of TURN_OPTION_KEYS) {
15
+ const spec = h.turnOptions[key];
16
+ const raw = opts[key];
17
+ // Discovery is a table of facets, handled separately.
18
+ if (key === "discovery") {
19
+ const discovery = raw;
20
+ // omitted, null, or {} => no-op
21
+ if (discovery === undefined || discovery === null)
22
+ continue;
23
+ if (!isPlainObject(discovery)) {
24
+ throw new ArgvRefusalError({
25
+ issue: "invalid-option-value",
26
+ harness: h.name,
27
+ option: "discovery",
28
+ supported: ["discovery must be an object"],
29
+ detail: String(raw),
30
+ });
31
+ }
32
+ const discObj = discovery;
33
+ // If spec absent, any facet set to false must refuse.
34
+ if (spec === undefined) {
35
+ const requested = DISCOVERY_FACETS.filter((f) => discObj[f] === false);
36
+ if (requested.length === 0)
37
+ continue;
38
+ throw new ArgvRefusalError({
39
+ issue: "unsupported-option",
40
+ harness: h.name,
41
+ option: "discovery",
42
+ supported: Object.keys(h.turnOptions).length ? Object.keys(h.turnOptions) : ["(none)"],
43
+ detail: String(requested[0]),
44
+ });
45
+ }
46
+ if (spec.kind !== "discovery") {
47
+ throw new ArgvRefusalError({
48
+ issue: "invalid-option-value",
49
+ harness: h.name,
50
+ option: "discovery",
51
+ supported: ["discovery spec malformed"],
52
+ });
53
+ }
54
+ // Validate each facet value is boolean if present
55
+ for (const facet of DISCOVERY_FACETS) {
56
+ if (!(facet in discObj))
57
+ continue;
58
+ const v = discObj[facet];
59
+ if (v !== undefined && typeof v !== "boolean") {
60
+ throw new ArgvRefusalError({
61
+ issue: "invalid-option-value",
62
+ harness: h.name,
63
+ option: "discovery",
64
+ facet,
65
+ supported: ["true or false"],
66
+ detail: String(v),
67
+ });
68
+ }
69
+ }
70
+ // Render facets in DISCOVERY_FACETS order
71
+ for (const facet of DISCOVERY_FACETS) {
72
+ const val = discObj[facet];
73
+ if (val === undefined)
74
+ continue;
75
+ // Polarity handling: disables emits on false, enables emits on true
76
+ const facetSpec = spec.facets[facet];
77
+ if (facetSpec === undefined) {
78
+ // If caller asked to disable (false for disables, true for enables) but facet not declared, refuse
79
+ // But if caller passed true for a disables facet, it's a no-op, not a refusal
80
+ // So only refuse when the caller's value would have emitted
81
+ // For all current descriptors polarity is disables, so false would emit -> refuse
82
+ // For safety, check wouldEmit logic
83
+ // If val would not emit anyway, skip
84
+ // Determine wouldEmit: if facetSpec undefined, we cannot know polarity, so treat false as intended disable -> refuse
85
+ if (val === false) {
86
+ const supportedFacets = Object.keys(spec.facets);
87
+ throw new ArgvRefusalError({
88
+ issue: "unsupported-option-facet",
89
+ harness: h.name,
90
+ option: "discovery",
91
+ facet,
92
+ supported: supportedFacets.length ? supportedFacets : ["(none)"],
93
+ });
94
+ }
95
+ continue;
96
+ }
97
+ // Determine if this value should emit
98
+ let shouldEmit = false;
99
+ if (facetSpec.polarity === "disables" && val === false)
100
+ shouldEmit = true;
101
+ else if (facetSpec.polarity === "enables" && val === true)
102
+ shouldEmit = true;
103
+ else {
104
+ // true for disables or false for enables => no-op
105
+ continue;
106
+ }
107
+ if (!shouldEmit)
108
+ continue;
109
+ // Check resumeRender refusal
110
+ const effective = resolveRender(facetSpec, phase);
111
+ if (effective === null) {
112
+ const resumeSupported = Object.entries(spec.facets)
113
+ .filter(([, v]) => resolveRender(v, "resume") !== null)
114
+ .map(([k]) => k);
115
+ throw new ArgvRefusalError({
116
+ issue: "unsupported-on-resume",
117
+ harness: h.name,
118
+ option: "discovery",
119
+ facet,
120
+ supported: resumeSupported.length ? resumeSupported : ["(none resume)"],
121
+ });
122
+ }
123
+ // Reject config-kv for discovery (only closed vocab, discovery is not)
124
+ if (effective.kind === "config-kv") {
125
+ throw new ArgvRefusalError({
126
+ issue: "invalid-option-value",
127
+ harness: h.name,
128
+ option: "discovery",
129
+ facet,
130
+ supported: ["flag-list only for discovery"],
131
+ });
132
+ }
133
+ let seq;
134
+ if (effective.kind === "flag-list")
135
+ seq = [...effective.flags];
136
+ else if (effective.kind === "flag-value")
137
+ seq = [effective.flag, ""];
138
+ else
139
+ seq = [];
140
+ sequences.push(seq);
141
+ }
142
+ continue;
143
+ }
144
+ // Non-discovery keys
145
+ // Handle enum default on launch
146
+ if (raw === undefined) {
147
+ if (spec !== undefined &&
148
+ spec.kind === "enum" &&
149
+ spec.default !== undefined &&
150
+ phase === "launch") {
151
+ const effective = resolveRender(spec, phase);
152
+ if (effective === null)
153
+ continue; // should not happen for launch
154
+ // config-kv is allowed for enum (closed vocab) - no rejection needed here
155
+ let seq;
156
+ if (effective.kind === "flag-value")
157
+ seq = [effective.flag, spec.default];
158
+ else if (effective.kind === "config-kv")
159
+ seq = [
160
+ effective.flag,
161
+ `${effective.key}=${tomlQuote(spec.default)}`,
162
+ ];
163
+ else if (effective.kind === "flag-list")
164
+ seq = [...effective.flags];
165
+ else
166
+ seq = [];
167
+ sequences.push(seq);
168
+ }
169
+ continue;
170
+ }
171
+ // Raw is defined but spec is absent => unsupported-option
172
+ if (spec === undefined) {
173
+ throw new ArgvRefusalError({
174
+ issue: "unsupported-option",
175
+ harness: h.name,
176
+ option: key,
177
+ supported: Object.keys(h.turnOptions).length ? Object.keys(h.turnOptions) : ["(none)"],
178
+ detail: String(raw),
179
+ });
180
+ }
181
+ // Check resumeRender null => unsupported-on-resume
182
+ // For discovery we handled per-facet; for others check spec
183
+ if (spec.kind !== "discovery") {
184
+ const effective = resolveRender(spec, phase);
185
+ if (effective === null) {
186
+ const resumeSupported = TURN_OPTION_KEYS.filter((k) => {
187
+ const s = h.turnOptions[k];
188
+ if (!s)
189
+ return false;
190
+ if (s.kind === "discovery") {
191
+ const facets = s.facets;
192
+ return Object.keys(facets).length > 0;
193
+ }
194
+ return resolveRender(s, "resume") !== null;
195
+ });
196
+ throw new ArgvRefusalError({
197
+ issue: "unsupported-on-resume",
198
+ harness: h.name,
199
+ option: key,
200
+ supported: resumeSupported.length ? resumeSupported : ["(none)"],
201
+ });
202
+ }
203
+ // Reject config-kv for non-closed vocabulary
204
+ if (spec.render.kind === "config-kv" &&
205
+ spec.kind !== "enum" &&
206
+ spec.kind !== "effort") {
207
+ throw new ArgvRefusalError({
208
+ issue: "invalid-option-value",
209
+ harness: h.name,
210
+ option: key,
211
+ supported: ["config-kv only for enum and effort (closed vocabularies)"],
212
+ });
213
+ }
214
+ }
215
+ // Per-kind validation and token generation
216
+ const effectiveRender = spec.kind === "discovery"
217
+ ? null
218
+ : resolveRender(spec, phase);
219
+ // effectiveRender already checked for null
220
+ switch (spec.kind) {
221
+ case "effort": {
222
+ if (typeof raw !== "string") {
223
+ throw new ArgvRefusalError({
224
+ issue: "invalid-option-value",
225
+ harness: h.name,
226
+ option: key,
227
+ supported: [...h.vocabulary.efforts],
228
+ detail: String(raw),
229
+ });
230
+ }
231
+ const validated = validateEffort(h, raw, opts.model);
232
+ if (!validated.ok) {
233
+ let ladder = h.vocabulary.efforts;
234
+ const model = opts.model;
235
+ if (model !== undefined && h.vocabulary.effortsByModel !== undefined) {
236
+ const { id } = resolveModel(h, model);
237
+ const perModel = Object.hasOwn(h.vocabulary.effortsByModel, id)
238
+ ? h.vocabulary.effortsByModel[id]
239
+ : undefined;
240
+ if (perModel !== undefined)
241
+ ladder = perModel;
242
+ }
243
+ throw new ArgvRefusalError({
244
+ issue: "unknown-effort",
245
+ harness: h.name,
246
+ option: key,
247
+ supported: [...ladder],
248
+ detail: raw,
249
+ });
250
+ }
251
+ const r = effectiveRender;
252
+ let seq;
253
+ if (r.kind === "flag-value")
254
+ seq = [r.flag, raw];
255
+ else if (r.kind === "config-kv")
256
+ seq = [r.flag, `${r.key}=${tomlQuote(raw)}`];
257
+ else if (r.kind === "flag-list")
258
+ seq = [...r.flags];
259
+ else
260
+ seq = [];
261
+ sequences.push(seq);
262
+ break;
263
+ }
264
+ case "enum": {
265
+ if (typeof raw !== "string") {
266
+ throw new ArgvRefusalError({
267
+ issue: "invalid-option-value",
268
+ harness: h.name,
269
+ option: key,
270
+ supported: [...spec.values],
271
+ detail: String(raw),
272
+ });
273
+ }
274
+ if (!spec.values.includes(raw)) {
275
+ throw new ArgvRefusalError({
276
+ issue: "invalid-option-value",
277
+ harness: h.name,
278
+ option: key,
279
+ supported: [...spec.values],
280
+ detail: raw,
281
+ });
282
+ }
283
+ const r = effectiveRender;
284
+ let seq;
285
+ if (r.kind === "flag-value")
286
+ seq = [r.flag, raw];
287
+ else if (r.kind === "config-kv")
288
+ seq = [r.flag, `${r.key}=${tomlQuote(raw)}`];
289
+ else if (r.kind === "flag-list")
290
+ seq = [...r.flags];
291
+ else
292
+ seq = [];
293
+ sequences.push(seq);
294
+ break;
295
+ }
296
+ case "selector": {
297
+ if (typeof raw !== "string") {
298
+ throw new ArgvRefusalError({
299
+ issue: "invalid-option-value",
300
+ harness: h.name,
301
+ option: key,
302
+ supported: ["CLEAN_SELECTOR"],
303
+ detail: String(raw),
304
+ });
305
+ }
306
+ if (!CLEAN_SELECTOR.test(raw)) {
307
+ throw new ArgvRefusalError({
308
+ issue: "invalid-option-value",
309
+ harness: h.name,
310
+ option: key,
311
+ supported: ["must match CLEAN_SELECTOR /^[A-Za-z0-9][A-Za-z0-9._:/@-]{0,127}$/"],
312
+ detail: raw,
313
+ });
314
+ }
315
+ const r = effectiveRender;
316
+ let seq;
317
+ if (r.kind === "flag-value")
318
+ seq = [r.flag, raw];
319
+ else if (r.kind === "config-kv")
320
+ seq = [r.flag, `${r.key}=${tomlQuote(raw)}`];
321
+ else if (r.kind === "flag-list")
322
+ seq = [...r.flags];
323
+ else
324
+ seq = [];
325
+ sequences.push(seq);
326
+ break;
327
+ }
328
+ case "toggle": {
329
+ if (typeof raw !== "boolean") {
330
+ throw new ArgvRefusalError({
331
+ issue: "invalid-option-value",
332
+ harness: h.name,
333
+ option: key,
334
+ supported: ["true or false"],
335
+ detail: String(raw),
336
+ });
337
+ }
338
+ let shouldEmit = false;
339
+ if (spec.polarity === "disables" && raw === false)
340
+ shouldEmit = true;
341
+ else if (spec.polarity === "enables" && raw === true)
342
+ shouldEmit = true;
343
+ if (!shouldEmit)
344
+ break;
345
+ const r = effectiveRender;
346
+ let seq;
347
+ if (r.kind === "flag-list")
348
+ seq = [...r.flags];
349
+ else if (r.kind === "flag-value")
350
+ seq = [r.flag, String(raw)];
351
+ else if (r.kind === "config-kv")
352
+ seq = [r.flag, `${r.key}=${tomlQuote(String(raw))}`];
353
+ else
354
+ seq = [];
355
+ sequences.push(seq);
356
+ break;
357
+ }
358
+ case "integer": {
359
+ if (typeof raw !== "number") {
360
+ throw new ArgvRefusalError({
361
+ issue: "invalid-option-value",
362
+ harness: h.name,
363
+ option: key,
364
+ supported: [`[${spec.min}, ${spec.max}] integer`],
365
+ detail: String(raw),
366
+ });
367
+ }
368
+ if (!Number.isFinite(raw) || !Number.isInteger(raw) || raw < spec.min || raw > spec.max) {
369
+ throw new ArgvRefusalError({
370
+ issue: "invalid-option-value",
371
+ harness: h.name,
372
+ option: key,
373
+ supported: [`[${spec.min}, ${spec.max}] integer`],
374
+ detail: String(raw),
375
+ });
376
+ }
377
+ const r = effectiveRender;
378
+ let seq;
379
+ if (r.kind === "flag-value")
380
+ seq = [r.flag, String(raw)];
381
+ else if (r.kind === "config-kv")
382
+ seq = [r.flag, `${r.key}=${tomlQuote(String(raw))}`];
383
+ else if (r.kind === "flag-list")
384
+ seq = [...r.flags];
385
+ else
386
+ seq = [];
387
+ sequences.push(seq);
388
+ break;
389
+ }
390
+ case "discovery":
391
+ // already handled
392
+ break;
393
+ default: {
394
+ const _exhaustive = spec;
395
+ throw new ArgvRefusalError({
396
+ issue: "invalid-option-value",
397
+ harness: h.name,
398
+ option: key,
399
+ supported: [],
400
+ detail: String(_exhaustive),
401
+ });
402
+ }
403
+ }
404
+ }
405
+ // De-duplication by exact token sequence, first occurrence winning
406
+ const seen = new Set();
407
+ const deduped = [];
408
+ for (const seq of sequences) {
409
+ const k = seq.join("\0");
410
+ if (seen.has(k))
411
+ continue;
412
+ seen.add(k);
413
+ deduped.push(seq);
414
+ }
415
+ return deduped.flat();
416
+ };
417
+ //# sourceMappingURL=turn-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turn-options.js","sourceRoot":"","sources":["../../src/interpretation/turn-options.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,11 @@ export interface ValidationRefusal {
14
14
  readonly ok: false;
15
15
  readonly reason: string;
16
16
  }
17
+ /** The selector grammar an extensible registry still demands: pi documents
18
+ * models as provider/id[:thinking], so word characters plus the few real
19
+ * separators - never whitespace, shell metacharacters, or control/format
20
+ * characters, and bounded like session ids. */
21
+ export declare const CLEAN_SELECTOR: RegExp;
17
22
  export interface ResolvedModel {
18
23
  readonly id: string;
19
24
  readonly curated: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"vocabulary.d.ts","sourceRoot":"","sources":["../../src/interpretation/vocabulary.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,MAAM,MAAM,SAAS,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,iBAAiB,CAAC;AAEvF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAQD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;kEACkE;AAClE,eAAO,MAAM,YAAY,MAAO,iBAAiB,SAAS,MAAM,KAAG,aAOlE,CAAC;AAEF,eAAO,MAAM,aAAa,MAAO,iBAAiB,SAAS,MAAM,KAAG,SAgBnE,CAAC;AAEF;;8BAE8B;AAC9B,eAAO,MAAM,cAAc,MAAO,iBAAiB,UAAU,MAAM,UAAU,MAAM,KAAG,SAcrF,CAAC"}
1
+ {"version":3,"file":"vocabulary.d.ts","sourceRoot":"","sources":["../../src/interpretation/vocabulary.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEpE,MAAM,MAAM,SAAS,GAAG;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,iBAAiB,CAAC;AAEvF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED;;;+CAG+C;AAC/C,eAAO,MAAM,cAAc,QAA0C,CAAC;AAEtE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC3B;AAED;kEACkE;AAClE,eAAO,MAAM,YAAY,MAAO,iBAAiB,SAAS,MAAM,KAAG,aAOlE,CAAC;AAEF,eAAO,MAAM,aAAa,MAAO,iBAAiB,SAAS,MAAM,KAAG,SAgBnE,CAAC;AAEF;;8BAE8B;AAC9B,eAAO,MAAM,cAAc,MAAO,iBAAiB,UAAU,MAAM,UAAU,MAAM,KAAG,SAcrF,CAAC"}
@@ -2,7 +2,7 @@
2
2
  * models as provider/id[:thinking], so word characters plus the few real
3
3
  * separators - never whitespace, shell metacharacters, or control/format
4
4
  * characters, and bounded like session ids. */
5
- const CLEAN_SELECTOR = /^[A-Za-z0-9][A-Za-z0-9._:/@-]{0,127}$/;
5
+ export const CLEAN_SELECTOR = /^[A-Za-z0-9][A-Za-z0-9._:/@-]{0,127}$/;
6
6
  /** Alias-resolve a model selector. Object.hasOwn guards the alias lookup -
7
7
  * "__proto__" must resolve to itself, not to Object.prototype. */
8
8
  export const resolveModel = (h, model) => {
@@ -1 +1 @@
1
- {"version":3,"file":"vocabulary.js","sourceRoot":"","sources":["../../src/interpretation/vocabulary.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"vocabulary.js","sourceRoot":"","sources":["../../src/interpretation/vocabulary.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,19 @@
1
1
  /**
2
2
  * The claude-code descriptor: facts about the `claude` CLI as data, verified
3
- * against claude 2.1.227 and the 00-chat-substrate spike evidence (A-001,
3
+ * against claude 2.1.229 and the 00-chat-substrate spike evidence (A-001,
4
4
  * A-002, A-005). No process logic lives here.
5
+ *
6
+ * Discovery: claude 2.1.229 has no isolated instruction-file toggle.
7
+ * `--bare` would stop `CLAUDE.md` discovery, but it also skips hooks, LSP,
8
+ * plugin sync, auto-memory and keychain reads, and forces auth to
9
+ * `ANTHROPIC_API_KEY` / `apiKeyHelper` (OAuth never read) - so a caller
10
+ * authenticated via OAuth would break. The descriptor therefore offers no
11
+ * `instructionFiles` facet and a call passing it must refuse. Likewise
12
+ * `tools` has no discovery flag on claude and refuses.
13
+ *
14
+ * Effort: A-002 showed `--effort bogus` warns on stderr and runs at DEFAULT
15
+ * effort, exit 0, with nothing echoed in the stream. The library-side
16
+ * `validateEffort` refusal is therefore load-bearing, not cosmetic.
5
17
  */
6
18
  import { type HarnessDescriptor } from "./descriptor.js";
7
19
  export declare const claudeCode: HarnessDescriptor;
@@ -1 +1 @@
1
- {"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../src/knowledge/claude-code.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAAc,KAAK,iBAAiB,EAAc,MAAM,iBAAiB,CAAC;AAGjF,eAAO,MAAM,UAAU,EAAE,iBA2HvB,CAAC"}
1
+ {"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../src/knowledge/claude-code.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAc,KAAK,iBAAiB,EAAc,MAAM,iBAAiB,CAAC;AAGjF,eAAO,MAAM,UAAU,EAAE,iBAqIvB,CAAC"}
@@ -1,14 +1,26 @@
1
1
  /**
2
2
  * The claude-code descriptor: facts about the `claude` CLI as data, verified
3
- * against claude 2.1.227 and the 00-chat-substrate spike evidence (A-001,
3
+ * against claude 2.1.229 and the 00-chat-substrate spike evidence (A-001,
4
4
  * A-002, A-005). No process logic lives here.
5
+ *
6
+ * Discovery: claude 2.1.229 has no isolated instruction-file toggle.
7
+ * `--bare` would stop `CLAUDE.md` discovery, but it also skips hooks, LSP,
8
+ * plugin sync, auto-memory and keychain reads, and forces auth to
9
+ * `ANTHROPIC_API_KEY` / `apiKeyHelper` (OAuth never read) - so a caller
10
+ * authenticated via OAuth would break. The descriptor therefore offers no
11
+ * `instructionFiles` facet and a call passing it must refuse. Likewise
12
+ * `tools` has no discovery flag on claude and refuses.
13
+ *
14
+ * Effort: A-002 showed `--effort bogus` warns on stderr and runs at DEFAULT
15
+ * effort, exit 0, with nothing echoed in the stream. The library-side
16
+ * `validateEffort` refusal is therefore load-bearing, not cosmetic.
5
17
  */
6
18
  import { deepFreeze, UUID_SHAPE } from "./descriptor.js";
7
19
  import { SHARED_AUTH_MATCHERS, SHARED_LIMIT_MATCHERS } from "./matchers.js";
8
20
  export const claudeCode = deepFreeze({
9
21
  name: "claude",
10
22
  bin: "claude",
11
- verifiedAgainst: "2.1.227",
23
+ verifiedAgainst: "2.1.229",
12
24
  versionSource: { kind: "npm", package: "@anthropic-ai/claude-code" },
13
25
  launch: {
14
26
  baseFlags: ["-p"],
@@ -68,17 +80,17 @@ export const claudeCode = deepFreeze({
68
80
  limitMatchers: [
69
81
  // Observed phrasings from the live CLI (ported from lucid v1's limits.ts):
70
82
  // "You've hit your session limit · resets 6:30pm"
71
- [/you'?ve hit your session limit/i, "session-limit"],
83
+ { pattern: "you'?ve hit your session limit", flags: "i", code: "session-limit" },
72
84
  // "You've hit your weekly limit · resets 2am (Asia/Bangkok)"
73
- [/you'?ve hit your weekly limit/i, "weekly-limit"],
85
+ { pattern: "you'?ve hit your weekly limit", flags: "i", code: "weekly-limit" },
74
86
  ...SHARED_LIMIT_MATCHERS,
75
87
  ],
76
88
  authMatchers: [
77
89
  // A detached process cannot read Keychain creds, and misreading that as
78
90
  // "not logged in" sends the human to redo a login that was never broken.
79
- [/oauth session expired|could not be refreshed/i, "expired"],
80
- [/failed to authenticate/i, "expired"],
81
- [/not logged in|please run \/login/i, "not-logged-in"],
91
+ { pattern: "oauth session expired|could not be refreshed", flags: "i", kind: "expired" },
92
+ { pattern: "failed to authenticate", flags: "i", kind: "expired" },
93
+ { pattern: "not logged in|please run \\/login", flags: "i", kind: "not-logged-in" },
82
94
  ...SHARED_AUTH_MATCHERS,
83
95
  ],
84
96
  autonomy: { flag: "--dangerously-skip-permissions" },
@@ -92,8 +104,6 @@ export const claudeCode = deepFreeze({
92
104
  haiku: "claude-haiku-4-5-20251001",
93
105
  },
94
106
  efforts: ["low", "medium", "high", "xhigh", "max"],
95
- // Effort is an in-session command for claude, not a launch flag.
96
- effortFlag: null,
97
107
  extensible: false,
98
108
  },
99
109
  store: {
@@ -110,11 +120,7 @@ export const claudeCode = deepFreeze({
110
120
  usedPctField: "used_percentage",
111
121
  },
112
122
  resumeLast: null,
113
- provider: null,
114
123
  stdin: "inherit",
115
- // D-025: project-only setting sources is claude's discovery-isolation
116
- // spelling; the child loads no user-level hooks or skills.
117
- discoveryDisableFlags: ["--setting-sources", "project"],
118
124
  presence: {
119
125
  headlessMarkers: ["-p", "--print"],
120
126
  },
@@ -128,5 +134,21 @@ export const claudeCode = deepFreeze({
128
134
  },
129
135
  session: true,
130
136
  },
137
+ turnOptions: {
138
+ effort: { kind: "effort", render: { kind: "flag-value", flag: "--effort" } },
139
+ discovery: {
140
+ kind: "discovery",
141
+ facets: {
142
+ extensions: {
143
+ polarity: "disables",
144
+ render: { kind: "flag-list", flags: ["--setting-sources", "project"] },
145
+ },
146
+ skills: {
147
+ polarity: "disables",
148
+ render: { kind: "flag-list", flags: ["--setting-sources", "project"] },
149
+ },
150
+ },
151
+ },
152
+ },
131
153
  });
132
154
  //# sourceMappingURL=claude-code.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../src/knowledge/claude-code.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../src/knowledge/claude-code.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/knowledge/codex.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAc,KAAK,iBAAiB,EAAc,MAAM,iBAAiB,CAAC;AAGjF,eAAO,MAAM,QAAQ,EAAE,iBAgGrB,CAAC"}
1
+ {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/knowledge/codex.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAc,KAAK,iBAAiB,EAAc,MAAM,iBAAiB,CAAC;AAGjF,eAAO,MAAM,QAAQ,EAAE,iBA2GrB,CAAC"}