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

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