@dsh-enhanced/plugin-control-plane 0.1.32 → 0.1.35

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 (199) hide show
  1. package/README.md +352 -4
  2. package/bin/dsh-local-release-adapter.js +80 -16
  3. package/bin/dsh-npm-registry-adapter.js +613 -0
  4. package/bin/dsh-source-adoption-authority.js +12 -0
  5. package/bin/dsh-source-approval-authority.js +16 -0
  6. package/bin/dsh-source-release-authority.js +12 -0
  7. package/bin/dsh-systemd-host-attestor.js +707 -0
  8. package/bin/dsh-task-observation-authority.js +15 -0
  9. package/lib/adapter-process.d.ts +23 -0
  10. package/lib/adapter-process.d.ts.map +1 -0
  11. package/lib/adapter-process.js +305 -0
  12. package/lib/adapter-process.js.map +1 -0
  13. package/lib/adoption-coordinator.d.ts +63 -0
  14. package/lib/adoption-coordinator.d.ts.map +1 -0
  15. package/lib/adoption-coordinator.js +241 -0
  16. package/lib/adoption-coordinator.js.map +1 -0
  17. package/lib/adoption-handoff.d.ts +16 -0
  18. package/lib/adoption-handoff.d.ts.map +1 -0
  19. package/lib/adoption-handoff.js +11 -0
  20. package/lib/adoption-handoff.js.map +1 -0
  21. package/lib/attestation.d.ts.map +1 -1
  22. package/lib/attestation.js +49 -1
  23. package/lib/attestation.js.map +1 -1
  24. package/lib/catalog.d.ts.map +1 -1
  25. package/lib/catalog.js +29 -2
  26. package/lib/catalog.js.map +1 -1
  27. package/lib/cli.d.ts +33 -9
  28. package/lib/cli.d.ts.map +1 -1
  29. package/lib/cli.js +624 -178
  30. package/lib/cli.js.map +1 -1
  31. package/lib/deployment-readiness.d.ts +38 -0
  32. package/lib/deployment-readiness.d.ts.map +1 -0
  33. package/lib/deployment-readiness.js +154 -0
  34. package/lib/deployment-readiness.js.map +1 -0
  35. package/lib/effect-blocked-replay.d.ts +81 -0
  36. package/lib/effect-blocked-replay.d.ts.map +1 -0
  37. package/lib/effect-blocked-replay.js +259 -0
  38. package/lib/effect-blocked-replay.js.map +1 -0
  39. package/lib/errors.d.ts +6 -0
  40. package/lib/errors.d.ts.map +1 -0
  41. package/lib/errors.js +9 -0
  42. package/lib/errors.js.map +1 -0
  43. package/lib/foreground-deployment-runtime.d.ts +20 -0
  44. package/lib/foreground-deployment-runtime.d.ts.map +1 -0
  45. package/lib/foreground-deployment-runtime.js +79 -0
  46. package/lib/foreground-deployment-runtime.js.map +1 -0
  47. package/lib/foreground-deployment.d.ts +17 -0
  48. package/lib/foreground-deployment.d.ts.map +1 -0
  49. package/lib/foreground-deployment.js +43 -0
  50. package/lib/foreground-deployment.js.map +1 -0
  51. package/lib/host-attestor.d.ts +1 -1
  52. package/lib/host-attestor.d.ts.map +1 -1
  53. package/lib/host-attestor.js +51 -57
  54. package/lib/host-attestor.js.map +1 -1
  55. package/lib/index.d.ts +25 -2
  56. package/lib/index.d.ts.map +1 -1
  57. package/lib/index.js +11 -2
  58. package/lib/index.js.map +1 -1
  59. package/lib/npm-publish.d.ts +25 -0
  60. package/lib/npm-publish.d.ts.map +1 -0
  61. package/lib/npm-publish.js +280 -0
  62. package/lib/npm-publish.js.map +1 -0
  63. package/lib/owner-task-gap-types.d.ts +21 -0
  64. package/lib/owner-task-gap-types.d.ts.map +1 -0
  65. package/lib/owner-task-gap-types.js +2 -0
  66. package/lib/owner-task-gap-types.js.map +1 -0
  67. package/lib/owner-task-gaps.d.ts +24 -0
  68. package/lib/owner-task-gaps.d.ts.map +1 -0
  69. package/lib/owner-task-gaps.js +74 -0
  70. package/lib/owner-task-gaps.js.map +1 -0
  71. package/lib/post-activation.d.ts +33 -0
  72. package/lib/post-activation.d.ts.map +1 -0
  73. package/lib/post-activation.js +219 -0
  74. package/lib/post-activation.js.map +1 -0
  75. package/lib/registry-fetch.d.ts +50 -0
  76. package/lib/registry-fetch.d.ts.map +1 -0
  77. package/lib/registry-fetch.js +267 -0
  78. package/lib/registry-fetch.js.map +1 -0
  79. package/lib/release.d.ts +4 -4
  80. package/lib/release.d.ts.map +1 -1
  81. package/lib/release.js +142 -56
  82. package/lib/release.js.map +1 -1
  83. package/lib/replay-endpoint-protocol.d.ts +65 -0
  84. package/lib/replay-endpoint-protocol.d.ts.map +1 -0
  85. package/lib/replay-endpoint-protocol.js +183 -0
  86. package/lib/replay-endpoint-protocol.js.map +1 -0
  87. package/lib/replay-endpoint.d.ts +7 -0
  88. package/lib/replay-endpoint.d.ts.map +1 -0
  89. package/lib/replay-endpoint.js +193 -0
  90. package/lib/replay-endpoint.js.map +1 -0
  91. package/lib/replay-grant.d.ts +62 -0
  92. package/lib/replay-grant.d.ts.map +1 -0
  93. package/lib/replay-grant.js +208 -0
  94. package/lib/replay-grant.js.map +1 -0
  95. package/lib/replay-journal.d.ts +25 -0
  96. package/lib/replay-journal.d.ts.map +1 -0
  97. package/lib/replay-journal.js +275 -0
  98. package/lib/replay-journal.js.map +1 -0
  99. package/lib/runtime-observer-protocol.d.ts +63 -0
  100. package/lib/runtime-observer-protocol.d.ts.map +1 -0
  101. package/lib/runtime-observer-protocol.js +280 -0
  102. package/lib/runtime-observer-protocol.js.map +1 -0
  103. package/lib/runtime-observer.d.ts +8 -0
  104. package/lib/runtime-observer.d.ts.map +1 -0
  105. package/lib/runtime-observer.js +182 -0
  106. package/lib/runtime-observer.js.map +1 -0
  107. package/lib/service.d.ts +145 -1
  108. package/lib/service.d.ts.map +1 -1
  109. package/lib/service.js +734 -6
  110. package/lib/service.js.map +1 -1
  111. package/lib/source-adoption-authority.d.ts +65 -0
  112. package/lib/source-adoption-authority.d.ts.map +1 -0
  113. package/lib/source-adoption-authority.js +271 -0
  114. package/lib/source-adoption-authority.js.map +1 -0
  115. package/lib/source-adoption-runner.d.ts +28 -0
  116. package/lib/source-adoption-runner.d.ts.map +1 -0
  117. package/lib/source-adoption-runner.js +197 -0
  118. package/lib/source-adoption-runner.js.map +1 -0
  119. package/lib/source-approval-authority.d.ts +50 -0
  120. package/lib/source-approval-authority.d.ts.map +1 -0
  121. package/lib/source-approval-authority.js +412 -0
  122. package/lib/source-approval-authority.js.map +1 -0
  123. package/lib/source-approval-client.d.ts +32 -0
  124. package/lib/source-approval-client.d.ts.map +1 -0
  125. package/lib/source-approval-client.js +175 -0
  126. package/lib/source-approval-client.js.map +1 -0
  127. package/lib/source-build.d.ts +60 -0
  128. package/lib/source-build.d.ts.map +1 -0
  129. package/lib/source-build.js +311 -0
  130. package/lib/source-build.js.map +1 -0
  131. package/lib/source-context.d.ts +24 -0
  132. package/lib/source-context.d.ts.map +1 -0
  133. package/lib/source-context.js +99 -0
  134. package/lib/source-context.js.map +1 -0
  135. package/lib/source-job-types.d.ts +87 -0
  136. package/lib/source-job-types.d.ts.map +1 -0
  137. package/lib/source-job-types.js +2 -0
  138. package/lib/source-job-types.js.map +1 -0
  139. package/lib/source-jobs.d.ts +113 -0
  140. package/lib/source-jobs.d.ts.map +1 -0
  141. package/lib/source-jobs.js +535 -0
  142. package/lib/source-jobs.js.map +1 -0
  143. package/lib/source-release-authority.d.ts +35 -0
  144. package/lib/source-release-authority.d.ts.map +1 -0
  145. package/lib/source-release-authority.js +271 -0
  146. package/lib/source-release-authority.js.map +1 -0
  147. package/lib/source-release-client.d.ts +10 -0
  148. package/lib/source-release-client.d.ts.map +1 -0
  149. package/lib/source-release-client.js +24 -0
  150. package/lib/source-release-client.js.map +1 -0
  151. package/lib/source-release-runner.d.ts +31 -0
  152. package/lib/source-release-runner.d.ts.map +1 -0
  153. package/lib/source-release-runner.js +125 -0
  154. package/lib/source-release-runner.js.map +1 -0
  155. package/lib/source-versioning.d.ts +24 -0
  156. package/lib/source-versioning.d.ts.map +1 -0
  157. package/lib/source-versioning.js +213 -0
  158. package/lib/source-versioning.js.map +1 -0
  159. package/lib/source-workspace.d.ts +117 -0
  160. package/lib/source-workspace.d.ts.map +1 -0
  161. package/lib/source-workspace.js +458 -0
  162. package/lib/source-workspace.js.map +1 -0
  163. package/lib/sqlite.d.ts +1 -1
  164. package/lib/sqlite.d.ts.map +1 -1
  165. package/lib/sqlite.js +509 -7
  166. package/lib/sqlite.js.map +1 -1
  167. package/lib/store.d.ts +229 -6
  168. package/lib/store.d.ts.map +1 -1
  169. package/lib/store.js +2431 -383
  170. package/lib/store.js.map +1 -1
  171. package/lib/task-observation-authority.d.ts +29 -0
  172. package/lib/task-observation-authority.d.ts.map +1 -0
  173. package/lib/task-observation-authority.js +370 -0
  174. package/lib/task-observation-authority.js.map +1 -0
  175. package/lib/task-observation-client.d.ts +4 -0
  176. package/lib/task-observation-client.d.ts.map +1 -0
  177. package/lib/task-observation-client.js +20 -0
  178. package/lib/task-observation-client.js.map +1 -0
  179. package/lib/task-observation-runtime.d.ts +59 -0
  180. package/lib/task-observation-runtime.d.ts.map +1 -0
  181. package/lib/task-observation-runtime.js +331 -0
  182. package/lib/task-observation-runtime.js.map +1 -0
  183. package/lib/task-observation-store.d.ts +17 -0
  184. package/lib/task-observation-store.d.ts.map +1 -0
  185. package/lib/task-observation-store.js +115 -0
  186. package/lib/task-observation-store.js.map +1 -0
  187. package/lib/task-observation-types.d.ts +67 -0
  188. package/lib/task-observation-types.d.ts.map +1 -0
  189. package/lib/task-observation-types.js +2 -0
  190. package/lib/task-observation-types.js.map +1 -0
  191. package/lib/trust.d.ts +3 -0
  192. package/lib/trust.d.ts.map +1 -1
  193. package/lib/trust.js +0 -0
  194. package/lib/trust.js.map +1 -1
  195. package/lib/types.d.ts +275 -8
  196. package/lib/types.d.ts.map +1 -1
  197. package/lib/version.d.ts +1 -1
  198. package/lib/version.js +1 -1
  199. package/package.json +40 -5
@@ -0,0 +1,24 @@
1
+ export interface SourceInspection {
2
+ name: string;
3
+ baseCommit: string;
4
+ files: readonly {
5
+ path: string;
6
+ bytes: number;
7
+ }[];
8
+ contents: readonly {
9
+ path: string;
10
+ content: string;
11
+ }[];
12
+ }
13
+ /** Bound caller-supplied async fences; cancellation suppresses every late result. */
14
+ export declare function awaitSourceSignal<T>(signal: AbortSignal, operation: () => T | Promise<T>): Promise<T>;
15
+ export declare function inspectSourceContext(input: {
16
+ repository: string;
17
+ name: string;
18
+ paths: readonly string[];
19
+ baseCommit?: string;
20
+ environment: NodeJS.ProcessEnv;
21
+ signal: AbortSignal;
22
+ assertCurrent: () => Promise<void>;
23
+ }): Promise<SourceInspection>;
24
+ //# sourceMappingURL=source-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-context.d.ts","sourceRoot":"","sources":["../src/source-context.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,gBAAgB;IAAG,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAAC,QAAQ,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAAE;AAEjL,qFAAqF;AACrF,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAUrG;AAmBD,wBAAsB,oBAAoB,CAAC,KAAK,EAAE;IAChD,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC,UAAU,CAAA;IAC/G,MAAM,EAAE,WAAW,CAAC;IAAC,aAAa,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CACxD,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA6C5B"}
@@ -0,0 +1,99 @@
1
+ import { realpath } from 'node:fs/promises';
2
+ import { resolve } from 'node:path';
3
+ import { ControlPlaneCliError } from './errors.js';
4
+ import { assertPluginModificationAllowed, runLocalBuffer, runLocalCommand } from './source-workspace.js';
5
+ const NAME = /^(?=.{1,64}$)[a-z][a-z0-9]*(?:-[a-z0-9]+)*$/u;
6
+ const TEXT = /(?:\.(?:ts|tsx|jsx|js|mjs|cjs|json|ya?ml|md|txt|css|html|sh)|^LICENSE)$/u;
7
+ const OMIT = /(?:^|\/)(?:node_modules|lib|dist|coverage)(?:\/|$)|(?:^|\/)\./u;
8
+ const MAX_FILES = 1024;
9
+ const MAX_READ_FILES = 64;
10
+ const MAX_FILE_BYTES = 65_536;
11
+ const MAX_TOTAL_BYTES = 262_144;
12
+ /** Bound caller-supplied async fences; cancellation suppresses every late result. */
13
+ export function awaitSourceSignal(signal, operation) {
14
+ signal.throwIfAborted();
15
+ return new Promise((resolvePromise, reject) => {
16
+ const cancel = () => { reject(signal.reason); };
17
+ signal.addEventListener('abort', cancel, { once: true });
18
+ Promise.resolve().then(() => { signal.throwIfAborted(); return operation(); }).then(value => { signal.removeEventListener('abort', cancel); if (signal.aborted)
19
+ reject(signal.reason);
20
+ else
21
+ resolvePromise(value); }, error => { signal.removeEventListener('abort', cancel); reject(error); });
22
+ });
23
+ }
24
+ function assertPath(path) {
25
+ if (path === '' || path.length > 512 || [...path].some(char => char.charCodeAt(0) < 32 || char.charCodeAt(0) === 127) || path.includes('\\') || path.startsWith('/') || path.split('/').some(part => part === '' || part === '.' || part === '..')) {
26
+ throw new ControlPlaneCliError('SOURCE_BOUNDARY', 'source context path escapes the plugin tree');
27
+ }
28
+ }
29
+ function parseTree(value, root) {
30
+ const entries = new Map();
31
+ for (const record of value.split('\0').filter(Boolean)) {
32
+ const match = /^(\d+) ([a-z]+) ([a-f0-9]{40}) +([0-9]+|-)\t(.+)$/u.exec(record);
33
+ if (!match || !match[5].startsWith(`${root}/`))
34
+ throw new ControlPlaneCliError('SOURCE_BOUNDARY', 'Git tree entry is invalid');
35
+ const path = match[5].slice(root.length + 1);
36
+ assertPath(path);
37
+ if (!OMIT.test(path))
38
+ entries.set(path, { mode: match[1], type: match[2], hash: match[3], bytes: match[4] === '-' ? 0 : Number(match[4]) });
39
+ }
40
+ return entries;
41
+ }
42
+ export async function inspectSourceContext(input) {
43
+ const signal = AbortSignal.any([input.signal, AbortSignal.timeout(15_000)]);
44
+ const check = async () => { signal.throwIfAborted(); await awaitSourceSignal(signal, input.assertCurrent); signal.throwIfAborted(); };
45
+ await check();
46
+ const name = input.name.normalize('NFC').trim();
47
+ if (!NAME.test(name))
48
+ throw new ControlPlaneCliError('INVALID_ARGUMENT', 'plugin name is invalid');
49
+ assertPluginModificationAllowed(name);
50
+ if (input.paths.length > MAX_READ_FILES || input.paths.length !== new Set(input.paths).size)
51
+ throw new ControlPlaneCliError('INVALID_ARGUMENT', 'too many or duplicate source context paths');
52
+ for (const path of input.paths)
53
+ assertPath(path);
54
+ const repository = await realpath(resolve(input.repository));
55
+ if (repository !== resolve(input.repository))
56
+ throw new ControlPlaneCliError('SOURCE_BOUNDARY', 'repository path must be canonical');
57
+ const top = (await runLocalCommand('git', ['rev-parse', '--show-toplevel'], repository, input.environment, { capture: true, timeoutMs: 15_000, signal })).trim();
58
+ if (top !== repository)
59
+ throw new ControlPlaneCliError('SOURCE_BOUNDARY', 'repository must be the canonical Git top-level');
60
+ const head = (await runLocalCommand('git', ['rev-parse', 'HEAD'], repository, input.environment, { capture: true, timeoutMs: 15_000, signal })).trim();
61
+ if (!/^[a-f0-9]{40}$/u.test(head) || (input.baseCommit !== undefined && input.baseCommit !== head)) {
62
+ throw new ControlPlaneCliError('SOURCE_BOUNDARY', 'source context base commit is stale or invalid');
63
+ }
64
+ await check();
65
+ const root = `plugins/${name}`;
66
+ const listed = await runLocalCommand('git', ['--literal-pathspecs', 'ls-tree', '-r', '-l', '-z', head, '--', root], repository, input.environment, { capture: true, maximumOutput: 1_048_576, timeoutMs: 15_000, signal });
67
+ const tree = parseTree(listed, root);
68
+ if (tree.size === 0 || tree.size > MAX_FILES)
69
+ throw new ControlPlaneCliError('SOURCE_BOUNDARY', 'plugin source manifest is unavailable or exceeds its bound');
70
+ const files = [...tree.entries()].filter(([path, entry]) => entry.type === 'blob' && (entry.mode === '100644' || entry.mode === '100755') && TEXT.test(path))
71
+ .map(([path, entry]) => ({ path, bytes: entry.bytes, hash: entry.hash })).sort((a, b) => a.path.localeCompare(b.path));
72
+ const requested = input.paths.length === 0 ? [] : input.paths;
73
+ let total = 0;
74
+ const contents = [];
75
+ for (const path of requested) {
76
+ const entry = tree.get(path);
77
+ if (!entry || entry.type !== 'blob' || (entry.mode !== '100644' && entry.mode !== '100755') || !TEXT.test(path))
78
+ throw new ControlPlaneCliError('SOURCE_BOUNDARY', `requested source path is unavailable: ${JSON.stringify(path)}`);
79
+ if (entry.bytes > MAX_FILE_BYTES || total + entry.bytes > MAX_TOTAL_BYTES)
80
+ throw new ControlPlaneCliError('SOURCE_BOUNDARY', 'requested source content exceeds its bound');
81
+ await check();
82
+ const raw = await runLocalBuffer('git', ['cat-file', 'blob', entry.hash], repository, input.environment, { maximumOutput: MAX_FILE_BYTES, timeoutMs: 15_000, signal });
83
+ let content;
84
+ try {
85
+ content = new TextDecoder('utf-8', { fatal: true }).decode(raw);
86
+ }
87
+ catch {
88
+ throw new ControlPlaneCliError('SOURCE_BOUNDARY', 'requested source content is not strict UTF-8');
89
+ }
90
+ const bytes = raw.length;
91
+ if (bytes > MAX_FILE_BYTES || raw.includes(0) || (total += bytes) > MAX_TOTAL_BYTES) {
92
+ throw new ControlPlaneCliError('SOURCE_BOUNDARY', 'requested source content is binary or exceeds its bound');
93
+ }
94
+ contents.push(Object.freeze({ path, content }));
95
+ }
96
+ await check();
97
+ return Object.freeze({ name, baseCommit: head, files: Object.freeze(files.map(({ path, bytes }) => Object.freeze({ path, bytes }))), contents: Object.freeze(contents) });
98
+ }
99
+ //# sourceMappingURL=source-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-context.js","sourceRoot":"","sources":["../src/source-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ import type { SourceBuildConfig } from './source-build.js';
2
+ import type { ScopedPluginFile } from './source-workspace.js';
3
+ /** Owner-configured authority for background checks, separate from an Agent wake. */
4
+ export interface SourceJobsConfig {
5
+ authorityId: string;
6
+ expiresAt: number;
7
+ maxSubmissions: number;
8
+ repository: string;
9
+ ownerRouteId: string;
10
+ principalId: string;
11
+ workspace: string;
12
+ preset: string;
13
+ budgetId: string;
14
+ budgetAmount: number;
15
+ }
16
+ /** Structural Delivery v2 receipt; no runtime dependency on the optional peer. */
17
+ export interface SourceJobOwnerReceipt {
18
+ receiptVersion: 2;
19
+ authorityId: string;
20
+ authorityHash: string;
21
+ principalId: string;
22
+ principalRecordId: string;
23
+ principalVersion: number;
24
+ workspace: string;
25
+ agentPreset: string;
26
+ bindingVersion: number;
27
+ generation: number;
28
+ }
29
+ export interface SourceJobAuthority {
30
+ id: string;
31
+ digest: string;
32
+ expiresAt: number;
33
+ maxSubmissions: number;
34
+ }
35
+ /** Private immutable payload. Never return files, paths or receipts to model tools. */
36
+ export interface SourceJobIntent {
37
+ authority: SourceJobAuthority;
38
+ owner: SourceJobOwnerReceipt;
39
+ ownerDigest: string;
40
+ trustDigest: string;
41
+ repository: string;
42
+ name: string;
43
+ gapId: string;
44
+ gapRevision: number;
45
+ gapDigest: string;
46
+ baseCommit: string;
47
+ files: readonly ScopedPluginFile[];
48
+ ttlMs: number;
49
+ build: SourceBuildConfig;
50
+ worktree: string;
51
+ containerName: string;
52
+ }
53
+ export type SourceJobStatus = 'queued' | 'running' | 'prepared' | 'failed' | 'unknown';
54
+ export interface SourceJobRecord {
55
+ id: string;
56
+ automationId: string;
57
+ idempotencyKey: string;
58
+ intent: SourceJobIntent;
59
+ intentDigest: string;
60
+ status: SourceJobStatus;
61
+ revision: number;
62
+ createdAt: number;
63
+ expiresAt: number;
64
+ updatedAt: number;
65
+ definitionHash?: string;
66
+ occurrenceId?: string;
67
+ planId?: string;
68
+ failureCode?: string;
69
+ }
70
+ export interface SourceJobCompletion {
71
+ jobId: string;
72
+ jobRevision: number;
73
+ occurrenceId: string;
74
+ }
75
+ /** Content-free projection, scoped by the current owner before returning it. */
76
+ export interface SourceJobProjection {
77
+ id: string;
78
+ name: string;
79
+ gapId: string;
80
+ baseCommit: string;
81
+ status: SourceJobStatus;
82
+ createdAt: number;
83
+ expiresAt: number;
84
+ planId?: string;
85
+ failureCode?: string;
86
+ }
87
+ //# sourceMappingURL=source-job-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-job-types.d.ts","sourceRoot":"","sources":["../src/source-job-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=source-job-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-job-types.js","sourceRoot":"","sources":["../src/source-job-types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,113 @@
1
+ import type { AssistantAutomationsService } from '@dsh-enhanced/assistant-automations';
2
+ import { type ControlPlaneStore } from './store.js';
3
+ import { type ScopedPluginFile } from './source-workspace.js';
4
+ import { type SourceBuildConfig } from './source-build.js';
5
+ import { type loadTrustConfig } from './trust.js';
6
+ import type { PluginSourcePlan } from './types.js';
7
+ import type { SourceJobOwnerReceipt, SourceJobProjection, SourceJobRecord, SourceJobsConfig } from './source-job-types.js';
8
+ export declare const SOURCE_JOB_OWNER = "plugin-control-plane-source";
9
+ export interface SourceJobCaller {
10
+ ownerRouteId: string;
11
+ principalId: string;
12
+ principalRecordId: string;
13
+ principalVersion: number;
14
+ workspace: string;
15
+ preset: string;
16
+ }
17
+ export interface EnqueueSourceJobInput {
18
+ gapId: string;
19
+ name: string;
20
+ repository: string;
21
+ files: readonly ScopedPluginFile[];
22
+ idempotencyKey: string;
23
+ expectedBaseCommit: string;
24
+ ttlMs: number;
25
+ owner: SourceJobCaller;
26
+ signal: AbortSignal;
27
+ assertCurrent: () => void | Promise<void>;
28
+ }
29
+ export interface SourceJobPorts {
30
+ automations: Pick<AssistantAutomationsService, 'registerHostExecutor' | 'reconcileSystem' | 'inspectSystemOwnedActivation' | 'inspectSystemOwned'>;
31
+ delivery: {
32
+ validateOwnerRoute(input: {
33
+ authorityId: string;
34
+ principalId: string;
35
+ workspace: string;
36
+ agentPreset: string;
37
+ }): SourceJobOwnerReceipt;
38
+ };
39
+ }
40
+ type Trust = Awaited<ReturnType<typeof loadTrustConfig>>;
41
+ export declare function validateSourceJobsConfig(value: SourceJobsConfig, build?: SourceBuildConfig): void;
42
+ /** Persisted intent + native Automations execution. This class owns no scheduler. */
43
+ export declare class SourceJobRuntime {
44
+ private readonly options;
45
+ private readonly abort;
46
+ private readonly flights;
47
+ private readonly authorityDigest;
48
+ private unregister?;
49
+ private unregisterContinuation?;
50
+ private closing?;
51
+ private active;
52
+ private readonly generation;
53
+ private readonly continuationNonce;
54
+ private readonly continuing;
55
+ private continuationCursor;
56
+ private continuationStatus;
57
+ private continuationTransition;
58
+ constructor(options: {
59
+ config: SourceJobsConfig;
60
+ build: SourceBuildConfig;
61
+ statePath: string;
62
+ store: ControlPlaneStore;
63
+ ports: SourceJobPorts;
64
+ withGapSourceFence?: <T>(gapId: string, owner: SourceJobOwnerReceipt, callback: () => T) => T;
65
+ trust: () => Promise<Trust>;
66
+ approvePrepared?: (job: SourceJobRecord, signal: AbortSignal) => Promise<void>;
67
+ releasePrepared?: (job: SourceJobRecord, signal: AbortSignal) => Promise<void>;
68
+ advanceReleased?: (job: SourceJobRecord, signal: AbortSignal) => Promise<void>;
69
+ releaseTimeoutMs?: number;
70
+ adoptReleased?: (job: SourceJobRecord, signal: AbortSignal, assertCurrent: () => Promise<void>) => Promise<void>;
71
+ adoptionTimeoutMs?: number;
72
+ prepare: (job: SourceJobRecord, signal: AbortSignal, assertCurrent: () => Promise<void>) => Promise<PluginSourcePlan>;
73
+ });
74
+ start(): void;
75
+ private continuePrepared;
76
+ private continuePreparedLocked;
77
+ available(): boolean;
78
+ close(): Promise<void>;
79
+ private track;
80
+ private receipt;
81
+ private assertCaller;
82
+ private withGapSource;
83
+ private assertOwner;
84
+ enqueue(input: EnqueueSourceJobInput): Promise<SourceJobProjection>;
85
+ private enqueueOwned;
86
+ inspect(input: {
87
+ id: string;
88
+ owner: SourceJobCaller;
89
+ }): SourceJobProjection;
90
+ /** Native runner admission can fail before our executor is invoked. */
91
+ private refreshQueued;
92
+ private definition;
93
+ private schedule;
94
+ private hasContinuations;
95
+ private continuationJobs;
96
+ /** Admission reads durable state and validates the current owner; it never invokes continuation approval or release hooks. */
97
+ private eligibleContinuation;
98
+ private continuationTimeoutMs;
99
+ private continuationSignalTimeoutMs;
100
+ private continuationDefinition;
101
+ /** Reconciliation only changes native activation; it never calls an authority. */
102
+ private reconcileContinuations;
103
+ private executeContinuations;
104
+ private scheduleOrFail;
105
+ private execute;
106
+ /** Explicit Host action. Unknown keeps its capacity until exact cleanup succeeds. */
107
+ reconcileUnknown(input: {
108
+ id: string;
109
+ owner: SourceJobCaller;
110
+ }): Promise<SourceJobProjection>;
111
+ }
112
+ export {};
113
+ //# sourceMappingURL=source-jobs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"source-jobs.d.ts","sourceRoot":"","sources":["../src/source-jobs.ts"],"names":[],"mappings":"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"}