@zelari/core 1.28.0 → 1.30.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/dist/kraken/graph.d.ts +5 -2
- package/dist/kraken/graph.d.ts.map +1 -1
- package/dist/kraken/graph.js.map +1 -1
- package/dist/kraken/index.d.ts +11 -2
- package/dist/kraken/index.d.ts.map +1 -1
- package/dist/kraken/index.js +11 -2
- package/dist/kraken/index.js.map +1 -1
- package/dist/kraken/personas/conformance.d.ts +25 -0
- package/dist/kraken/personas/conformance.d.ts.map +1 -0
- package/dist/kraken/personas/conformance.js +89 -0
- package/dist/kraken/personas/conformance.js.map +1 -0
- package/dist/kraken/personas/index.d.ts +12 -0
- package/dist/kraken/personas/index.d.ts.map +1 -0
- package/dist/kraken/personas/index.js +12 -0
- package/dist/kraken/personas/index.js.map +1 -0
- package/dist/kraken/personas/registry.d.ts +62 -0
- package/dist/kraken/personas/registry.d.ts.map +1 -0
- package/dist/kraken/personas/registry.js +49 -0
- package/dist/kraken/personas/registry.js.map +1 -0
- package/dist/kraken/personas/specReviewer.d.ts +21 -0
- package/dist/kraken/personas/specReviewer.d.ts.map +1 -0
- package/dist/kraken/personas/specReviewer.js +74 -0
- package/dist/kraken/personas/specReviewer.js.map +1 -0
- package/dist/kraken/runtime/index.d.ts +13 -0
- package/dist/kraken/runtime/index.d.ts.map +1 -0
- package/dist/kraken/runtime/index.js +16 -0
- package/dist/kraken/runtime/index.js.map +1 -0
- package/dist/kraken/runtime/runner.d.ts +80 -0
- package/dist/kraken/runtime/runner.d.ts.map +1 -0
- package/dist/kraken/runtime/runner.js +253 -0
- package/dist/kraken/runtime/runner.js.map +1 -0
- package/dist/kraken/runtime/sandbox.d.ts +65 -0
- package/dist/kraken/runtime/sandbox.d.ts.map +1 -0
- package/dist/kraken/runtime/sandbox.js +158 -0
- package/dist/kraken/runtime/sandbox.js.map +1 -0
- package/dist/kraken/runtime/sdk.d.ts +32 -0
- package/dist/kraken/runtime/sdk.d.ts.map +1 -0
- package/dist/kraken/runtime/sdk.js +61 -0
- package/dist/kraken/runtime/sdk.js.map +1 -0
- package/dist/kraken/runtime/types.d.ts +220 -0
- package/dist/kraken/runtime/types.d.ts.map +1 -0
- package/dist/kraken/runtime/types.js +35 -0
- package/dist/kraken/runtime/types.js.map +1 -0
- package/dist/kraken/verdict.d.ts +118 -0
- package/dist/kraken/verdict.d.ts.map +1 -0
- package/dist/kraken/verdict.js +143 -0
- package/dist/kraken/verdict.js.map +1 -0
- package/dist/kraken/weakness.d.ts +160 -0
- package/dist/kraken/weakness.d.ts.map +1 -0
- package/dist/kraken/weakness.js +305 -0
- package/dist/kraken/weakness.js.map +1 -0
- package/package.json +1 -1
package/dist/kraken/graph.d.ts
CHANGED
|
@@ -8,8 +8,11 @@
|
|
|
8
8
|
*
|
|
9
9
|
* @since v0.10.x — Kraken graph engine (F1)
|
|
10
10
|
*/
|
|
11
|
-
/** What a graph node does. Mirrors taskTool kinds plus graph-only kinds.
|
|
12
|
-
|
|
11
|
+
/** What a graph node does. Mirrors taskTool kinds plus graph-only kinds.
|
|
12
|
+
* `spec` and `conformance` are the Pillar-2 spec-council personas: they
|
|
13
|
+
* run as `verify` agents under the hood but with persona-specific
|
|
14
|
+
* system prompts and verdict schemas. */
|
|
15
|
+
export type TaskNodeKind = 'explore' | 'general' | 'verify' | 'fix' | 'merge' | 'spec' | 'conformance';
|
|
13
16
|
/** Lifecycle state of a node within an executing graph. */
|
|
14
17
|
export type TaskNodeStatus = 'pending' | 'running' | 'done' | 'error' | 'skipped';
|
|
15
18
|
/** States that mean "this node will not run (again)". */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/kraken/graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH
|
|
1
|
+
{"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../src/kraken/graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;0CAG0C;AAC1C,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,aAAa,CAAC;AAEvG,2DAA2D;AAC3D,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,SAAS,GACT,MAAM,GACN,OAAO,GACP,SAAS,CAAC;AAEd,yDAAyD;AACzD,eAAO,MAAM,iBAAiB,EAAE,SAAS,cAAc,EAItD,CAAC;AAEF,oDAAoD;AACpD,MAAM,WAAW,QAAQ;IACvB,gEAAgE;IAChE,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,YAAY,CAAC;IACnB,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,kFAAkF;IAClF,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,8EAA8E;IAC9E,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,cAAc,CAAC;IACvB,iEAAiE;IACjE,UAAU,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,UAAU,EAAE,MAAM,CAAC;IACnB,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,gEAAgE;AAChE,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CAC9B;AAED,uCAAuC;AACvC,MAAM,MAAM,eAAe,GACvB;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GACZ;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAEpC,MAAM,WAAW,oBAAoB;IACnC,gFAAgF;IAChF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,mDAAmD;AACnD,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC,gEAAgE;AAChE,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,SAAS,CAIpE;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,SAAS,EAChB,IAAI,GAAE,oBAAyB,GAC9B,eAAe,CAoCjB;AAoDD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,QAAQ,EAAE,CAQ1D;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,EAAE,EAAE,CAgCvD;AAED,2EAA2E;AAC3E,wBAAgB,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAKnD;AAED,wEAAwE;AACxE,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAMrD;AAED,gDAAgD;AAChD,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,EAAE,CAMxD;AAED,+DAA+D;AAC/D,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAU9E"}
|
package/dist/kraken/graph.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/kraken/graph.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/kraken/graph.ts"],"names":[],"mappings":"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"}
|
package/dist/kraken/index.d.ts
CHANGED
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Kraken graph engine — public surface (pure DAG primitives).
|
|
2
|
+
* Kraken graph engine — public surface (pure DAG primitives + script runtime).
|
|
3
3
|
*
|
|
4
4
|
* Orchestration (planner/executor/worktree/world-model wiring) lives in the
|
|
5
|
-
* CLI and is NOT exported here. See `.zelari/docs/kraken-graph-engine-plan.md
|
|
5
|
+
* CLI and is NOT exported here. See `.zelari/docs/kraken-graph-engine-plan.md`
|
|
6
|
+
* and `.zelari/docs/kraken-best-in-class-roadmap.md`.
|
|
7
|
+
*
|
|
8
|
+
* @since v0.10.x — Kraken graph engine (F1)
|
|
9
|
+
* @since v1.30.x — workflow script runtime (F1.1)
|
|
10
|
+
* @since v1.31.x — weakness-based hypothesis selection (Bennett 2023)
|
|
6
11
|
*/
|
|
7
12
|
export * from './graph.js';
|
|
8
13
|
export * from './conflict.js';
|
|
14
|
+
export * from './verdict.js';
|
|
15
|
+
export * from './personas/index.js';
|
|
16
|
+
export * from './runtime/index.js';
|
|
17
|
+
export * from './weakness.js';
|
|
9
18
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/kraken/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/kraken/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC"}
|
package/dist/kraken/index.js
CHANGED
|
@@ -1,9 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Kraken graph engine — public surface (pure DAG primitives).
|
|
2
|
+
* Kraken graph engine — public surface (pure DAG primitives + script runtime).
|
|
3
3
|
*
|
|
4
4
|
* Orchestration (planner/executor/worktree/world-model wiring) lives in the
|
|
5
|
-
* CLI and is NOT exported here. See `.zelari/docs/kraken-graph-engine-plan.md
|
|
5
|
+
* CLI and is NOT exported here. See `.zelari/docs/kraken-graph-engine-plan.md`
|
|
6
|
+
* and `.zelari/docs/kraken-best-in-class-roadmap.md`.
|
|
7
|
+
*
|
|
8
|
+
* @since v0.10.x — Kraken graph engine (F1)
|
|
9
|
+
* @since v1.30.x — workflow script runtime (F1.1)
|
|
10
|
+
* @since v1.31.x — weakness-based hypothesis selection (Bennett 2023)
|
|
6
11
|
*/
|
|
7
12
|
export * from './graph.js';
|
|
8
13
|
export * from './conflict.js';
|
|
14
|
+
export * from './verdict.js';
|
|
15
|
+
export * from './personas/index.js';
|
|
16
|
+
export * from './runtime/index.js';
|
|
17
|
+
export * from './weakness.js';
|
|
9
18
|
//# sourceMappingURL=index.js.map
|
package/dist/kraken/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/kraken/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/kraken/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kraken persona — `conformance` (conformance-reviewer, Pillar 2 F2.3).
|
|
3
|
+
*
|
|
4
|
+
* Compares the writer's delivered work against the **user's original
|
|
5
|
+
* verbatim prompt** (the "origin" in pi-gauntlet's terms). This is the
|
|
6
|
+
* closing-the-loop gate: a writer can satisfy a spec, yet still miss
|
|
7
|
+
* what the user actually asked for (e.g. the spec is wrong, or the spec
|
|
8
|
+
* was loose). The conformance persona is the only one that consults the
|
|
9
|
+
* origin, not the spec.
|
|
10
|
+
*
|
|
11
|
+
* The persona is **literal**. When the user said "use JWT", "use session
|
|
12
|
+
* cookies" is a FAIL even if it works. When the user said "ship a CLI",
|
|
13
|
+
* "ship a library" is a FAIL even if the library is excellent.
|
|
14
|
+
*
|
|
15
|
+
* Same output format as the spec persona: a per-requirement table plus
|
|
16
|
+
* the verdict trailer. The "requirements" in the table are derived from
|
|
17
|
+
* the prompt itself, not from a spec — the persona decomposes the prompt
|
|
18
|
+
* into the user's actual asks before judging.
|
|
19
|
+
*
|
|
20
|
+
* @since Kraken v1.30.x — workflow script runtime (Pillar 2)
|
|
21
|
+
*/
|
|
22
|
+
import { type Persona } from './registry.js';
|
|
23
|
+
declare const conformancePersona: Persona;
|
|
24
|
+
export default conformancePersona;
|
|
25
|
+
//# sourceMappingURL=conformance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conformance.d.ts","sourceRoot":"","sources":["../../../src/kraken/personas/conformance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAmB,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AA6D9D,QAAA,MAAM,kBAAkB,EAAE,OAKzB,CAAC;AAIF,eAAe,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kraken persona — `conformance` (conformance-reviewer, Pillar 2 F2.3).
|
|
3
|
+
*
|
|
4
|
+
* Compares the writer's delivered work against the **user's original
|
|
5
|
+
* verbatim prompt** (the "origin" in pi-gauntlet's terms). This is the
|
|
6
|
+
* closing-the-loop gate: a writer can satisfy a spec, yet still miss
|
|
7
|
+
* what the user actually asked for (e.g. the spec is wrong, or the spec
|
|
8
|
+
* was loose). The conformance persona is the only one that consults the
|
|
9
|
+
* origin, not the spec.
|
|
10
|
+
*
|
|
11
|
+
* The persona is **literal**. When the user said "use JWT", "use session
|
|
12
|
+
* cookies" is a FAIL even if it works. When the user said "ship a CLI",
|
|
13
|
+
* "ship a library" is a FAIL even if the library is excellent.
|
|
14
|
+
*
|
|
15
|
+
* Same output format as the spec persona: a per-requirement table plus
|
|
16
|
+
* the verdict trailer. The "requirements" in the table are derived from
|
|
17
|
+
* the prompt itself, not from a spec — the persona decomposes the prompt
|
|
18
|
+
* into the user's actual asks before judging.
|
|
19
|
+
*
|
|
20
|
+
* @since Kraken v1.30.x — workflow script runtime (Pillar 2)
|
|
21
|
+
*/
|
|
22
|
+
import { registerPersona } from './registry.js';
|
|
23
|
+
const SYSTEM_PROMPT = [
|
|
24
|
+
'You are the conformance-reviewer for Kraken. You compare a writer\'s',
|
|
25
|
+
'delivered work against the USER\'S ORIGINAL VERBATIM PROMPT — not a',
|
|
26
|
+
'spec, not a plan, not what the writer decided to do.',
|
|
27
|
+
'',
|
|
28
|
+
'Your bias is LITERAL. When the user said "use JWT", "use session',
|
|
29
|
+
'cookies" is a FAIL even if it works. When the user said "ship a CLI",',
|
|
30
|
+
'"ship a library" is a FAIL even if the library is excellent.',
|
|
31
|
+
'',
|
|
32
|
+
'## Decomposition',
|
|
33
|
+
'',
|
|
34
|
+
'Before judging, decompose the prompt into the discrete asks the user',
|
|
35
|
+
'made. A good decomposition:',
|
|
36
|
+
' - Each user-stated requirement gets one row.',
|
|
37
|
+
' - Each user-stated preference ("preferably X", "ideally Y") gets one row.',
|
|
38
|
+
' - Each user-stated constraint ("no dependencies", "stay under 100 LOC") gets one row.',
|
|
39
|
+
' - If the prompt is ambiguous, decompose into the LITERAL reading AND',
|
|
40
|
+
' note in the evidence that a more permissive reading would have passed.',
|
|
41
|
+
'',
|
|
42
|
+
'## Output format',
|
|
43
|
+
'',
|
|
44
|
+
'You MUST end with a verdict trailer on its own line:',
|
|
45
|
+
'',
|
|
46
|
+
' VERDICT: PASS',
|
|
47
|
+
'or',
|
|
48
|
+
' VERDICT: FAIL',
|
|
49
|
+
'',
|
|
50
|
+
'When the verdict is FAIL, you MUST also emit a per-requirement table in',
|
|
51
|
+
'a JSON code block, BEFORE the trailer:',
|
|
52
|
+
'',
|
|
53
|
+
'```json',
|
|
54
|
+
'{',
|
|
55
|
+
' "requirements": [',
|
|
56
|
+
' { "requirement": "<verbatim from the user prompt>", "met": "pass|fail|unknown", "evidence": "<path, line, output>" },',
|
|
57
|
+
' ...',
|
|
58
|
+
' ]',
|
|
59
|
+
'}',
|
|
60
|
+
'```',
|
|
61
|
+
'',
|
|
62
|
+
'Rules:',
|
|
63
|
+
' - Cite concrete evidence (file path, line, function name, command',
|
|
64
|
+
' output) for every row. "Looks right" is not evidence.',
|
|
65
|
+
' - When a literal reading would have failed but a more permissive',
|
|
66
|
+
' reading would have passed, mark it `fail` with evidence explaining',
|
|
67
|
+
' the gap. The user is the authority on what they meant.',
|
|
68
|
+
' - When the prompt is genuinely too vague to decompose (e.g. "make it',
|
|
69
|
+
' better"), say so explicitly in your findings and mark all rows',
|
|
70
|
+
' `unknown`. The downstream fix node will then ask the user.',
|
|
71
|
+
' - Keep the table terse. One line per row.',
|
|
72
|
+
'',
|
|
73
|
+
'## What you do NOT do',
|
|
74
|
+
'',
|
|
75
|
+
' - You do not consult any spec, plan, or intermediate artifact. Only the',
|
|
76
|
+
' original user prompt.',
|
|
77
|
+
' - You do not modify any files. You are a judge, not a fixer.',
|
|
78
|
+
' - You do not say PASS to be polite. The user has only one chance to',
|
|
79
|
+
' see your verdict before shipping; be honest.',
|
|
80
|
+
].join('\n');
|
|
81
|
+
const conformancePersona = {
|
|
82
|
+
kind: 'conformance',
|
|
83
|
+
label: 'conformance-reviewer',
|
|
84
|
+
description: "Compares a writer's output against the user's original verbatim prompt.",
|
|
85
|
+
systemPrompt: SYSTEM_PROMPT,
|
|
86
|
+
};
|
|
87
|
+
registerPersona(conformancePersona);
|
|
88
|
+
export default conformancePersona;
|
|
89
|
+
//# sourceMappingURL=conformance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conformance.js","sourceRoot":"","sources":["../../../src/kraken/personas/conformance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,eAAe,EAAgB,MAAM,eAAe,CAAC;AAE9D,MAAM,aAAa,GAAG;IACpB,sEAAsE;IACtE,qEAAqE;IACrE,sDAAsD;IACtD,EAAE;IACF,kEAAkE;IAClE,uEAAuE;IACvE,8DAA8D;IAC9D,EAAE;IACF,kBAAkB;IAClB,EAAE;IACF,sEAAsE;IACtE,6BAA6B;IAC7B,gDAAgD;IAChD,6EAA6E;IAC7E,yFAAyF;IACzF,wEAAwE;IACxE,4EAA4E;IAC5E,EAAE;IACF,kBAAkB;IAClB,EAAE;IACF,sDAAsD;IACtD,EAAE;IACF,iBAAiB;IACjB,IAAI;IACJ,iBAAiB;IACjB,EAAE;IACF,yEAAyE;IACzE,wCAAwC;IACxC,EAAE;IACF,SAAS;IACT,GAAG;IACH,qBAAqB;IACrB,2HAA2H;IAC3H,SAAS;IACT,KAAK;IACL,GAAG;IACH,KAAK;IACL,EAAE;IACF,QAAQ;IACR,qEAAqE;IACrE,2DAA2D;IAC3D,oEAAoE;IACpE,wEAAwE;IACxE,4DAA4D;IAC5D,wEAAwE;IACxE,oEAAoE;IACpE,gEAAgE;IAChE,6CAA6C;IAC7C,EAAE;IACF,uBAAuB;IACvB,EAAE;IACF,2EAA2E;IAC3E,2BAA2B;IAC3B,gEAAgE;IAChE,uEAAuE;IACvE,kDAAkD;CACnD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,kBAAkB,GAAY;IAClC,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,sBAAsB;IAC7B,WAAW,EAAE,yEAAyE;IACtF,YAAY,EAAE,aAAa;CAC5B,CAAC;AAEF,eAAe,CAAC,kBAAkB,CAAC,CAAC;AAEpC,eAAe,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kraken personas — public surface.
|
|
3
|
+
*
|
|
4
|
+
* Importing this module registers all built-in personas with the
|
|
5
|
+
* registry. Side-effect import: `import '@zelari/kraken/personas'`.
|
|
6
|
+
*
|
|
7
|
+
* @since Kraken v1.30.x — workflow script runtime (Pillar 2)
|
|
8
|
+
*/
|
|
9
|
+
import './specReviewer.js';
|
|
10
|
+
import './conformance.js';
|
|
11
|
+
export * from './registry.js';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/kraken/personas/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,mBAAmB,CAAC;AAC3B,OAAO,kBAAkB,CAAC;AAE1B,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kraken personas — public surface.
|
|
3
|
+
*
|
|
4
|
+
* Importing this module registers all built-in personas with the
|
|
5
|
+
* registry. Side-effect import: `import '@zelari/kraken/personas'`.
|
|
6
|
+
*
|
|
7
|
+
* @since Kraken v1.30.x — workflow script runtime (Pillar 2)
|
|
8
|
+
*/
|
|
9
|
+
import './specReviewer.js';
|
|
10
|
+
import './conformance.js';
|
|
11
|
+
export * from './registry.js';
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/kraken/personas/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,mBAAmB,CAAC;AAC3B,OAAO,kBAAkB,CAAC;AAE1B,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kraken spec council — persona registry (Pillar 2, F2.1).
|
|
3
|
+
*
|
|
4
|
+
* The 3 reviewer personas share a common surface (a verdict trailer, an
|
|
5
|
+
* optional per-requirement table, and a system prompt). This file defines
|
|
6
|
+
* the registry; individual personas live in sibling files and register
|
|
7
|
+
* themselves via {@link registerPersona}.
|
|
8
|
+
*
|
|
9
|
+
* The registry is **runtime-populated, not compile-time**. The reason:
|
|
10
|
+
* personas are additive (Pillar 2 lands 3, future pillars may add more
|
|
11
|
+
* for oracle / advisor / etc.), and we want adding a persona to be a
|
|
12
|
+
* single file with no central edit. The price is one indirection at
|
|
13
|
+
* lookup time; that's cheap relative to the LLM call it gates.
|
|
14
|
+
*
|
|
15
|
+
* Adding a persona:
|
|
16
|
+
* 1. Create `packages/core/src/kraken/personas/<name>.ts`.
|
|
17
|
+
* 2. Call `registerPersona({ kind: 'spec', systemPrompt: '...', ... })`
|
|
18
|
+
* at module load.
|
|
19
|
+
* 3. (Optional) Extend `TaskNodeKind` to include the new kind — the
|
|
20
|
+
* runtime routes 'verify', 'spec', 'conformance' to the same
|
|
21
|
+
* host agent today, so this is not strictly required.
|
|
22
|
+
*
|
|
23
|
+
* @since Kraken v1.30.x — workflow script runtime (Pillar 2)
|
|
24
|
+
*/
|
|
25
|
+
import type { TaskNodeKind } from '../graph.js';
|
|
26
|
+
import { type PersonaVerdict, type RequirementVerdict } from '../verdict.js';
|
|
27
|
+
/** A reviewer persona: a kind, a system prompt, and a verdict parser. */
|
|
28
|
+
export interface Persona {
|
|
29
|
+
/** The `TaskNodeKind` this persona matches. */
|
|
30
|
+
kind: TaskNodeKind;
|
|
31
|
+
/** Short label for status / radio. */
|
|
32
|
+
label: string;
|
|
33
|
+
/** Long-form description (one line). */
|
|
34
|
+
description: string;
|
|
35
|
+
/**
|
|
36
|
+
* System prompt the sub-agent is given. Should include:
|
|
37
|
+
* - the persona's role and bias (spec-reviewer is conservative, etc.)
|
|
38
|
+
* - the verdict format the persona must emit (trailer + optional table)
|
|
39
|
+
* - the kind of evidence the persona should cite
|
|
40
|
+
*/
|
|
41
|
+
systemPrompt: string;
|
|
42
|
+
/**
|
|
43
|
+
* Parse the persona's reply into a structured verdict. Default: the
|
|
44
|
+
* generic `parsePersonaVerdict` (trailer + requirements block).
|
|
45
|
+
* Override when a persona has a custom format (e.g. oracle's blind A/B).
|
|
46
|
+
*/
|
|
47
|
+
parseVerdict?: (text: string) => PersonaVerdict;
|
|
48
|
+
}
|
|
49
|
+
/** Register a persona. Idempotent: re-registering the same kind overwrites. */
|
|
50
|
+
export declare function registerPersona(p: Persona): void;
|
|
51
|
+
/** Look up a persona by kind. Returns undefined when not registered. */
|
|
52
|
+
export declare function getPersona(kind: TaskNodeKind): Persona | undefined;
|
|
53
|
+
/** All registered personas, in registration order. */
|
|
54
|
+
export declare function listPersonas(): Persona[];
|
|
55
|
+
/** Whether the given kind is a "reviewer" — a persona that judges other
|
|
56
|
+
* tentacles' work. Used by the executor to decide whether to wire the
|
|
57
|
+
* verdict into a rework round. */
|
|
58
|
+
export declare function isReviewerKind(kind: TaskNodeKind): boolean;
|
|
59
|
+
/** Default verdict parser for any persona. Mirrors `parsePersonaVerdict`. */
|
|
60
|
+
export declare function defaultPersonaParse(text: string): PersonaVerdict;
|
|
61
|
+
export type { PersonaVerdict, RequirementVerdict };
|
|
62
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/kraken/personas/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAEL,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACxB,MAAM,eAAe,CAAC;AAEvB,yEAAyE;AACzE,MAAM,WAAW,OAAO;IACtB,+CAA+C;IAC/C,IAAI,EAAE,YAAY,CAAC;IACnB,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,YAAY,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,cAAc,CAAC;CACjD;AAID,+EAA+E;AAC/E,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAEhD;AAED,wEAAwE;AACxE,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,GAAG,SAAS,CAElE;AAED,sDAAsD;AACtD,wBAAgB,YAAY,IAAI,OAAO,EAAE,CAExC;AAED;;mCAEmC;AACnC,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAE1D;AAED,6EAA6E;AAC7E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAEhE;AAGD,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kraken spec council — persona registry (Pillar 2, F2.1).
|
|
3
|
+
*
|
|
4
|
+
* The 3 reviewer personas share a common surface (a verdict trailer, an
|
|
5
|
+
* optional per-requirement table, and a system prompt). This file defines
|
|
6
|
+
* the registry; individual personas live in sibling files and register
|
|
7
|
+
* themselves via {@link registerPersona}.
|
|
8
|
+
*
|
|
9
|
+
* The registry is **runtime-populated, not compile-time**. The reason:
|
|
10
|
+
* personas are additive (Pillar 2 lands 3, future pillars may add more
|
|
11
|
+
* for oracle / advisor / etc.), and we want adding a persona to be a
|
|
12
|
+
* single file with no central edit. The price is one indirection at
|
|
13
|
+
* lookup time; that's cheap relative to the LLM call it gates.
|
|
14
|
+
*
|
|
15
|
+
* Adding a persona:
|
|
16
|
+
* 1. Create `packages/core/src/kraken/personas/<name>.ts`.
|
|
17
|
+
* 2. Call `registerPersona({ kind: 'spec', systemPrompt: '...', ... })`
|
|
18
|
+
* at module load.
|
|
19
|
+
* 3. (Optional) Extend `TaskNodeKind` to include the new kind — the
|
|
20
|
+
* runtime routes 'verify', 'spec', 'conformance' to the same
|
|
21
|
+
* host agent today, so this is not strictly required.
|
|
22
|
+
*
|
|
23
|
+
* @since Kraken v1.30.x — workflow script runtime (Pillar 2)
|
|
24
|
+
*/
|
|
25
|
+
import { parsePersonaVerdict, } from '../verdict.js';
|
|
26
|
+
const registry = new Map();
|
|
27
|
+
/** Register a persona. Idempotent: re-registering the same kind overwrites. */
|
|
28
|
+
export function registerPersona(p) {
|
|
29
|
+
registry.set(p.kind, p);
|
|
30
|
+
}
|
|
31
|
+
/** Look up a persona by kind. Returns undefined when not registered. */
|
|
32
|
+
export function getPersona(kind) {
|
|
33
|
+
return registry.get(kind);
|
|
34
|
+
}
|
|
35
|
+
/** All registered personas, in registration order. */
|
|
36
|
+
export function listPersonas() {
|
|
37
|
+
return [...registry.values()];
|
|
38
|
+
}
|
|
39
|
+
/** Whether the given kind is a "reviewer" — a persona that judges other
|
|
40
|
+
* tentacles' work. Used by the executor to decide whether to wire the
|
|
41
|
+
* verdict into a rework round. */
|
|
42
|
+
export function isReviewerKind(kind) {
|
|
43
|
+
return kind === 'verify' || kind === 'spec' || kind === 'conformance';
|
|
44
|
+
}
|
|
45
|
+
/** Default verdict parser for any persona. Mirrors `parsePersonaVerdict`. */
|
|
46
|
+
export function defaultPersonaParse(text) {
|
|
47
|
+
return parsePersonaVerdict(text);
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/kraken/personas/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAGH,OAAO,EACL,mBAAmB,GAGpB,MAAM,eAAe,CAAC;AAyBvB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;AAElD,+EAA+E;AAC/E,MAAM,UAAU,eAAe,CAAC,CAAU;IACxC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;AAC1B,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,UAAU,CAAC,IAAkB;IAC3C,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,YAAY;IAC1B,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AAChC,CAAC;AAED;;mCAEmC;AACnC,MAAM,UAAU,cAAc,CAAC,IAAkB;IAC/C,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,aAAa,CAAC;AACxE,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kraken persona — `spec` (spec-reviewer, Pillar 2 F2.2).
|
|
3
|
+
*
|
|
4
|
+
* Compares the writer's delivered work against a written spec / plan.
|
|
5
|
+
* The persona is **conservative**: when in doubt, fail. A spec-reviewer
|
|
6
|
+
* is the persona you want when the spec said "must do X" and the writer
|
|
7
|
+
* did a reasonable but slightly different thing — that gets a FAIL,
|
|
8
|
+
* because "reasonable" is exactly the kind of drift specs are meant to
|
|
9
|
+
* catch.
|
|
10
|
+
*
|
|
11
|
+
* The persona emits a per-requirement table in addition to the trailer:
|
|
12
|
+
* one row per requirement from the spec, with `met: 'pass'|'fail'|'unknown'`
|
|
13
|
+
* and an `evidence` field. The executor surfaces the failing rows in
|
|
14
|
+
* the digest and feeds them into a follow-up `fix` node.
|
|
15
|
+
*
|
|
16
|
+
* @since Kraken v1.30.x — workflow script runtime (Pillar 2)
|
|
17
|
+
*/
|
|
18
|
+
import { type Persona } from './registry.js';
|
|
19
|
+
declare const specPersona: Persona;
|
|
20
|
+
export default specPersona;
|
|
21
|
+
//# sourceMappingURL=specReviewer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specReviewer.d.ts","sourceRoot":"","sources":["../../../src/kraken/personas/specReviewer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAmB,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAiD9D,QAAA,MAAM,WAAW,EAAE,OAMlB,CAAC;AAIF,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kraken persona — `spec` (spec-reviewer, Pillar 2 F2.2).
|
|
3
|
+
*
|
|
4
|
+
* Compares the writer's delivered work against a written spec / plan.
|
|
5
|
+
* The persona is **conservative**: when in doubt, fail. A spec-reviewer
|
|
6
|
+
* is the persona you want when the spec said "must do X" and the writer
|
|
7
|
+
* did a reasonable but slightly different thing — that gets a FAIL,
|
|
8
|
+
* because "reasonable" is exactly the kind of drift specs are meant to
|
|
9
|
+
* catch.
|
|
10
|
+
*
|
|
11
|
+
* The persona emits a per-requirement table in addition to the trailer:
|
|
12
|
+
* one row per requirement from the spec, with `met: 'pass'|'fail'|'unknown'`
|
|
13
|
+
* and an `evidence` field. The executor surfaces the failing rows in
|
|
14
|
+
* the digest and feeds them into a follow-up `fix` node.
|
|
15
|
+
*
|
|
16
|
+
* @since Kraken v1.30.x — workflow script runtime (Pillar 2)
|
|
17
|
+
*/
|
|
18
|
+
import { registerPersona } from './registry.js';
|
|
19
|
+
const SYSTEM_PROMPT = [
|
|
20
|
+
'You are the spec-reviewer for Kraken. You compare a writer\'s delivered',
|
|
21
|
+
'work against a written spec or plan and judge each requirement.',
|
|
22
|
+
'',
|
|
23
|
+
'Your bias is CONSERVATIVE. When the spec said "must do X" and the writer',
|
|
24
|
+
'did a reasonable but slightly different thing, that is a FAIL. Specs',
|
|
25
|
+
'are meant to catch exactly this kind of drift.',
|
|
26
|
+
'',
|
|
27
|
+
'## Output format',
|
|
28
|
+
'',
|
|
29
|
+
'You MUST end with a verdict trailer on its own line:',
|
|
30
|
+
'',
|
|
31
|
+
' VERDICT: PASS',
|
|
32
|
+
'or',
|
|
33
|
+
' VERDICT: FAIL',
|
|
34
|
+
'',
|
|
35
|
+
'When the verdict is FAIL, you MUST also emit a per-requirement table in',
|
|
36
|
+
'a JSON code block, BEFORE the trailer:',
|
|
37
|
+
'',
|
|
38
|
+
'```json',
|
|
39
|
+
'{',
|
|
40
|
+
' "requirements": [',
|
|
41
|
+
' { "requirement": "<verbatim from the spec>", "met": "pass|fail|unknown", "evidence": "<path, line, command output>" },',
|
|
42
|
+
' ...',
|
|
43
|
+
' ]',
|
|
44
|
+
'}',
|
|
45
|
+
'```',
|
|
46
|
+
'',
|
|
47
|
+
'Rules:',
|
|
48
|
+
' - Cite concrete evidence (file path, function name, command output).',
|
|
49
|
+
' "Looks fine" is not evidence.',
|
|
50
|
+
' - When a requirement is partially met, mark it `fail` with evidence',
|
|
51
|
+
' describing the gap. The downstream `fix` tentacle will read this.',
|
|
52
|
+
' - When a requirement is genuinely impossible to assess without running',
|
|
53
|
+
' code, mark it `unknown` and explain why in evidence.',
|
|
54
|
+
' - The verdict trailer is the GATE: the executor will not read the',
|
|
55
|
+
' table if the trailer says PASS. The table is for diagnostics.',
|
|
56
|
+
' - Keep the table terse. One line per row.',
|
|
57
|
+
'',
|
|
58
|
+
'## What you do NOT do',
|
|
59
|
+
'',
|
|
60
|
+
' - You do not modify any files. You are a judge, not a fixer.',
|
|
61
|
+
' - You do not invent requirements that are not in the spec.',
|
|
62
|
+
' - You do not say PASS when the spec listed requirements you did not',
|
|
63
|
+
' actually assess. Either assess them or mark them `unknown`.',
|
|
64
|
+
].join('\n');
|
|
65
|
+
const specPersona = {
|
|
66
|
+
kind: 'spec',
|
|
67
|
+
label: 'spec-reviewer',
|
|
68
|
+
description: 'Compares a writer\'s output against a written spec, per-requirement.',
|
|
69
|
+
systemPrompt: SYSTEM_PROMPT,
|
|
70
|
+
// Default parser handles both the trailer and the requirements block.
|
|
71
|
+
};
|
|
72
|
+
registerPersona(specPersona);
|
|
73
|
+
export default specPersona;
|
|
74
|
+
//# sourceMappingURL=specReviewer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"specReviewer.js","sourceRoot":"","sources":["../../../src/kraken/personas/specReviewer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,eAAe,EAAgB,MAAM,eAAe,CAAC;AAE9D,MAAM,aAAa,GAAG;IACpB,yEAAyE;IACzE,iEAAiE;IACjE,EAAE;IACF,0EAA0E;IAC1E,sEAAsE;IACtE,gDAAgD;IAChD,EAAE;IACF,kBAAkB;IAClB,EAAE;IACF,sDAAsD;IACtD,EAAE;IACF,iBAAiB;IACjB,IAAI;IACJ,iBAAiB;IACjB,EAAE;IACF,yEAAyE;IACzE,wCAAwC;IACxC,EAAE;IACF,SAAS;IACT,GAAG;IACH,qBAAqB;IACrB,4HAA4H;IAC5H,SAAS;IACT,KAAK;IACL,GAAG;IACH,KAAK;IACL,EAAE;IACF,QAAQ;IACR,wEAAwE;IACxE,mCAAmC;IACnC,uEAAuE;IACvE,uEAAuE;IACvE,0EAA0E;IAC1E,0DAA0D;IAC1D,qEAAqE;IACrE,mEAAmE;IACnE,6CAA6C;IAC7C,EAAE;IACF,uBAAuB;IACvB,EAAE;IACF,gEAAgE;IAChE,8DAA8D;IAC9D,uEAAuE;IACvE,iEAAiE;CAClE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEb,MAAM,WAAW,GAAY;IAC3B,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,eAAe;IACtB,WAAW,EAAE,sEAAsE;IACnF,YAAY,EAAE,aAAa;IAC3B,sEAAsE;CACvE,CAAC;AAEF,eAAe,CAAC,WAAW,CAAC,CAAC;AAE7B,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kraken script runtime — public surface.
|
|
3
|
+
*
|
|
4
|
+
* Re-exports for `@zelari/core` consumers. CLI-side bundling lives in
|
|
5
|
+
* `src/cli/kraken/runtime/compile.ts` and is NOT exported here (it depends
|
|
6
|
+
* on esbuild, which is a CLI dev dep, not a core runtime dep).
|
|
7
|
+
*
|
|
8
|
+
* @since Kraken v1.30.x — workflow script runtime (F1.1)
|
|
9
|
+
*/
|
|
10
|
+
export * from './types.js';
|
|
11
|
+
export { runInSandbox, scanForFootguns, type SandboxRunOptions, type SandboxRunResult, } from './sandbox.js';
|
|
12
|
+
export { ScriptRunner, DEFAULT_MAX_TENTACLES, DEFAULT_PLAN_TIMEOUT_MS, resolveMaxTentacles, resolvePlanTimeoutMs, type ScriptRunnerOptions, } from './runner.js';
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/kraken/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,YAAY,EACZ,eAAe,EACf,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,GACtB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,KAAK,mBAAmB,GACzB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kraken script runtime — public surface.
|
|
3
|
+
*
|
|
4
|
+
* Re-exports for `@zelari/core` consumers. CLI-side bundling lives in
|
|
5
|
+
* `src/cli/kraken/runtime/compile.ts` and is NOT exported here (it depends
|
|
6
|
+
* on esbuild, which is a CLI dev dep, not a core runtime dep).
|
|
7
|
+
*
|
|
8
|
+
* @since Kraken v1.30.x — workflow script runtime (F1.1)
|
|
9
|
+
*/
|
|
10
|
+
export * from './types.js';
|
|
11
|
+
export { runInSandbox, scanForFootguns, } from './sandbox.js';
|
|
12
|
+
export { ScriptRunner, DEFAULT_MAX_TENTACLES, DEFAULT_PLAN_TIMEOUT_MS, resolveMaxTentacles, resolvePlanTimeoutMs, } from './runner.js';
|
|
13
|
+
// NOTE: `./sdk.js` is NOT re-exported from the package surface — it is meant
|
|
14
|
+
// to be bundled into user plans via the CLI-side esbuild alias, not imported
|
|
15
|
+
// directly by Node code. Importing it would throw at runtime.
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/kraken/runtime/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,YAAY,CAAC;AAC3B,OAAO,EACL,YAAY,EACZ,eAAe,GAGhB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,GAErB,MAAM,aAAa,CAAC;AACrB,6EAA6E;AAC7E,6EAA6E;AAC7E,8DAA8D"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kraken script runtime — runner.
|
|
3
|
+
*
|
|
4
|
+
* The `ScriptRunner` is the host-side orchestrator that owns the script's
|
|
5
|
+
* lifecycle: it builds the `PlanCapabilities` object exposed as
|
|
6
|
+
* `__zelari_sdk__` in the sandbox, enforces the tentacle and merge budgets,
|
|
7
|
+
* tracks every tentacle for snapshotting, and converts the host's
|
|
8
|
+
* `TentacleResult` into the script's `TentacleRef`.
|
|
9
|
+
*
|
|
10
|
+
* It does NOT itself compile the bundle (that's the CLI side; see
|
|
11
|
+
* `src/cli/kraken/runtime/compile.ts`) and does NOT itself run the
|
|
12
|
+
* sandbox (that's `sandbox.ts`). It only wires the two together.
|
|
13
|
+
*
|
|
14
|
+
* @since Kraken v1.30.x — workflow script runtime (F1.1)
|
|
15
|
+
*/
|
|
16
|
+
import { type PlanCapabilities, type PlanHostBridge, type ScriptRunResult } from './types.js';
|
|
17
|
+
/** Default cap on `tentacle()` calls per plan. Configurable via env. */
|
|
18
|
+
export declare const DEFAULT_MAX_TENTACLES = 200;
|
|
19
|
+
export declare function resolveMaxTentacles(env?: NodeJS.ProcessEnv): number;
|
|
20
|
+
/** Default wall-clock cap (ms) for the whole plan. */
|
|
21
|
+
export declare const DEFAULT_PLAN_TIMEOUT_MS: number;
|
|
22
|
+
export declare function resolvePlanTimeoutMs(env?: NodeJS.ProcessEnv): number;
|
|
23
|
+
export interface ScriptRunnerOptions {
|
|
24
|
+
/** Host bridge: this is the connection to the existing taskTool / worktree
|
|
25
|
+
* machinery. Wired by the CLI side. */
|
|
26
|
+
host: PlanHostBridge;
|
|
27
|
+
/** Original goal text (recorded in the snapshot). */
|
|
28
|
+
goal: string;
|
|
29
|
+
/** Stable id for this run. */
|
|
30
|
+
graphId: string;
|
|
31
|
+
/** Parent working directory. */
|
|
32
|
+
parentCwd: string;
|
|
33
|
+
/** Session id for radio correlation. */
|
|
34
|
+
sessionId: string;
|
|
35
|
+
/** Max tentacle calls allowed in this plan. */
|
|
36
|
+
maxTentacles?: number;
|
|
37
|
+
/** Wall-clock cap (ms) for the whole plan. */
|
|
38
|
+
planTimeoutMs?: number;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* A `ScriptRunner` is constructed once per script plan, then drives the
|
|
42
|
+
* script by exposing its `sdk` to the sandbox and bookkeeping the tentacles.
|
|
43
|
+
*/
|
|
44
|
+
export declare class ScriptRunner {
|
|
45
|
+
private readonly host;
|
|
46
|
+
private readonly goal;
|
|
47
|
+
private readonly graphId;
|
|
48
|
+
private readonly parentCwd;
|
|
49
|
+
private readonly sessionId;
|
|
50
|
+
private readonly maxTentacles;
|
|
51
|
+
private readonly planTimeoutMs;
|
|
52
|
+
private readonly startTime;
|
|
53
|
+
private readonly tentaclesById;
|
|
54
|
+
private tentacleCount;
|
|
55
|
+
private mergeCount;
|
|
56
|
+
private cancelled;
|
|
57
|
+
constructor(opts: ScriptRunnerOptions);
|
|
58
|
+
/** Build the `PlanCapabilities` object the sandbox will see. */
|
|
59
|
+
buildSdk(): PlanCapabilities;
|
|
60
|
+
/** One tentacle = one `runTentacle` call. The host returns a raw result;
|
|
61
|
+
* we turn it into a `TentacleRef` and stash it. */
|
|
62
|
+
private callTentacle;
|
|
63
|
+
private callBarrier;
|
|
64
|
+
private callRace;
|
|
65
|
+
private callWhile;
|
|
66
|
+
private callUntil;
|
|
67
|
+
/** One merge per plan. A second call is a structured error. */
|
|
68
|
+
private callMerge;
|
|
69
|
+
private callCheckpoint;
|
|
70
|
+
private callLog;
|
|
71
|
+
private callEmit;
|
|
72
|
+
private callGetContext;
|
|
73
|
+
private callSendTo;
|
|
74
|
+
/** Called by the host after the sandbox returns, to mark the run. */
|
|
75
|
+
finalize(opts: {
|
|
76
|
+
converged: boolean;
|
|
77
|
+
cancelled?: boolean;
|
|
78
|
+
}): ScriptRunResult;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../../src/kraken/runtime/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAEL,KAAK,gBAAgB,EAErB,KAAK,cAAc,EAEnB,KAAK,eAAe,EAGrB,MAAM,YAAY,CAAC;AAEpB,wEAAwE;AACxE,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC,wBAAgB,mBAAmB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAKhF;AAED,sDAAsD;AACtD,eAAO,MAAM,uBAAuB,QAAc,CAAC;AAEnD,wBAAgB,oBAAoB,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAKjF;AAsCD,MAAM,WAAW,mBAAmB;IAClC;4CACwC;IACxC,IAAI,EAAE,cAAc,CAAC;IACrB,qDAAqD;IACrD,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IACtC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkC;IAChE,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,SAAS,CAAS;gBAEd,IAAI,EAAE,mBAAmB;IAWrC,gEAAgE;IAChE,QAAQ,IAAI,gBAAgB;IAqB5B;wDACoD;YACtC,YAAY;YA8BZ,WAAW;YAaX,QAAQ;YAiBR,SAAS;YAqBT,SAAS;IAQvB,+DAA+D;YACjD,SAAS;YA4BT,cAAc;IAe5B,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,UAAU;IAIlB,qEAAqE;IACrE,QAAQ,CAAC,IAAI,EAAE;QAAE,SAAS,EAAE,OAAO,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,eAAe;CAiB7E"}
|