skillscript-runtime 0.7.3 → 0.9.5

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 (89) hide show
  1. package/dist/approval.d.ts +99 -0
  2. package/dist/approval.d.ts.map +1 -0
  3. package/dist/approval.js +224 -0
  4. package/dist/approval.js.map +1 -0
  5. package/dist/bootstrap.d.ts +21 -1
  6. package/dist/bootstrap.d.ts.map +1 -1
  7. package/dist/bootstrap.js +25 -6
  8. package/dist/bootstrap.js.map +1 -1
  9. package/dist/compile.d.ts.map +1 -1
  10. package/dist/compile.js +25 -1
  11. package/dist/compile.js.map +1 -1
  12. package/dist/composition.d.ts +29 -0
  13. package/dist/composition.d.ts.map +1 -1
  14. package/dist/composition.js +52 -1
  15. package/dist/composition.js.map +1 -1
  16. package/dist/connectors/agent-noop.d.ts +1 -1
  17. package/dist/connectors/agent-noop.js +1 -1
  18. package/dist/connectors/agent.d.ts +1 -1
  19. package/dist/connectors/agent.js +1 -1
  20. package/dist/connectors/agent.js.map +1 -1
  21. package/dist/connectors/local-model-mcp.d.ts +8 -0
  22. package/dist/connectors/local-model-mcp.d.ts.map +1 -1
  23. package/dist/connectors/local-model-mcp.js +10 -0
  24. package/dist/connectors/local-model-mcp.js.map +1 -1
  25. package/dist/connectors/memory-store-mcp.d.ts +12 -1
  26. package/dist/connectors/memory-store-mcp.d.ts.map +1 -1
  27. package/dist/connectors/memory-store-mcp.js +46 -1
  28. package/dist/connectors/memory-store-mcp.js.map +1 -1
  29. package/dist/connectors/memory-store.d.ts +9 -1
  30. package/dist/connectors/memory-store.d.ts.map +1 -1
  31. package/dist/connectors/memory-store.js +33 -0
  32. package/dist/connectors/memory-store.js.map +1 -1
  33. package/dist/connectors/registry.d.ts +8 -1
  34. package/dist/connectors/registry.d.ts.map +1 -1
  35. package/dist/connectors/registry.js +10 -1
  36. package/dist/connectors/registry.js.map +1 -1
  37. package/dist/connectors/skill-store.d.ts.map +1 -1
  38. package/dist/connectors/skill-store.js +43 -13
  39. package/dist/connectors/skill-store.js.map +1 -1
  40. package/dist/connectors/types.d.ts +43 -0
  41. package/dist/connectors/types.d.ts.map +1 -1
  42. package/dist/connectors/types.js.map +1 -1
  43. package/dist/dashboard/spa/app.js +37 -9
  44. package/dist/dispatch-validate.d.ts +64 -0
  45. package/dist/dispatch-validate.d.ts.map +1 -0
  46. package/dist/dispatch-validate.js +81 -0
  47. package/dist/dispatch-validate.js.map +1 -0
  48. package/dist/errors.d.ts +11 -0
  49. package/dist/errors.d.ts.map +1 -1
  50. package/dist/errors.js +16 -0
  51. package/dist/errors.js.map +1 -1
  52. package/dist/help-content.d.ts.map +1 -1
  53. package/dist/help-content.js +95 -18
  54. package/dist/help-content.js.map +1 -1
  55. package/dist/index.d.ts +3 -0
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +3 -0
  58. package/dist/index.js.map +1 -1
  59. package/dist/lint.d.ts +14 -0
  60. package/dist/lint.d.ts.map +1 -1
  61. package/dist/lint.js +591 -98
  62. package/dist/lint.js.map +1 -1
  63. package/dist/mcp-server.d.ts.map +1 -1
  64. package/dist/mcp-server.js +53 -11
  65. package/dist/mcp-server.js.map +1 -1
  66. package/dist/parser.d.ts +30 -3
  67. package/dist/parser.d.ts.map +1 -1
  68. package/dist/parser.js +143 -8
  69. package/dist/parser.js.map +1 -1
  70. package/dist/runtime.d.ts +32 -2
  71. package/dist/runtime.d.ts.map +1 -1
  72. package/dist/runtime.js +128 -26
  73. package/dist/runtime.js.map +1 -1
  74. package/dist/scheduler.d.ts +20 -1
  75. package/dist/scheduler.d.ts.map +1 -1
  76. package/dist/scheduler.js +34 -1
  77. package/dist/scheduler.js.map +1 -1
  78. package/examples/classify-support-ticket.skill.md +2 -2
  79. package/examples/cut-release-tag.skill.md +1 -1
  80. package/examples/doc-qa-with-citations.skill.md +1 -1
  81. package/examples/feedback-sentiment-scan.skill.md +2 -2
  82. package/examples/hello.skill.provenance.json +1 -1
  83. package/examples/morning-brief.skill.md +3 -3
  84. package/examples/onboarding-scaffold/file-memory-store.ts +32 -1
  85. package/examples/queue-length-monitor.skill.md +1 -1
  86. package/examples/service-health-watch.skill.md +1 -1
  87. package/examples/youtrack-morning-sweep.skill.md +1 -1
  88. package/package.json +1 -1
  89. package/scaffold/examples/hello.skill.md +3 -2
@@ -0,0 +1,99 @@
1
+ /**
2
+ * v0.9.0 — skill-approval mechanism.
3
+ *
4
+ * Canonical model (per thread 29b6208e):
5
+ * - Draft : authored, lint+compile+view ok, cannot execute
6
+ * - Approved + valid hash-token : can execute (manual / trigger / composition)
7
+ *
8
+ * Approval token = `vN:<hex>` where N picks the hash function:
9
+ * v0 — reserved, rejected (naked "Approved" fails fast)
10
+ * v1 — CRC32 (bundled default; discipline-barrier strength)
11
+ * v2 — reserved for HMAC-SHA256
12
+ * v3 — reserved for Ed25519 signature
13
+ * adopter-extensible past v3 via `registerApprovalFn`
14
+ *
15
+ * Token is computed over the body *excluding* the `# Status:` line, so
16
+ * stamping the token doesn't perturb its own input.
17
+ */
18
+ /**
19
+ * Set the version used by `stampApprovalToken(body)` when no explicit
20
+ * version is passed. Adopter bootstraps that register `v2` HMAC (or
21
+ * stronger) call this to make the dashboard's approval flow stamp with
22
+ * the upgraded function. Default stays `v1` (bundled CRC32).
23
+ */
24
+ export declare function setPreferredApprovalVersion(version: string): void;
25
+ export declare function getPreferredApprovalVersion(): string;
26
+ export interface ApprovalToken {
27
+ version: string;
28
+ token: string;
29
+ }
30
+ export type ApprovalVerification = {
31
+ ok: true;
32
+ token: ApprovalToken;
33
+ } | {
34
+ ok: false;
35
+ reason: string;
36
+ };
37
+ /**
38
+ * Register an approval function for a version slot. Adopter-extension API;
39
+ * intended for substituting cryptographic strength (HMAC, Ed25519) without
40
+ * touching language internals. `v0` is reserved and cannot be registered.
41
+ */
42
+ export declare function registerApprovalFn(version: string, fn: (body: string) => string): void;
43
+ export declare function getApprovalFn(version: string): ((body: string) => string) | null;
44
+ export declare function registeredApprovalVersions(): string[];
45
+ /**
46
+ * Strip the `# Status:` header line from a skill body. The hash input is the
47
+ * body MINUS this line — renaming or re-versioning a skill doesn't invalidate
48
+ * approval, only body edits do. Per spec point 3 in 29b6208e.
49
+ */
50
+ export declare function stripStatusLineForHashing(body: string): string;
51
+ /**
52
+ * Parse a token string of the form `vN:<token>` into its parts. Returns
53
+ * null on shape mismatch — caller surfaces a clear error to the operator.
54
+ */
55
+ export declare function parseApprovalToken(raw: string): ApprovalToken | null;
56
+ /**
57
+ * Compute the canonical approval token for a body at a given version. The
58
+ * dashboard calls this when stamping `# Status: Approved <token>`.
59
+ */
60
+ export declare function computeApprovalToken(body: string, version?: string): ApprovalToken;
61
+ /**
62
+ * Verify a stored token against the current body. Called by runtime at every
63
+ * execution entry point. A mismatch means the body was edited since approval,
64
+ * so the human-approval gate must run again.
65
+ */
66
+ export declare function verifyApprovalToken(body: string, rawToken: string): ApprovalVerification;
67
+ /**
68
+ * Extract the status + (optional) approval token from a skill body's
69
+ * `# Status:` header. Mirrors the parser's split-on-whitespace logic so
70
+ * SkillStore can read status without re-parsing the whole skill.
71
+ *
72
+ * Returns:
73
+ * - `null` if no `# Status:` header is present or the value is unparseable
74
+ * - `{ status, approvalToken: null }` for Draft/Disabled or naked Approved
75
+ * - `{ status: "Approved", approvalToken: "vN:..." }` when stamped
76
+ */
77
+ export declare function extractStatusFromBody(body: string): {
78
+ status: "Draft" | "Approved" | "Disabled";
79
+ approvalToken: string | null;
80
+ } | null;
81
+ /**
82
+ * Universal execution-time gate. Called at every dispatch entry point
83
+ * (scheduler.dispatchSkill, MCP execute_skill handler, in-skill
84
+ * `$ execute_skill` op, compile-time `&` data-skill inline). Returns ok
85
+ * iff status is Approved AND the body's stamped token re-computes correctly.
86
+ *
87
+ * v0.9.0 — supersedes the v0.8.x "status === Approved" check; that check
88
+ * remains the first gate, but a stamped + verified token is now required.
89
+ */
90
+ export declare function evaluateApprovalGate(body: string): ApprovalVerification;
91
+ /**
92
+ * Stamp `# Status: Approved <token>` into a skill body. Called by the
93
+ * dashboard's approval flow + by test helpers that need to produce a
94
+ * runnable fixture body programmatically. The function recomputes the
95
+ * token over the body MINUS its `# Status:` line so the stamp is
96
+ * idempotent regardless of the body's current header state.
97
+ */
98
+ export declare function stampApprovalToken(body: string, version?: string): string;
99
+ //# sourceMappingURL=approval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval.d.ts","sourceRoot":"","sources":["../src/approval.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAKH;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAUjE;AAED,wBAAgB,2BAA2B,IAAI,MAAM,CAEpD;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,oBAAoB,GAC5B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GAClC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAElC;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAQtF;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,GAAG,IAAI,CAEhF;AAED,wBAAgB,0BAA0B,IAAI,MAAM,EAAE,CAErD;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK9D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAIpE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,MAAa,GAAG,aAAa,CAWxF;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,oBAAoB,CA0BxF;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,MAAM,EAAE,OAAO,GAAG,UAAU,GAAG,UAAU,CAAC;IAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAAG,IAAI,CAatI;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,oBAAoB,CAkBvE;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAWzE"}
@@ -0,0 +1,224 @@
1
+ /**
2
+ * v0.9.0 — skill-approval mechanism.
3
+ *
4
+ * Canonical model (per thread 29b6208e):
5
+ * - Draft : authored, lint+compile+view ok, cannot execute
6
+ * - Approved + valid hash-token : can execute (manual / trigger / composition)
7
+ *
8
+ * Approval token = `vN:<hex>` where N picks the hash function:
9
+ * v0 — reserved, rejected (naked "Approved" fails fast)
10
+ * v1 — CRC32 (bundled default; discipline-barrier strength)
11
+ * v2 — reserved for HMAC-SHA256
12
+ * v3 — reserved for Ed25519 signature
13
+ * adopter-extensible past v3 via `registerApprovalFn`
14
+ *
15
+ * Token is computed over the body *excluding* the `# Status:` line, so
16
+ * stamping the token doesn't perturb its own input.
17
+ */
18
+ const APPROVAL_FNS = new Map();
19
+ let PREFERRED_VERSION = "v1";
20
+ /**
21
+ * Set the version used by `stampApprovalToken(body)` when no explicit
22
+ * version is passed. Adopter bootstraps that register `v2` HMAC (or
23
+ * stronger) call this to make the dashboard's approval flow stamp with
24
+ * the upgraded function. Default stays `v1` (bundled CRC32).
25
+ */
26
+ export function setPreferredApprovalVersion(version) {
27
+ if (version === "v0") {
28
+ throw new Error(`approval version 'v0' is reserved`);
29
+ }
30
+ if (!APPROVAL_FNS.has(version)) {
31
+ throw new Error(`approval version '${version}' is not registered; call registerApprovalFn first`);
32
+ }
33
+ PREFERRED_VERSION = version;
34
+ }
35
+ export function getPreferredApprovalVersion() {
36
+ return PREFERRED_VERSION;
37
+ }
38
+ /**
39
+ * Register an approval function for a version slot. Adopter-extension API;
40
+ * intended for substituting cryptographic strength (HMAC, Ed25519) without
41
+ * touching language internals. `v0` is reserved and cannot be registered.
42
+ */
43
+ export function registerApprovalFn(version, fn) {
44
+ if (version === "v0") {
45
+ throw new Error(`approval version 'v0' is reserved and cannot be registered`);
46
+ }
47
+ if (!/^v\d+$/.test(version)) {
48
+ throw new Error(`approval version must match /^v\\d+$/ (got '${version}')`);
49
+ }
50
+ APPROVAL_FNS.set(version, fn);
51
+ }
52
+ export function getApprovalFn(version) {
53
+ return APPROVAL_FNS.get(version) ?? null;
54
+ }
55
+ export function registeredApprovalVersions() {
56
+ return [...APPROVAL_FNS.keys()].sort();
57
+ }
58
+ /**
59
+ * Strip the `# Status:` header line from a skill body. The hash input is the
60
+ * body MINUS this line — renaming or re-versioning a skill doesn't invalidate
61
+ * approval, only body edits do. Per spec point 3 in 29b6208e.
62
+ */
63
+ export function stripStatusLineForHashing(body) {
64
+ return body
65
+ .split("\n")
66
+ .filter((line) => !/^\s*#\s*Status\s*:/i.test(line))
67
+ .join("\n");
68
+ }
69
+ /**
70
+ * Parse a token string of the form `vN:<token>` into its parts. Returns
71
+ * null on shape mismatch — caller surfaces a clear error to the operator.
72
+ */
73
+ export function parseApprovalToken(raw) {
74
+ const m = /^(v\d+):([A-Za-z0-9_-]+)$/.exec(raw.trim());
75
+ if (!m || m[1] === undefined || m[2] === undefined)
76
+ return null;
77
+ return { version: m[1], token: m[2] };
78
+ }
79
+ /**
80
+ * Compute the canonical approval token for a body at a given version. The
81
+ * dashboard calls this when stamping `# Status: Approved <token>`.
82
+ */
83
+ export function computeApprovalToken(body, version = "v1") {
84
+ if (version === "v0") {
85
+ throw new Error(`approval version 'v0' is reserved`);
86
+ }
87
+ const fn = APPROVAL_FNS.get(version);
88
+ if (!fn) {
89
+ throw new Error(`approval version '${version}' is not registered (available: ${registeredApprovalVersions().join(", ") || "none"})`);
90
+ }
91
+ return { version, token: fn(stripStatusLineForHashing(body)) };
92
+ }
93
+ /**
94
+ * Verify a stored token against the current body. Called by runtime at every
95
+ * execution entry point. A mismatch means the body was edited since approval,
96
+ * so the human-approval gate must run again.
97
+ */
98
+ export function verifyApprovalToken(body, rawToken) {
99
+ const parsed = parseApprovalToken(rawToken);
100
+ if (!parsed) {
101
+ return {
102
+ ok: false,
103
+ reason: `approval token has invalid shape — expected 'vN:<token>', got '${rawToken}'`,
104
+ };
105
+ }
106
+ if (parsed.version === "v0") {
107
+ return { ok: false, reason: `approval version 'v0' is reserved` };
108
+ }
109
+ const fn = APPROVAL_FNS.get(parsed.version);
110
+ if (!fn) {
111
+ return {
112
+ ok: false,
113
+ reason: `approval version '${parsed.version}' is not registered (available: ${registeredApprovalVersions().join(", ") || "none"})`,
114
+ };
115
+ }
116
+ const expected = fn(stripStatusLineForHashing(body));
117
+ if (expected !== parsed.token) {
118
+ return {
119
+ ok: false,
120
+ reason: `approval token mismatch — skill body has been edited since approval; re-approve via dashboard`,
121
+ };
122
+ }
123
+ return { ok: true, token: parsed };
124
+ }
125
+ /**
126
+ * Extract the status + (optional) approval token from a skill body's
127
+ * `# Status:` header. Mirrors the parser's split-on-whitespace logic so
128
+ * SkillStore can read status without re-parsing the whole skill.
129
+ *
130
+ * Returns:
131
+ * - `null` if no `# Status:` header is present or the value is unparseable
132
+ * - `{ status, approvalToken: null }` for Draft/Disabled or naked Approved
133
+ * - `{ status: "Approved", approvalToken: "vN:..." }` when stamped
134
+ */
135
+ export function extractStatusFromBody(body) {
136
+ const m = /^\s*#\s*Status\s*:\s*(.+?)\s*$/m.exec(body);
137
+ if (!m)
138
+ return null;
139
+ const raw = (m[1] ?? "").trim();
140
+ const parts = raw.split(/\s+/);
141
+ const statusRaw = (parts[0] ?? "").toLowerCase();
142
+ const tokenRaw = parts.slice(1).join(" ").trim();
143
+ let status;
144
+ if (statusRaw === "draft")
145
+ status = "Draft";
146
+ else if (statusRaw === "approved")
147
+ status = "Approved";
148
+ else if (statusRaw === "disabled")
149
+ status = "Disabled";
150
+ else
151
+ return null;
152
+ return { status, approvalToken: tokenRaw.length > 0 ? tokenRaw : null };
153
+ }
154
+ /**
155
+ * Universal execution-time gate. Called at every dispatch entry point
156
+ * (scheduler.dispatchSkill, MCP execute_skill handler, in-skill
157
+ * `$ execute_skill` op, compile-time `&` data-skill inline). Returns ok
158
+ * iff status is Approved AND the body's stamped token re-computes correctly.
159
+ *
160
+ * v0.9.0 — supersedes the v0.8.x "status === Approved" check; that check
161
+ * remains the first gate, but a stamped + verified token is now required.
162
+ */
163
+ export function evaluateApprovalGate(body) {
164
+ const extracted = extractStatusFromBody(body);
165
+ if (extracted === null) {
166
+ return { ok: false, reason: `skill has no \`# Status:\` header — defaults to Draft, execution refused` };
167
+ }
168
+ if (extracted.status === "Disabled") {
169
+ return { ok: false, reason: `skill status is 'Disabled' — execution refused` };
170
+ }
171
+ if (extracted.status === "Draft") {
172
+ return { ok: false, reason: `skill status is 'Draft' — approve via dashboard before executing` };
173
+ }
174
+ if (extracted.approvalToken === null) {
175
+ return {
176
+ ok: false,
177
+ reason: `skill is Approved but missing approval token — re-approve via dashboard to stamp '# Status: Approved v1:<token>'`,
178
+ };
179
+ }
180
+ return verifyApprovalToken(body, extracted.approvalToken);
181
+ }
182
+ /**
183
+ * Stamp `# Status: Approved <token>` into a skill body. Called by the
184
+ * dashboard's approval flow + by test helpers that need to produce a
185
+ * runnable fixture body programmatically. The function recomputes the
186
+ * token over the body MINUS its `# Status:` line so the stamp is
187
+ * idempotent regardless of the body's current header state.
188
+ */
189
+ export function stampApprovalToken(body, version) {
190
+ const v = version ?? PREFERRED_VERSION;
191
+ const token = computeApprovalToken(body, v);
192
+ const line = `# Status: Approved ${token.version}:${token.token}`;
193
+ if (/^\s*#\s*Status\s*:/m.test(body)) {
194
+ return body.replace(/^\s*#\s*Status\s*:.*$/m, line);
195
+ }
196
+ if (/^#\s*Skill\s*:/m.test(body)) {
197
+ return body.replace(/^(#\s*Skill\s*:.*?)$/m, `$1\n${line}`);
198
+ }
199
+ return `${line}\n${body}`;
200
+ }
201
+ // ─── v1: CRC32 reference impl ─────────────────────────────────────────────────
202
+ const CRC32_TABLE = (() => {
203
+ const table = new Array(256);
204
+ for (let i = 0; i < 256; i++) {
205
+ let c = i;
206
+ for (let k = 0; k < 8; k++) {
207
+ c = c & 1 ? 0xedb88320 ^ (c >>> 1) : c >>> 1;
208
+ }
209
+ table[i] = c >>> 0;
210
+ }
211
+ return table;
212
+ })();
213
+ function crc32Utf8(input) {
214
+ const bytes = new TextEncoder().encode(input);
215
+ let crc = 0xffffffff;
216
+ for (let i = 0; i < bytes.length; i++) {
217
+ const idx = (crc ^ (bytes[i] ?? 0)) & 0xff;
218
+ crc = (CRC32_TABLE[idx] ?? 0) ^ (crc >>> 8);
219
+ }
220
+ crc = (crc ^ 0xffffffff) >>> 0;
221
+ return crc.toString(16).padStart(8, "0");
222
+ }
223
+ registerApprovalFn("v1", crc32Utf8);
224
+ //# sourceMappingURL=approval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval.js","sourceRoot":"","sources":["../src/approval.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { Registry } from "./connectors/registry.js";
2
2
  import { FilesystemSkillStore } from "./connectors/skill-store.js";
3
3
  import { FilesystemTraceStore } from "./trace.js";
4
- import { Scheduler } from "./scheduler.js";
4
+ import { Scheduler, type TriggerRegistration } from "./scheduler.js";
5
5
  import type { TraceConfig } from "./trace.js";
6
6
  import { McpServer } from "./mcp-server.js";
7
7
  export interface BootstrapOpts {
@@ -93,6 +93,26 @@ export declare function defaultRegistry(opts: DefaultRegistryOpts): {
93
93
  * `result.mcpServer`.
94
94
  */
95
95
  export declare function bootstrap(opts: BootstrapOpts): BootstrapResult;
96
+ /**
97
+ * Read `triggers.json` (if present) and re-register each imperative trigger
98
+ * into the scheduler with its persisted id. Prunes expired rows during the
99
+ * load. Re-writes the file with the pruned set so future hydrations don't
100
+ * re-scan dead entries.
101
+ */
102
+ /**
103
+ * Hydrate persisted triggers from `triggers.json` into a scheduler. Exported
104
+ * as a public surface for adopter bootstraps that wire their own scheduler
105
+ * but want the same on-disk format. v0.9.0.
106
+ */
107
+ export declare function hydratePersistedTriggers(scheduler: Scheduler, path: string, log?: (msg: string) => void): {
108
+ loaded: number;
109
+ pruned: number;
110
+ };
111
+ /**
112
+ * Serialize the scheduler's imperative-trigger set to disk atomically.
113
+ * Exported as a public surface for adopter bootstraps; v0.9.0.
114
+ */
115
+ export declare function writePersistedTriggers(path: string, triggers: ReadonlyArray<TriggerRegistration>): void;
96
116
  /**
97
117
  * Walk the SkillStore for Approved skills with declared `# Triggers:`
98
118
  * headers and register each into the scheduler. Returns the number of
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAMnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,SAAS,EAA0D,MAAM,gBAAgB,CAAC;AACnG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,qDAAqD;IACrD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,kFAAkF;IAClF,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IAC7B;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,oBAAoB,CAAC;IACjC,UAAU,EAAE,oBAAoB,CAAC;IACjC,qEAAqE;IACrE,iBAAiB,EAAE,OAAO,CAAC;IAC3B,sEAAsE;IACtE,IAAI,EAAE,OAAO,GAAG,WAAW,CAAC;IAC5B,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,wBAAwB,EAAE,MAAM,EAAE,CAAC;IACnC,gHAAgH;IAChH,qBAAqB,EAAE,MAAM,EAAE,CAAC;CACjC;AAoBD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,UAAU,EAAE,oBAAoB,CAAA;CAAE,CA6BnH;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,eAAe,CAqF9D;AAqFD;;;;;;;;;;GAUG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,GAAG,YAAY,CAAC,EACzD,GAAG,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAA4D,GACjF,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAkClD"}
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAMnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,SAAS,EAAgC,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACnG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAI5C,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,6CAA6C;IAC7C,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,qDAAqD;IACrD,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,kFAAkF;IAClF,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,GAAG,WAAW,CAAC;IAC7B;;;;;;OAMG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,SAAS,CAAC;IACrB,UAAU,EAAE,oBAAoB,CAAC;IACjC,UAAU,EAAE,oBAAoB,CAAC;IACjC,qEAAqE;IACrE,iBAAiB,EAAE,OAAO,CAAC;IAC3B,sEAAsE;IACtE,IAAI,EAAE,OAAO,GAAG,WAAW,CAAC;IAC5B,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,wBAAwB,EAAE,MAAM,EAAE,CAAC;IACnC,gHAAgH;IAChH,qBAAqB,EAAE,MAAM,EAAE,CAAC;CACjC;AAuCD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,mBAAmB,GAAG;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,UAAU,EAAE,oBAAoB,CAAA;CAAE,CAkCnH;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,eAAe,CAqF9D;AAED;;;;;GAKG;AACH;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,SAAS,EACpB,IAAI,EAAE,MAAM,EACZ,GAAG,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAA4D,GACjF;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAkDpC;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,aAAa,CAAC,mBAAmB,CAAC,GAC3C,IAAI,CAqBN;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,GAAG,YAAY,CAAC,EACzD,GAAG,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAA4D,GACjF,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAkClD"}
package/dist/bootstrap.js CHANGED
@@ -61,7 +61,12 @@ export function defaultRegistry(opts) {
61
61
  registry.registerMcpConnector("llm", new LocalModelMcpConnector(defaultLocalModel));
62
62
  const memoryStore = registry.listMemoryStores().find((e) => e.name === "primary");
63
63
  if (memoryStore !== undefined) {
64
- registry.registerMcpConnector("memory", new MemoryStoreMcpConnector(memoryStore.instance));
64
+ // v0.8.0 register the SAME bridge instance under both names so
65
+ // bare-form `$ memory mode=fts ...` and `$ memory_write content=...`
66
+ // both route to it. The bridge dispatches on toolName internally.
67
+ const bridge = new MemoryStoreMcpConnector(memoryStore.instance);
68
+ registry.registerMcpConnector("memory", bridge);
69
+ registry.registerMcpConnector("memory_write", bridge);
65
70
  }
66
71
  return { registry, skillStore };
67
72
  }
@@ -167,7 +172,12 @@ export function bootstrap(opts) {
167
172
  * load. Re-writes the file with the pruned set so future hydrations don't
168
173
  * re-scan dead entries.
169
174
  */
170
- function hydratePersistedTriggers(scheduler, path, log = (msg) => process.stderr.write(`[bootstrap] ${msg}\n`)) {
175
+ /**
176
+ * Hydrate persisted triggers from `triggers.json` into a scheduler. Exported
177
+ * as a public surface for adopter bootstraps that wire their own scheduler
178
+ * but want the same on-disk format. v0.9.0.
179
+ */
180
+ export function hydratePersistedTriggers(scheduler, path, log = (msg) => process.stderr.write(`[bootstrap] ${msg}\n`)) {
171
181
  if (!existsSync(path))
172
182
  return { loaded: 0, pruned: 0 };
173
183
  let parsed;
@@ -178,7 +188,7 @@ function hydratePersistedTriggers(scheduler, path, log = (msg) => process.stderr
178
188
  log(`triggers.json parse failed at '${path}': ${err.message}; ignoring file`);
179
189
  return { loaded: 0, pruned: 0 };
180
190
  }
181
- if (parsed.schema_version !== 1 || !Array.isArray(parsed.triggers)) {
191
+ if ((parsed.schema_version !== 1 && parsed.schema_version !== 2) || !Array.isArray(parsed.triggers)) {
182
192
  log(`triggers.json at '${path}' has unsupported shape (schema_version=${parsed.schema_version}); ignoring`);
183
193
  return { loaded: 0, pruned: 0 };
184
194
  }
@@ -202,6 +212,8 @@ function hydratePersistedTriggers(scheduler, path, log = (msg) => process.stderr
202
212
  name: t.name,
203
213
  declarative: false,
204
214
  registeredAt: t.registered_at,
215
+ // v0.9.0 — schema-v2 round-trips `enabled`; v1 records default to true.
216
+ enabled: "enabled" in t ? t.enabled : true,
205
217
  ...(t.expires_at !== null ? { expiresAt: t.expires_at } : {}),
206
218
  }, { seedFromPersistence: true });
207
219
  loaded++;
@@ -216,14 +228,20 @@ function hydratePersistedTriggers(scheduler, path, log = (msg) => process.stderr
216
228
  }
217
229
  return { loaded, pruned };
218
230
  }
219
- /** Serialize the scheduler's imperative-trigger set to disk atomically. */
220
- function writePersistedTriggers(path, triggers) {
231
+ /**
232
+ * Serialize the scheduler's imperative-trigger set to disk atomically.
233
+ * Exported as a public surface for adopter bootstraps; v0.9.0.
234
+ */
235
+ export function writePersistedTriggers(path, triggers) {
221
236
  const dir = dirname(path);
222
237
  if (!existsSync(dir))
223
238
  mkdirSync(dir, { recursive: true });
224
239
  const imperative = triggers.filter((t) => !t.declarative);
240
+ // v0.9.0 — always write schema_version 2 with `enabled` field. Older
241
+ // runtimes loading a v2 file will reject (schema_version mismatch) — no
242
+ // installed base to worry about pre-1.0; matches pre-adoption-rule.
225
243
  const payload = {
226
- schema_version: 1,
244
+ schema_version: 2,
227
245
  triggers: imperative.map((t) => ({
228
246
  id: t.id,
229
247
  skill_name: t.skillName,
@@ -231,6 +249,7 @@ function writePersistedTriggers(path, triggers) {
231
249
  name: t.name,
232
250
  declarative: false,
233
251
  registered_at: t.registeredAt,
252
+ enabled: t.enabled,
234
253
  expires_at: t.expiresAt ?? null,
235
254
  })),
236
255
  };
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,gEAAgE;AAChE,oEAAoE;AACpE,wEAAwE;AACxE,6BAA6B;AAC7B,EAAE;AACF,0EAA0E;AAC1E,sEAAsE;AACtE,2EAA2E;AAC3E,iFAAiF;AACjF,4EAA4E;AAC5E,qFAAqF;AACrF,2EAA2E;AAC3E,0EAA0E;AAC1E,uEAAuE;AACvE,mCAAmC;AACnC,EAAE;AACF,2EAA2E;AAC3E,gEAAgE;AAEhE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,SAAS,EAA0D,MAAM,gBAAgB,CAAC;AAEnG,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AA0EpC,MAAM,qBAAqB,GAA2C;IACpE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,QAAQ;CAClE,CAAC;AAQF;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,IAAyB;IACvD,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;IAChC,MAAM,UAAU,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC5D,QAAQ,CAAC,kBAAkB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAEnD,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QACjH,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,iBAAiB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAChG,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,wBAAwB,CAAC;IACnG,QAAQ,CAAC,kBAAkB,CAAC,SAAS,EAAE,IAAI,gBAAgB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;IACnH,QAAQ,CAAC,kBAAkB,CAAC,QAAQ,EAAE,IAAI,gBAAgB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;IAClH,QAAQ,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,gBAAgB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;IAEjH,oEAAoE;IACpE,sEAAsE;IACtE,sEAAsE;IACtE,oEAAoE;IACpE,qEAAqE;IACrE,kEAAkE;IAClE,6CAA6C;IAC7C,MAAM,iBAAiB,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAC5D,QAAQ,CAAC,oBAAoB,CAAC,KAAK,EAAE,IAAI,sBAAsB,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACpF,MAAM,WAAW,GAAG,QAAQ,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAClF,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,EAAE,IAAI,uBAAuB,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7F,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AAClC,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,SAAS,CAAC,IAAmB;IAC3C,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,UAAU,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,IAAI,KAAK,CAAC;IAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,WAAW,CAAC;IAEtC,6EAA6E;IAC7E,0EAA0E;IAC1E,mEAAmE;IACnE,MAAM,wBAAwB,GAAa,EAAE,CAAC;IAC9C,MAAM,qBAAqB,GAAa,EAAE,CAAC;IAC3C,IAAI,IAAI,CAAC,oBAAoB,KAAK,SAAS,EAAE,CAAC;QAC5C,MAAM,MAAM,GAAG,oBAAoB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;QACzE,qBAAqB,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7C,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YAClC,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC7B,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC;gBAClE,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QACD,IAAI,wBAAwB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,sCAAsC,wBAAwB,CAAC,MAAM,kBAAkB,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAC/H,CAAC;QACJ,CAAC;QACD,sEAAsE;QACtE,sEAAsE;QACtE,wCAAwC;QACxC,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACjE,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,SAAS,IAAI,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,uEAAuE;IACvE,sEAAsE;IACtE,oEAAoE;IACpE,qDAAqD;IACrD,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,KAAK,SAAS;QAC3D,CAAC,CAAC,CAAC,QAA4C,EAAE,EAAE;YAC/C,sBAAsB,CAAC,IAAI,CAAC,gBAAiB,EAAE,QAAQ,CAAC,CAAC;QAC3D,CAAC;QACH,CAAC,CAAC,SAAS,CAAC;IAEd,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC;QAC9B,QAAQ;QACR,UAAU;QACV,UAAU;QACV,GAAG,CAAC,IAAI,CAAC,mBAAmB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpG,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,GAAG,CAAC,iBAAiB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,iBAAiB;KAClB,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACxC,wBAAwB,CAAC,SAAS,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC;QAC9B,UAAU;QACV,SAAS;QACT,UAAU;QACV,QAAQ;QACR,iBAAiB;QACjB,WAAW,EAAE,IAAI;QACjB,GAAG,CAAC,IAAI,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5F,CAAC,CAAC;IAEH,OAAO;QACL,QAAQ;QACR,SAAS;QACT,SAAS;QACT,UAAU;QACV,UAAU;QACV,iBAAiB;QACjB,IAAI;QACJ,wBAAwB;QACxB,qBAAqB;QACrB,GAAG,CAAC,IAAI,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5F,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,wBAAwB,CAC/B,SAAoB,EACpB,IAAY,EACZ,MAA6B,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC;IAElF,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IACvD,IAAI,MAA4B,CAAC;IACjC,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAyB,CAAC;IAC1E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,kCAAkC,IAAI,MAAO,GAAa,CAAC,OAAO,iBAAiB,CAAC,CAAC;QACzF,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IAClC,CAAC;IACD,IAAI,MAAM,CAAC,cAAc,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACnE,GAAG,CAAC,qBAAqB,IAAI,2CAA2C,MAAM,CAAC,cAAc,aAAa,CAAC,CAAC;QAC5G,OAAO,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;IAClC,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAC7C,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QAChC,IAAI,CAAC,CAAC,UAAU,KAAK,IAAI,IAAI,CAAC,CAAC,UAAU,IAAI,MAAM,EAAE,CAAC;YACpD,MAAM,EAAE,CAAC;YACT,SAAS;QACX,CAAC;QACD,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAiC,CAAC,EAAE,CAAC;YACzE,GAAG,CAAC,2BAA2B,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YACvE,MAAM,EAAE,CAAC;YACT,SAAS;QACX,CAAC;QACD,SAAS,CAAC,eAAe,CACvB;YACE,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,SAAS,EAAE,CAAC,CAAC,UAAU;YACvB,MAAM,EAAE,CAAC,CAAC,MAAiC;YAC3C,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,KAAK;YAClB,YAAY,EAAE,CAAC,CAAC,aAAa;YAC7B,GAAG,CAAC,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9D,EACD,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAC9B,CAAC;QACF,MAAM,EAAE,CAAC;IACX,CAAC;IACD,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACf,6CAA6C;QAC7C,sBAAsB,CAAC,IAAI,EAAE,SAAS,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QACrF,GAAG,CAAC,yBAAyB,MAAM,YAAY,MAAM,UAAU,CAAC,CAAC;IACnE,CAAC;SAAM,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,GAAG,CAAC,yBAAyB,MAAM,wBAAwB,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;AAC5B,CAAC;AAED,2EAA2E;AAC3E,SAAS,sBAAsB,CAC7B,IAAY,EACZ,QAA4C;IAE5C,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAyB;QACpC,cAAc,EAAE,CAAC;QACjB,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC/B,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,UAAU,EAAE,CAAC,CAAC,SAAS;YACvB,MAAM,EAAE,CAAC,CAAC,MAAM;YAChB,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,WAAW,EAAE,KAAc;YAC3B,aAAa,EAAE,CAAC,CAAC,YAAY;YAC7B,UAAU,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI;SAChC,CAAC,CAAC;KACJ,CAAC;IACF,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAChE,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAyD,EACzD,MAA6B,CAAC,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC;IAElF,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IACjE,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,QAAyD,CAAC;QAC9D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACpC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,GAAG,CAAC,UAAU,IAAI,CAAC,IAAI,6BAA8B,GAAa,CAAC,OAAO,GAAG,CAAC,CAAC;YAC/E,OAAO,EAAE,CAAC;YACV,SAAS;QACX,CAAC;QACD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAiC,CAAC,EAAE,CAAC;gBACzE,GAAG,CAAC,UAAU,IAAI,CAAC,IAAI,uBAAuB,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,oBAAoB,CAAC,CAAC;gBACvF,OAAO,EAAE,CAAC;gBACV,SAAS;YACX,CAAC;YACD,MAAM,CAAC,SAAS,CAAC,eAAe,CAAC;gBAC/B,SAAS,EAAE,IAAI,CAAC,IAAI;gBACpB,MAAM,EAAE,CAAC,CAAC,MAAiC;gBAC3C,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,WAAW,EAAE,IAAI;aAClB,CAAC,CAAC;YACH,UAAU,EAAE,CAAC;QACf,CAAC;IACH,CAAC;IACD,IAAI,UAAU,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAClC,GAAG,CAAC,SAAS,UAAU,0BAA0B,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,QAAQ,CAAC,MAAM,oBAAoB,CAAC,CAAC;IAC1I,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AACjC,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,KAAiB,EAAE,GAA0B;IAC5E,IAAI,CAAC;QACH,OAAO,MAAM,KAAK,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IACnD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,sDAAuD,GAAa,CAAC,OAAO,8BAA8B,CAAC,CAAC;QAChH,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAEhB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,WAAW,EAEjB,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACL,KAAK,eAAe,EAGrB,MAAM,iBAAiB,CAAC;AAIzB;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE9C,yEAAyE;AACzE,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,YAAY,KAAK,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AAE5F,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,iIAAiI;IACjI,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,4HAA4H;IAC5H,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,wJAAwJ;IACxJ,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,OAAO,0BAA0B,EAAE,QAAQ,CAAC;CACxD;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,YAAY,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IAClC,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,6GAA6G;IAC7G,iBAAiB,EAAE,mBAAmB,EAAE,CAAC;IACzC;;;;;OAKG;IACH,UAAU,EAAE,eAAe,CAAC;IAC5B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB;;;;;OAKG;IACH,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,sDAAsD;IACtD,MAAM,EAAE,WAAW,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAsB,OAAO,CAC3B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC,CAsMxB;AA8JD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAqBnF"}
1
+ {"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../src/compile.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,WAAW,EAEhB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,WAAW,EAEjB,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACL,KAAK,eAAe,EAGrB,MAAM,iBAAiB,CAAC;AAKzB;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE9C,yEAAyE;AACzE,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,YAAY,KAAK,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;AAE5F,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,iIAAiI;IACjI,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,4HAA4H;IAC5H,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,wJAAwJ;IACxJ,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,OAAO,0BAA0B,EAAE,QAAQ,CAAC;CACxD;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,YAAY,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IAClC,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,6GAA6G;IAC7G,iBAAiB,EAAE,mBAAmB,EAAE,CAAC;IACzC;;;;;OAKG;IACH,UAAU,EAAE,eAAe,CAAC;IAC5B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB;;;;;OAKG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB;;;;;OAKG;IACH,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,sDAAsD;IACtD,MAAM,EAAE,WAAW,CAAC;CACrB;AAED;;;;GAIG;AACH,wBAAsB,OAAO,CAC3B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,aAAa,CAAC,CAsMxB;AAqKD;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAqBnF"}
package/dist/compile.js CHANGED
@@ -2,7 +2,8 @@ import { parse, } from "./parser.js";
2
2
  import { applyFilter } from "./filters.js";
3
3
  import { buildProvenance, renderInlineProvenance, } from "./provenance.js";
4
4
  import { lint } from "./lint.js";
5
- import { LintFailureError } from "./errors.js";
5
+ import { LintFailureError, ApprovalRejectedError } from "./errors.js";
6
+ import { evaluateApprovalGate } from "./approval.js";
6
7
  /**
7
8
  * Compile a skill source string. The high-level entrypoint embedders use.
8
9
  * Throws on hard errors (parse errors, missing entry target, dep cycle,
@@ -238,6 +239,13 @@ async function inlineOps(ops, store, inlinedRecord, chain) {
238
239
  }
239
240
  const refParsed = parse(source.source);
240
241
  if (refParsed.type === "data") {
242
+ // v0.9.0 — referenced data skills inline as part of the host body
243
+ // but aren't covered by the host's hash token. Verify each data
244
+ // skill stands on its own approval before splatting its content.
245
+ const gate = evaluateApprovalGate(source.source);
246
+ if (!gate.ok) {
247
+ throw new ApprovalRejectedError(refName, gate.reason, "inlineDataSkills");
248
+ }
241
249
  inlinedRecord.push({
242
250
  name: refName,
243
251
  version: source.version,
@@ -473,6 +481,15 @@ function renderOpPrompt(op, targetName, resolved, prefix = "") {
473
481
  const contentPreview = (p.content ?? "").length > 40 ? (p.content ?? "").slice(0, 40) + "..." : (p.content ?? "");
474
482
  return [`${prefix}- Write file: ${pathSub} (${(p.content ?? "").length} chars) — content: ${contentPreview}`];
475
483
  }
484
+ case "notify": {
485
+ const p = op.notifyParams;
486
+ const agentSub = substitute(p.agent, resolved);
487
+ const messageTail = p.message !== undefined
488
+ ? ` with message="${substitute(p.message, resolved).slice(0, 40)}${(p.message ?? "").length > 40 ? "..." : ""}"`
489
+ : " (uses joined emissions)";
490
+ const connectorsTail = p.connectors !== undefined ? ` via [${p.connectors.join(", ")}]` : "";
491
+ return [`${prefix}- Notify agent: ${agentSub}${messageTail}${connectorsTail} — bind ACK to $(${op.outputVar ?? `${targetName}.output`})`];
492
+ }
476
493
  }
477
494
  }
478
495
  function renderPrompt(parsed, resolved, order) {
@@ -580,6 +597,13 @@ function renderOpProse(op, resolved) {
580
597
  const len = (p.content ?? "").length;
581
598
  return [`Writes file ${pathSub} (${len} chars).`];
582
599
  }
600
+ case "notify": {
601
+ const p = op.notifyParams;
602
+ const agentSub = substitute(p.agent, resolved);
603
+ const messagePart = p.message !== undefined ? `with explicit message` : `with the skill's joined emissions`;
604
+ const connectorsPart = p.connectors !== undefined ? ` (restricted to: ${p.connectors.join(", ")})` : "";
605
+ return [`Notifies agent ${agentSub} ${messagePart} via AgentConnector dispatch${connectorsPart}.`];
606
+ }
583
607
  }
584
608
  }
585
609
  function renderProse(parsed, resolved, order) {