@dsh-enhanced/plugin-control-plane 0.1.65 → 0.1.67

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 (136) hide show
  1. package/README.md +123 -7
  2. package/lib/attestation.d.ts.map +1 -1
  3. package/lib/attestation.js +33 -1
  4. package/lib/attestation.js.map +1 -1
  5. package/lib/creation-capability-empty-handoff.d.ts +57 -0
  6. package/lib/creation-capability-empty-handoff.d.ts.map +1 -0
  7. package/lib/creation-capability-empty-handoff.js +147 -0
  8. package/lib/creation-capability-empty-handoff.js.map +1 -0
  9. package/lib/creation-capability-execution.d.ts +13 -0
  10. package/lib/creation-capability-execution.d.ts.map +1 -0
  11. package/lib/creation-capability-execution.js +112 -0
  12. package/lib/creation-capability-execution.js.map +1 -0
  13. package/lib/creation-capability-feedback.d.ts +58 -1
  14. package/lib/creation-capability-feedback.d.ts.map +1 -1
  15. package/lib/creation-capability-feedback.js +532 -50
  16. package/lib/creation-capability-feedback.js.map +1 -1
  17. package/lib/creation-capability-handoff-common.d.ts +60 -0
  18. package/lib/creation-capability-handoff-common.d.ts.map +1 -0
  19. package/lib/creation-capability-handoff-common.js +195 -0
  20. package/lib/creation-capability-handoff-common.js.map +1 -0
  21. package/lib/creation-capability-journal.d.ts +19 -0
  22. package/lib/creation-capability-journal.d.ts.map +1 -1
  23. package/lib/creation-capability-journal.js +62 -21
  24. package/lib/creation-capability-journal.js.map +1 -1
  25. package/lib/creation-capability-runtime.d.ts +65 -1
  26. package/lib/creation-capability-runtime.d.ts.map +1 -1
  27. package/lib/creation-capability-runtime.js +178 -18
  28. package/lib/creation-capability-runtime.js.map +1 -1
  29. package/lib/creation-capability-sealed-audit.d.ts +19 -0
  30. package/lib/creation-capability-sealed-audit.d.ts.map +1 -0
  31. package/lib/creation-capability-sealed-audit.js +114 -0
  32. package/lib/creation-capability-sealed-audit.js.map +1 -0
  33. package/lib/creation-capability-sealed-handoff.d.ts +160 -0
  34. package/lib/creation-capability-sealed-handoff.d.ts.map +1 -0
  35. package/lib/creation-capability-sealed-handoff.js +695 -0
  36. package/lib/creation-capability-sealed-handoff.js.map +1 -0
  37. package/lib/creation-capability-trend-snapshot.d.ts +70 -0
  38. package/lib/creation-capability-trend-snapshot.d.ts.map +1 -0
  39. package/lib/creation-capability-trend-snapshot.js +117 -0
  40. package/lib/creation-capability-trend-snapshot.js.map +1 -0
  41. package/lib/creation-capability-types.d.ts +254 -4
  42. package/lib/creation-capability-types.d.ts.map +1 -1
  43. package/lib/in-process-reload.d.ts +191 -0
  44. package/lib/in-process-reload.d.ts.map +1 -0
  45. package/lib/in-process-reload.js +284 -0
  46. package/lib/in-process-reload.js.map +1 -0
  47. package/lib/index.d.ts +15 -4
  48. package/lib/index.d.ts.map +1 -1
  49. package/lib/index.js +10 -2
  50. package/lib/index.js.map +1 -1
  51. package/lib/linux-source-build.d.ts +16 -0
  52. package/lib/linux-source-build.d.ts.map +1 -0
  53. package/lib/linux-source-build.js +268 -0
  54. package/lib/linux-source-build.js.map +1 -0
  55. package/lib/linux-source-preflight.d.ts +31 -0
  56. package/lib/linux-source-preflight.d.ts.map +1 -0
  57. package/lib/linux-source-preflight.js +101 -0
  58. package/lib/linux-source-preflight.js.map +1 -0
  59. package/lib/live-qualification-runtime.d.ts +6 -2
  60. package/lib/live-qualification-runtime.d.ts.map +1 -1
  61. package/lib/live-qualification-runtime.js +65 -11
  62. package/lib/live-qualification-runtime.js.map +1 -1
  63. package/lib/owner-task-gap-types.d.ts +23 -0
  64. package/lib/owner-task-gap-types.d.ts.map +1 -1
  65. package/lib/owner-task-gaps.d.ts +4 -0
  66. package/lib/owner-task-gaps.d.ts.map +1 -1
  67. package/lib/owner-task-gaps.js +35 -1
  68. package/lib/owner-task-gaps.js.map +1 -1
  69. package/lib/revision-capability-journal.d.ts +103 -0
  70. package/lib/revision-capability-journal.d.ts.map +1 -0
  71. package/lib/revision-capability-journal.js +872 -0
  72. package/lib/revision-capability-journal.js.map +1 -0
  73. package/lib/revision-capability-runtime.d.ts +74 -0
  74. package/lib/revision-capability-runtime.d.ts.map +1 -0
  75. package/lib/revision-capability-runtime.js +562 -0
  76. package/lib/revision-capability-runtime.js.map +1 -0
  77. package/lib/revision-capability-types.d.ts +289 -0
  78. package/lib/revision-capability-types.d.ts.map +1 -0
  79. package/lib/revision-capability-types.js +2 -0
  80. package/lib/revision-capability-types.js.map +1 -0
  81. package/lib/scanner-owner-runtime.d.ts +34 -0
  82. package/lib/scanner-owner-runtime.d.ts.map +1 -0
  83. package/lib/scanner-owner-runtime.js +99 -0
  84. package/lib/scanner-owner-runtime.js.map +1 -0
  85. package/lib/service.d.ts +107 -6
  86. package/lib/service.d.ts.map +1 -1
  87. package/lib/service.js +643 -47
  88. package/lib/service.js.map +1 -1
  89. package/lib/source-approval-authority.d.ts.map +1 -1
  90. package/lib/source-approval-authority.js +25 -7
  91. package/lib/source-approval-authority.js.map +1 -1
  92. package/lib/source-build-diagnostics.d.ts +31 -0
  93. package/lib/source-build-diagnostics.d.ts.map +1 -0
  94. package/lib/source-build-diagnostics.js +110 -0
  95. package/lib/source-build-diagnostics.js.map +1 -0
  96. package/lib/source-build.d.ts +25 -2
  97. package/lib/source-build.d.ts.map +1 -1
  98. package/lib/source-build.js +145 -26
  99. package/lib/source-build.js.map +1 -1
  100. package/lib/source-creation.d.ts +6 -2
  101. package/lib/source-creation.d.ts.map +1 -1
  102. package/lib/source-creation.js +11 -2
  103. package/lib/source-creation.js.map +1 -1
  104. package/lib/source-job-types.d.ts +3 -1
  105. package/lib/source-job-types.d.ts.map +1 -1
  106. package/lib/source-jobs.d.ts +33 -1
  107. package/lib/source-jobs.d.ts.map +1 -1
  108. package/lib/source-jobs.js +141 -29
  109. package/lib/source-jobs.js.map +1 -1
  110. package/lib/source-workspace.d.ts.map +1 -1
  111. package/lib/source-workspace.js +0 -1
  112. package/lib/source-workspace.js.map +1 -1
  113. package/lib/sqlite.d.ts +1 -1
  114. package/lib/sqlite.d.ts.map +1 -1
  115. package/lib/sqlite.js +36 -1
  116. package/lib/sqlite.js.map +1 -1
  117. package/lib/store.d.ts +22 -2
  118. package/lib/store.d.ts.map +1 -1
  119. package/lib/store.js +477 -177
  120. package/lib/store.js.map +1 -1
  121. package/lib/systemd-host-authority.d.ts.map +1 -1
  122. package/lib/systemd-host-authority.js +4 -0
  123. package/lib/systemd-host-authority.js.map +1 -1
  124. package/lib/task-observation-runtime.d.ts +6 -2
  125. package/lib/task-observation-runtime.d.ts.map +1 -1
  126. package/lib/task-observation-runtime.js +69 -11
  127. package/lib/task-observation-runtime.js.map +1 -1
  128. package/lib/types.d.ts +47 -1
  129. package/lib/types.d.ts.map +1 -1
  130. package/lib/version.d.ts +1 -1
  131. package/lib/version.js +1 -1
  132. package/lib/work-item-creation-contract.d.ts +17 -0
  133. package/lib/work-item-creation-contract.d.ts.map +1 -0
  134. package/lib/work-item-creation-contract.js +61 -0
  135. package/lib/work-item-creation-contract.js.map +1 -0
  136. package/package.json +10 -10
@@ -0,0 +1,289 @@
1
+ import type { ToolRunContext } from '@deepseek-ai/dsh-tools';
2
+ import type { CreationCapabilityObservation, CreationCapabilityOwner, CreationCapabilityTool } from './creation-capability-types.js';
3
+ import type { CreationCapabilitySourceSnapshot } from './creation-capability-source.js';
4
+ import type { PluginCreationVerificationCertificate, PluginRevisionRegressionCertificate, PluginRevisionVerificationCertificate } from '@dsh-enhanced/assistant-growth-contract';
5
+ /** Independent finite rollback authorization; deliberately separate from the adoption grant. */
6
+ export interface RevisionCapabilityRollbackGrant {
7
+ authorityId: string;
8
+ expiresAt: number;
9
+ maxRollbacks: number;
10
+ }
11
+ /**
12
+ * Separate, finite owner authority for replacing an already adopted stable tool entry with an
13
+ * independently verified revision. It never signs acceptance and never grants execution: the
14
+ * parent creation adoption and this receipt only select which verified artifact the stable entry
15
+ * routes to. Absent configuration keeps every existing revision plan terminal after review.
16
+ */
17
+ export interface RevisionCapabilityConfig {
18
+ authorityId: string;
19
+ keyId: string;
20
+ keyPath: string;
21
+ owner: CreationCapabilityOwner;
22
+ namePrefix: string;
23
+ expiresAt: number;
24
+ maxAdoptions: number;
25
+ maxInputBytes: number;
26
+ maxCallRecords: number;
27
+ /** New independent host-only rollback grant with its own expiry and count. */
28
+ rollback: RevisionCapabilityRollbackGrant;
29
+ /** Opt-in lifetime for an already adopted revision; never extends either use grant. */
30
+ retention?: {
31
+ maximumLifetimeMs: number;
32
+ };
33
+ }
34
+ export interface RevisionCapabilityModel {
35
+ provider: string;
36
+ model: string;
37
+ reasoningEffort?: string;
38
+ }
39
+ /** Content-addressed candidate run reference bound by an adoption receipt. */
40
+ export interface RevisionCapabilitySourceRef {
41
+ referenceDigest: string;
42
+ ownerDigest: string;
43
+ growthRunDigest: string;
44
+ }
45
+ /** A signed adoption receipt binds the exact parent adoption receipt, candidate artifact, new task and model. */
46
+ export interface RevisionCapabilityAdoptionReceipt {
47
+ protocol: 'dsh-created-capability-revision-adoption/v1';
48
+ authorityId: string;
49
+ authorityDigest: string;
50
+ keyId: string;
51
+ planId: string;
52
+ planDigest: string;
53
+ verificationDigest: string;
54
+ parentPlanId: string;
55
+ parentCertificateDigest: string;
56
+ parentReceiptDigest: string;
57
+ parentArtifactSha256: string;
58
+ entryId: string;
59
+ aliasesDigest: string;
60
+ artifactSha256: string;
61
+ artifactBytes: number;
62
+ schemaDigest: string;
63
+ source: RevisionCapabilitySourceRef;
64
+ model: RevisionCapabilityModel;
65
+ /** Present exactly when an independent parent-behavior regression was configured. */
66
+ regressionDigest?: string;
67
+ /** Parent calls already running at the switch; attribution evidence only, never an authorization. */
68
+ inFlightParentCalls: number;
69
+ expiresAt: number;
70
+ adoptedAt: number;
71
+ signature: string;
72
+ }
73
+ export type RevisionCapabilityAdoptionStatus = 'claimed' | 'active' | 'closed' | 'unknown' | 'rejected';
74
+ export interface RevisionCapabilityAdoptionRecord {
75
+ planId: string;
76
+ status: RevisionCapabilityAdoptionStatus;
77
+ parentPlanId: string;
78
+ certificateDigest: string;
79
+ claimedAt: number;
80
+ settledAt?: number;
81
+ reason?: string;
82
+ entryId?: string;
83
+ inFlightParentCalls?: number;
84
+ }
85
+ /** One immutable artifact version retained under a stable entry; bytes are never rewritten. */
86
+ export interface RevisionCapabilityVersion {
87
+ planId: string;
88
+ entryId: string;
89
+ role: 'parent' | 'revision';
90
+ name: string;
91
+ certificate: PluginCreationVerificationCertificate | PluginRevisionVerificationCertificate;
92
+ certificateDigest: string;
93
+ /** Parent creation adoption receipt (parent) or this journal's signed adoption receipt (revision). */
94
+ receiptJson: string;
95
+ receiptDigest: string;
96
+ tools: readonly CreationCapabilityTool[];
97
+ artifact: Buffer;
98
+ artifactSha256: string;
99
+ schemaDigest: string;
100
+ source: RevisionCapabilitySourceRef;
101
+ model: RevisionCapabilityModel;
102
+ regressionDigest?: string;
103
+ adoptedAt: number;
104
+ expiresAt: number;
105
+ }
106
+ /** The stable tool entry; aliases are inherited verbatim from the parent adoption. */
107
+ export interface RevisionCapabilityEntry {
108
+ entryId: string;
109
+ name: string;
110
+ aliases: readonly string[];
111
+ aliasesDigest: string;
112
+ parentPlanId: string;
113
+ currentPlanId: string;
114
+ revision: number;
115
+ createdAt: number;
116
+ updatedAt: number;
117
+ }
118
+ export interface RevisionCapabilityCall {
119
+ key: string;
120
+ versionPlanId: string;
121
+ status: 'claimed' | 'completed' | 'unknown';
122
+ result?: unknown;
123
+ }
124
+ /** Bounded, content-free call attribution; arguments and results never escape. */
125
+ export interface RevisionCapabilityCallEvidence {
126
+ protocol: 'dsh-created-capability-revision-call/v1';
127
+ entryId: string;
128
+ key: string;
129
+ versionPlanId: string;
130
+ toolAlias: string;
131
+ status: 'completed' | 'unknown' | 'claimed';
132
+ receiptDigest: string;
133
+ claimedAt: number;
134
+ settledAt?: number;
135
+ }
136
+ export interface RevisionCapabilityRollbackRecord {
137
+ protocol: 'dsh-created-capability-revision-rollback/v1';
138
+ rollbackId: string;
139
+ entryId: string;
140
+ fromPlanId: string;
141
+ toPlanId: string;
142
+ parentReceiptDigest: string;
143
+ authorityId: string;
144
+ at: number;
145
+ ordinal: number;
146
+ digest: string;
147
+ }
148
+ /** Read-only Host readiness; never a model tool and never key material. */
149
+ export interface RevisionCapabilityReadiness {
150
+ protocol: 'dsh-created-capability-revision-adoption-readiness/v1';
151
+ available: boolean;
152
+ authority: {
153
+ authorityId: string;
154
+ expiresAt: number;
155
+ };
156
+ remainingAdoptions: number;
157
+ remainingRollbacks: number;
158
+ rollbackExpiresAt: number;
159
+ }
160
+ /** The integration owns current authenticated owner/source fences, not model parameters. */
161
+ export interface RevisionCapabilityPorts {
162
+ /** Fresh independently verified candidate; the integration rechecks owner and every source fence. */
163
+ inspect(planId: string): RevisionCapabilityInspection;
164
+ recheck(planId: string, signal: AbortSignal): Promise<void>;
165
+ /** Current active creation adoption of the exact parent plan. */
166
+ parent(planId: string): RevisionCapabilityParentAdoption;
167
+ recheckParent(planId: string, signal: AbortSignal): Promise<void>;
168
+ /** Calls of the parent adoption already running at the switch; evidence only. */
169
+ inFlightParentCalls(planId: string): number;
170
+ /** Host-only alias handover; already running parent calls must keep executing. */
171
+ suspendParent(planId: string): Promise<void>;
172
+ /** Host-only recovery after a failed switch. */
173
+ resumeParent(planId: string): Promise<void>;
174
+ /** Execute a verified parent/revision artifact under the same finite behavior runner. */
175
+ runVersion(input: {
176
+ certificate: PluginCreationVerificationCertificate | PluginRevisionVerificationCertificate;
177
+ artifact: Buffer;
178
+ schemaDigest: string;
179
+ operation: {
180
+ kind: 'discover';
181
+ } | {
182
+ kind: 'invoke';
183
+ calls: readonly {
184
+ id: string;
185
+ toolName: string;
186
+ arguments: unknown;
187
+ }[];
188
+ };
189
+ key: string;
190
+ signal: AbortSignal;
191
+ }): Promise<CreationCapabilityObservation>;
192
+ /** Read-only proof of the fixed execution boundary for this candidate. */
193
+ recheckExecution(certificate: PluginCreationVerificationCertificate | PluginRevisionVerificationCertificate, signal: AbortSignal): Promise<void>;
194
+ /** Synchronous, read-only execution-boundary identity used by admission; never executes the artifact. */
195
+ matchesExecution(certificate: PluginCreationVerificationCertificate | PluginRevisionVerificationCertificate): boolean;
196
+ /** Current authenticated owner Agent admission for one mounted call. */
197
+ assertCaller(execution: ToolRunContext): void;
198
+ }
199
+ export interface RevisionCapabilityParentAdoption {
200
+ planId: string;
201
+ name: string;
202
+ owner: CreationCapabilityOwner;
203
+ certificate: PluginCreationVerificationCertificate;
204
+ artifact: Buffer;
205
+ tools: readonly CreationCapabilityTool[];
206
+ receiptJson: string;
207
+ receiptDigest: string;
208
+ }
209
+ export interface RevisionCapabilityInspection {
210
+ certificate: PluginRevisionVerificationCertificate;
211
+ artifact: Buffer;
212
+ source: CreationCapabilitySourceSnapshot;
213
+ plan: {
214
+ id: string;
215
+ digest: string;
216
+ name: string;
217
+ };
218
+ regression?: PluginRevisionRegressionCertificate;
219
+ owner: CreationCapabilityOwner;
220
+ }
221
+ /** Signed-receipt and durable state mirror for the runtime; the filesystem journal is the production port. */
222
+ export interface RevisionCapabilityJournalPort {
223
+ readonly authorityDigest: string;
224
+ readonly publicKey: string;
225
+ inspectAdoption(planId: string): RevisionCapabilityAdoptionRecord | undefined;
226
+ listEntries(): readonly RevisionCapabilityEntry[];
227
+ inspectEntry(entryId: string): {
228
+ entry: RevisionCapabilityEntry;
229
+ parent: RevisionCapabilityVersion;
230
+ current: RevisionCapabilityVersion;
231
+ } | undefined;
232
+ inspectVersion(planId: string): RevisionCapabilityVersion | undefined;
233
+ usage(): {
234
+ adoptions: number;
235
+ rollbacks: number;
236
+ calls: number;
237
+ };
238
+ /** Sign one exact adoption receipt with the journal key; the body is validated before signing. */
239
+ signReceipt(body: Omit<RevisionCapabilityAdoptionReceipt, 'signature'>): RevisionCapabilityAdoptionReceipt;
240
+ claim(input: {
241
+ planId: string;
242
+ parentPlanId: string;
243
+ certificateDigest: string;
244
+ }): {
245
+ created: boolean;
246
+ record: RevisionCapabilityAdoptionRecord;
247
+ };
248
+ commit(input: {
249
+ entry: {
250
+ entryId: string;
251
+ name: string;
252
+ aliases: readonly string[];
253
+ };
254
+ parent: RevisionCapabilityVersion;
255
+ revision: RevisionCapabilityVersion;
256
+ receipt: RevisionCapabilityAdoptionReceipt;
257
+ expectedCurrentPlanId: string;
258
+ inFlightParentCalls: number;
259
+ }): RevisionCapabilityAdoptionRecord;
260
+ settle(planId: string, status: 'closed' | 'unknown' | 'rejected', reason: string): void;
261
+ rollback(input: {
262
+ entryId: string;
263
+ expectedCurrentPlanId: string;
264
+ authorityId: string;
265
+ }): {
266
+ created: boolean;
267
+ record: RevisionCapabilityRollbackRecord;
268
+ };
269
+ claimCall(input: {
270
+ entryId: string;
271
+ key: string;
272
+ argumentsDigest: string;
273
+ toolAlias: string;
274
+ versionPlanId: string;
275
+ }): {
276
+ created: boolean;
277
+ call: RevisionCapabilityCall;
278
+ };
279
+ settleCall(input: {
280
+ entryId: string;
281
+ key: string;
282
+ status: 'completed' | 'unknown';
283
+ result?: unknown;
284
+ }): void;
285
+ listCallEvidence(entryId: string): readonly RevisionCapabilityCallEvidence[];
286
+ recoverClaims(): void;
287
+ close(): void;
288
+ }
289
+ //# sourceMappingURL=revision-capability-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revision-capability-types.d.ts","sourceRoot":"","sources":["../src/revision-capability-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAC5D,OAAO,KAAK,EAAE,6BAA6B,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAA;AACpI,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAA;AACvF,OAAO,KAAK,EAAE,qCAAqC,EAAE,mCAAmC,EACtF,qCAAqC,EAAE,MAAM,yCAAyC,CAAA;AAExF,gGAAgG;AAChG,MAAM,WAAW,+BAA+B;IAC9C,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,uBAAuB,CAAA;IAC9B,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,8EAA8E;IAC9E,QAAQ,EAAE,+BAA+B,CAAA;IACzC,uFAAuF;IACvF,SAAS,CAAC,EAAE;QAAE,iBAAiB,EAAE,MAAM,CAAA;KAAE,CAAA;CAC1C;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,eAAe,CAAC,EAAE,MAAM,CAAA;CACzB;AAED,8EAA8E;AAC9E,MAAM,WAAW,2BAA2B;IAC1C,eAAe,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,iHAAiH;AACjH,MAAM,WAAW,iCAAiC;IAChD,QAAQ,EAAE,6CAA6C,CAAA;IACvD,WAAW,EAAE,MAAM,CAAA;IACnB,eAAe,EAAE,MAAM,CAAA;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,YAAY,EAAE,MAAM,CAAA;IACpB,uBAAuB,EAAE,MAAM,CAAA;IAC/B,mBAAmB,EAAE,MAAM,CAAA;IAC3B,oBAAoB,EAAE,MAAM,CAAA;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,EAAE,MAAM,CAAA;IACrB,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,2BAA2B,CAAA;IACnC,KAAK,EAAE,uBAAuB,CAAA;IAC9B,qFAAqF;IACrF,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,qGAAqG;IACrG,mBAAmB,EAAE,MAAM,CAAA;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,MAAM,gCAAgC,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAA;AAEvG,MAAM,WAAW,gCAAgC;IAC/C,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,gCAAgC,CAAA;IACxC,YAAY,EAAE,MAAM,CAAA;IACpB,iBAAiB,EAAE,MAAM,CAAA;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,mBAAmB,CAAC,EAAE,MAAM,CAAA;CAC7B;AAED,+FAA+F;AAC/F,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,qCAAqC,GAAG,qCAAqC,CAAA;IAC1F,iBAAiB,EAAE,MAAM,CAAA;IACzB,sGAAsG;IACtG,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,KAAK,EAAE,SAAS,sBAAsB,EAAE,CAAA;IACxC,QAAQ,EAAE,MAAM,CAAA;IAChB,cAAc,EAAE,MAAM,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;IACpB,MAAM,EAAE,2BAA2B,CAAA;IACnC,KAAK,EAAE,uBAAuB,CAAA;IAC9B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,sFAAsF;AACtF,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;IAC1B,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAA;IACX,aAAa,EAAE,MAAM,CAAA;IACrB,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,CAAA;IAC3C,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,kFAAkF;AAClF,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,EAAE,yCAAyC,CAAA;IACnD,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS,CAAA;IAC3C,aAAa,EAAE,MAAM,CAAA;IACrB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,EAAE,6CAA6C,CAAA;IACvD,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,WAAW,EAAE,MAAM,CAAA;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;CACf;AAED,2EAA2E;AAC3E,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,EAAE,uDAAuD,CAAA;IACjE,SAAS,EAAE,OAAO,CAAA;IAClB,SAAS,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAA;IACrD,kBAAkB,EAAE,MAAM,CAAA;IAC1B,kBAAkB,EAAE,MAAM,CAAA;IAC1B,iBAAiB,EAAE,MAAM,CAAA;CAC1B;AAED,4FAA4F;AAC5F,MAAM,WAAW,uBAAuB;IACtC,qGAAqG;IACrG,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,4BAA4B,CAAA;IACrD,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3D,iEAAiE;IACjE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,gCAAgC,CAAA;IACxD,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACjE,iFAAiF;IACjF,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;IAC3C,kFAAkF;IAClF,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5C,gDAAgD;IAChD,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3C,yFAAyF;IACzF,UAAU,CAAC,KAAK,EAAE;QAAE,WAAW,EAAE,qCAAqC,GAAG,qCAAqC,CAAA;QAC5G,QAAQ,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE;YAAE,IAAI,EAAE,UAAU,CAAA;SAAE,GACrE;YAAE,IAAI,EAAE,QAAQ,CAAC;YAAC,KAAK,EAAE,SAAS;gBAAE,EAAE,EAAE,MAAM,CAAC;gBAAC,QAAQ,EAAE,MAAM,CAAC;gBAAC,SAAS,EAAE,OAAO,CAAA;aAAE,EAAE,CAAA;SAAE,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;QACzG,MAAM,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAA;IAChE,0EAA0E;IAC1E,gBAAgB,CAAC,WAAW,EAAE,qCAAqC,GAAG,qCAAqC,EACzG,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,yGAAyG;IACzG,gBAAgB,CAAC,WAAW,EAAE,qCAAqC,GAAG,qCAAqC,GAAG,OAAO,CAAA;IACrH,wEAAwE;IACxE,YAAY,CAAC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;CAC9C;AAED,MAAM,WAAW,gCAAgC;IAC/C,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,uBAAuB,CAAA;IAC9B,WAAW,EAAE,qCAAqC,CAAA;IAClD,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,SAAS,sBAAsB,EAAE,CAAA;IACxC,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,MAAM,WAAW,4BAA4B;IAC3C,WAAW,EAAE,qCAAqC,CAAA;IAClD,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,gCAAgC,CAAA;IACxC,IAAI,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IAClD,UAAU,CAAC,EAAE,mCAAmC,CAAA;IAChD,KAAK,EAAE,uBAAuB,CAAA;CAC/B;AAED,8GAA8G;AAC9G,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,gCAAgC,GAAG,SAAS,CAAA;IAC7E,WAAW,IAAI,SAAS,uBAAuB,EAAE,CAAA;IACjD,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,uBAAuB,CAAC;QAAC,MAAM,EAAE,yBAAyB,CAAC;QACjG,OAAO,EAAE,yBAAyB,CAAA;KAAE,GAAG,SAAS,CAAA;IAClD,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,yBAAyB,GAAG,SAAS,CAAA;IACrE,KAAK,IAAI;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAA;IAChE,kGAAkG;IAClG,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,iCAAiC,EAAE,WAAW,CAAC,GAAG,iCAAiC,CAAA;IAC1G,KAAK,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QACpG,MAAM,EAAE,gCAAgC,CAAA;KAAE,CAAA;IAC5C,MAAM,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;SAAE,CAAA;QAClF,MAAM,EAAE,yBAAyB,CAAC;QAAC,QAAQ,EAAE,yBAAyB,CAAA;QACtE,OAAO,EAAE,iCAAiC,CAAC;QAAC,qBAAqB,EAAE,MAAM,CAAC;QAAC,mBAAmB,EAAE,MAAM,CAAA;KAAE,GACxG,gCAAgC,CAAA;IAClC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACvF,QAAQ,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,qBAAqB,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,GACrF;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,gCAAgC,CAAA;KAAE,CAAA;IAChE,SAAS,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAC1F,aAAa,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,IAAI,EAAE,sBAAsB,CAAA;KAAE,CAAA;IAC9E,UAAU,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAA;IAC5G,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,8BAA8B,EAAE,CAAA;IAC5E,aAAa,IAAI,IAAI,CAAA;IACrB,KAAK,IAAI,IAAI,CAAA;CACd"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=revision-capability-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revision-capability-types.js","sourceRoot":"","sources":["../src/revision-capability-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,34 @@
1
+ import type { AssistantAutomationsService } from '@dsh-enhanced/assistant-automations';
2
+ import type { AssistantDeliveryService, OwnerRouteValidationReceipt } from '@dsh-enhanced/assistant-delivery';
3
+ type Automations = Pick<AssistantAutomationsService, 'inspectSystemOwnedRetirement' | 'retireSystemOwned' | 'inspectSystemOwned'>;
4
+ type Delivery = Pick<AssistantDeliveryService, 'inspectOwnerRouteState'>;
5
+ type Scope = {
6
+ authorityId: string;
7
+ principalId: string;
8
+ workspace: string;
9
+ agentPreset: string;
10
+ };
11
+ /** Availability failures must never be interpreted as obsolete task evidence. */
12
+ export declare class ScannerOwnerUnavailable extends Error {
13
+ }
14
+ /** Retires only this scanner, preserving its jobs, requests, grants and budgets. */
15
+ export declare class ScannerOwnerGuard {
16
+ private readonly owner;
17
+ private readonly automationId;
18
+ private readonly scope;
19
+ private readonly delivery;
20
+ private readonly automations;
21
+ private readonly expected?;
22
+ retired: boolean;
23
+ canReconcileScanner: boolean;
24
+ constructor(owner: string, automationId: string, scope: Scope, delivery: Delivery, automations: Automations, expected?: {
25
+ authorityHash: string;
26
+ principalRecordId: string;
27
+ principalVersion: number;
28
+ } | undefined);
29
+ check(): OwnerRouteValidationReceipt;
30
+ }
31
+ /** Disposal keeps ownership of in-flight work and has a finite drain deadline. */
32
+ export declare function drainScannerFlights(flights: Set<Promise<unknown>>): Promise<void>;
33
+ export {};
34
+ //# sourceMappingURL=scanner-owner-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner-owner-runtime.d.ts","sourceRoot":"","sources":["../src/scanner-owner-runtime.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,qCAAqC,CAAA;AACtF,OAAO,KAAK,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAA;AAE7G,KAAK,WAAW,GAAG,IAAI,CAAC,2BAA2B,EAAE,8BAA8B,GAAG,mBAAmB,GAAG,oBAAoB,CAAC,CAAA;AACjI,KAAK,QAAQ,GAAG,IAAI,CAAC,wBAAwB,EAAE,wBAAwB,CAAC,CAAA;AACxE,KAAK,KAAK,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAA;AAGjG,iFAAiF;AACjF,qBAAa,uBAAwB,SAAQ,KAAK;CAAG;AAErD,oFAAoF;AACpF,qBAAa,iBAAiB;IAIhB,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAU,OAAO,CAAC,QAAQ,CAAC,YAAY;IACvE,OAAO,CAAC,QAAQ,CAAC,KAAK;IAAS,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAAY,OAAO,CAAC,QAAQ,CAAC,WAAW;IAChG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAL5B,OAAO,UAAQ;IAEf,mBAAmB,UAAQ;gBACE,KAAK,EAAE,MAAM,EAAmB,YAAY,EAAE,MAAM,EAC9D,KAAK,EAAE,KAAK,EAAmB,QAAQ,EAAE,QAAQ,EAAmB,WAAW,EAAE,WAAW,EAC5F,QAAQ,CAAC,EAAE;QAAE,aAAa,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,YAAA;IAE5G,KAAK,IAAI,2BAA2B;CAgDrC;AAED,kFAAkF;AAClF,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAOvF"}
@@ -0,0 +1,99 @@
1
+ import { createHash } from 'node:crypto';
2
+ const digest = (value) => createHash('sha256').update(JSON.stringify(value)).digest('hex');
3
+ /** Availability failures must never be interpreted as obsolete task evidence. */
4
+ export class ScannerOwnerUnavailable extends Error {
5
+ }
6
+ /** Retires only this scanner, preserving its jobs, requests, grants and budgets. */
7
+ export class ScannerOwnerGuard {
8
+ owner;
9
+ automationId;
10
+ scope;
11
+ delivery;
12
+ automations;
13
+ expected;
14
+ retired = false;
15
+ // Only the native reconcile transaction may admit a wake-up under an unreadable retirement state.
16
+ canReconcileScanner = false;
17
+ constructor(owner, automationId, scope, delivery, automations, expected) {
18
+ this.owner = owner;
19
+ this.automationId = automationId;
20
+ this.scope = scope;
21
+ this.delivery = delivery;
22
+ this.automations = automations;
23
+ this.expected = expected;
24
+ }
25
+ check() {
26
+ this.canReconcileScanner = false;
27
+ try {
28
+ if (this.retired)
29
+ throw new ScannerOwnerUnavailable('scanner permanently retired: owner-revoked');
30
+ let retirement;
31
+ try {
32
+ retirement = this.automations.inspectSystemOwnedRetirement({ owner: this.owner, automationId: this.automationId });
33
+ }
34
+ catch (error) {
35
+ // A read outage must not strand a fresh scanner. Native reconcile checks
36
+ // retirement before cached receipts and again in its SQLite transaction.
37
+ // It can establish only this exact scanId, without touching old jobs.
38
+ this.canReconcileScanner = true;
39
+ try {
40
+ if (this.delivery.inspectOwnerRouteState(this.scope).status === 'revoked')
41
+ this.canReconcileScanner = false;
42
+ }
43
+ catch { /* The native retirement fence still owns activation admission. */ }
44
+ throw error;
45
+ }
46
+ if (retirement) {
47
+ this.retired = true;
48
+ throw new ScannerOwnerUnavailable('scanner permanently retired: owner-revoked');
49
+ }
50
+ this.canReconcileScanner = true;
51
+ const state = this.delivery.inspectOwnerRouteState(this.scope);
52
+ if (state.status === 'unavailable')
53
+ throw new ScannerOwnerUnavailable(`scanner owner unavailable: ${state.reason}`);
54
+ if (state.status === 'active')
55
+ return state.receipt;
56
+ this.canReconcileScanner = false;
57
+ if (this.expected && (state.authorityHash !== this.expected.authorityHash
58
+ || state.principalRecordId !== this.expected.principalRecordId || state.principalVersion !== this.expected.principalVersion)) {
59
+ throw new ScannerOwnerUnavailable('scanner owner lineage unavailable');
60
+ }
61
+ let current;
62
+ try {
63
+ current = this.automations.inspectSystemOwned({ owner: this.owner, automationId: this.automationId });
64
+ }
65
+ catch (error) {
66
+ if (!(error instanceof Error) || error.code !== 'not-found')
67
+ throw error;
68
+ }
69
+ if (current) {
70
+ const evidenceDigest = digest({ protocol: 'scanner-owner-revoked/v1', scope: this.scope, state });
71
+ this.automations.retireSystemOwned({ owner: this.owner, automationId: this.automationId,
72
+ operationId: `owner-revoked:${digest([this.owner, this.automationId, current.definitionHash, current.definitionVersion, evidenceDigest])}`,
73
+ definitionHash: current.definitionHash, expectedVersion: current.definitionVersion, reason: 'owner-revoked', evidenceDigest });
74
+ }
75
+ // An absent definition must stay absent; no replacement grant or row is created.
76
+ this.retired = true;
77
+ throw new ScannerOwnerUnavailable('scanner owner explicitly revoked');
78
+ }
79
+ catch (error) {
80
+ if (error instanceof ScannerOwnerUnavailable)
81
+ throw error;
82
+ throw new ScannerOwnerUnavailable(`scanner owner inspection or retirement unavailable: ${error instanceof Error ? error.message : String(error)}`);
83
+ }
84
+ }
85
+ }
86
+ /** Disposal keeps ownership of in-flight work and has a finite drain deadline. */
87
+ export async function drainScannerFlights(flights) {
88
+ let timer;
89
+ try {
90
+ await Promise.race([Promise.allSettled(flights), new Promise((_, reject) => {
91
+ timer = setTimeout(() => reject(new Error('scanner shutdown timed out; in-flight outcomes remain unknown')), 5000);
92
+ })]);
93
+ }
94
+ finally {
95
+ if (timer !== undefined)
96
+ clearTimeout(timer);
97
+ }
98
+ }
99
+ //# sourceMappingURL=scanner-owner-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scanner-owner-runtime.js","sourceRoot":"","sources":["../src/scanner-owner-runtime.ts"],"names":[],"mappings":"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"}