@kelloggt/dsh-program-agents 0.0.0-stage → 0.1.0

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 (222) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +113 -2
  3. package/cordis.patch.yml +5 -0
  4. package/dist/app/agents.d.ts +50 -0
  5. package/dist/app/agents.js +70 -0
  6. package/dist/app/agents.js.map +1 -0
  7. package/dist/app/conversations.d.ts +8 -0
  8. package/dist/app/conversations.js +26 -0
  9. package/dist/app/conversations.js.map +1 -0
  10. package/dist/app/endpoints.d.ts +36 -0
  11. package/dist/app/endpoints.js +162 -0
  12. package/dist/app/endpoints.js.map +1 -0
  13. package/dist/app/inbox.d.ts +61 -0
  14. package/dist/app/inbox.js +253 -0
  15. package/dist/app/inbox.js.map +1 -0
  16. package/dist/app/index.d.ts +70 -0
  17. package/dist/app/index.js +147 -0
  18. package/dist/app/index.js.map +1 -0
  19. package/dist/app/mailbox.d.ts +63 -0
  20. package/dist/app/mailbox.js +173 -0
  21. package/dist/app/mailbox.js.map +1 -0
  22. package/dist/app/models.d.ts +32 -0
  23. package/dist/app/models.js +13 -0
  24. package/dist/app/models.js.map +1 -0
  25. package/dist/app/server.d.ts +36 -0
  26. package/dist/app/server.js +233 -0
  27. package/dist/app/server.js.map +1 -0
  28. package/dist/app/stream-server.d.ts +9 -0
  29. package/dist/app/stream-server.js +77 -0
  30. package/dist/app/stream-server.js.map +1 -0
  31. package/dist/app/stream.d.ts +4 -0
  32. package/dist/app/stream.js +93 -0
  33. package/dist/app/stream.js.map +1 -0
  34. package/dist/app/tools.d.ts +16 -0
  35. package/dist/app/tools.js +24 -0
  36. package/dist/app/tools.js.map +1 -0
  37. package/dist/client/controller.d.ts +21 -0
  38. package/dist/client/controller.js +140 -0
  39. package/dist/client/controller.js.map +1 -0
  40. package/dist/client/index.d.ts +22 -0
  41. package/dist/client/index.js +14 -0
  42. package/dist/client/index.js.map +1 -0
  43. package/dist/client/model.d.ts +66 -0
  44. package/dist/client/model.js +147 -0
  45. package/dist/client/model.js.map +1 -0
  46. package/dist/client/models.d.ts +11 -0
  47. package/dist/client/models.js +27 -0
  48. package/dist/client/models.js.map +1 -0
  49. package/dist/client/transport.d.ts +64 -0
  50. package/dist/client/transport.js +141 -0
  51. package/dist/client/transport.js.map +1 -0
  52. package/dist/client/view.d.ts +19 -0
  53. package/dist/client/view.js +69 -0
  54. package/dist/client/view.js.map +1 -0
  55. package/dist/client.js +673 -0
  56. package/dist/conversations.d.ts +92 -0
  57. package/dist/conversations.js +6 -0
  58. package/dist/conversations.js.map +1 -0
  59. package/dist/endpoints.d.ts +48 -0
  60. package/dist/endpoints.js +43 -0
  61. package/dist/endpoints.js.map +1 -0
  62. package/dist/examples/dashboard.js +42 -0
  63. package/dist/examples/dynamic-server.js +27 -0
  64. package/dist/examples/inbox-worker.js +22 -0
  65. package/dist/examples/model-slots.js +19 -0
  66. package/dist/examples/standalone-supervisor.js +20 -0
  67. package/dist/host/adapter.d.ts +195 -0
  68. package/dist/host/adapter.js +630 -0
  69. package/dist/host/adapter.js.map +1 -0
  70. package/dist/host/agents.d.ts +35 -0
  71. package/dist/host/agents.js +222 -0
  72. package/dist/host/agents.js.map +1 -0
  73. package/dist/host/audit.d.ts +14 -0
  74. package/dist/host/audit.js +39 -0
  75. package/dist/host/audit.js.map +1 -0
  76. package/dist/host/catalog.d.ts +53 -0
  77. package/dist/host/catalog.js +116 -0
  78. package/dist/host/catalog.js.map +1 -0
  79. package/dist/host/contracts.d.ts +38 -0
  80. package/dist/host/contracts.js +2 -0
  81. package/dist/host/contracts.js.map +1 -0
  82. package/dist/host/conversations.d.ts +41 -0
  83. package/dist/host/conversations.js +324 -0
  84. package/dist/host/conversations.js.map +1 -0
  85. package/dist/host/events.d.ts +12 -0
  86. package/dist/host/events.js +106 -0
  87. package/dist/host/events.js.map +1 -0
  88. package/dist/host/http.d.ts +14 -0
  89. package/dist/host/http.js +30 -0
  90. package/dist/host/http.js.map +1 -0
  91. package/dist/host/index.d.ts +23 -0
  92. package/dist/host/index.js +84 -0
  93. package/dist/host/index.js.map +1 -0
  94. package/dist/host/installed-v10.js +19797 -0
  95. package/dist/host/installed-v11.js +19797 -0
  96. package/dist/host/installed-v12.js +19797 -0
  97. package/dist/host/installed-v13.js +19797 -0
  98. package/dist/host/installed-v2.js +19797 -0
  99. package/dist/host/installed-v3.js +19797 -0
  100. package/dist/host/installed-v4.js +19797 -0
  101. package/dist/host/installed-v5.js +19797 -0
  102. package/dist/host/installed-v6.js +19797 -0
  103. package/dist/host/installed-v7.js +19797 -0
  104. package/dist/host/installed-v8.js +19797 -0
  105. package/dist/host/installed-v9.js +19797 -0
  106. package/dist/host/mcp.d.ts +11 -0
  107. package/dist/host/mcp.js +42 -0
  108. package/dist/host/mcp.js.map +1 -0
  109. package/dist/host/models.d.ts +37 -0
  110. package/dist/host/models.js +141 -0
  111. package/dist/host/models.js.map +1 -0
  112. package/dist/host/operations.d.ts +22 -0
  113. package/dist/host/operations.js +72 -0
  114. package/dist/host/operations.js.map +1 -0
  115. package/dist/host/plugin.js +19797 -0
  116. package/dist/host/policies.d.ts +36 -0
  117. package/dist/host/policies.js +73 -0
  118. package/dist/host/policies.js.map +1 -0
  119. package/dist/host/requests.d.ts +57 -0
  120. package/dist/host/requests.js +353 -0
  121. package/dist/host/requests.js.map +1 -0
  122. package/dist/host/tool-client.d.ts +19 -0
  123. package/dist/host/tool-client.js +62 -0
  124. package/dist/host/tool-client.js.map +1 -0
  125. package/dist/host/validation.d.ts +5 -0
  126. package/dist/host/validation.js +42 -0
  127. package/dist/host/validation.js.map +1 -0
  128. package/dist/mcp.d.ts +7 -0
  129. package/dist/mcp.js +2 -0
  130. package/dist/mcp.js.map +1 -0
  131. package/dist/models.d.ts +34 -0
  132. package/dist/models.js +53 -0
  133. package/dist/models.js.map +1 -0
  134. package/dist/monitoring/error-buffer.d.ts +89 -0
  135. package/dist/monitoring/error-buffer.js +355 -0
  136. package/dist/monitoring/error-buffer.js.map +1 -0
  137. package/dist/monitoring/fatal.d.ts +6 -0
  138. package/dist/monitoring/fatal.js +32 -0
  139. package/dist/monitoring/fatal.js.map +1 -0
  140. package/dist/monitoring/index.d.ts +7 -0
  141. package/dist/monitoring/index.js +8 -0
  142. package/dist/monitoring/index.js.map +1 -0
  143. package/dist/monitoring/logger.d.ts +45 -0
  144. package/dist/monitoring/logger.js +174 -0
  145. package/dist/monitoring/logger.js.map +1 -0
  146. package/dist/monitoring/schemas.d.ts +34 -0
  147. package/dist/monitoring/schemas.js +132 -0
  148. package/dist/monitoring/schemas.js.map +1 -0
  149. package/dist/monitoring/standard.d.ts +51 -0
  150. package/dist/monitoring/standard.js +140 -0
  151. package/dist/monitoring/standard.js.map +1 -0
  152. package/dist/monitoring/tailer.d.ts +41 -0
  153. package/dist/monitoring/tailer.js +210 -0
  154. package/dist/monitoring/tailer.js.map +1 -0
  155. package/dist/requests.d.ts +92 -0
  156. package/dist/requests.js +120 -0
  157. package/dist/requests.js.map +1 -0
  158. package/dist/runtime/bootstrap.d.ts +1 -0
  159. package/dist/runtime/bootstrap.js +25 -0
  160. package/dist/runtime/bootstrap.js.map +1 -0
  161. package/dist/runtime/definitions.d.ts +7 -0
  162. package/dist/runtime/definitions.js +138 -0
  163. package/dist/runtime/definitions.js.map +1 -0
  164. package/dist/runtime/index.d.ts +4 -0
  165. package/dist/runtime/index.js +4 -0
  166. package/dist/runtime/index.js.map +1 -0
  167. package/dist/runtime/log-file.d.ts +24 -0
  168. package/dist/runtime/log-file.js +124 -0
  169. package/dist/runtime/log-file.js.map +1 -0
  170. package/dist/runtime/protocol.d.ts +60 -0
  171. package/dist/runtime/protocol.js +155 -0
  172. package/dist/runtime/protocol.js.map +1 -0
  173. package/dist/runtime/registry.d.ts +8 -0
  174. package/dist/runtime/registry.js +38 -0
  175. package/dist/runtime/registry.js.map +1 -0
  176. package/dist/runtime/supervisor.d.ts +74 -0
  177. package/dist/runtime/supervisor.js +881 -0
  178. package/dist/runtime/supervisor.js.map +1 -0
  179. package/dist/sdk/connection.d.ts +33 -0
  180. package/dist/sdk/connection.js +265 -0
  181. package/dist/sdk/connection.js.map +1 -0
  182. package/dist/sdk/index.d.ts +8 -0
  183. package/dist/sdk/index.js +2 -0
  184. package/dist/sdk/index.js.map +1 -0
  185. package/dist/supervision.d.ts +22 -0
  186. package/dist/supervision.js +32 -0
  187. package/dist/supervision.js.map +1 -0
  188. package/dist/types.d.ts +170 -0
  189. package/dist/types.js +2 -0
  190. package/dist/types.js.map +1 -0
  191. package/docs/installation.md +35 -0
  192. package/docs/log-format.md +102 -0
  193. package/docs/publishing.md +45 -0
  194. package/docs/supervision.md +73 -0
  195. package/examples/dashboard.ts +31 -0
  196. package/examples/dsh-web-local.patch.yml +15 -0
  197. package/examples/dynamic-server.ts +13 -0
  198. package/examples/inbox-worker.ts +17 -0
  199. package/examples/model-slots.ts +12 -0
  200. package/examples/standalone-supervisor.ts +14 -0
  201. package/examples/watch-server.ts +12 -0
  202. package/package.json +131 -3
  203. package/schemas/dsh.http.request.v1.schema.json +14 -0
  204. package/schemas/dsh.program.error-batch.v1.schema.json +24 -0
  205. package/schemas/dsh.program.error.v1.schema.json +8 -0
  206. package/schemas/standard-log-record.v1.schema.json +26 -0
  207. package/skills/program-agents/SKILL.md +124 -0
  208. package/skills/program-agents/chat-sidebar.md +23 -0
  209. package/skills/program-agents/endpoints.md +92 -0
  210. package/skills/program-agents/inboxes.md +120 -0
  211. package/skills/program-agents/log-format.md +102 -0
  212. package/skills/program-agents/models.md +59 -0
  213. package/skills/program-agents/references/chat-sidebar/AgentSidebar.tsx +181 -0
  214. package/skills/program-agents/references/chat-sidebar/README.md +181 -0
  215. package/skills/program-agents/references/chat-sidebar/agent-sidebar.css +37 -0
  216. package/skills/program-agents/references/chat-sidebar/backend.ts +184 -0
  217. package/skills/program-agents/references/chat-sidebar/protocol.ts +214 -0
  218. package/skills/program-agents/schemas/dsh.http.request.v1.schema.json +14 -0
  219. package/skills/program-agents/schemas/dsh.program.error-batch.v1.schema.json +24 -0
  220. package/skills/program-agents/schemas/dsh.program.error.v1.schema.json +8 -0
  221. package/skills/program-agents/schemas/standard-log-record.v1.schema.json +26 -0
  222. package/skills/program-agents/ui-patterns.md +39 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/runtime/definitions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { ProgramSupervisor } from './supervisor.js';
2
+ export { CapabilityRegistry } from './registry.js';
3
+ export { ProgramError, RUNTIME_LIMITS } from './protocol.js';
4
+ export type * from '../types.js';
@@ -0,0 +1,4 @@
1
+ export { ProgramSupervisor } from './supervisor.js';
2
+ export { CapabilityRegistry } from './registry.js';
3
+ export { ProgramError, RUNTIME_LIMITS } from './protocol.js';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,24 @@
1
+ /** Readable rolling capture, never a ring-encoded file or a whole-file rewrite.
2
+ * Slow storage drops queued chunks (with a marker) rather than blocking pipes or
3
+ * growing memory. On rollover the same file starts a new bounded tail segment.
4
+ */
5
+ export declare class BoundedRunLog {
6
+ private readonly onError;
7
+ readonly path: string;
8
+ private readonly fd;
9
+ private readonly pending;
10
+ private pendingBytes;
11
+ private position;
12
+ private droppedBytes;
13
+ private busy;
14
+ private closing;
15
+ private closed;
16
+ private done?;
17
+ private complete?;
18
+ constructor(directory: string, filename: string, onError: (error: Error) => void);
19
+ append(input: Buffer): void;
20
+ close(): Promise<void>;
21
+ private pump;
22
+ private writeBuffer;
23
+ private failed;
24
+ }
@@ -0,0 +1,124 @@
1
+ import { close, constants, ftruncate, mkdirSync, openSync, write } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { RUNTIME_LIMITS } from './protocol.js';
4
+ /** Readable rolling capture, never a ring-encoded file or a whole-file rewrite.
5
+ * Slow storage drops queued chunks (with a marker) rather than blocking pipes or
6
+ * growing memory. On rollover the same file starts a new bounded tail segment.
7
+ */
8
+ export class BoundedRunLog {
9
+ onError;
10
+ path;
11
+ fd;
12
+ pending = [];
13
+ pendingBytes = 0;
14
+ position = 0;
15
+ droppedBytes = 0;
16
+ busy = false;
17
+ closing = false;
18
+ closed = false;
19
+ done;
20
+ complete;
21
+ constructor(directory, filename, onError) {
22
+ this.onError = onError;
23
+ mkdirSync(directory, { recursive: true, mode: 0o700 });
24
+ this.path = join(directory, filename);
25
+ this.fd = openSync(this.path, constants.O_CREAT | constants.O_EXCL | constants.O_WRONLY | constants.O_NOFOLLOW, 0o600);
26
+ }
27
+ append(input) {
28
+ if (this.closing || this.closed || !input.length)
29
+ return;
30
+ const maximum = RUNTIME_LIMITS.logPendingBytes;
31
+ if (input.length > maximum) {
32
+ this.droppedBytes += input.length - maximum;
33
+ input = input.subarray(input.length - maximum);
34
+ }
35
+ while (this.pending.length && this.pendingBytes + input.length > maximum) {
36
+ const dropped = this.pending.shift();
37
+ this.pendingBytes -= dropped.length;
38
+ this.droppedBytes += dropped.length;
39
+ }
40
+ // Do not retain arbitrarily large backing buffers supplied by a stream.
41
+ const data = Buffer.from(input);
42
+ this.pending.push(data);
43
+ this.pendingBytes += data.length;
44
+ this.pump();
45
+ }
46
+ close() {
47
+ if (this.done)
48
+ return this.done;
49
+ this.done = new Promise((resolve) => { this.complete = resolve; });
50
+ this.closing = true;
51
+ if (this.closed)
52
+ this.complete();
53
+ else
54
+ this.pump();
55
+ return this.done;
56
+ }
57
+ pump() {
58
+ if (this.busy || this.closed)
59
+ return;
60
+ let data;
61
+ if (this.droppedBytes) {
62
+ data = Buffer.from(`\n[dsh capture dropped ${this.droppedBytes} bytes: storage backpressure]\n`);
63
+ this.droppedBytes = 0;
64
+ }
65
+ else {
66
+ data = this.pending.shift();
67
+ if (data)
68
+ this.pendingBytes -= data.length;
69
+ }
70
+ if (!data) {
71
+ if (this.closing) {
72
+ this.busy = true;
73
+ close(this.fd, (error) => {
74
+ this.busy = false;
75
+ this.closed = true;
76
+ if (error)
77
+ this.onError(error);
78
+ this.complete?.();
79
+ });
80
+ }
81
+ return;
82
+ }
83
+ this.busy = true;
84
+ const output = data;
85
+ if (this.position + output.length > RUNTIME_LIMITS.logFileBytes) {
86
+ const rollover = Buffer.from('\n[dsh capture rolled: older output discarded]\n');
87
+ ftruncate(this.fd, 0, (error) => {
88
+ if (error) {
89
+ this.failed(error);
90
+ return;
91
+ }
92
+ this.position = 0;
93
+ this.writeBuffer(Buffer.concat([rollover, output]));
94
+ });
95
+ }
96
+ else
97
+ this.writeBuffer(output);
98
+ }
99
+ writeBuffer(data, offset = 0) {
100
+ write(this.fd, data, offset, data.length - offset, this.position, (error, count) => {
101
+ if (error || count === 0) {
102
+ this.failed(error ?? new Error('Log capture write made no progress'));
103
+ return;
104
+ }
105
+ this.position += count;
106
+ if (offset + count < data.length)
107
+ this.writeBuffer(data, offset + count);
108
+ else {
109
+ this.busy = false;
110
+ this.pump();
111
+ }
112
+ });
113
+ }
114
+ failed(error) {
115
+ this.pending.length = 0;
116
+ this.pendingBytes = 0;
117
+ this.droppedBytes = 0;
118
+ this.closing = true;
119
+ this.busy = false;
120
+ this.onError(error);
121
+ this.pump();
122
+ }
123
+ }
124
+ //# sourceMappingURL=log-file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-file.js","sourceRoot":"","sources":["../../src/runtime/log-file.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,60 @@
1
+ import type { Serializable } from 'node:child_process';
2
+ import type { JsonValue } from '../types.js';
3
+ /** Fixed hard ceilings apply independently to each process/generation. */
4
+ export declare const RUNTIME_LIMITS: Readonly<{
5
+ ipcBytes: number;
6
+ jsonDepth: 32;
7
+ jsonNodes: 10000;
8
+ pendingCalls: 32;
9
+ queuedSends: 64;
10
+ inbox: 64;
11
+ logs: 200;
12
+ logBytes: number;
13
+ logEntryBytes: 4096;
14
+ logFileBytes: number;
15
+ logPendingBytes: number;
16
+ definitions: 256;
17
+ messages: 100;
18
+ resources: 32;
19
+ parentMessagesPerSecond: 10;
20
+ protocolMessagesPerSecond: 256;
21
+ statusLength: 1024;
22
+ labelLength: 256;
23
+ }>;
24
+ export declare class ProgramError extends Error {
25
+ readonly code: string;
26
+ constructor(code: string, message: string);
27
+ }
28
+ export declare function isRecord(value: unknown): value is Record<string, unknown>;
29
+ export declare function assertJson(value: unknown): asserts value is JsonValue;
30
+ export declare function jsonClone<T>(value: T): T;
31
+ export declare function safeError(error: unknown): string;
32
+ export declare function validName(value: unknown): value is string;
33
+ export interface Identity {
34
+ runId: string;
35
+ generation: number;
36
+ token: string;
37
+ }
38
+ export interface Envelope extends Identity {
39
+ v: 1;
40
+ type: string;
41
+ [key: string]: JsonValue;
42
+ }
43
+ export declare function envelope(identity: Identity, type: string, fields?: Record<string, JsonValue>): Envelope;
44
+ /** Named methods have exact boundaries, not arbitrary extra identity/authority fields. */
45
+ export declare function exactKeys(value: Record<string, unknown>, required: readonly string[], optional?: readonly string[]): boolean;
46
+ export declare function matches(message: Record<string, unknown>, identity: Identity): boolean;
47
+ /** An IPC write stays counted until Node's callback; never queue an unbounded backlog. */
48
+ export declare class SendQueue {
49
+ private readonly transport;
50
+ private pending;
51
+ private closed;
52
+ private readonly rejects;
53
+ constructor(transport: {
54
+ connected?: boolean;
55
+ send?: (message: Serializable, callback: (error: Error | null) => void) => boolean;
56
+ });
57
+ assertWritable(): void;
58
+ send(message: JsonValue | Envelope): Promise<void>;
59
+ close(reason?: string): void;
60
+ }
@@ -0,0 +1,155 @@
1
+ /** Fixed hard ceilings apply independently to each process/generation. */
2
+ export const RUNTIME_LIMITS = Object.freeze({
3
+ ipcBytes: 64 * 1024,
4
+ jsonDepth: 32,
5
+ jsonNodes: 10_000,
6
+ pendingCalls: 32,
7
+ queuedSends: 64,
8
+ inbox: 64,
9
+ logs: 200,
10
+ logBytes: 128 * 1024,
11
+ logEntryBytes: 4096,
12
+ logFileBytes: 16 * 1024 * 1024,
13
+ logPendingBytes: 256 * 1024,
14
+ definitions: 256,
15
+ messages: 100,
16
+ resources: 32,
17
+ parentMessagesPerSecond: 10,
18
+ protocolMessagesPerSecond: 256,
19
+ statusLength: 1024,
20
+ labelLength: 256,
21
+ });
22
+ export class ProgramError extends Error {
23
+ code;
24
+ constructor(code, message) {
25
+ super(message);
26
+ this.code = code;
27
+ this.name = 'ProgramError';
28
+ }
29
+ }
30
+ export function isRecord(value) {
31
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
32
+ }
33
+ export function assertJson(value) {
34
+ let nodes = 0;
35
+ const seen = new Set();
36
+ const visit = (item, depth) => {
37
+ if (++nodes > RUNTIME_LIMITS.jsonNodes || depth > RUNTIME_LIMITS.jsonDepth) {
38
+ throw new ProgramError('LIMIT', 'JSON complexity limit exceeded');
39
+ }
40
+ if (item === null || typeof item === 'boolean' || typeof item === 'string')
41
+ return;
42
+ if (typeof item === 'number' && Number.isFinite(item))
43
+ return;
44
+ if (typeof item !== 'object' || item === null || seen.has(item)) {
45
+ throw new ProgramError('INVALID_JSON', 'Expected finite, acyclic JSON data');
46
+ }
47
+ if (!Array.isArray(item) && Object.getPrototypeOf(item) !== Object.prototype && Object.getPrototypeOf(item) !== null) {
48
+ throw new ProgramError('INVALID_JSON', 'Expected plain JSON objects');
49
+ }
50
+ seen.add(item);
51
+ if (Array.isArray(item)) {
52
+ for (let i = 0; i < item.length; i++) {
53
+ if (!(i in item))
54
+ throw new ProgramError('INVALID_JSON', 'Sparse arrays are not JSON');
55
+ visit(item[i], depth + 1);
56
+ }
57
+ }
58
+ else {
59
+ for (const key of Object.keys(item)) {
60
+ const descriptor = Object.getOwnPropertyDescriptor(item, key);
61
+ if (!('value' in descriptor))
62
+ throw new ProgramError('INVALID_JSON', 'JSON accessors are not supported');
63
+ visit(descriptor.value, depth + 1);
64
+ }
65
+ }
66
+ seen.delete(item);
67
+ };
68
+ visit(value, 0);
69
+ if (Buffer.byteLength(JSON.stringify(value), 'utf8') > RUNTIME_LIMITS.ipcBytes) {
70
+ throw new ProgramError('LIMIT', 'JSON byte limit exceeded');
71
+ }
72
+ }
73
+ export function jsonClone(value) {
74
+ return JSON.parse(JSON.stringify(value));
75
+ }
76
+ export function safeError(error) {
77
+ let message;
78
+ try {
79
+ message = error instanceof Error ? error.message : String(error);
80
+ }
81
+ catch {
82
+ message = 'Unknown error';
83
+ }
84
+ return message.slice(0, RUNTIME_LIMITS.statusLength);
85
+ }
86
+ export function validName(value) {
87
+ return typeof value === 'string' && /^[a-zA-Z][a-zA-Z0-9_.:-]{0,127}$/.test(value);
88
+ }
89
+ export function envelope(identity, type, fields = {}) {
90
+ const value = { ...fields, ...identity, v: 1, type };
91
+ assertJson(value);
92
+ return value;
93
+ }
94
+ /** Named methods have exact boundaries, not arbitrary extra identity/authority fields. */
95
+ export function exactKeys(value, required, optional = []) {
96
+ const allowed = new Set([...required, ...optional]);
97
+ return required.every((key) => Object.hasOwn(value, key)) && Object.keys(value).every((key) => allowed.has(key));
98
+ }
99
+ export function matches(message, identity) {
100
+ return message.v === 1 && message.runId === identity.runId && message.generation === identity.generation && message.token === identity.token;
101
+ }
102
+ /** An IPC write stays counted until Node's callback; never queue an unbounded backlog. */
103
+ export class SendQueue {
104
+ transport;
105
+ pending = 0;
106
+ closed = false;
107
+ rejects = new Set();
108
+ constructor(transport) {
109
+ this.transport = transport;
110
+ }
111
+ assertWritable() {
112
+ if (this.closed || !this.transport.connected || !this.transport.send)
113
+ throw new ProgramError('DISCONNECTED', 'Program IPC is closed');
114
+ if (this.pending >= RUNTIME_LIMITS.queuedSends)
115
+ throw new ProgramError('BACKPRESSURE', 'Program IPC send queue is full');
116
+ }
117
+ send(message) {
118
+ try {
119
+ this.assertWritable();
120
+ assertJson(message);
121
+ }
122
+ catch (error) {
123
+ return Promise.reject(error);
124
+ }
125
+ this.pending++;
126
+ return new Promise((resolve, reject) => {
127
+ let done = false;
128
+ const finish = (error) => {
129
+ if (done)
130
+ return;
131
+ done = true;
132
+ this.pending--;
133
+ this.rejects.delete(cancel);
134
+ if (error)
135
+ reject(error);
136
+ else
137
+ resolve();
138
+ };
139
+ const cancel = (error) => finish(error);
140
+ this.rejects.add(cancel);
141
+ try {
142
+ this.transport.send(message, finish);
143
+ }
144
+ catch (error) {
145
+ finish(error instanceof Error ? error : new Error(safeError(error)));
146
+ }
147
+ });
148
+ }
149
+ close(reason = 'Program IPC is closed') {
150
+ this.closed = true;
151
+ for (const reject of this.rejects)
152
+ reject(new ProgramError('DISCONNECTED', reason));
153
+ }
154
+ }
155
+ //# sourceMappingURL=protocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/runtime/protocol.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { CapabilityDefinition, CapabilityMetadata } from '../types.js';
2
+ /** Host-owned capability handlers; children only ever see allowlisted metadata. */
3
+ export declare class CapabilityRegistry {
4
+ private readonly entries;
5
+ register(definition: CapabilityDefinition): () => void;
6
+ list(): CapabilityMetadata[];
7
+ get(name: string): CapabilityDefinition | undefined;
8
+ }
@@ -0,0 +1,38 @@
1
+ import { assertJson, jsonClone, ProgramError, validName } from './protocol.js';
2
+ /** Host-owned capability handlers; children only ever see allowlisted metadata. */
3
+ export class CapabilityRegistry {
4
+ entries = new Map();
5
+ register(definition) {
6
+ if (!validName(definition.name) || ['parent.send', 'status.set', 'resources.publish', 'resources.unpublish', 'capabilities.list'].includes(definition.name)) {
7
+ throw new ProgramError('INVALID_CAPABILITY', 'Invalid or reserved capability name');
8
+ }
9
+ if (typeof definition.description !== 'string' || definition.description.length > 4096 || typeof definition.handler !== 'function') {
10
+ throw new ProgramError('INVALID_CAPABILITY', 'Capability requires a bounded description and handler');
11
+ }
12
+ if (definition.inputSchema !== undefined)
13
+ assertJson(definition.inputSchema);
14
+ if (this.entries.has(definition.name))
15
+ throw new ProgramError('DUPLICATE_CAPABILITY', `Capability already registered: ${definition.name}`);
16
+ const entry = {
17
+ name: definition.name,
18
+ description: definition.description,
19
+ ...(definition.inputSchema === undefined ? {} : { inputSchema: jsonClone(definition.inputSchema) }),
20
+ handler: definition.handler,
21
+ };
22
+ this.entries.set(entry.name, entry);
23
+ return () => { if (this.entries.get(entry.name) === entry)
24
+ this.entries.delete(entry.name); };
25
+ }
26
+ list() {
27
+ return [...this.entries.values()].map(({ name, description, inputSchema }) => ({
28
+ name,
29
+ description,
30
+ ...(inputSchema === undefined ? {} : { inputSchema: jsonClone(inputSchema) }),
31
+ }));
32
+ }
33
+ get(name) {
34
+ const entry = this.entries.get(name);
35
+ return entry && { ...entry, ...(entry.inputSchema === undefined ? {} : { inputSchema: jsonClone(entry.inputSchema) }) };
36
+ }
37
+ }
38
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/runtime/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAE/E,mFAAmF;AACnF,MAAM,OAAO,kBAAkB;IACZ,OAAO,GAAG,IAAI,GAAG,EAAgC,CAAC;IAEnE,QAAQ,CAAC,UAAgC;QACvC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,mBAAmB,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5J,MAAM,IAAI,YAAY,CAAC,oBAAoB,EAAE,qCAAqC,CAAC,CAAC;QACtF,CAAC;QACD,IAAI,OAAO,UAAU,CAAC,WAAW,KAAK,QAAQ,IAAI,UAAU,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,IAAI,OAAO,UAAU,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;YACnI,MAAM,IAAI,YAAY,CAAC,oBAAoB,EAAE,uDAAuD,CAAC,CAAC;QACxG,CAAC;QACD,IAAI,UAAU,CAAC,WAAW,KAAK,SAAS;YAAE,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC7E,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,YAAY,CAAC,sBAAsB,EAAE,kCAAkC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3I,MAAM,KAAK,GAAyB;YAClC,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,WAAW,EAAE,UAAU,CAAC,WAAW;YACnC,GAAG,CAAC,UAAU,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACnG,OAAO,EAAE,UAAU,CAAC,OAAO;SAC5B,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACpC,OAAO,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK;YAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAChG,CAAC;IAED,IAAI;QACF,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,CAAC;YAC7E,IAAI;YACJ,WAAW;YACX,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;SAC9E,CAAC,CAAC,CAAC;IACN,CAAC;IAED,GAAG,CAAC,IAAY;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,KAAK,IAAI,EAAE,GAAG,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC;IAC1H,CAAC;CACF"}
@@ -0,0 +1,74 @@
1
+ import type { JsonValue, ProgramDefinition, ProgramDescriptor, ProgramEndpointBinding, ProgramSnapshot, ProgramSupervisorOptions, StartProgramOptions } from '../types.js';
2
+ /** Process isolation for trusted programs, not an OS security sandbox. */
3
+ export declare class ProgramSupervisor {
4
+ private readonly options;
5
+ private readonly runs;
6
+ private readonly definitions;
7
+ private readonly capabilities;
8
+ private readonly networking;
9
+ private readonly maxRuns;
10
+ private readonly maxHistory;
11
+ private readonly startupTimeoutMs;
12
+ private readonly stopTimeoutMs;
13
+ private readonly callTimeoutMs;
14
+ private disposed;
15
+ private disposing?;
16
+ private inflightHandlers;
17
+ private readonly revokedOwners;
18
+ private readonly ownerEpochs;
19
+ private logDirectory?;
20
+ constructor(options: ProgramSupervisorOptions);
21
+ /** Register or replace a trusted definition. Existing generations keep their definition. */
22
+ define(program: string, definition: ProgramDefinition): void;
23
+ definitionsList(): ProgramDescriptor[];
24
+ start(request: StartProgramOptions, signal?: AbortSignal): Promise<ProgramSnapshot>;
25
+ list(ownerId?: string): ProgramSnapshot[];
26
+ get(id: string, ownerId?: string): ProgramSnapshot;
27
+ /** Read this live generation's listener requests/reports; does not bind or probe ports. */
28
+ endpointBindings(id: string, ownerId: string): ProgramEndpointBinding[];
29
+ /** The app reports only after its own OS listener succeeds (dynamic requests use port 0). */
30
+ reportEndpoint(id: string, ownerId: string, report: {
31
+ id: string;
32
+ port: number;
33
+ }): ProgramEndpointBinding;
34
+ /** Conditional port fencing prevents an old watch worker revoking its successor. */
35
+ unpublishEndpoint(id: string, ownerId: string, endpointId: string, port?: number): void;
36
+ private endpointRun;
37
+ send(id: string, ownerId: string, body: JsonValue): Promise<void>;
38
+ stop(id: string, ownerId: string): Promise<ProgramSnapshot>;
39
+ restart(id: string, ownerId: string): Promise<ProgramSnapshot>;
40
+ /** Revoke an owner's authority until explicit host reauthorization; fence old operations. */
41
+ revokeOwner(ownerId: string): Promise<void>;
42
+ /** Host-only reauthorization after a replacement owner is independently verified. */
43
+ allowOwner(ownerId: string): void;
44
+ dispose(): Promise<void>;
45
+ private positive;
46
+ private makeRun;
47
+ private launch;
48
+ private ready;
49
+ private attachLog;
50
+ private output;
51
+ private log;
52
+ private onMessage;
53
+ private call;
54
+ private invoke;
55
+ private reply;
56
+ private beginShutdown;
57
+ private revoke;
58
+ private proveClosed;
59
+ private finishClosed;
60
+ private groupExists;
61
+ private signalGroup;
62
+ private recordMessage;
63
+ private changed;
64
+ private protocolFailure;
65
+ private current;
66
+ private live;
67
+ private snapshot;
68
+ private lookup;
69
+ private ownerEpoch;
70
+ private assertOwner;
71
+ private assertAvailable;
72
+ private assertCapacity;
73
+ private prune;
74
+ }