@dsh-enhanced/plugin-control-plane 0.1.48 → 0.1.49

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 (167) hide show
  1. package/README.md +183 -15
  2. package/bin/dsh-live-qualification-authority.js +15 -0
  3. package/bin/dsh-local-release-adapter.js +328 -8
  4. package/bin/dsh-systemd-host-attestor.js +359 -9
  5. package/bin/dsh-systemd-host-authority.js +12 -0
  6. package/lib/adoption-coordinator.d.ts +3 -1
  7. package/lib/adoption-coordinator.d.ts.map +1 -1
  8. package/lib/adoption-coordinator.js +24 -9
  9. package/lib/adoption-coordinator.js.map +1 -1
  10. package/lib/cli.d.ts.map +1 -1
  11. package/lib/cli.js +33 -14
  12. package/lib/cli.js.map +1 -1
  13. package/lib/creation-capability-feedback.d.ts +23 -0
  14. package/lib/creation-capability-feedback.d.ts.map +1 -0
  15. package/lib/creation-capability-feedback.js +132 -0
  16. package/lib/creation-capability-feedback.js.map +1 -0
  17. package/lib/creation-capability-journal.d.ts +66 -0
  18. package/lib/creation-capability-journal.d.ts.map +1 -0
  19. package/lib/creation-capability-journal.js +751 -0
  20. package/lib/creation-capability-journal.js.map +1 -0
  21. package/lib/creation-capability-runtime.d.ts +63 -0
  22. package/lib/creation-capability-runtime.d.ts.map +1 -0
  23. package/lib/creation-capability-runtime.js +564 -0
  24. package/lib/creation-capability-runtime.js.map +1 -0
  25. package/lib/creation-capability-source.d.ts +37 -0
  26. package/lib/creation-capability-source.d.ts.map +1 -0
  27. package/lib/creation-capability-source.js +328 -0
  28. package/lib/creation-capability-source.js.map +1 -0
  29. package/lib/creation-capability-types.d.ts +252 -0
  30. package/lib/creation-capability-types.d.ts.map +1 -0
  31. package/lib/creation-capability-types.js +2 -0
  32. package/lib/creation-capability-types.js.map +1 -0
  33. package/lib/deployment-readiness.d.ts +16 -0
  34. package/lib/deployment-readiness.d.ts.map +1 -1
  35. package/lib/deployment-readiness.js +48 -1
  36. package/lib/deployment-readiness.js.map +1 -1
  37. package/lib/effect-blocked-replay.js +2 -2
  38. package/lib/effect-blocked-replay.js.map +1 -1
  39. package/lib/foreground-deployment-runtime.d.ts +3 -0
  40. package/lib/foreground-deployment-runtime.d.ts.map +1 -1
  41. package/lib/foreground-deployment-runtime.js +55 -13
  42. package/lib/foreground-deployment-runtime.js.map +1 -1
  43. package/lib/foreground-deployment.d.ts.map +1 -1
  44. package/lib/foreground-deployment.js +5 -0
  45. package/lib/foreground-deployment.js.map +1 -1
  46. package/lib/host-attestor.d.ts +2 -0
  47. package/lib/host-attestor.d.ts.map +1 -1
  48. package/lib/host-attestor.js +8 -1
  49. package/lib/host-attestor.js.map +1 -1
  50. package/lib/host-inputs.d.ts +13 -0
  51. package/lib/host-inputs.d.ts.map +1 -0
  52. package/lib/host-inputs.js +162 -0
  53. package/lib/host-inputs.js.map +1 -0
  54. package/lib/host-maintenance.d.ts +61 -0
  55. package/lib/host-maintenance.d.ts.map +1 -0
  56. package/lib/host-maintenance.js +158 -0
  57. package/lib/host-maintenance.js.map +1 -0
  58. package/lib/host-readiness.d.ts +5 -0
  59. package/lib/host-readiness.d.ts.map +1 -0
  60. package/lib/host-readiness.js +22 -0
  61. package/lib/host-readiness.js.map +1 -0
  62. package/lib/index.d.ts +16 -0
  63. package/lib/index.d.ts.map +1 -1
  64. package/lib/index.js +7 -0
  65. package/lib/index.js.map +1 -1
  66. package/lib/live-qualification-authority.d.ts +32 -0
  67. package/lib/live-qualification-authority.d.ts.map +1 -0
  68. package/lib/live-qualification-authority.js +280 -0
  69. package/lib/live-qualification-authority.js.map +1 -0
  70. package/lib/live-qualification-client.d.ts +4 -0
  71. package/lib/live-qualification-client.d.ts.map +1 -0
  72. package/lib/live-qualification-client.js +22 -0
  73. package/lib/live-qualification-client.js.map +1 -0
  74. package/lib/live-qualification-runtime.d.ts +78 -0
  75. package/lib/live-qualification-runtime.d.ts.map +1 -0
  76. package/lib/live-qualification-runtime.js +367 -0
  77. package/lib/live-qualification-runtime.js.map +1 -0
  78. package/lib/live-qualification.d.ts +73 -0
  79. package/lib/live-qualification.d.ts.map +1 -0
  80. package/lib/live-qualification.js +164 -0
  81. package/lib/live-qualification.js.map +1 -0
  82. package/lib/owner-task-gaps.d.ts +2 -0
  83. package/lib/owner-task-gaps.d.ts.map +1 -1
  84. package/lib/owner-task-gaps.js +9 -1
  85. package/lib/owner-task-gaps.js.map +1 -1
  86. package/lib/runtime-epoch.d.ts +69 -0
  87. package/lib/runtime-epoch.d.ts.map +1 -0
  88. package/lib/runtime-epoch.js +139 -0
  89. package/lib/runtime-epoch.js.map +1 -0
  90. package/lib/runtime-observer.d.ts.map +1 -1
  91. package/lib/runtime-observer.js +42 -6
  92. package/lib/runtime-observer.js.map +1 -1
  93. package/lib/service.d.ts +247 -4
  94. package/lib/service.d.ts.map +1 -1
  95. package/lib/service.js +1332 -27
  96. package/lib/service.js.map +1 -1
  97. package/lib/source-adoption-authority.d.ts +3 -0
  98. package/lib/source-adoption-authority.d.ts.map +1 -1
  99. package/lib/source-adoption-authority.js +13 -3
  100. package/lib/source-adoption-authority.js.map +1 -1
  101. package/lib/source-adoption-runner.d.ts +3 -0
  102. package/lib/source-adoption-runner.d.ts.map +1 -1
  103. package/lib/source-adoption-runner.js +16 -4
  104. package/lib/source-adoption-runner.js.map +1 -1
  105. package/lib/source-baseline.d.ts +37 -0
  106. package/lib/source-baseline.d.ts.map +1 -0
  107. package/lib/source-baseline.js +250 -0
  108. package/lib/source-baseline.js.map +1 -0
  109. package/lib/source-build.d.ts +17 -1
  110. package/lib/source-build.d.ts.map +1 -1
  111. package/lib/source-build.js +501 -7
  112. package/lib/source-build.js.map +1 -1
  113. package/lib/source-context.d.ts +18 -0
  114. package/lib/source-context.d.ts.map +1 -1
  115. package/lib/source-context.js +85 -11
  116. package/lib/source-context.js.map +1 -1
  117. package/lib/source-creation.d.ts +106 -0
  118. package/lib/source-creation.d.ts.map +1 -0
  119. package/lib/source-creation.js +664 -0
  120. package/lib/source-creation.js.map +1 -0
  121. package/lib/source-job-types.d.ts +19 -0
  122. package/lib/source-job-types.d.ts.map +1 -1
  123. package/lib/source-jobs.d.ts +30 -3
  124. package/lib/source-jobs.d.ts.map +1 -1
  125. package/lib/source-jobs.js +382 -40
  126. package/lib/source-jobs.js.map +1 -1
  127. package/lib/source-maintenance.d.ts +66 -0
  128. package/lib/source-maintenance.d.ts.map +1 -0
  129. package/lib/source-maintenance.js +177 -0
  130. package/lib/source-maintenance.js.map +1 -0
  131. package/lib/source-revision.d.ts +57 -0
  132. package/lib/source-revision.d.ts.map +1 -0
  133. package/lib/source-revision.js +175 -0
  134. package/lib/source-revision.js.map +1 -0
  135. package/lib/source-workspace.d.ts +19 -14
  136. package/lib/source-workspace.d.ts.map +1 -1
  137. package/lib/source-workspace.js +90 -17
  138. package/lib/source-workspace.js.map +1 -1
  139. package/lib/sqlite.d.ts +13 -3
  140. package/lib/sqlite.d.ts.map +1 -1
  141. package/lib/sqlite.js +362 -1
  142. package/lib/sqlite.js.map +1 -1
  143. package/lib/store.d.ts +258 -3
  144. package/lib/store.d.ts.map +1 -1
  145. package/lib/store.js +2211 -95
  146. package/lib/store.js.map +1 -1
  147. package/lib/systemd-host-authority.d.ts +68 -0
  148. package/lib/systemd-host-authority.d.ts.map +1 -0
  149. package/lib/systemd-host-authority.js +424 -0
  150. package/lib/systemd-host-authority.js.map +1 -0
  151. package/lib/task-observation-evidence.d.ts +32 -0
  152. package/lib/task-observation-evidence.d.ts.map +1 -0
  153. package/lib/task-observation-evidence.js +62 -0
  154. package/lib/task-observation-evidence.js.map +1 -0
  155. package/lib/task-observation-runtime.d.ts +2 -3
  156. package/lib/task-observation-runtime.d.ts.map +1 -1
  157. package/lib/task-observation-runtime.js +7 -39
  158. package/lib/task-observation-runtime.js.map +1 -1
  159. package/lib/task-observation-store.js +1 -1
  160. package/lib/trust.d.ts.map +1 -1
  161. package/lib/trust.js +0 -0
  162. package/lib/trust.js.map +1 -1
  163. package/lib/types.d.ts +43 -6
  164. package/lib/types.d.ts.map +1 -1
  165. package/lib/version.d.ts +1 -1
  166. package/lib/version.js +1 -1
  167. package/package.json +21 -14
@@ -0,0 +1,564 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { canonicalGrowthJson, SourceGrowthRunUnavailableError } from '@dsh-enhanced/assistant-growth-contract';
3
+ const sha = (value) => createHash('sha256').update(value).digest('hex');
4
+ const safeName = /^[a-z][a-z0-9_-]{0,95}$/u;
5
+ const safeProperty = /^[A-Za-z_][A-Za-z0-9_-]{0,63}$/u;
6
+ const maxSchemaBytes = 16 * 1024;
7
+ const outputSchema = { type: 'object', additionalProperties: false, required: ['value', 'content'], properties: {
8
+ value: {}, content: { type: 'array', items: { type: 'object', additionalProperties: false,
9
+ required: ['type', 'text'], properties: { type: { type: 'string', const: 'text' }, text: { type: 'string' } } } },
10
+ } };
11
+ function fail(reason) { throw new Error(`created capability: ${reason}`); }
12
+ function json(value, limit) {
13
+ const seen = new Set();
14
+ const walk = (item, depth) => {
15
+ if (depth > 16)
16
+ fail('JSON depth exceeded');
17
+ if (item === null || typeof item === 'string' || typeof item === 'boolean')
18
+ return;
19
+ if (typeof item === 'number' && Number.isFinite(item))
20
+ return;
21
+ if (!item || typeof item !== 'object' || seen.has(item))
22
+ fail('non-JSON value');
23
+ seen.add(item);
24
+ if (Array.isArray(item)) {
25
+ if (Object.getPrototypeOf(item) !== Array.prototype || Reflect.ownKeys(item).length !== item.length + 1)
26
+ fail('non-JSON array');
27
+ for (let index = 0; index < item.length; index++) {
28
+ if (!Object.hasOwn(item, index))
29
+ fail('sparse JSON array');
30
+ walk(item[index], depth + 1);
31
+ }
32
+ }
33
+ else {
34
+ if (Object.getPrototypeOf(item) !== Object.prototype || Object.getOwnPropertySymbols(item).length)
35
+ fail('non-JSON object');
36
+ for (const [key, descriptor] of Object.entries(Object.getOwnPropertyDescriptors(item))) {
37
+ if (!descriptor.enumerable || !Object.hasOwn(descriptor, 'value') || key === '__proto__' || key === 'constructor' || key === 'prototype')
38
+ fail('unsafe JSON property');
39
+ walk(descriptor.value, depth + 1);
40
+ }
41
+ }
42
+ seen.delete(item);
43
+ };
44
+ walk(value, 0);
45
+ const encoded = JSON.stringify(value);
46
+ if (encoded === undefined || Buffer.byteLength(encoded) > limit)
47
+ fail('JSON byte limit exceeded');
48
+ return encoded;
49
+ }
50
+ // Candidate annotations are never copied to the Host model surface. Keep only
51
+ // the validating subset, including requiredness and scalar constraints.
52
+ function parameters(value, validate) {
53
+ if (Buffer.byteLength(json(value, maxSchemaBytes)) > maxSchemaBytes)
54
+ fail('schema too large');
55
+ validate(value);
56
+ const clean = (node, depth) => {
57
+ if (depth > 8)
58
+ fail('schema nesting exceeded');
59
+ const result = {};
60
+ for (const key of ['type', 'additionalProperties', 'const'])
61
+ if (node[key] !== undefined)
62
+ result[key] = node[key];
63
+ if (node.enum !== undefined)
64
+ result.enum = [...node.enum];
65
+ if (node.required !== undefined)
66
+ result.required = [...node.required];
67
+ if (node.items !== undefined)
68
+ result.items = clean(node.items, depth + 1);
69
+ if (node.oneOf !== undefined)
70
+ result.oneOf = node.oneOf.map(item => clean(item, depth + 1));
71
+ if (node.properties !== undefined) {
72
+ const properties = {};
73
+ for (const [name, child] of Object.entries(node.properties)) {
74
+ if (!safeProperty.test(name) || ['__proto__', 'constructor', 'prototype'].includes(name))
75
+ fail('unsafe parameter property');
76
+ properties[name] = clean(child, depth + 1);
77
+ }
78
+ result.properties = properties;
79
+ }
80
+ return result;
81
+ };
82
+ return clean(value, 0);
83
+ }
84
+ function sameEnvironment(a, b) {
85
+ json(a, 1024);
86
+ json(b, 1024);
87
+ return canonicalGrowthJson(a) === canonicalGrowthJson(b);
88
+ }
89
+ function sameCertificate(a, b) {
90
+ json(a, 65_536);
91
+ json(b, 65_536);
92
+ return canonicalGrowthJson(a) === canonicalGrowthJson(b);
93
+ }
94
+ function observed(record, result) {
95
+ return result.status === 'observed' && result.quiescent === true
96
+ && result.artifactSha256 === record.certificate.plan.artifactSha256
97
+ && result.schemaDigest === record.certificate.schemaDigest
98
+ && sameEnvironment(result.environment, record.certificate.environment);
99
+ }
100
+ /** The journal belongs to this controller and is closed after all Fiber effects. */
101
+ export class CreationCapabilityRuntime {
102
+ ctx;
103
+ config;
104
+ journal;
105
+ ports;
106
+ createRunner;
107
+ runner;
108
+ validateSchema;
109
+ mounted = new Map();
110
+ flights = new Set();
111
+ invocationPlans = new Map();
112
+ cancellations = new Map();
113
+ operations = new Set();
114
+ timers = new Map();
115
+ admission = false;
116
+ closed = false;
117
+ started = false;
118
+ serial = Promise.resolve();
119
+ closeTask;
120
+ constructor(input) {
121
+ this.ctx = input.ctx;
122
+ this.config = input.config;
123
+ this.journal = input.journal;
124
+ this.ports = input.ports;
125
+ this.createRunner = input.createRunner ?? (async () => {
126
+ const { PluginBehaviorRunner } = await import('@dsh-enhanced/assistant-verifier/plugin-behavior-runner');
127
+ return new PluginBehaviorRunner({ ...this.config.runner, authorityDigest: this.journal.authorityDigest });
128
+ });
129
+ }
130
+ enqueue(work) {
131
+ const result = this.serial.then(work);
132
+ this.serial = result.catch(() => { });
133
+ return result;
134
+ }
135
+ live(record) {
136
+ if (this.closed || Date.now() >= this.config.expiresAt || Date.now() >= this.config.runner.expiresAt
137
+ || ((record.status !== 'active' || record.receipt?.protocol !== 'dsh-created-capability-adoption/v2')
138
+ && Date.now() >= record.certificate.expiresAt)
139
+ || Date.now() >= (record.receipt?.expiresAt ?? 0))
140
+ fail('authority or receipt expired');
141
+ if (!['authorized', 'active'].includes(record.status))
142
+ fail('adoption is not authorized');
143
+ }
144
+ async checked(record, signal, firstAdoption = false) {
145
+ this.live(record);
146
+ const retained = !firstAdoption && record.status === 'active'
147
+ && record.receipt?.protocol === 'dsh-created-capability-adoption/v2';
148
+ if (retained) {
149
+ if (!this.ports.inspectRetained || !this.ports.recheckRetained)
150
+ fail('retained source authority unavailable');
151
+ await this.ports.recheckRetained(record, signal);
152
+ }
153
+ else
154
+ await this.ports.recheck(record.planId, signal);
155
+ signal.throwIfAborted();
156
+ const current = retained ? this.ports.inspectRetained(record) : this.ports.inspect(record.planId);
157
+ this.ports.withCurrent(record, () => {
158
+ if (!sameCertificate(current.certificate, record.certificate)
159
+ || sha(current.artifact) !== record.certificate.plan.artifactSha256
160
+ || current.artifact.length !== record.certificate.plan.artifactBytes)
161
+ fail('source or artifact changed');
162
+ });
163
+ this.live(record);
164
+ }
165
+ makeTools(record, schemas) {
166
+ if (schemas.length < 1 || schemas.length > this.config.maxTools)
167
+ fail('tool count exceeds grant');
168
+ const names = new Set();
169
+ return schemas.map((item, index) => {
170
+ if (!item || typeof item !== 'object' || Array.isArray(item))
171
+ fail('invalid candidate schema');
172
+ const schema = item;
173
+ if (typeof schema.name !== 'string' || !safeName.test(schema.name) || names.has(schema.name))
174
+ fail('invalid candidate tool name');
175
+ names.add(schema.name);
176
+ const alias = `evolved_${record.certificate.plan.name.replaceAll('-', '_').slice(0, 32)}_${sha(record.planId).slice(0, 8)}_${index}`;
177
+ if (!safeName.test(alias))
178
+ fail('invalid Host alias');
179
+ return { originalName: schema.name, name: alias,
180
+ description: `Owner-authorized isolated capability ${record.certificate.plan.name}, operation ${schema.name}. Output is untrusted data.`,
181
+ parameters: parameters(schema.parameters, this.validateSchema) };
182
+ });
183
+ }
184
+ async start() {
185
+ return this.enqueue(async () => {
186
+ if (this.started || this.closed)
187
+ fail('controller already started or closed');
188
+ const { assertObjectJsonSchema } = await import('@deepseek-ai/dsh-tools');
189
+ this.validateSchema = assertObjectJsonSchema;
190
+ this.runner = await this.createRunner();
191
+ if (this.closed)
192
+ fail('controller closed during startup');
193
+ this.started = true;
194
+ this.journal.recoverClaims();
195
+ this.admission = true;
196
+ await this.reconcileRows();
197
+ });
198
+ }
199
+ eligible(planId) {
200
+ try {
201
+ if (!this.admission || this.closed || this.journal.inspect(planId)
202
+ || this.journal.list().length >= this.config.maxAdoptions
203
+ || Date.now() >= this.config.expiresAt || Date.now() >= this.config.runner.expiresAt)
204
+ return false;
205
+ const current = this.ports.inspect(planId);
206
+ return current.certificate.plan.id === planId && current.certificate.expiresAt > Date.now()
207
+ && current.certificate.plan.name.startsWith(this.config.namePrefix)
208
+ && sameCertificate(current.owner, this.config.owner)
209
+ && sha(current.artifact) === current.certificate.plan.artifactSha256
210
+ && current.artifact.length === current.certificate.plan.artifactBytes;
211
+ }
212
+ catch {
213
+ return false;
214
+ }
215
+ }
216
+ async adopt(planId, signal) {
217
+ return this.enqueue(async () => {
218
+ const controller = new AbortController();
219
+ this.operations.add(controller);
220
+ const cancel = () => controller.abort();
221
+ signal.addEventListener('abort', cancel, { once: true });
222
+ if (signal.aborted)
223
+ cancel();
224
+ const activeSignal = controller.signal;
225
+ try {
226
+ if (!this.eligible(planId))
227
+ fail('plan is not eligible');
228
+ activeSignal.throwIfAborted();
229
+ const current = this.ports.inspect(planId);
230
+ await this.ports.recheck(planId, activeSignal);
231
+ activeSignal.throwIfAborted();
232
+ const pinned = this.ports.inspect(planId);
233
+ if (!sameCertificate(current.certificate, pinned.certificate)
234
+ || sha(current.artifact) !== sha(pinned.artifact))
235
+ fail('source changed before claim');
236
+ const source = await this.ports.captureSource?.(planId, activeSignal);
237
+ activeSignal.throwIfAborted();
238
+ const latestBeforeClaim = this.ports.inspect(planId);
239
+ if (!sameCertificate(current.certificate, latestBeforeClaim.certificate)
240
+ || sha(current.artifact) !== sha(latestBeforeClaim.artifact))
241
+ fail('source changed during source capture');
242
+ const claimRecord = { planId, status: 'claimed',
243
+ certificate: current.certificate, artifact: current.artifact };
244
+ const claimed = this.ports.withCurrent(claimRecord, () => this.journal.claim({
245
+ certificate: current.certificate, artifact: current.artifact, ...(source ? { source } : {})
246
+ }));
247
+ if (!claimed.created)
248
+ fail('plan already claimed');
249
+ const record = claimed.record;
250
+ try {
251
+ const result = await this.runner.run({ key: sha(json({ operation: 'discover',
252
+ authorityDigest: this.journal.authorityDigest, planId }, 1024)),
253
+ artifact: record.artifact, operation: { kind: 'discover' }, signal: activeSignal });
254
+ if (!observed(record, result) || !result.schemas || sha(JSON.stringify(result.schemas)) !== result.schemaDigest)
255
+ fail('discovery unknown or certificate mismatch');
256
+ const tools = this.makeTools(record, result.schemas);
257
+ await this.ports.recheck(planId, activeSignal);
258
+ activeSignal.throwIfAborted();
259
+ const latest = this.ports.inspect(planId);
260
+ this.ports.withCurrent(record, () => {
261
+ if (!sameCertificate(latest.certificate, record.certificate)
262
+ || sha(latest.artifact) !== record.certificate.plan.artifactSha256)
263
+ fail('source changed before authorization');
264
+ this.journal.authorize(planId, tools);
265
+ });
266
+ const authorized = this.journal.inspect(planId);
267
+ await this.checked(authorized, activeSignal, true);
268
+ await this.mount(authorized, activeSignal);
269
+ await this.checked(authorized, activeSignal, true);
270
+ this.ports.withCurrent(authorized, () => this.journal.activate(planId));
271
+ }
272
+ catch (error) {
273
+ try {
274
+ await this.unmount(planId);
275
+ }
276
+ finally {
277
+ this.journal.settle(planId, 'unknown', 'adoption-unsettled');
278
+ }
279
+ throw error;
280
+ }
281
+ }
282
+ finally {
283
+ signal.removeEventListener('abort', cancel);
284
+ this.operations.delete(controller);
285
+ }
286
+ });
287
+ }
288
+ async mount(record, signal) {
289
+ if (!record.tools?.length || this.mounted.has(record.planId))
290
+ fail('missing tools or duplicate mount');
291
+ for (const tool of record.tools)
292
+ if (this.ctx.tools.get(tool.name))
293
+ fail('Host alias conflicts with existing tool');
294
+ const definitions = record.tools.map(tool => ({ name: tool.name, description: tool.description,
295
+ parameters: parameters(tool.parameters, this.validateSchema), output: { schema: outputSchema,
296
+ render: (_args, value) => [{ type: 'text', text: JSON.stringify(value) }] },
297
+ execute: (args, exec) => this.invoke(record.planId, tool, args, exec), }));
298
+ const plugin = { name: `created-capability-${sha(record.planId).slice(0, 16)}`, inject: ['tools'],
299
+ apply: (ctx) => { for (const definition of definitions)
300
+ ctx.tools.register(definition); } };
301
+ const fiber = this.ctx.plugin(plugin);
302
+ this.mounted.set(record.planId, { fiber, aliases: definitions.map(definition => definition.name) });
303
+ const timeout = new AbortController();
304
+ const timer = setTimeout(() => timeout.abort(), 5_000);
305
+ let onAbort;
306
+ try {
307
+ await Promise.race([fiber, new Promise((_resolve, reject) => {
308
+ const abort = () => reject(new Error('created capability: Host activation interrupted'));
309
+ onAbort = abort;
310
+ signal?.addEventListener('abort', abort, { once: true });
311
+ timeout.signal.addEventListener('abort', abort, { once: true });
312
+ if (signal?.aborted || timeout.signal.aborted)
313
+ abort();
314
+ })]);
315
+ if (fiber.state !== 2 || definitions.some(definition => this.ctx.tools.get(definition.name) !== definition))
316
+ fail('Host tool registration did not activate');
317
+ this.armExpiry(record);
318
+ }
319
+ catch (error) {
320
+ try {
321
+ await this.unmount(record.planId);
322
+ }
323
+ catch (disposeError) {
324
+ throw new AggregateError([error, disposeError], 'created capability activation cleanup unconfirmed');
325
+ }
326
+ throw error;
327
+ }
328
+ finally {
329
+ clearTimeout(timer);
330
+ if (onAbort) {
331
+ signal?.removeEventListener('abort', onAbort);
332
+ timeout.signal.removeEventListener('abort', onAbort);
333
+ }
334
+ }
335
+ }
336
+ armExpiry(record) {
337
+ const deadline = record.receipt.protocol === 'dsh-created-capability-adoption/v2'
338
+ ? Math.min(this.config.expiresAt, this.config.runner.expiresAt, record.receipt.expiresAt)
339
+ : Math.min(this.config.expiresAt, record.certificate.expiresAt, record.receipt.expiresAt);
340
+ const remaining = deadline - Date.now();
341
+ const timer = setTimeout(() => {
342
+ this.timers.delete(record.planId);
343
+ if (this.closed || !this.mounted.has(record.planId))
344
+ return;
345
+ if (Date.now() < deadline)
346
+ this.armExpiry(record);
347
+ else
348
+ void this.reconcile().catch(() => { });
349
+ }, Math.max(1, Math.min(remaining, 2_147_483_647)));
350
+ this.timers.set(record.planId, timer);
351
+ }
352
+ async unmount(planId) {
353
+ const timer = this.timers.get(planId);
354
+ if (timer)
355
+ clearTimeout(timer);
356
+ this.timers.delete(planId);
357
+ const mounted = this.mounted.get(planId);
358
+ if (!mounted)
359
+ return;
360
+ await mounted.fiber.dispose();
361
+ if (mounted.aliases.some(name => this.ctx.tools.get(name)))
362
+ fail('Host tool remains after disposal');
363
+ this.mounted.delete(planId);
364
+ }
365
+ async invoke(planId, tool, args, exec) {
366
+ const flight = this.invokeFlight(planId, tool, args, exec);
367
+ this.flights.add(flight);
368
+ this.invocationPlans.set(flight, planId);
369
+ try {
370
+ return await flight;
371
+ }
372
+ finally {
373
+ this.flights.delete(flight);
374
+ this.invocationPlans.delete(flight);
375
+ }
376
+ }
377
+ async invokeFlight(planId, tool, args, exec) {
378
+ const record = this.journal.inspect(planId);
379
+ if (!record || record.status !== 'active' || !this.admission || !exec.agent)
380
+ fail('capability unavailable');
381
+ this.ports.assertCaller(record, exec);
382
+ const encoded = json(args, this.config.maxInputBytes);
383
+ const argumentsDigest = sha(encoded);
384
+ const key = sha(json({ planId, sessionId: String(exec.agent.session.id), callId: String(exec.callId),
385
+ toolName: tool.name }, 4096));
386
+ const controller = new AbortController();
387
+ this.cancellations.set(controller, planId);
388
+ const cancel = () => controller.abort();
389
+ exec.signal.addEventListener('abort', cancel, { once: true });
390
+ if (exec.signal.aborted)
391
+ cancel();
392
+ try {
393
+ await this.checked(record, controller.signal);
394
+ const call = this.ports.withCurrent(record, () => {
395
+ this.ports.assertCaller(record, exec);
396
+ controller.signal.throwIfAborted();
397
+ const foreground = this.ports.inspectCall?.(record, exec, tool.name, encoded);
398
+ if (foreground !== undefined && (foreground.task.sessionId !== String(exec.agent.session.id)
399
+ || foreground.call.id !== String(exec.callId)))
400
+ fail('foreground call differs from current execution');
401
+ return this.journal.claimCall({ planId, key, argumentsDigest, toolAlias: tool.name,
402
+ ...(foreground === undefined ? {} : { foreground }) });
403
+ });
404
+ if (!call.created) {
405
+ if (call.call.status === 'completed')
406
+ return call.call.result;
407
+ fail('call already claimed or unknown');
408
+ }
409
+ try {
410
+ this.ports.withCurrent(record, () => {
411
+ this.ports.assertCaller(record, exec);
412
+ controller.signal.throwIfAborted();
413
+ });
414
+ const result = await this.runner.run({ key: sha(json({ operation: 'invoke',
415
+ authorityDigest: this.journal.authorityDigest, key }, 1024)),
416
+ artifact: record.artifact, operation: { kind: 'invoke', schemaDigest: record.certificate.schemaDigest,
417
+ calls: [{ id: key, toolName: tool.originalName, arguments: JSON.parse(encoded) }] }, signal: controller.signal });
418
+ if (!observed(record, result) || result.calls?.length !== 1 || result.calls[0]?.id !== key
419
+ || result.calls[0]?.toolName !== tool.originalName)
420
+ fail('invocation unknown or changed');
421
+ const raw = result.calls[0].result;
422
+ if (!raw || typeof raw !== 'object' || raw.isError !== false || !Array.isArray(raw.content))
423
+ fail('candidate tool failed');
424
+ const content = raw.content.map(item => {
425
+ if (!item || typeof item !== 'object' || item.type !== 'text'
426
+ || typeof item.text !== 'string')
427
+ fail('non-text candidate content');
428
+ return { type: 'text', text: item.text };
429
+ });
430
+ const value = { value: JSON.parse(json(raw.value, this.config.runner.maxOutputBytes)), content };
431
+ json(value, this.config.runner.maxOutputBytes);
432
+ await this.checked(record, controller.signal);
433
+ this.ports.withCurrent(record, () => {
434
+ this.ports.assertCaller(record, exec);
435
+ controller.signal.throwIfAborted();
436
+ this.journal.settleCall({ planId, key, status: 'completed', result: value,
437
+ ...(result.jobId === undefined ? {} : { jobId: result.jobId }) });
438
+ });
439
+ return value;
440
+ }
441
+ catch (error) {
442
+ this.journal.settleCall({ planId, key, status: 'unknown' });
443
+ throw error;
444
+ }
445
+ }
446
+ finally {
447
+ exec.signal.removeEventListener('abort', cancel);
448
+ this.cancellations.delete(controller);
449
+ }
450
+ }
451
+ async reconcile() {
452
+ return this.enqueue(() => this.reconcileRows());
453
+ }
454
+ async reconcileRows() {
455
+ if (this.closed || !this.started)
456
+ return;
457
+ for (const record of this.journal.list()) {
458
+ if (record.status !== 'authorized' && record.status !== 'active')
459
+ continue;
460
+ try {
461
+ await this.checked(record, new AbortController().signal);
462
+ if (!this.mounted.has(record.planId)) {
463
+ await this.mount(record);
464
+ await this.checked(record, new AbortController().signal);
465
+ if (record.status === 'authorized')
466
+ this.ports.withCurrent(record, () => this.journal.activate(record.planId));
467
+ }
468
+ }
469
+ catch (error) {
470
+ for (const [cancellation, planId] of this.cancellations)
471
+ if (planId === record.planId)
472
+ cancellation.abort();
473
+ await Promise.allSettled([...this.invocationPlans].filter(([, planId]) => planId === record.planId).map(([flight]) => flight));
474
+ try {
475
+ await this.unmount(record.planId);
476
+ }
477
+ catch {
478
+ this.journal.settle(record.planId, 'unknown', 'host-disposal-unconfirmed');
479
+ continue;
480
+ }
481
+ if (this.closed)
482
+ continue;
483
+ if (!(error instanceof SourceGrowthRunUnavailableError))
484
+ this.journal.settle(record.planId, 'closed', 'authority-source-or-mount-invalid');
485
+ }
486
+ }
487
+ }
488
+ /** Owner-only bounded status; no certificate, source or artifact bytes escape. */
489
+ inspectStatus(planId) {
490
+ const record = this.journal.inspect(planId);
491
+ return record && { status: record.status, aliases: record.tools?.map(tool => tool.name) ?? [] };
492
+ }
493
+ /** Host-only evidence lookup remains available for terminal adoptions. */
494
+ inspectCallEvidence(planId) {
495
+ return this.journal.listCallEvidence?.(planId) ?? [];
496
+ }
497
+ /** A bounded read snapshot; callers must subsequently fence current source and task heads. */
498
+ inspectAssociationEvidence(planId) {
499
+ const record = this.journal.inspect(planId);
500
+ return record?.receipt ? { record, calls: this.inspectCallEvidence(planId) } : undefined;
501
+ }
502
+ /** Historical data only; callers must check the current authenticated owner. */
503
+ inspectSourceEvidence(planId) {
504
+ const record = this.journal.inspect(planId);
505
+ const archive = record?.receipt ? this.journal.inspectSourceArchive?.(planId) : undefined;
506
+ return record && archive ? { record, archive } : undefined;
507
+ }
508
+ close() {
509
+ if (this.closeTask)
510
+ return this.closeTask;
511
+ this.admission = false;
512
+ this.closed = true;
513
+ for (const cancellation of this.cancellations.keys())
514
+ cancellation.abort();
515
+ for (const operation of this.operations)
516
+ operation.abort();
517
+ const attempt = this.enqueue(async () => {
518
+ await Promise.allSettled(this.flights);
519
+ const errors = [];
520
+ try {
521
+ for (const planId of this.mounted.keys()) {
522
+ try {
523
+ await this.unmount(planId);
524
+ }
525
+ catch (error) {
526
+ errors.push(error);
527
+ try {
528
+ const record = this.journal.inspect(planId);
529
+ if (record && ['claimed', 'authorized', 'active'].includes(record.status))
530
+ this.journal.settle(planId, 'unknown', 'host-disposal-unconfirmed');
531
+ }
532
+ catch (settleError) {
533
+ errors.push(settleError);
534
+ }
535
+ }
536
+ }
537
+ }
538
+ finally {
539
+ for (const timer of this.timers.values())
540
+ clearTimeout(timer);
541
+ this.timers.clear();
542
+ try {
543
+ await this.runner?.close();
544
+ }
545
+ catch (error) {
546
+ errors.push(error);
547
+ }
548
+ }
549
+ if (!errors.length && this.mounted.size === 0) {
550
+ try {
551
+ this.journal.close();
552
+ }
553
+ catch (error) {
554
+ errors.push(error);
555
+ }
556
+ }
557
+ if (errors.length)
558
+ throw new AggregateError(errors, 'created capability close could not prove release');
559
+ });
560
+ this.closeTask = attempt.catch(error => { this.closeTask = undefined; throw error; });
561
+ return this.closeTask;
562
+ }
563
+ }
564
+ //# sourceMappingURL=creation-capability-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"creation-capability-runtime.js","sourceRoot":"","sources":["../src/creation-capability-runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { type PluginCreationVerificationCertificate } from '@dsh-enhanced/assistant-growth-contract';
2
+ declare const PROTOCOL: "dsh-created-capability-source/v1";
3
+ export interface CreationCapabilitySourceEntry {
4
+ path: string;
5
+ mode: '100644' | '100755';
6
+ oid: string;
7
+ }
8
+ export interface CreationCapabilitySourceFile extends CreationCapabilitySourceEntry {
9
+ bytes: number;
10
+ sha256: string;
11
+ content: string;
12
+ }
13
+ /** Private exact staged-source data. Catalog and lock are bound by OID only. */
14
+ export interface CreationCapabilitySourceSnapshot {
15
+ protocol: typeof PROTOCOL;
16
+ baseCommit: string;
17
+ scope: readonly string[];
18
+ treeDigest: string;
19
+ patchDigest: string;
20
+ entries: readonly CreationCapabilitySourceEntry[];
21
+ files: readonly CreationCapabilitySourceFile[];
22
+ digest: string;
23
+ }
24
+ export declare function creationCapabilitySourceDigest(payload: Omit<CreationCapabilitySourceSnapshot, 'digest'>): string;
25
+ /** Offline structural and byte verification; signature, owner and current authority belong to the journal. */
26
+ export declare function validateCreationCapabilitySource(snapshot: unknown, certificate: Pick<PluginCreationVerificationCertificate, 'plan'>): asserts snapshot is CreationCapabilitySourceSnapshot;
27
+ /** Capture exactly the same temporary-index digest domain as checkedSourceSnapshot. */
28
+ export declare function captureCreationCapabilitySource(input: {
29
+ worktree: string;
30
+ baseCommit: string;
31
+ scope: readonly string[];
32
+ certificate: Pick<PluginCreationVerificationCertificate, 'plan'>;
33
+ environment: NodeJS.ProcessEnv;
34
+ signal?: AbortSignal;
35
+ }): Promise<CreationCapabilitySourceSnapshot>;
36
+ export {};
37
+ //# sourceMappingURL=creation-capability-source.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"creation-capability-source.d.ts","sourceRoot":"","sources":["../src/creation-capability-source.ts"],"names":[],"mappings":"AAIA,OAAO,EAAuB,KAAK,qCAAqC,EAAE,MAAM,yCAAyC,CAAA;AAIzH,QAAA,MAAM,QAAQ,EAAG,kCAA2C,CAAA;AAgB5D,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,QAAQ,GAAG,QAAQ,CAAA;IACzB,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,4BAA6B,SAAQ,6BAA6B;IACjF,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,gFAAgF;AAChF,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,EAAE,OAAO,QAAQ,CAAA;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;IACxB,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,SAAS,6BAA6B,EAAE,CAAA;IACjD,KAAK,EAAE,SAAS,4BAA4B,EAAE,CAAA;IAC9C,MAAM,EAAE,MAAM,CAAA;CACf;AA8DD,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,IAAI,CAAC,gCAAgC,EAAE,QAAQ,CAAC,GAAG,MAAM,CAqChH;AAsBD,8GAA8G;AAC9G,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,OAAO,EAChE,WAAW,EAAE,IAAI,CAAC,qCAAqC,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,QAAQ,IAAI,gCAAgC,CA6CxH;AAmCD,uFAAuF;AACvF,wBAAsB,+BAA+B,CAAC,KAAK,EAAE;IAC3D,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;IAC9D,WAAW,EAAE,IAAI,CAAC,qCAAqC,EAAE,MAAM,CAAC,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CACvH,GAAG,OAAO,CAAC,gCAAgC,CAAC,CAyD5C"}