systemoneprompts 0.1.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/CHANGELOG.md +12 -0
- package/LICENSE +21 -0
- package/README.md +214 -0
- package/dist/answers.d.ts +21 -0
- package/dist/answers.d.ts.map +1 -0
- package/dist/answers.js +104 -0
- package/dist/answers.js.map +1 -0
- package/dist/cli/cache.d.ts +2 -0
- package/dist/cli/cache.d.ts.map +1 -0
- package/dist/cli/cache.js +26 -0
- package/dist/cli/cache.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 +28 -0
- package/dist/cli/check.js.map +1 -0
- package/dist/cli/env.d.ts +2 -0
- package/dist/cli/env.d.ts.map +1 -0
- package/dist/cli/env.js +29 -0
- package/dist/cli/env.js.map +1 -0
- package/dist/cli/eval.d.ts +18 -0
- package/dist/cli/eval.d.ts.map +1 -0
- package/dist/cli/eval.js +314 -0
- package/dist/cli/eval.js.map +1 -0
- package/dist/cli/generate.d.ts +5 -0
- package/dist/cli/generate.d.ts.map +1 -0
- package/dist/cli/generate.js +93 -0
- package/dist/cli/generate.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +76 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/io.d.ts +28 -0
- package/dist/cli/io.d.ts.map +1 -0
- package/dist/cli/io.js +88 -0
- package/dist/cli/io.js.map +1 -0
- package/dist/cli/run.d.ts +7 -0
- package/dist/cli/run.d.ts.map +1 -0
- package/dist/cli/run.js +63 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/client.d.ts +65 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +301 -0
- package/dist/client.js.map +1 -0
- package/dist/cloudflare.d.ts +29 -0
- package/dist/cloudflare.d.ts.map +1 -0
- package/dist/cloudflare.js +159 -0
- package/dist/cloudflare.js.map +1 -0
- package/dist/definition/check.d.ts +9 -0
- package/dist/definition/check.d.ts.map +1 -0
- package/dist/definition/check.js +26 -0
- package/dist/definition/check.js.map +1 -0
- package/dist/definition/diagnostics.d.ts +29 -0
- package/dist/definition/diagnostics.d.ts.map +1 -0
- package/dist/definition/diagnostics.js +74 -0
- package/dist/definition/diagnostics.js.map +1 -0
- package/dist/definition/locate.d.ts +23 -0
- package/dist/definition/locate.d.ts.map +1 -0
- package/dist/definition/locate.js +211 -0
- package/dist/definition/locate.js.map +1 -0
- package/dist/definition/parse.d.ts +15 -0
- package/dist/definition/parse.d.ts.map +1 -0
- package/dist/definition/parse.js +170 -0
- package/dist/definition/parse.js.map +1 -0
- package/dist/definition/schema.d.ts +39 -0
- package/dist/definition/schema.d.ts.map +1 -0
- package/dist/definition/schema.js +11 -0
- package/dist/definition/schema.js.map +1 -0
- package/dist/dev/cache.d.ts +58 -0
- package/dist/dev/cache.d.ts.map +1 -0
- package/dist/dev/cache.js +287 -0
- package/dist/dev/cache.js.map +1 -0
- package/dist/dev/index.d.ts +2 -0
- package/dist/dev/index.d.ts.map +1 -0
- package/dist/dev/index.js +3 -0
- package/dist/dev/index.js.map +1 -0
- package/dist/factors/evaluate.d.ts +21 -0
- package/dist/factors/evaluate.d.ts.map +1 -0
- package/dist/factors/evaluate.js +199 -0
- package/dist/factors/evaluate.js.map +1 -0
- package/dist/factors/graph.d.ts +7 -0
- package/dist/factors/graph.d.ts.map +1 -0
- package/dist/factors/graph.js +39 -0
- package/dist/factors/graph.js.map +1 -0
- package/dist/factors/schema.d.ts +54 -0
- package/dist/factors/schema.d.ts.map +1 -0
- package/dist/factors/schema.js +235 -0
- package/dist/factors/schema.js.map +1 -0
- package/dist/generate/generate.d.ts +16 -0
- package/dist/generate/generate.d.ts.map +1 -0
- package/dist/generate/generate.js +100 -0
- package/dist/generate/generate.js.map +1 -0
- package/dist/generate/types.d.ts +10 -0
- package/dist/generate/types.d.ts.map +1 -0
- package/dist/generate/types.js +126 -0
- package/dist/generate/types.js.map +1 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -0
- package/dist/index.js.map +1 -0
- package/dist/json.d.ts +6 -0
- package/dist/json.d.ts.map +1 -0
- package/dist/json.js +52 -0
- package/dist/json.js.map +1 -0
- package/dist/model.d.ts +9 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/model.js +22 -0
- package/dist/model.js.map +1 -0
- package/dist/native.d.ts +97 -0
- package/dist/native.d.ts.map +1 -0
- package/dist/native.js +2 -0
- package/dist/native.js.map +1 -0
- package/dist/patterns/index.d.ts +3 -0
- package/dist/patterns/index.d.ts.map +1 -0
- package/dist/patterns/index.js +3 -0
- package/dist/patterns/index.js.map +1 -0
- package/dist/patterns/options.d.ts +2 -0
- package/dist/patterns/options.d.ts.map +1 -0
- package/dist/patterns/options.js +7 -0
- package/dist/patterns/options.js.map +1 -0
- package/dist/patterns/run-many.d.ts +41 -0
- package/dist/patterns/run-many.d.ts.map +1 -0
- package/dist/patterns/run-many.js +51 -0
- package/dist/patterns/run-many.js.map +1 -0
- package/dist/patterns/walk-taxonomy.d.ts +37 -0
- package/dist/patterns/walk-taxonomy.d.ts.map +1 -0
- package/dist/patterns/walk-taxonomy.js +81 -0
- package/dist/patterns/walk-taxonomy.js.map +1 -0
- package/dist/questions/references.d.ts +12 -0
- package/dist/questions/references.d.ts.map +1 -0
- package/dist/questions/references.js +76 -0
- package/dist/questions/references.js.map +1 -0
- package/dist/questions/schema.d.ts +18 -0
- package/dist/questions/schema.d.ts.map +1 -0
- package/dist/questions/schema.js +169 -0
- package/dist/questions/schema.js.map +1 -0
- package/dist/state/paths.d.ts +13 -0
- package/dist/state/paths.d.ts.map +1 -0
- package/dist/state/paths.js +70 -0
- package/dist/state/paths.js.map +1 -0
- package/dist/state/requirements.d.ts +25 -0
- package/dist/state/requirements.d.ts.map +1 -0
- package/dist/state/requirements.js +189 -0
- package/dist/state/requirements.js.map +1 -0
- package/docs/SPEC.html +57 -0
- package/docs/skills/systemoneprompts/SKILL.md +239 -0
- package/docs/skills/systemoneprompts/references/application-data.md +79 -0
- package/package.json +94 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import { checkDefinition } from "../definition/check.js";
|
|
3
|
+
import { errorsOf, SystemOnePromptsError } from "../definition/diagnostics.js";
|
|
4
|
+
import { parseDefinition } from "../definition/parse.js";
|
|
5
|
+
import { emitRequiredState } from "./types.js";
|
|
6
|
+
/**
|
|
7
|
+
* Parse, check, and emit a `*.generated.ts` module. Throws `SystemOnePromptsError` listing every
|
|
8
|
+
* error when the definition does not check. Output is deterministic: identical TOML
|
|
9
|
+
* yields byte-identical TypeScript.
|
|
10
|
+
*/
|
|
11
|
+
export function generate(source, opts = {}) {
|
|
12
|
+
const filename = opts.filename;
|
|
13
|
+
const def = parseDefinition(source, { filename });
|
|
14
|
+
const errors = errorsOf(checkDefinition(def));
|
|
15
|
+
if (errors.length > 0)
|
|
16
|
+
throw new SystemOnePromptsError(errors);
|
|
17
|
+
return emitGenerated(def, opts.sourceName ?? filename ?? "definition.toml");
|
|
18
|
+
}
|
|
19
|
+
/** Emit TypeScript for an already-checked definition. */
|
|
20
|
+
export function emitGenerated(def, sourceName) {
|
|
21
|
+
const hash = createHash("sha256").update(def.source.text).digest("hex");
|
|
22
|
+
const lines = [];
|
|
23
|
+
lines.push(`// generated by systemoneprompts — do not edit. source: ${basename(sourceName)} sha256:${hash}`);
|
|
24
|
+
lines.push(`import type { EntryType, JsonValue, Questions, SystemOneResult } from "systemoneprompts";`);
|
|
25
|
+
lines.push(`import { createStateAssert, createFactorEvaluator, type StateAssert } from "systemoneprompts";`);
|
|
26
|
+
lines.push("");
|
|
27
|
+
lines.push(`export const meta = ${emitValue(metaObject(def))} as const;`);
|
|
28
|
+
lines.push(`export const data = ${emitValue(def.data)} as const;`);
|
|
29
|
+
lines.push(def.model === undefined
|
|
30
|
+
? "export const model: string | undefined = undefined;"
|
|
31
|
+
: `export const model = ${JSON.stringify(def.model)};`);
|
|
32
|
+
lines.push("");
|
|
33
|
+
lines.push(`export const requires = ${emitValue(def.requires)} as const;`);
|
|
34
|
+
lines.push(emitRequiredState(def.requires));
|
|
35
|
+
lines.push(Object.keys(def.requires).length === 0
|
|
36
|
+
? "export const assertState: (state: RequiredState) => void = createStateAssert(requires);"
|
|
37
|
+
: "export const assertState: StateAssert<RequiredState> = createStateAssert(requires);");
|
|
38
|
+
lines.push("");
|
|
39
|
+
lines.push(`export const questions = ${emitValue(def.questions)} as const satisfies Questions;`);
|
|
40
|
+
lines.push("");
|
|
41
|
+
lines.push(`export type Answers = SystemOneResult<typeof questions>["answers"];`);
|
|
42
|
+
lines.push("");
|
|
43
|
+
lines.push(`export const factorDefinitions = ${emitValue(def.factorDefinitions)} as const;`);
|
|
44
|
+
lines.push(emitFactorsType(Object.keys(def.factorDefinitions)));
|
|
45
|
+
lines.push(`export const evaluateFactors = createFactorEvaluator<typeof questions, Factors>(factorDefinitions);`);
|
|
46
|
+
lines.push("");
|
|
47
|
+
return lines.join("\n");
|
|
48
|
+
}
|
|
49
|
+
function metaObject(def) {
|
|
50
|
+
const out = Object.create(null);
|
|
51
|
+
for (const [key, value] of Object.entries(def.meta)) {
|
|
52
|
+
if (value !== undefined)
|
|
53
|
+
out[key] = value;
|
|
54
|
+
}
|
|
55
|
+
return out;
|
|
56
|
+
}
|
|
57
|
+
function emitFactorsType(ids) {
|
|
58
|
+
if (ids.length === 0) {
|
|
59
|
+
return "export type Factors = Record<never, boolean>;";
|
|
60
|
+
}
|
|
61
|
+
const body = ids.map((id) => ` ${quoteKey(id)}: boolean;`).join("\n");
|
|
62
|
+
return `export interface Factors {\n${body}\n}`;
|
|
63
|
+
}
|
|
64
|
+
function emitValue(value, indent = 0) {
|
|
65
|
+
if (value === null)
|
|
66
|
+
return "null";
|
|
67
|
+
if (typeof value === "string")
|
|
68
|
+
return JSON.stringify(value);
|
|
69
|
+
if (typeof value === "number" || typeof value === "boolean")
|
|
70
|
+
return String(value);
|
|
71
|
+
if (Array.isArray(value)) {
|
|
72
|
+
if (value.length === 0)
|
|
73
|
+
return "[]";
|
|
74
|
+
const pad = " ".repeat(indent + 1);
|
|
75
|
+
const close = " ".repeat(indent);
|
|
76
|
+
const items = value.map((item) => `${pad}${emitValue(item, indent + 1)},`);
|
|
77
|
+
return `[\n${items.join("\n")}\n${close}]`;
|
|
78
|
+
}
|
|
79
|
+
if (value && typeof value === "object") {
|
|
80
|
+
const entries = Object.entries(value).filter(([, v]) => v !== undefined);
|
|
81
|
+
if (entries.length === 0)
|
|
82
|
+
return "{}";
|
|
83
|
+
const pad = " ".repeat(indent + 1);
|
|
84
|
+
const close = " ".repeat(indent);
|
|
85
|
+
const items = entries.map(([key, item]) => `${pad}${quoteKey(key)}: ${emitValue(item, indent + 1)},`);
|
|
86
|
+
return `{\n${items.join("\n")}\n${close}}`;
|
|
87
|
+
}
|
|
88
|
+
return "undefined";
|
|
89
|
+
}
|
|
90
|
+
function quoteKey(name) {
|
|
91
|
+
// Object-literal __proto__ syntax changes the prototype, even when quoted.
|
|
92
|
+
if (name === "__proto__")
|
|
93
|
+
return '["__proto__"]';
|
|
94
|
+
return /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(name) ? name : JSON.stringify(name);
|
|
95
|
+
}
|
|
96
|
+
function basename(path) {
|
|
97
|
+
const parts = path.split(/[/\\]/);
|
|
98
|
+
return parts[parts.length - 1] ?? path;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/generate/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAS/C;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,MAAc,EAAE,OAAwB,EAAE;IACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC/B,MAAM,GAAG,GAAG,eAAe,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC/D,OAAO,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,UAAU,IAAI,QAAQ,IAAI,iBAAiB,CAAC,CAAC;AAC9E,CAAC;AAED,yDAAyD;AACzD,MAAM,UAAU,aAAa,CAAC,GAAe,EAAE,UAAkB;IAC/D,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,CAAC,IAAI,CACR,2DAA2D,QAAQ,CAAC,UAAU,CAAC,WAAW,IAAI,EAAE,CACjG,CAAC;IACF,KAAK,CAAC,IAAI,CACR,2FAA2F,CAC5F,CAAC;IACF,KAAK,CAAC,IAAI,CACR,gGAAgG,CACjG,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,uBAAuB,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC;IAC1E,KAAK,CAAC,IAAI,CAAC,uBAAuB,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACnE,KAAK,CAAC,IAAI,CACR,GAAG,CAAC,KAAK,KAAK,SAAS;QACrB,CAAC,CAAC,qDAAqD;QACvD,CAAC,CAAC,wBAAwB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CACzD,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,2BAA2B,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC3E,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC5C,KAAK,CAAC,IAAI,CACR,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC;QACpC,CAAC,CAAC,yFAAyF;QAC3F,CAAC,CAAC,qFAAqF,CAC1F,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,4BAA4B,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,gCAAgC,CAAC,CAAC;IACjG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;IAClF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,KAAK,CAAC,IAAI,CAAC,oCAAoC,SAAS,CAAC,GAAG,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAC7F,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAChE,KAAK,CAAC,IAAI,CACR,qGAAqG,CACtG,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,UAAU,CAAC,GAAe;IACjC,MAAM,GAAG,GAA8C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3E,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;QACpD,IAAI,KAAK,KAAK,SAAS;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC5C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,eAAe,CAAC,GAAa;IACpC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,+CAA+C,CAAC;IACzD,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvE,OAAO,+BAA+B,IAAI,KAAK,CAAC;AAClD,CAAC;AAED,SAAS,SAAS,CAAC,KAAc,EAAE,MAAM,GAAG,CAAC;IAC3C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAClC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC5D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IAClF,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;QAC3E,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC;IAC7C,CAAC;IACD,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAC,MAAM,CACrE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,CAC3B,CAAC;QACF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CACvB,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,CAC3E,CAAC;QACF,OAAO,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC;IAC7C,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,2EAA2E;IAC3E,IAAI,IAAI,KAAK,WAAW;QAAE,OAAO,eAAe,CAAC;IACjD,OAAO,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,QAAQ,CAAC,IAAY;IAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC;AACzC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Requirements } from "../state/requirements.js";
|
|
2
|
+
/**
|
|
3
|
+
* Emit `export interface RequiredState { … }` from `[requires]`. Every object level
|
|
4
|
+
* carries a `JsonValue` index signature, so the narrowed state is still a valid
|
|
5
|
+
* `EntryType` and can be passed straight to `TypeSafeClient.systemOne`. Index paths
|
|
6
|
+
* (`tickets[0].message` / `tickets[].message`) become element types; `[]` asserts
|
|
7
|
+
* every element at runtime.
|
|
8
|
+
*/
|
|
9
|
+
export declare function emitRequiredState(requires: Requirements): string;
|
|
10
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/generate/types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAmB,MAAM,0BAA0B,CAAC;AAS9E;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAYhE"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { parsePath } from "../state/paths.js";
|
|
2
|
+
const jsonValue = () => ({ kind: "leaf", ts: "JsonValue" });
|
|
3
|
+
/**
|
|
4
|
+
* Emit `export interface RequiredState { … }` from `[requires]`. Every object level
|
|
5
|
+
* carries a `JsonValue` index signature, so the narrowed state is still a valid
|
|
6
|
+
* `EntryType` and can be passed straight to `TypeSafeClient.systemOne`. Index paths
|
|
7
|
+
* (`tickets[0].message` / `tickets[].message`) become element types; `[]` asserts
|
|
8
|
+
* every element at runtime.
|
|
9
|
+
*/
|
|
10
|
+
export function emitRequiredState(requires) {
|
|
11
|
+
if (Object.keys(requires).length === 0) {
|
|
12
|
+
return "export type RequiredState = EntryType;";
|
|
13
|
+
}
|
|
14
|
+
const root = { kind: "object", props: new Map() };
|
|
15
|
+
for (const [path, type] of Object.entries(requires)) {
|
|
16
|
+
const segments = parsePath(path);
|
|
17
|
+
if (!segments)
|
|
18
|
+
continue;
|
|
19
|
+
addPath(root, segments, leafFor(type));
|
|
20
|
+
}
|
|
21
|
+
return `export interface RequiredState ${printObject(root.props, 0)}`;
|
|
22
|
+
}
|
|
23
|
+
function leafFor(type) {
|
|
24
|
+
switch (type) {
|
|
25
|
+
case "string":
|
|
26
|
+
return { kind: "leaf", ts: "string" };
|
|
27
|
+
case "number":
|
|
28
|
+
return { kind: "leaf", ts: "number" };
|
|
29
|
+
case "boolean":
|
|
30
|
+
return { kind: "leaf", ts: "boolean" };
|
|
31
|
+
case "null":
|
|
32
|
+
return { kind: "leaf", ts: "null" };
|
|
33
|
+
case "exists":
|
|
34
|
+
return jsonValue();
|
|
35
|
+
case "array":
|
|
36
|
+
return { kind: "array", element: jsonValue() };
|
|
37
|
+
case "object":
|
|
38
|
+
return { kind: "object", props: new Map() };
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
function addPath(node, segments, leaf) {
|
|
42
|
+
const head = segments[0];
|
|
43
|
+
if (!head)
|
|
44
|
+
return;
|
|
45
|
+
if (head.kind === "key") {
|
|
46
|
+
if (node.kind !== "object")
|
|
47
|
+
return;
|
|
48
|
+
if (segments.length === 1) {
|
|
49
|
+
node.props.set(head.name, merge(node.props.get(head.name), leaf));
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const next = segments[1];
|
|
53
|
+
const child = ensureContainer(node.props.get(head.name), next);
|
|
54
|
+
node.props.set(head.name, child);
|
|
55
|
+
addPath(child, segments.slice(1), leaf);
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
if (node.kind !== "array")
|
|
59
|
+
return;
|
|
60
|
+
if (segments.length === 1) {
|
|
61
|
+
node.element = merge(node.element, leaf);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
const next = segments[1];
|
|
65
|
+
const child = ensureContainer(node.element, next);
|
|
66
|
+
node.element = child;
|
|
67
|
+
addPath(child, segments.slice(1), leaf);
|
|
68
|
+
}
|
|
69
|
+
function ensureContainer(existing, next) {
|
|
70
|
+
if (next.kind === "index" || next.kind === "all") {
|
|
71
|
+
return existing?.kind === "array"
|
|
72
|
+
? existing
|
|
73
|
+
: { kind: "array", element: existing ?? jsonValue() };
|
|
74
|
+
}
|
|
75
|
+
return existing?.kind === "object" ? existing : { kind: "object", props: new Map() };
|
|
76
|
+
}
|
|
77
|
+
function merge(existing, incoming) {
|
|
78
|
+
if (!existing)
|
|
79
|
+
return incoming;
|
|
80
|
+
if (existing.kind === "leaf" && existing.ts === "JsonValue")
|
|
81
|
+
return incoming;
|
|
82
|
+
if (incoming.kind === "leaf" && incoming.ts === "JsonValue")
|
|
83
|
+
return existing;
|
|
84
|
+
if (existing.kind === "object" && incoming.kind === "object") {
|
|
85
|
+
const props = new Map(existing.props);
|
|
86
|
+
for (const [key, node] of incoming.props) {
|
|
87
|
+
props.set(key, merge(props.get(key), node));
|
|
88
|
+
}
|
|
89
|
+
return { kind: "object", props };
|
|
90
|
+
}
|
|
91
|
+
if (existing.kind === "array" && incoming.kind === "array") {
|
|
92
|
+
return { kind: "array", element: merge(existing.element, incoming.element) };
|
|
93
|
+
}
|
|
94
|
+
if (existing.kind === "array" && incoming.kind === "object") {
|
|
95
|
+
return { kind: "array", element: merge(existing.element, incoming) };
|
|
96
|
+
}
|
|
97
|
+
if (existing.kind === "object" && incoming.kind === "array") {
|
|
98
|
+
return { kind: "array", element: merge(existing, incoming.element) };
|
|
99
|
+
}
|
|
100
|
+
return incoming;
|
|
101
|
+
}
|
|
102
|
+
function printNode(node, indent) {
|
|
103
|
+
switch (node.kind) {
|
|
104
|
+
case "leaf":
|
|
105
|
+
return node.ts;
|
|
106
|
+
case "array":
|
|
107
|
+
return `${printNode(node.element, indent)}[]`;
|
|
108
|
+
case "object":
|
|
109
|
+
return printObject(node.props, indent);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
function printObject(props, indent) {
|
|
113
|
+
const pad = " ".repeat(indent + 1);
|
|
114
|
+
const close = " ".repeat(indent);
|
|
115
|
+
const lines = [...props.entries()].map(([key, node]) => {
|
|
116
|
+
return `${pad}${quoteIdent(key)}: ${printNode(node, indent + 1)};`;
|
|
117
|
+
});
|
|
118
|
+
lines.push(`${pad}[k: string]: JsonValue;`);
|
|
119
|
+
return `{
|
|
120
|
+
${lines.join("\n")}
|
|
121
|
+
${close}}`;
|
|
122
|
+
}
|
|
123
|
+
function quoteIdent(name) {
|
|
124
|
+
return /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(name) ? name : JSON.stringify(name);
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/generate/types.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export { choiceLabel, isAnswerForQuestion, isAnswerShape, noulValue, partitionAnswers, scoreValue, wireQuestions, } from "./answers.js";
|
|
2
|
+
export { DEFAULT_BASE_URL, DEFAULT_TIMEOUT_MS, type SystemOneCallOptions, TypeSafeClient, TypeSafeClientError, type TypeSafeClientOptions, TypeSafeHttpError, TypeSafeRateLimitError, TypeSafeTimeoutError, } from "./client.js";
|
|
3
|
+
export { CLOUDFLARE_MODEL, cloudflareRunUrl, createCloudflareFetch, } from "./cloudflare.js";
|
|
4
|
+
export { checkDefinition } from "./definition/check.js";
|
|
5
|
+
export { type Diagnostic, type DiagnosticSeverity, errorsOf, formatDiagnostic, formatLocation, hasErrors, type SourceLocation, SystemOnePromptsError, } from "./definition/diagnostics.js";
|
|
6
|
+
export { loadDefinition, type ParseOptions, parseDefinition } from "./definition/parse.js";
|
|
7
|
+
export type { Definition, DefinitionData, DefinitionMeta, DefinitionSource, FactorDefinitions, } from "./definition/schema.js";
|
|
8
|
+
export { type AnswersFor, createFactorEvaluator, isKnownNativeAnswer, NOUL_CUTOFF, } from "./factors/evaluate.js";
|
|
9
|
+
export type { Comparator, FactorDef, FactorTable } from "./factors/schema.js";
|
|
10
|
+
export { emitGenerated, type GenerateOptions, generate } from "./generate/generate.js";
|
|
11
|
+
export { DEFAULT_MODEL, readEnvModel, resolveModel } from "./model.js";
|
|
12
|
+
export type { ChoiceCriteria, ChoiceQuestion, ChoiceResponse, Description, EntryType, Fetch, JsonValue, NoulQuestion, NoulResponse, Question, Questions, ResultFor, ScoreCriteria, ScoreLegend, ScoreOf, ScoreQuestion, ScoreResponse, SystemOneRequest, SystemOneResult, Usage, } from "./native.js";
|
|
13
|
+
export { QUESTION_TYPES, type QuestionType } from "./questions/schema.js";
|
|
14
|
+
export { createStateAssert, REQUIREMENT_TYPES, type Requirements, type RequirementType, type StateAssert, } from "./state/requirements.js";
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,UAAU,EACV,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,KAAK,oBAAoB,EACzB,cAAc,EACd,mBAAmB,EACnB,KAAK,qBAAqB,EAC1B,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACL,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,QAAQ,EACR,gBAAgB,EAChB,cAAc,EACd,SAAS,EACT,KAAK,cAAc,EACnB,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC3F,YAAY,EACV,UAAU,EACV,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,KAAK,UAAU,EACf,qBAAqB,EACrB,mBAAmB,EACnB,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,KAAK,eAAe,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACvE,YAAY,EACV,cAAc,EACd,cAAc,EACd,cAAc,EACd,WAAW,EACX,SAAS,EACT,KAAK,EACL,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,SAAS,EACT,aAAa,EACb,WAAW,EACX,OAAO,EACP,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,KAAK,GACN,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,WAAW,GACjB,MAAM,yBAAyB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// Parse → check → derive → generate. Everything else in the package is tooling around these.
|
|
2
|
+
export { choiceLabel, isAnswerForQuestion, isAnswerShape, noulValue, partitionAnswers, scoreValue, wireQuestions, } from "./answers.js";
|
|
3
|
+
export { DEFAULT_BASE_URL, DEFAULT_TIMEOUT_MS, TypeSafeClient, TypeSafeClientError, TypeSafeHttpError, TypeSafeRateLimitError, TypeSafeTimeoutError, } from "./client.js";
|
|
4
|
+
export { CLOUDFLARE_MODEL, cloudflareRunUrl, createCloudflareFetch, } from "./cloudflare.js";
|
|
5
|
+
export { checkDefinition } from "./definition/check.js";
|
|
6
|
+
export { errorsOf, formatDiagnostic, formatLocation, hasErrors, SystemOnePromptsError, } from "./definition/diagnostics.js";
|
|
7
|
+
export { loadDefinition, parseDefinition } from "./definition/parse.js";
|
|
8
|
+
export { createFactorEvaluator, isKnownNativeAnswer, NOUL_CUTOFF, } from "./factors/evaluate.js";
|
|
9
|
+
export { emitGenerated, generate } from "./generate/generate.js";
|
|
10
|
+
export { DEFAULT_MODEL, readEnvModel, resolveModel } from "./model.js";
|
|
11
|
+
export { QUESTION_TYPES } from "./questions/schema.js";
|
|
12
|
+
export { createStateAssert, REQUIREMENT_TYPES, } from "./state/requirements.js";
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAE7F,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,UAAU,EACV,aAAa,GACd,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAElB,cAAc,EACd,mBAAmB,EAEnB,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAGL,QAAQ,EACR,gBAAgB,EAChB,cAAc,EACd,SAAS,EAET,qBAAqB,GACtB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,cAAc,EAAqB,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAQ3F,OAAO,EAEL,qBAAqB,EACrB,mBAAmB,EACnB,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,aAAa,EAAwB,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAuBvE,OAAO,EAAE,cAAc,EAAqB,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EACL,iBAAiB,EACjB,iBAAiB,GAIlB,MAAM,yBAAyB,CAAC"}
|
package/dist/json.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function isPlainObject(value: unknown): value is Record<string, unknown>;
|
|
2
|
+
export declare function isJsonValue(value: unknown): boolean;
|
|
3
|
+
/** JSON with object keys sorted recursively, so equal values hash identically. */
|
|
4
|
+
export declare function canonicalJson(value: unknown): string;
|
|
5
|
+
export declare function typeName(value: unknown): string;
|
|
6
|
+
//# sourceMappingURL=json.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAI9E;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEnD;AAmBD,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEpD;AAYD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAI/C"}
|
package/dist/json.js
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export function isPlainObject(value) {
|
|
2
|
+
if (typeof value !== "object" || value === null)
|
|
3
|
+
return false;
|
|
4
|
+
const prototype = Object.getPrototypeOf(value);
|
|
5
|
+
return prototype === Object.prototype || prototype === null;
|
|
6
|
+
}
|
|
7
|
+
export function isJsonValue(value) {
|
|
8
|
+
return checkJsonValue(value, new WeakSet());
|
|
9
|
+
}
|
|
10
|
+
function checkJsonValue(value, ancestors) {
|
|
11
|
+
if (value === null)
|
|
12
|
+
return true;
|
|
13
|
+
const t = typeof value;
|
|
14
|
+
if (t === "string" || t === "boolean")
|
|
15
|
+
return true;
|
|
16
|
+
if (t === "number")
|
|
17
|
+
return Number.isFinite(value);
|
|
18
|
+
if (!Array.isArray(value) && !isPlainObject(value))
|
|
19
|
+
return false;
|
|
20
|
+
if (ancestors.has(value))
|
|
21
|
+
return false;
|
|
22
|
+
ancestors.add(value);
|
|
23
|
+
// Iteration visits sparse array slots as undefined; shared references are valid
|
|
24
|
+
// as long as they are not ancestors of the current value.
|
|
25
|
+
for (const child of Array.isArray(value) ? value : Object.values(value)) {
|
|
26
|
+
if (!checkJsonValue(child, ancestors))
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
ancestors.delete(value);
|
|
30
|
+
return true;
|
|
31
|
+
}
|
|
32
|
+
/** JSON with object keys sorted recursively, so equal values hash identically. */
|
|
33
|
+
export function canonicalJson(value) {
|
|
34
|
+
return JSON.stringify(sortKeys(value));
|
|
35
|
+
}
|
|
36
|
+
function sortKeys(value) {
|
|
37
|
+
if (Array.isArray(value))
|
|
38
|
+
return value.map(sortKeys);
|
|
39
|
+
if (!isPlainObject(value))
|
|
40
|
+
return value;
|
|
41
|
+
return Object.fromEntries(Object.keys(value)
|
|
42
|
+
.sort()
|
|
43
|
+
.map((key) => [key, sortKeys(value[key])]));
|
|
44
|
+
}
|
|
45
|
+
export function typeName(value) {
|
|
46
|
+
if (value === null)
|
|
47
|
+
return "null";
|
|
48
|
+
if (Array.isArray(value))
|
|
49
|
+
return "array";
|
|
50
|
+
return typeof value;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=json.js.map
|
package/dist/json.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../src/json.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAC9D,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC/C,OAAO,SAAS,KAAK,MAAM,CAAC,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAc;IACxC,OAAO,cAAc,CAAC,KAAK,EAAE,IAAI,OAAO,EAAU,CAAC,CAAC;AACtD,CAAC;AAED,SAAS,cAAc,CAAC,KAAc,EAAE,SAA0B;IAChE,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,CAAC,GAAG,OAAO,KAAK,CAAC;IACvB,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACnD,IAAI,CAAC,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACjE,IAAI,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACrB,gFAAgF;IAChF,0DAA0D;IAC1D,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC;YAAE,OAAO,KAAK,CAAC;IACtD,CAAC;IACD,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACxB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;SACf,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAC7C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,KAAc;IACrC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC;IAClC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IACzC,OAAO,OAAO,KAAK,CAAC;AACtB,CAAC"}
|
package/dist/model.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/** TypeSafe default when neither the TOML nor the call pins a model. */
|
|
2
|
+
export declare const DEFAULT_MODEL = "jev-latest";
|
|
3
|
+
/**
|
|
4
|
+
* Resolve the model for a live call.
|
|
5
|
+
* Later non-empty arguments win: env/default → TOML `model` → call-site override.
|
|
6
|
+
*/
|
|
7
|
+
export declare function resolveModel(...candidates: Array<string | undefined | null>): string;
|
|
8
|
+
export declare function readEnvModel(env?: Record<string, string | undefined>): string | undefined;
|
|
9
|
+
//# sourceMappingURL=model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,eAAO,MAAM,aAAa,eAAe,CAAC;AAE1C;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,UAAU,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,MAAM,CAQpF;AAED,wBAAgB,YAAY,CAC1B,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GACpD,MAAM,GAAG,SAAS,CAGpB"}
|
package/dist/model.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/** TypeSafe default when neither the TOML nor the call pins a model. */
|
|
2
|
+
export const DEFAULT_MODEL = "jev-latest";
|
|
3
|
+
/**
|
|
4
|
+
* Resolve the model for a live call.
|
|
5
|
+
* Later non-empty arguments win: env/default → TOML `model` → call-site override.
|
|
6
|
+
*/
|
|
7
|
+
export function resolveModel(...candidates) {
|
|
8
|
+
let resolved = DEFAULT_MODEL;
|
|
9
|
+
for (const candidate of candidates) {
|
|
10
|
+
if (typeof candidate !== "string")
|
|
11
|
+
continue;
|
|
12
|
+
const trimmed = candidate.trim();
|
|
13
|
+
if (trimmed !== "")
|
|
14
|
+
resolved = trimmed;
|
|
15
|
+
}
|
|
16
|
+
return resolved;
|
|
17
|
+
}
|
|
18
|
+
export function readEnvModel(env = process.env) {
|
|
19
|
+
const model = env.TYPESAFE_MODEL;
|
|
20
|
+
return model?.trim() ? model : env.TYPESAFE_DEFAULT_MODEL;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../src/model.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,MAAM,CAAC,MAAM,aAAa,GAAG,YAAY,CAAC;AAE1C;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,GAAG,UAA4C;IAC1E,IAAI,QAAQ,GAAG,aAAa,CAAC;IAC7B,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,OAAO,SAAS,KAAK,QAAQ;YAAE,SAAS;QAC5C,MAAM,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,OAAO,KAAK,EAAE;YAAE,QAAQ,GAAG,OAAO,CAAC;IACzC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,MAA0C,OAAO,CAAC,GAAG;IAErD,MAAM,KAAK,GAAG,GAAG,CAAC,cAAc,CAAC;IACjC,OAAO,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC;AAC5D,CAAC"}
|
package/dist/native.d.ts
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/** JSON-compatible value used for state, instructions, criteria, and generated types. */
|
|
2
|
+
export type JsonValue = string | number | boolean | null | JsonValue[] | {
|
|
3
|
+
[key: string]: JsonValue;
|
|
4
|
+
};
|
|
5
|
+
/** Text, a JSON object or array, or `null` for state, instructions, and criteria. */
|
|
6
|
+
export type EntryType = string | {
|
|
7
|
+
[key: string]: JsonValue;
|
|
8
|
+
} | JsonValue[] | null;
|
|
9
|
+
/** A criterion description; `null` leaves the label undescribed. */
|
|
10
|
+
export type Description = EntryType;
|
|
11
|
+
/** A yes/no question with optional descriptions for either outcome. */
|
|
12
|
+
export interface NoulQuestion {
|
|
13
|
+
type: "noul";
|
|
14
|
+
instructions?: EntryType;
|
|
15
|
+
criteria?: {
|
|
16
|
+
true?: EntryType;
|
|
17
|
+
false?: EntryType;
|
|
18
|
+
} | null;
|
|
19
|
+
}
|
|
20
|
+
/** Labels mapped to descriptions, or `null` for undescribed labels. */
|
|
21
|
+
export type ChoiceCriteria = {
|
|
22
|
+
[label: string]: Description;
|
|
23
|
+
};
|
|
24
|
+
/** A question that selects between named alternatives. */
|
|
25
|
+
export interface ChoiceQuestion<T extends ChoiceCriteria = ChoiceCriteria> {
|
|
26
|
+
type: "choice";
|
|
27
|
+
instructions?: EntryType;
|
|
28
|
+
criteria: T;
|
|
29
|
+
}
|
|
30
|
+
/** At least two descriptions indexed by score from zero; `null` leaves a score undescribed. */
|
|
31
|
+
export type ScoreCriteria = readonly [EntryType, EntryType, ...EntryType[]];
|
|
32
|
+
/** A question that assigns a score using an ordered rubric. */
|
|
33
|
+
export interface ScoreQuestion<T extends ScoreCriteria = ScoreCriteria> {
|
|
34
|
+
type: "score";
|
|
35
|
+
instructions?: EntryType;
|
|
36
|
+
criteria: T;
|
|
37
|
+
}
|
|
38
|
+
/** A question identified by its `type` field. */
|
|
39
|
+
export type Question = NoulQuestion | ScoreQuestion | ChoiceQuestion;
|
|
40
|
+
/** Questions keyed by the names used to identify their answers. */
|
|
41
|
+
export interface Questions {
|
|
42
|
+
[name: string]: Question;
|
|
43
|
+
}
|
|
44
|
+
/** A yes/no answer. */
|
|
45
|
+
export interface NoulResponse {
|
|
46
|
+
readonly type: "noul";
|
|
47
|
+
readonly noul: number;
|
|
48
|
+
}
|
|
49
|
+
/** A selected label and its probabilities. */
|
|
50
|
+
export interface ChoiceResponse<T extends ChoiceCriteria = ChoiceCriteria> {
|
|
51
|
+
readonly type: "choice";
|
|
52
|
+
readonly choice: keyof T & string;
|
|
53
|
+
readonly confidence: number;
|
|
54
|
+
readonly probabilities: {
|
|
55
|
+
readonly [label in keyof T]: number;
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
/** Score keys inferred from the rubric; a fixed-length tuple yields its indices, otherwise `number`. */
|
|
59
|
+
export type ScoreOf<T extends ScoreCriteria> = number extends T["length"] ? number : Extract<keyof T, `${number}`>;
|
|
60
|
+
/** Rubric descriptions keyed by score. */
|
|
61
|
+
export type ScoreLegend<T extends ScoreCriteria> = {
|
|
62
|
+
readonly [score in ScoreOf<T>]: T[score];
|
|
63
|
+
};
|
|
64
|
+
/** An expected score with its rubric and probabilities. */
|
|
65
|
+
export interface ScoreResponse<T extends ScoreCriteria = ScoreCriteria> {
|
|
66
|
+
readonly type: "score";
|
|
67
|
+
readonly score: number;
|
|
68
|
+
readonly confidence: number;
|
|
69
|
+
readonly legend: ScoreLegend<T>;
|
|
70
|
+
readonly probabilities: {
|
|
71
|
+
readonly [score in ScoreOf<T>]: number;
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/** The answer type for a question, preserving its criteria keys. */
|
|
75
|
+
export type ResultFor<T extends Question> = T extends NoulQuestion ? NoulResponse : T extends ScoreQuestion<infer S> ? ScoreResponse<S> : T extends ChoiceQuestion<infer E> ? ChoiceResponse<E> : never;
|
|
76
|
+
/** Token usage for a request. */
|
|
77
|
+
export interface Usage {
|
|
78
|
+
readonly input_tokens: number;
|
|
79
|
+
readonly output_tokens: number;
|
|
80
|
+
}
|
|
81
|
+
/** Answers keyed by question name, with model and usage metadata. */
|
|
82
|
+
export interface SystemOneResult<Q extends Questions> {
|
|
83
|
+
readonly model: string;
|
|
84
|
+
readonly answers: {
|
|
85
|
+
readonly [K in keyof Q]: ResultFor<Q[K]>;
|
|
86
|
+
};
|
|
87
|
+
readonly usage: Usage;
|
|
88
|
+
}
|
|
89
|
+
/** State and named questions for `systemOne`. */
|
|
90
|
+
export interface SystemOneRequest<Q extends Questions = Questions> {
|
|
91
|
+
state: unknown;
|
|
92
|
+
questions: Q;
|
|
93
|
+
model?: string;
|
|
94
|
+
}
|
|
95
|
+
/** HTTP fetch compatible with the global `fetch`. */
|
|
96
|
+
export type Fetch = (input: string, init?: RequestInit) => Promise<Response>;
|
|
97
|
+
//# sourceMappingURL=native.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../src/native.ts"],"names":[],"mappings":"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"}
|
package/dist/native.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native.js","sourceRoot":"","sources":["../src/native.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { type RunManyItem, type RunManyOptions, runMany, type SystemOneClient, } from "./run-many.js";
|
|
2
|
+
export { type TaxonomyNode, type TaxonomyPath, type TaxonomyTree, type WalkTaxonomyOptions, walkTaxonomy, } from "./walk-taxonomy.js";
|
|
3
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/patterns/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,OAAO,EACP,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,YAAY,GACb,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/patterns/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,OAAO,GAER,MAAM,eAAe,CAAC;AACvB,OAAO,EAKL,YAAY,GACb,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/patterns/options.ts"],"names":[],"mappings":"AAAA,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAKnE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/patterns/options.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,KAAa;IACzD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,UAAU,CAAC,GAAG,IAAI,6BAA6B,CAAC,CAAC;IAC7D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { Questions, SystemOneResult } from "../native.js";
|
|
2
|
+
/**
|
|
3
|
+
* The slice of `TypeSafeClient` the patterns need. Any object with a compatible
|
|
4
|
+
* `systemOne` works, which keeps the helpers testable without the network.
|
|
5
|
+
*/
|
|
6
|
+
export interface SystemOneClient {
|
|
7
|
+
systemOne(request: {
|
|
8
|
+
state: unknown;
|
|
9
|
+
questions: Questions;
|
|
10
|
+
model?: string;
|
|
11
|
+
}): Promise<SystemOneResult<Questions>>;
|
|
12
|
+
}
|
|
13
|
+
export interface RunManyItem<Q extends Questions = Questions> {
|
|
14
|
+
state: unknown;
|
|
15
|
+
questions: Q;
|
|
16
|
+
model?: string;
|
|
17
|
+
}
|
|
18
|
+
type RunManyShared<Q extends Questions> = {
|
|
19
|
+
model?: string;
|
|
20
|
+
/** Maximum in-flight requests. Default 4. */
|
|
21
|
+
concurrency?: number;
|
|
22
|
+
/** Called once as each state settles, in completion order. A thrown callback rejects the batch. */
|
|
23
|
+
onResult?: (index: number, result: SystemOneResult<Q> | Error) => void;
|
|
24
|
+
};
|
|
25
|
+
export type RunManyOptions<Q extends Questions> = (RunManyShared<Q> & {
|
|
26
|
+
questions: Q;
|
|
27
|
+
states: readonly unknown[];
|
|
28
|
+
items?: never;
|
|
29
|
+
}) | (RunManyShared<Q> & {
|
|
30
|
+
items: readonly RunManyItem<Q>[];
|
|
31
|
+
questions?: never;
|
|
32
|
+
states?: never;
|
|
33
|
+
});
|
|
34
|
+
/**
|
|
35
|
+
* Ask questions about many states with bounded concurrency.
|
|
36
|
+
* Pass shared `questions` + `states`, or per-item `{ state, questions }`.
|
|
37
|
+
* Results keep input order; a failed call yields its `Error` instead of aborting the batch.
|
|
38
|
+
*/
|
|
39
|
+
export declare function runMany<Q extends Questions>(client: SystemOneClient, opts: RunManyOptions<Q>): Promise<Array<SystemOneResult<Q> | Error>>;
|
|
40
|
+
export {};
|
|
41
|
+
//# sourceMappingURL=run-many.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-many.d.ts","sourceRoot":"","sources":["../../src/patterns/run-many.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAG/D;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,OAAO,EAAE;QACjB,KAAK,EAAE,OAAO,CAAC;QACf,SAAS,EAAE,SAAS,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAC1D,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,CAAC,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,KAAK,aAAa,CAAC,CAAC,SAAS,SAAS,IAAI;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mGAAmG;IACnG,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC;CACxE,CAAC;AAEF,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,SAAS,IAC1C,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG;IAClB,SAAS,EAAE,CAAC,CAAC;IACb,MAAM,EAAE,SAAS,OAAO,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,KAAK,CAAC;CACf,CAAC,GACF,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG;IAClB,KAAK,EAAE,SAAS,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IACjC,SAAS,CAAC,EAAE,KAAK,CAAC;IAClB,MAAM,CAAC,EAAE,KAAK,CAAC;CAChB,CAAC,CAAC;AAEP;;;;GAIG;AACH,wBAAsB,OAAO,CAAC,CAAC,SAAS,SAAS,EAC/C,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,GACtB,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CA2B5C"}
|