skillscript-runtime 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/ARCHITECTURE.md +70 -0
  2. package/LICENSE +21 -0
  3. package/README.md +346 -0
  4. package/dist/audit.d.ts +33 -0
  5. package/dist/audit.d.ts.map +1 -0
  6. package/dist/audit.js +76 -0
  7. package/dist/audit.js.map +1 -0
  8. package/dist/bootstrap.d.ts +69 -0
  9. package/dist/bootstrap.d.ts.map +1 -0
  10. package/dist/bootstrap.js +117 -0
  11. package/dist/bootstrap.js.map +1 -0
  12. package/dist/cli.d.ts +3 -0
  13. package/dist/cli.d.ts.map +1 -0
  14. package/dist/cli.js +805 -0
  15. package/dist/cli.js.map +1 -0
  16. package/dist/compile.d.ts +88 -0
  17. package/dist/compile.d.ts.map +1 -0
  18. package/dist/compile.js +544 -0
  19. package/dist/compile.js.map +1 -0
  20. package/dist/connectors/agent-noop.d.ts +23 -0
  21. package/dist/connectors/agent-noop.d.ts.map +1 -0
  22. package/dist/connectors/agent-noop.js +43 -0
  23. package/dist/connectors/agent-noop.js.map +1 -0
  24. package/dist/connectors/agent.d.ts +54 -0
  25. package/dist/connectors/agent.d.ts.map +1 -0
  26. package/dist/connectors/agent.js +21 -0
  27. package/dist/connectors/agent.js.map +1 -0
  28. package/dist/connectors/index.d.ts +13 -0
  29. package/dist/connectors/index.d.ts.map +1 -0
  30. package/dist/connectors/index.js +17 -0
  31. package/dist/connectors/index.js.map +1 -0
  32. package/dist/connectors/local-model.d.ts +41 -0
  33. package/dist/connectors/local-model.d.ts.map +1 -0
  34. package/dist/connectors/local-model.js +106 -0
  35. package/dist/connectors/local-model.js.map +1 -0
  36. package/dist/connectors/mcp.d.ts +22 -0
  37. package/dist/connectors/mcp.d.ts.map +1 -0
  38. package/dist/connectors/mcp.js +31 -0
  39. package/dist/connectors/mcp.js.map +1 -0
  40. package/dist/connectors/memory-store.d.ts +53 -0
  41. package/dist/connectors/memory-store.d.ts.map +1 -0
  42. package/dist/connectors/memory-store.js +169 -0
  43. package/dist/connectors/memory-store.js.map +1 -0
  44. package/dist/connectors/registry.d.ts +74 -0
  45. package/dist/connectors/registry.d.ts.map +1 -0
  46. package/dist/connectors/registry.js +127 -0
  47. package/dist/connectors/registry.js.map +1 -0
  48. package/dist/connectors/skill-store.d.ts +38 -0
  49. package/dist/connectors/skill-store.d.ts.map +1 -0
  50. package/dist/connectors/skill-store.js +314 -0
  51. package/dist/connectors/skill-store.js.map +1 -0
  52. package/dist/connectors/types.d.ts +188 -0
  53. package/dist/connectors/types.d.ts.map +1 -0
  54. package/dist/connectors/types.js +35 -0
  55. package/dist/connectors/types.js.map +1 -0
  56. package/dist/dashboard/server.d.ts +40 -0
  57. package/dist/dashboard/server.d.ts.map +1 -0
  58. package/dist/dashboard/server.js +122 -0
  59. package/dist/dashboard/server.js.map +1 -0
  60. package/dist/dashboard/spa/app.js +375 -0
  61. package/dist/dashboard/spa/index.html +26 -0
  62. package/dist/dashboard/spa/styles.css +99 -0
  63. package/dist/errors.d.ts +111 -0
  64. package/dist/errors.d.ts.map +1 -0
  65. package/dist/errors.js +187 -0
  66. package/dist/errors.js.map +1 -0
  67. package/dist/filters.d.ts +17 -0
  68. package/dist/filters.d.ts.map +1 -0
  69. package/dist/filters.js +40 -0
  70. package/dist/filters.js.map +1 -0
  71. package/dist/index.d.ts +41 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +33 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/lint.d.ts +97 -0
  76. package/dist/lint.d.ts.map +1 -0
  77. package/dist/lint.js +990 -0
  78. package/dist/lint.js.map +1 -0
  79. package/dist/mcp-server.d.ts +93 -0
  80. package/dist/mcp-server.d.ts.map +1 -0
  81. package/dist/mcp-server.js +505 -0
  82. package/dist/mcp-server.js.map +1 -0
  83. package/dist/metrics.d.ts +51 -0
  84. package/dist/metrics.d.ts.map +1 -0
  85. package/dist/metrics.js +107 -0
  86. package/dist/metrics.js.map +1 -0
  87. package/dist/parser.d.ts +160 -0
  88. package/dist/parser.d.ts.map +1 -0
  89. package/dist/parser.js +991 -0
  90. package/dist/parser.js.map +1 -0
  91. package/dist/provenance.d.ts +43 -0
  92. package/dist/provenance.d.ts.map +1 -0
  93. package/dist/provenance.js +58 -0
  94. package/dist/provenance.js.map +1 -0
  95. package/dist/runtime.d.ts +145 -0
  96. package/dist/runtime.d.ts.map +1 -0
  97. package/dist/runtime.js +1071 -0
  98. package/dist/runtime.js.map +1 -0
  99. package/dist/scheduler.d.ts +121 -0
  100. package/dist/scheduler.d.ts.map +1 -0
  101. package/dist/scheduler.js +271 -0
  102. package/dist/scheduler.js.map +1 -0
  103. package/dist/skill-manager.d.ts +121 -0
  104. package/dist/skill-manager.d.ts.map +1 -0
  105. package/dist/skill-manager.js +251 -0
  106. package/dist/skill-manager.js.map +1 -0
  107. package/dist/testing/conformance.d.ts +57 -0
  108. package/dist/testing/conformance.d.ts.map +1 -0
  109. package/dist/testing/conformance.js +365 -0
  110. package/dist/testing/conformance.js.map +1 -0
  111. package/dist/testing/index.d.ts +3 -0
  112. package/dist/testing/index.d.ts.map +1 -0
  113. package/dist/testing/index.js +5 -0
  114. package/dist/testing/index.js.map +1 -0
  115. package/dist/trace.d.ts +141 -0
  116. package/dist/trace.d.ts.map +1 -0
  117. package/dist/trace.js +226 -0
  118. package/dist/trace.js.map +1 -0
  119. package/examples/README.md +56 -0
  120. package/examples/classify-support-ticket.skill.md +30 -0
  121. package/examples/cut-release-tag.skill.md +40 -0
  122. package/examples/doc-qa-with-citations.skill.md +12 -0
  123. package/examples/feedback-sentiment-scan.skill.md +29 -0
  124. package/examples/hello.skill.md +9 -0
  125. package/examples/hello.skill.provenance.json +10 -0
  126. package/examples/morning-brief.skill.md +24 -0
  127. package/examples/programmatic-trace-demo.mjs +89 -0
  128. package/examples/service-health-watch.skill.md +18 -0
  129. package/package.json +100 -0
  130. package/scaffold/config.toml +35 -0
  131. package/scaffold/connectors.json +19 -0
  132. package/scaffold/examples/hello.skill.md +9 -0
@@ -0,0 +1,544 @@
1
+ import { parse, } from "./parser.js";
2
+ import { applyFilter } from "./filters.js";
3
+ import { buildProvenance, renderInlineProvenance, } from "./provenance.js";
4
+ import { lint } from "./lint.js";
5
+ import { LintFailureError } from "./errors.js";
6
+ /**
7
+ * Compile a skill source string. The high-level entrypoint embedders use.
8
+ * Throws on hard errors (parse errors, missing entry target, dep cycle,
9
+ * unresolved required vars); the message is structured for agent consumption.
10
+ */
11
+ export async function compile(source, options = {}) {
12
+ const { inputs, format = "prompt", requireResolver, skillStore, inlineProvenance = false } = options;
13
+ // Lint preflight — tier-1 violations block compilation per ERD §3.
14
+ // Parse errors surface here too (as parse-error rule findings) before the
15
+ // legacy error throw below; preserving the throw shape keeps existing
16
+ // catchers working while giving lint-aware callers a richer diagnostic.
17
+ if (options.skipLintPreflight !== true) {
18
+ const lintResult = await lint(source, {
19
+ ...(skillStore !== undefined ? { skillStore } : {}),
20
+ callSite: "compile-preflight",
21
+ });
22
+ const tier1 = lintResult.findings.filter((f) => f.severity === "error");
23
+ if (tier1.length > 0) {
24
+ throw new LintFailureError(tier1.map((f) => ({
25
+ rule: f.rule,
26
+ message: f.message,
27
+ ...(f.block !== undefined ? { block: f.block } : {}),
28
+ severity: f.severity,
29
+ ...(f.remediation !== undefined ? { remediation: f.remediation } : {}),
30
+ ...(f.extras !== undefined ? { extras: f.extras } : {}),
31
+ })), "compile");
32
+ }
33
+ }
34
+ const parsed = parse(source);
35
+ if (parsed.parseErrors.length > 0) {
36
+ throw new Error(`Skill parse errors:\n- ${parsed.parseErrors.join("\n- ")}`);
37
+ }
38
+ if (parsed.targets.size === 0) {
39
+ throw new Error(`Skill parsed with zero targets.`);
40
+ }
41
+ if (parsed.entryTarget === null) {
42
+ throw new Error(`Skill has no entry target (missing \`default:\` line and no targets defined).`);
43
+ }
44
+ if (parsed.onError !== null && skillStore !== undefined) {
45
+ try {
46
+ await skillStore.metadata(parsed.onError);
47
+ }
48
+ catch (err) {
49
+ // SkillNotFoundError (or any error from metadata lookup) → fail-clean
50
+ // at compile time rather than at runtime when the fallback would fire.
51
+ throw new Error(`Skill references missing fallback skill '${parsed.onError}' in \`# OnError:\` header.`);
52
+ }
53
+ }
54
+ // Variable resolution precedence: caller inputs > `# Requires:` cascade >
55
+ // `# Vars:` defaults.
56
+ const inputMap = inputs ?? {};
57
+ const resolved = new Map();
58
+ for (const v of parsed.vars) {
59
+ if (Object.prototype.hasOwnProperty.call(inputMap, v.name)) {
60
+ resolved.set(v.name, inputMap[v.name]);
61
+ }
62
+ }
63
+ for (const r of parsed.requires) {
64
+ if (resolved.has(r.target))
65
+ continue;
66
+ if (Object.prototype.hasOwnProperty.call(inputMap, r.target)) {
67
+ resolved.set(r.target, inputMap[r.target]);
68
+ }
69
+ }
70
+ for (const r of parsed.requires) {
71
+ if (resolved.has(r.target))
72
+ continue;
73
+ if (requireResolver !== undefined) {
74
+ const value = await requireResolver(r);
75
+ if (value !== null) {
76
+ resolved.set(r.target, value);
77
+ continue;
78
+ }
79
+ }
80
+ if (r.fallback !== null)
81
+ resolved.set(r.target, r.fallback);
82
+ }
83
+ for (const v of parsed.vars) {
84
+ if (resolved.has(v.name))
85
+ continue;
86
+ if (v.default !== undefined)
87
+ resolved.set(v.name, v.default);
88
+ }
89
+ const declaredNames = new Set([
90
+ ...parsed.vars.map((v) => v.name),
91
+ ...parsed.requires.map((r) => r.target),
92
+ ]);
93
+ const missing = [];
94
+ for (const name of declaredNames) {
95
+ if (!resolved.has(name))
96
+ missing.push(name);
97
+ }
98
+ if (missing.length > 0) {
99
+ throw new Error(`Missing required variables: ${missing.join(", ")}`);
100
+ }
101
+ // Phase 2 (T3): inline data-skill `&` references. Procedural-skill refs
102
+ // are left as `&` ops with ampParams populated for T5's runtime to dispatch.
103
+ // Skill-dep cycles error here. Tracks every inlined data-skill's
104
+ // content_hash for Phase 3's provenance block.
105
+ const dataSkillsInlined = [];
106
+ if (skillStore !== undefined) {
107
+ await inlineDataSkills(parsed, skillStore, dataSkillsInlined, [parsed.name ?? "(unnamed)"]);
108
+ }
109
+ else if (anyAmpDataLookupNeeded(parsed)) {
110
+ // Skill body contains `&` ops but no SkillStore was provided. Compile
111
+ // still proceeds — refs stay as procedural-style for T5 — but issue a
112
+ // warning if the skill might have meant a data-skill ref.
113
+ // (We can't know without loading; just emit a hint.)
114
+ }
115
+ const order = toposort(parsed.targets, parsed.entryTarget);
116
+ // Default output declaration when `# Output:` is absent.
117
+ const outputs = parsed.outputs.length > 0 ? parsed.outputs : [{ kind: "text" }];
118
+ const warnings = [];
119
+ if (order.length < parsed.targets.size) {
120
+ const reached = new Set(order);
121
+ const orphans = [];
122
+ for (const name of parsed.targets.keys()) {
123
+ if (!reached.has(name))
124
+ orphans.push(name);
125
+ }
126
+ warnings.push(`Targets {${orphans.join(", ")}} are not reachable from entry target '${parsed.entryTarget}'. ` +
127
+ `Either declare dependencies (Make-style: 'b: a' makes b depend on a), ` +
128
+ `set 'default: <name>' to pick a different entry target, ` +
129
+ `or fold the steps into the entry target as inline ops.`);
130
+ }
131
+ // Provenance: look up the source skill's version + content_hash via
132
+ // SkillStore if available, otherwise leave those fields undefined.
133
+ let sourceVersion;
134
+ let sourceContentHash;
135
+ if (skillStore !== undefined && parsed.name !== null) {
136
+ try {
137
+ const meta = await skillStore.metadata(parsed.name);
138
+ sourceVersion = meta.version;
139
+ sourceContentHash = meta.content_hash;
140
+ }
141
+ catch {
142
+ // Skill not stored yet (compile-from-source path) — fields stay undefined.
143
+ }
144
+ }
145
+ const provenance = buildProvenance({
146
+ sourceSkillName: parsed.name,
147
+ ...(sourceVersion !== undefined ? { sourceVersion } : {}),
148
+ ...(sourceContentHash !== undefined ? { sourceContentHash } : {}),
149
+ dataSkillsInlined,
150
+ });
151
+ let output = format === "prose"
152
+ ? renderProse(parsed, resolved, order)
153
+ : renderPrompt(parsed, resolved, order);
154
+ if (inlineProvenance) {
155
+ output += renderInlineProvenance(provenance);
156
+ }
157
+ return {
158
+ skillName: parsed.name,
159
+ format,
160
+ resolvedVariables: Object.fromEntries(resolved),
161
+ targetOrder: order,
162
+ output,
163
+ triggers: parsed.triggers,
164
+ outputs,
165
+ onError: parsed.onError,
166
+ warnings,
167
+ parsed,
168
+ dataSkillsInlined,
169
+ provenance,
170
+ };
171
+ }
172
+ /**
173
+ * Walk every op in every target (recursing into foreach/if bodies) and
174
+ * replace `&` ops that reference data-typed skills with inlined content.
175
+ * Procedural-skill refs stay as `&` ops for the runtime to invoke. Cycles
176
+ * error with a chain trace.
177
+ */
178
+ async function inlineDataSkills(parsed, store, inlinedRecord, chain) {
179
+ for (const target of parsed.targets.values()) {
180
+ target.ops = await inlineOps(target.ops, store, inlinedRecord, chain);
181
+ if (target.elseBlock !== undefined) {
182
+ target.elseBlock = await inlineOps(target.elseBlock, store, inlinedRecord, chain);
183
+ }
184
+ }
185
+ }
186
+ async function inlineOps(ops, store, inlinedRecord, chain) {
187
+ const out = [];
188
+ for (const op of ops) {
189
+ if (op.kind === "&" && op.ampParams !== undefined) {
190
+ const refName = op.ampParams.skillName;
191
+ if (chain.includes(refName)) {
192
+ const path = [...chain, refName];
193
+ const err = new Error(`Skill-dep cycle detected: ${path.join(" → ")}. ` +
194
+ `Data skills cannot inline through a reference loop.`);
195
+ // Agent-parseable structure: caller code can inspect err.cycle as
196
+ // a JSON array of skill names without parsing the message string.
197
+ err.cycle = path;
198
+ err.rule = "skill-dep-cycle";
199
+ throw err;
200
+ }
201
+ const source = await store.load(refName);
202
+ const refParsed = parse(source.source);
203
+ if (refParsed.type === "data") {
204
+ inlinedRecord.push({
205
+ name: refName,
206
+ version: source.version,
207
+ content_hash: source.content_hash,
208
+ });
209
+ // Recursively inline data-skills referenced by this data-skill.
210
+ await inlineDataSkills(refParsed, store, inlinedRecord, [...chain, refName]);
211
+ // Synthesize the inlined ops. Output-binding case (`-> VAR`)
212
+ // collapses the content into one $set so $(VAR) substitution
213
+ // sees a single value. Bare case splats into N `!` ops mirroring
214
+ // the data-skill's op structure — preserves per-rule granularity
215
+ // so an agent reading the parent's compiled output sees the
216
+ // guidance directives as separate items, not one giant emission.
217
+ if (op.outputVar !== undefined) {
218
+ const content = dataSkillContent(refParsed);
219
+ out.push({
220
+ kind: "$set",
221
+ body: `$set ${op.outputVar} = ${content}`,
222
+ setName: op.outputVar,
223
+ setValue: content,
224
+ });
225
+ }
226
+ else {
227
+ for (const dataOp of dataSkillBangOps(refParsed)) {
228
+ out.push({ kind: "!", body: dataOp });
229
+ }
230
+ }
231
+ continue;
232
+ }
233
+ // Procedural ref: leave as-is for T5 runtime.
234
+ out.push(op);
235
+ continue;
236
+ }
237
+ // Recurse into nested bodies for non-& ops.
238
+ if (op.foreachBody !== undefined) {
239
+ out.push({ ...op, foreachBody: await inlineOps(op.foreachBody, store, inlinedRecord, chain) });
240
+ continue;
241
+ }
242
+ if (op.ifBranches !== undefined) {
243
+ const newBranches = await Promise.all(op.ifBranches.map(async (b) => ({ cond: b.cond, body: await inlineOps(b.body, store, inlinedRecord, chain) })));
244
+ const next = { ...op, ifBranches: newBranches };
245
+ if (op.ifElseBody !== undefined) {
246
+ next.ifElseBody = await inlineOps(op.ifElseBody, store, inlinedRecord, chain);
247
+ }
248
+ out.push(next);
249
+ continue;
250
+ }
251
+ out.push(op);
252
+ }
253
+ return out;
254
+ }
255
+ /**
256
+ * Extract the inlineable content of a data-skill as a single joined string.
257
+ * Used for output-binding inlining (`& data -> VAR`) where the consumer
258
+ * wants the whole content as one value.
259
+ */
260
+ function dataSkillContent(parsed) {
261
+ return dataSkillBangOps(parsed).join("\n");
262
+ }
263
+ /**
264
+ * Extract each `!` op body from a data-skill in topological order.
265
+ * Used for bare-`&` inlining where we synthesize N `!` ops in the parent
266
+ * to preserve the per-rule structure agents need for reading.
267
+ */
268
+ function dataSkillBangOps(parsed) {
269
+ if (parsed.entryTarget === null)
270
+ return [];
271
+ const order = toposort(parsed.targets, parsed.entryTarget);
272
+ const lines = [];
273
+ for (const name of order) {
274
+ const target = parsed.targets.get(name);
275
+ if (!target)
276
+ continue;
277
+ for (const op of target.ops) {
278
+ if (op.kind === "!")
279
+ lines.push(op.body);
280
+ }
281
+ }
282
+ return lines;
283
+ }
284
+ function anyAmpDataLookupNeeded(parsed) {
285
+ for (const target of parsed.targets.values()) {
286
+ if (hasAmpOp(target.ops))
287
+ return true;
288
+ if (target.elseBlock !== undefined && hasAmpOp(target.elseBlock))
289
+ return true;
290
+ }
291
+ return false;
292
+ }
293
+ function hasAmpOp(ops) {
294
+ for (const op of ops) {
295
+ if (op.kind === "&")
296
+ return true;
297
+ if (op.foreachBody !== undefined && hasAmpOp(op.foreachBody))
298
+ return true;
299
+ if (op.ifBranches !== undefined) {
300
+ for (const b of op.ifBranches)
301
+ if (hasAmpOp(b.body))
302
+ return true;
303
+ }
304
+ if (op.ifElseBody !== undefined && hasAmpOp(op.ifElseBody))
305
+ return true;
306
+ }
307
+ return false;
308
+ }
309
+ /**
310
+ * Topological sort starting at `entry`. Leaves-first ordering. Throws on
311
+ * cycle or missing-dependency reference. Exported so embedders that compile
312
+ * by hand (parse → walk targets → ...) can use the same ordering as the
313
+ * default compile pipeline.
314
+ */
315
+ export function toposort(targets, entry) {
316
+ const visited = new Set();
317
+ const visiting = new Set();
318
+ const order = [];
319
+ function visit(name) {
320
+ if (visited.has(name))
321
+ return;
322
+ if (visiting.has(name)) {
323
+ throw new Error(`Dependency cycle detected at target '${name}'`);
324
+ }
325
+ const target = targets.get(name);
326
+ if (!target) {
327
+ throw new Error(`Target '${name}' references missing dependency`);
328
+ }
329
+ visiting.add(name);
330
+ for (const dep of target.deps)
331
+ visit(dep);
332
+ visiting.delete(name);
333
+ visited.add(name);
334
+ order.push(name);
335
+ }
336
+ visit(entry);
337
+ return order;
338
+ }
339
+ /**
340
+ * Compile-time variable substitution. Resolved declared vars get replaced;
341
+ * unknown refs (target outputs, iterator vars, ambient runtime refs) pass
342
+ * through verbatim for the runtime to substitute.
343
+ */
344
+ function substitute(body, resolved) {
345
+ return body.replace(/\$\(([^|)\s]+)\s*(?:\|\s*([A-Za-z_]\w*))?\s*\)/g, (match, name, filter) => {
346
+ if (!resolved.has(name))
347
+ return match;
348
+ const raw = resolved.get(name);
349
+ if (!filter)
350
+ return raw;
351
+ return applyFilter(raw, filter);
352
+ });
353
+ }
354
+ function renderOpPrompt(op, targetName, resolved, prefix = "") {
355
+ const body = op.kind === "$set" ? op.body : substitute(op.body, resolved);
356
+ switch (op.kind) {
357
+ case "$": return [`${prefix}- Call tool: ${op.mcpConnector !== undefined ? `${op.mcpConnector}.` : ""}${body} — bind output to $(${targetName}.output)`];
358
+ case "$set": return [`${prefix}- Bind variable: ${op.setName} = ${op.setValue}`];
359
+ case "?": return [`${prefix}- Reason: ${body}`];
360
+ case "@": return [`${prefix}- Run shell: ${body} — bind output to $(${targetName}.output)`];
361
+ case "!": return [`${prefix}- Tell the user: ${body}`];
362
+ case "??": return [`${prefix}- Ask the user: ${body}`];
363
+ case "&": {
364
+ const p = op.ampParams;
365
+ const argsStr = Object.entries(p.args).map(([k, v]) => `${k}=${substitute(v, resolved)}`).join(" ");
366
+ const bindTail = op.outputVar !== undefined ? ` — bind result to $(${op.outputVar})` : "";
367
+ return [`${prefix}- Invoke skill: ${p.skillName}${argsStr ? ` (${argsStr})` : ""}${bindTail}`];
368
+ }
369
+ case "foreach": {
370
+ const listExpr = substitute(op.foreachList, resolved);
371
+ const lines = [`${prefix}- For each \`${op.foreachIter}\` in ${listExpr}, do (loop-local scope):`];
372
+ for (const innerOp of op.foreachBody) {
373
+ lines.push(...renderOpPrompt(innerOp, targetName, resolved, prefix + " "));
374
+ }
375
+ return lines;
376
+ }
377
+ case ">": {
378
+ const p = op.retrievalParams;
379
+ const querySub = substitute(p.query, resolved);
380
+ const extraStr = Object.entries(p.extra)
381
+ .map(([k, v]) => `${k}=${substitute(v, resolved)}`)
382
+ .join(", ");
383
+ const tail = extraStr ? `, ${extraStr}` : "";
384
+ return [
385
+ `${prefix}- Retrieve from MemoryStore \`${p.connector}\`: mode=${p.mode}, query="${querySub}", limit=${p.limit}${tail} — bind result list to $(${op.outputVar}).`,
386
+ ];
387
+ }
388
+ case "~": {
389
+ const p = op.localModelParams;
390
+ const promptSub = substitute(p.prompt, resolved);
391
+ const modelName = p.model ?? "default";
392
+ const tokensTail = p.maxTokens !== undefined ? `, maxTokens=${p.maxTokens}` : "";
393
+ return [
394
+ `${prefix}- Invoke LocalModel \`${modelName}\` with prompt="${promptSub}"${tokensTail} — bind response to $(${op.outputVar}).`,
395
+ ];
396
+ }
397
+ case "if": {
398
+ const lines = [];
399
+ for (let i = 0; i < op.ifBranches.length; i++) {
400
+ const branch = op.ifBranches[i];
401
+ const label = i === 0 ? "If" : "Otherwise if";
402
+ lines.push(`${prefix}- ${label} ${branch.cond}, do:`);
403
+ for (const innerOp of branch.body) {
404
+ lines.push(...renderOpPrompt(innerOp, targetName, resolved, prefix + " "));
405
+ }
406
+ }
407
+ if (op.ifElseBody !== undefined) {
408
+ lines.push(`${prefix}- Otherwise, do:`);
409
+ for (const innerOp of op.ifElseBody) {
410
+ lines.push(...renderOpPrompt(innerOp, targetName, resolved, prefix + " "));
411
+ }
412
+ }
413
+ return lines;
414
+ }
415
+ }
416
+ }
417
+ function renderPrompt(parsed, resolved, order) {
418
+ const out = [];
419
+ out.push(`# Skill: ${parsed.name ?? "(unnamed)"}`);
420
+ if (parsed.description)
421
+ out.push(parsed.description);
422
+ out.push("");
423
+ if (parsed.onError !== null) {
424
+ out.push(`**If this skill fails, invoke fallback:** ${parsed.onError}`);
425
+ out.push("");
426
+ }
427
+ if (resolved.size > 0) {
428
+ out.push("## Resolved variables");
429
+ for (const [k, v] of resolved)
430
+ out.push(`- ${k} = ${v}`);
431
+ out.push("");
432
+ }
433
+ out.push("## Steps (topological order)");
434
+ let stepNum = 1;
435
+ for (const name of order) {
436
+ const target = parsed.targets.get(name);
437
+ if (!target)
438
+ continue;
439
+ out.push("");
440
+ out.push(`### ${stepNum}. ${name}${target.deps.length > 0 ? ` (after: ${target.deps.join(", ")})` : ""}`);
441
+ for (const op of target.ops) {
442
+ out.push(...renderOpPrompt(op, name, resolved));
443
+ }
444
+ if (target.elseBlock !== undefined) {
445
+ out.push("");
446
+ out.push(`**On failure of ${name}, do:**`);
447
+ for (const op of target.elseBlock) {
448
+ out.push(...renderOpPrompt(op, name, resolved));
449
+ }
450
+ }
451
+ stepNum += 1;
452
+ }
453
+ return out.join("\n");
454
+ }
455
+ function renderOpProse(op, resolved) {
456
+ const body = op.kind === "$set" ? op.body : substitute(op.body, resolved);
457
+ switch (op.kind) {
458
+ case "$": return [`Calls a tool: ${op.mcpConnector !== undefined ? `${op.mcpConnector}.` : ""}${body}.`];
459
+ case "$set": return [`Sets variable ${op.setName} to ${op.setValue}.`];
460
+ case "?": return [`Reasons through: ${body}.`];
461
+ case "@": return [`Runs a shell command: ${body}.`];
462
+ case "!": return [`Reports back to the user: ${body}.`];
463
+ case "??": return [`Pauses to ask the user: ${body}.`];
464
+ case "&": {
465
+ const p = op.ampParams;
466
+ const argsStr = Object.entries(p.args).map(([k, v]) => `${k}=${substitute(v, resolved)}`).join(", ");
467
+ const bindTail = op.outputVar !== undefined ? `; binds to $(${op.outputVar})` : "";
468
+ return [`Invokes skill ${p.skillName}${argsStr ? ` with ${argsStr}` : ""}${bindTail}.`];
469
+ }
470
+ case "foreach": {
471
+ const listExpr = substitute(op.foreachList, resolved);
472
+ const inner = op.foreachBody.flatMap((o) => renderOpProse(o, resolved));
473
+ return [`For each \`${op.foreachIter}\` in ${listExpr} (loop-local scope), runs: ${inner.join(" ")}`];
474
+ }
475
+ case ">": {
476
+ const p = op.retrievalParams;
477
+ const querySub = substitute(p.query, resolved);
478
+ const extraStr = Object.entries(p.extra)
479
+ .map(([k, v]) => `${k}=${substitute(v, resolved)}`)
480
+ .join(", ");
481
+ const tail = extraStr ? ` (filters: ${extraStr})` : "";
482
+ return [`Queries MemoryStore \`${p.connector}\` with mode=${p.mode}, query="${querySub}", limit=${p.limit}${tail}; binds to $(${op.outputVar}).`];
483
+ }
484
+ case "~": {
485
+ const p = op.localModelParams;
486
+ const promptSub = substitute(p.prompt, resolved);
487
+ const modelName = p.model ?? "default";
488
+ const tokensTail = p.maxTokens !== undefined ? ` (maxTokens=${p.maxTokens})` : "";
489
+ return [`Calls LocalModel \`${modelName}\` with prompt="${promptSub}"${tokensTail}; binds to $(${op.outputVar}).`];
490
+ }
491
+ case "if": {
492
+ const parts = [];
493
+ for (let i = 0; i < op.ifBranches.length; i++) {
494
+ const branch = op.ifBranches[i];
495
+ const label = i === 0 ? "If" : "Otherwise if";
496
+ const inner = branch.body.flatMap((o) => renderOpProse(o, resolved));
497
+ parts.push(`${label} ${branch.cond}, runs: ${inner.join(" ")}`);
498
+ }
499
+ if (op.ifElseBody !== undefined) {
500
+ const inner = op.ifElseBody.flatMap((o) => renderOpProse(o, resolved));
501
+ parts.push(`Otherwise, runs: ${inner.join(" ")}`);
502
+ }
503
+ return [parts.join(" ")];
504
+ }
505
+ }
506
+ }
507
+ function renderProse(parsed, resolved, order) {
508
+ const out = [];
509
+ out.push(`# ${parsed.name ?? "(unnamed)"}`);
510
+ if (parsed.description) {
511
+ out.push("");
512
+ out.push(parsed.description);
513
+ }
514
+ if (parsed.onError !== null) {
515
+ out.push("");
516
+ out.push(`**On error, falls back to:** ${parsed.onError}`);
517
+ }
518
+ if (resolved.size > 0) {
519
+ out.push("");
520
+ out.push("**Inputs:** " + Array.from(resolved.entries()).map(([k, v]) => `${k} = ${v}`).join("; "));
521
+ }
522
+ for (const name of order) {
523
+ const target = parsed.targets.get(name);
524
+ if (!target)
525
+ continue;
526
+ out.push("");
527
+ out.push(`## ${name}`);
528
+ const sentences = [];
529
+ if (target.deps.length > 0) {
530
+ sentences.push(`Runs after ${target.deps.join(", ")}.`);
531
+ }
532
+ for (const op of target.ops) {
533
+ sentences.push(...renderOpProse(op, resolved));
534
+ }
535
+ out.push(sentences.join(" "));
536
+ if (target.elseBlock !== undefined) {
537
+ const elseSentences = target.elseBlock.flatMap((op) => renderOpProse(op, resolved));
538
+ out.push("");
539
+ out.push(`**On failure:** ${elseSentences.join(" ")}`);
540
+ }
541
+ }
542
+ return out.join("\n");
543
+ }
544
+ //# sourceMappingURL=compile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compile.js","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { AgentConnector, AgentDescriptor, DeliveryPayload, DeliveryReceipt, WakeOpts, WakeReceipt, AgentStatus } from "./agent.js";
2
+ import type { StaticCapabilities, ManifestInfo } from "./types.js";
3
+ /**
4
+ * Default AgentConnector — `list_agents` returns []; `deliver` and `wake`
5
+ * resolve cleanly after logging a one-line warning so adopters notice the
6
+ * dispatch happened without a wired substrate. Lets the runtime start
7
+ * with no AgentConnector configured: `# Output: prompt-context:` decls
8
+ * still complete (with a warning instead of a thrown error) so authors
9
+ * don't have to wire a substrate before running mechanical previews.
10
+ *
11
+ * Use this in tests + dev. For production, wire a real impl
12
+ * (FileAgentConnector, WebhookAgentConnector, TmuxAgentConnector, etc.)
13
+ * via Registry.registerAgentConnector("primary", new MyImpl(...)).
14
+ */
15
+ export declare class NoOpAgentConnector implements AgentConnector {
16
+ static staticCapabilities(): StaticCapabilities;
17
+ list_agents(): Promise<AgentDescriptor[]>;
18
+ deliver(agent_id: string, payload: DeliveryPayload): Promise<DeliveryReceipt>;
19
+ wake(agent_id: string, _opts?: WakeOpts): Promise<WakeReceipt>;
20
+ agent_status(_agent_id: string): Promise<AgentStatus>;
21
+ manifest(): Promise<ManifestInfo>;
22
+ }
23
+ //# sourceMappingURL=agent-noop.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-noop.d.ts","sourceRoot":"","sources":["../../src/connectors/agent-noop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,eAAe,EACf,eAAe,EACf,QAAQ,EACR,WAAW,EACX,WAAW,EACZ,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAEnE;;;;;;;;;;;GAWG;AACH,qBAAa,kBAAmB,YAAW,cAAc;IACvD,MAAM,CAAC,kBAAkB,IAAI,kBAAkB;IASzC,WAAW,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAIzC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IAO7E,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC;IAO9D,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAIrD,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC;CAMxC"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Default AgentConnector — `list_agents` returns []; `deliver` and `wake`
3
+ * resolve cleanly after logging a one-line warning so adopters notice the
4
+ * dispatch happened without a wired substrate. Lets the runtime start
5
+ * with no AgentConnector configured: `# Output: prompt-context:` decls
6
+ * still complete (with a warning instead of a thrown error) so authors
7
+ * don't have to wire a substrate before running mechanical previews.
8
+ *
9
+ * Use this in tests + dev. For production, wire a real impl
10
+ * (FileAgentConnector, WebhookAgentConnector, TmuxAgentConnector, etc.)
11
+ * via Registry.registerAgentConnector("primary", new MyImpl(...)).
12
+ */
13
+ export class NoOpAgentConnector {
14
+ static staticCapabilities() {
15
+ return {
16
+ connector_type: "agent_connector",
17
+ implementation: "NoOpAgentConnector",
18
+ contract_version: "1.0.0",
19
+ features: { deliver: true, wake: true, list_agents: true, agent_status: true },
20
+ };
21
+ }
22
+ async list_agents() {
23
+ return [];
24
+ }
25
+ async deliver(agent_id, payload) {
26
+ process.stderr.write(`[NoOpAgentConnector] deliver(${agent_id}, kind=${payload.kind}) — no substrate wired; payload discarded.\n`);
27
+ return { delivered_at: Date.now() };
28
+ }
29
+ async wake(agent_id, _opts) {
30
+ process.stderr.write(`[NoOpAgentConnector] wake(${agent_id}) — no substrate wired; wake skipped.\n`);
31
+ return { woken_at: Date.now() };
32
+ }
33
+ async agent_status(_agent_id) {
34
+ return "unknown";
35
+ }
36
+ async manifest() {
37
+ return {
38
+ capabilities_version: "1.0.0",
39
+ manifest: { reachable_agents: [] },
40
+ };
41
+ }
42
+ }
43
+ //# sourceMappingURL=agent-noop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-noop.js","sourceRoot":"","sources":["../../src/connectors/agent-noop.ts"],"names":[],"mappings":"AAWA;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,kBAAkB;IAC7B,MAAM,CAAC,kBAAkB;QACvB,OAAO;YACL,cAAc,EAAE,iBAAiB;YACjC,cAAc,EAAE,oBAAoB;YACpC,gBAAgB,EAAE,OAAO;YACzB,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE;SAC/E,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW;QACf,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,QAAgB,EAAE,OAAwB;QACtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,gCAAgC,QAAQ,UAAU,OAAO,CAAC,IAAI,8CAA8C,CAC7G,CAAC;QACF,OAAO,EAAE,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAgB,EAAE,KAAgB;QAC3C,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,6BAA6B,QAAQ,yCAAyC,CAC/E,CAAC;QACF,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,SAAiB;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO;YACL,oBAAoB,EAAE,OAAO;YAC7B,QAAQ,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE;SACnC,CAAC;IACJ,CAAC;CACF"}