@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.
- package/README.md +144 -7
- package/dist/cli/args.d.ts +74 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +339 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/check.d.ts +2 -0
- package/dist/cli/check.d.ts.map +1 -0
- package/dist/cli/check.js +110 -0
- package/dist/cli/check.js.map +1 -0
- package/dist/cli/exit-codes.d.ts +7 -0
- package/dist/cli/exit-codes.d.ts.map +1 -0
- package/dist/cli/exit-codes.js +11 -0
- package/dist/cli/exit-codes.js.map +1 -0
- package/dist/cli/help.d.ts +7 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +110 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/index.d.ts +4 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +170 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/inspect.d.ts +3 -0
- package/dist/cli/inspect.d.ts.map +1 -0
- package/dist/cli/inspect.js +170 -0
- package/dist/cli/inspect.js.map +1 -0
- package/dist/cli/ls.d.ts +2 -0
- package/dist/cli/ls.d.ts.map +1 -0
- package/dist/cli/ls.js +10 -0
- package/dist/cli/ls.js.map +1 -0
- package/dist/cli/render.d.ts +8 -0
- package/dist/cli/render.d.ts.map +1 -0
- package/dist/cli/render.js +55 -0
- package/dist/cli/render.js.map +1 -0
- package/dist/cli/resolve-harness.d.ts +4 -0
- package/dist/cli/resolve-harness.d.ts.map +1 -0
- package/dist/cli/resolve-harness.js +31 -0
- package/dist/cli/resolve-harness.js.map +1 -0
- package/dist/cli/run.d.ts +2 -0
- package/dist/cli/run.d.ts.map +1 -0
- package/dist/cli/run.js +280 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/cli/session.d.ts +2 -0
- package/dist/cli/session.d.ts.map +1 -0
- package/dist/cli/session.js +128 -0
- package/dist/cli/session.js.map +1 -0
- package/dist/cli/version.d.ts +2 -0
- package/dist/cli/version.d.ts.map +1 -0
- package/dist/cli/version.js +34 -0
- package/dist/cli/version.js.map +1 -0
- package/dist/cli.js +2 -0
- package/dist/execution/decode.d.ts.map +1 -1
- package/dist/execution/decode.js +32 -0
- package/dist/execution/decode.js.map +1 -1
- package/dist/execution/deps.d.ts +7 -1
- package/dist/execution/deps.d.ts.map +1 -1
- package/dist/execution/events.d.ts +6 -2
- package/dist/execution/events.d.ts.map +1 -1
- package/dist/execution/events.js.map +1 -1
- package/dist/execution/failure.d.ts +45 -0
- package/dist/execution/failure.d.ts.map +1 -0
- package/dist/execution/failure.js +121 -0
- package/dist/execution/failure.js.map +1 -0
- package/dist/execution/node-deps.d.ts.map +1 -1
- package/dist/execution/node-deps.js +19 -0
- package/dist/execution/node-deps.js.map +1 -1
- package/dist/execution/stream-turn.d.ts +2 -0
- package/dist/execution/stream-turn.d.ts.map +1 -1
- package/dist/execution/stream-turn.js +181 -16
- package/dist/execution/stream-turn.js.map +1 -1
- package/dist/interpretation/argv.d.ts +16 -4
- package/dist/interpretation/argv.d.ts.map +1 -1
- package/dist/interpretation/argv.js +68 -19
- package/dist/interpretation/argv.js.map +1 -1
- package/dist/interpretation/dimensions.d.ts +0 -2
- package/dist/interpretation/dimensions.d.ts.map +1 -1
- package/dist/interpretation/dimensions.js +0 -2
- package/dist/interpretation/dimensions.js.map +1 -1
- package/dist/interpretation/limits.d.ts +10 -1
- package/dist/interpretation/limits.d.ts.map +1 -1
- package/dist/interpretation/limits.js +84 -5
- package/dist/interpretation/limits.js.map +1 -1
- package/dist/interpretation/refusal.d.ts +31 -0
- package/dist/interpretation/refusal.d.ts.map +1 -0
- package/dist/interpretation/refusal.js +87 -0
- package/dist/interpretation/refusal.js.map +1 -0
- package/dist/interpretation/turn-options.d.ts +18 -0
- package/dist/interpretation/turn-options.d.ts.map +1 -0
- package/dist/interpretation/turn-options.js +417 -0
- package/dist/interpretation/turn-options.js.map +1 -0
- package/dist/interpretation/vocabulary.d.ts +5 -0
- package/dist/interpretation/vocabulary.d.ts.map +1 -1
- package/dist/interpretation/vocabulary.js +1 -1
- package/dist/interpretation/vocabulary.js.map +1 -1
- package/dist/knowledge/claude-code.d.ts +13 -1
- package/dist/knowledge/claude-code.d.ts.map +1 -1
- package/dist/knowledge/claude-code.js +35 -13
- package/dist/knowledge/claude-code.js.map +1 -1
- package/dist/knowledge/codex.d.ts.map +1 -1
- package/dist/knowledge/codex.js +25 -14
- package/dist/knowledge/codex.js.map +1 -1
- package/dist/knowledge/descriptor.d.ts +118 -14
- package/dist/knowledge/descriptor.d.ts.map +1 -1
- package/dist/knowledge/descriptor.js +58 -0
- package/dist/knowledge/descriptor.js.map +1 -1
- package/dist/knowledge/matchers.d.ts +3 -3
- package/dist/knowledge/matchers.d.ts.map +1 -1
- package/dist/knowledge/matchers.js +19 -6
- package/dist/knowledge/matchers.js.map +1 -1
- package/dist/knowledge/muse.d.ts +2 -2
- package/dist/knowledge/muse.d.ts.map +1 -1
- package/dist/knowledge/muse.js +22 -6
- package/dist/knowledge/muse.js.map +1 -1
- package/dist/knowledge/overrides.d.ts +7 -0
- package/dist/knowledge/overrides.d.ts.map +1 -1
- package/dist/knowledge/overrides.js +76 -0
- package/dist/knowledge/overrides.js.map +1 -1
- package/dist/knowledge/pi.d.ts.map +1 -1
- package/dist/knowledge/pi.js +25 -3
- package/dist/knowledge/pi.js.map +1 -1
- package/package.json +5 -2
- package/src/cli/args.ts +381 -0
- package/src/cli/check.ts +136 -0
- package/src/cli/exit-codes.ts +13 -0
- package/src/cli/help.ts +114 -0
- package/src/cli/index.ts +177 -0
- package/src/cli/inspect.ts +174 -0
- package/src/cli/ls.ts +14 -0
- package/src/cli/render.ts +62 -0
- package/src/cli/resolve-harness.ts +33 -0
- package/src/cli/run.ts +280 -0
- package/src/cli/session.ts +137 -0
- package/src/cli/version.ts +32 -0
- package/src/execution/decode.ts +32 -0
- package/src/execution/deps.ts +7 -1
- package/src/execution/events.ts +9 -2
- package/src/execution/failure.ts +159 -0
- package/src/execution/node-deps.ts +17 -0
- package/src/execution/stream-turn.ts +189 -17
- package/src/interpretation/argv.ts +85 -27
- package/src/interpretation/dimensions.ts +0 -6
- package/src/interpretation/limits.ts +97 -6
- package/src/interpretation/refusal.ts +116 -0
- package/src/interpretation/turn-options.ts +424 -0
- package/src/interpretation/vocabulary.ts +1 -1
- package/src/knowledge/claude-code.ts +35 -13
- package/src/knowledge/codex.ts +25 -14
- package/src/knowledge/descriptor.ts +138 -12
- package/src/knowledge/matchers.ts +22 -9
- package/src/knowledge/muse.ts +22 -6
- package/src/knowledge/overrides.ts +97 -0
- 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;
|
|
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":"AAgBA;;;+CAG+C;AAC/C,MAAM,cAAc,GAAG,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"vocabulary.js","sourceRoot":"","sources":["../../src/interpretation/vocabulary.ts"],"names":[],"mappings":"AAgBA;;;+CAG+C;AAC/C,MAAM,CAAC,MAAM,cAAc,GAAG,uCAAuC,CAAC;AAOtE;kEACkE;AAClE,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAoB,EAAE,KAAa,EAAiB,EAAE;IACjF,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC;QAC1D,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC;QAC/B,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,EAAE,GAAG,OAAO,IAAI,OAAO,CAAC;IAC9B,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;AAC3D,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAoB,EAAE,KAAa,EAAa,EAAE;IAC9E,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC/C,IAAI,OAAO;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;IACrC,IAAI,CAAC,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC;QAC5B,uEAAuE;QACvE,yDAAyD;QACzD,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACrD,OAAO;YACL,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,kBAAkB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,mFAAmF;SAChJ,CAAC;IACJ,CAAC;IACD,OAAO;QACL,EAAE,EAAE,KAAK;QACT,MAAM,EAAE,WAAW,CAAC,CAAC,GAAG,UAAU,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;KAClK,CAAC;AACJ,CAAC,CAAC;AAEF;;8BAE8B;AAC9B,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAoB,EAAE,MAAc,EAAE,KAAc,EAAa,EAAE;IAChG,IAAI,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC;IAClC,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,UAAU,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACrE,MAAM,EAAE,EAAE,EAAE,GAAG,YAAY,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,EAAE,EAAE,CAAC;YAC7D,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YACjC,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,QAAQ,KAAK,SAAS;YAAE,MAAM,GAAG,QAAQ,CAAC;IAChD,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;IAC7D,OAAO;QACL,EAAE,EAAE,KAAK;QACT,MAAM,EAAE,WAAW,CAAC,CAAC,GAAG,WAAW,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,aAAa,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;KAC9J,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -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.
|
|
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
|
|
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.
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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":"AAAA
|
|
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,
|
|
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"}
|