@xenosystem/agent-sdk 0.8.12
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.
- package/LICENSE +15 -0
- package/README.md +511 -0
- package/dist/agents/index.cjs +17 -0
- package/dist/agents/index.d.cts +244 -0
- package/dist/agents/index.d.ts +244 -0
- package/dist/agents/index.js +17 -0
- package/dist/agents/metafile-cjs.json +1 -0
- package/dist/agents/metafile-esm.json +1 -0
- package/dist/artifacts/browser.cjs +1 -0
- package/dist/artifacts/browser.d.cts +8 -0
- package/dist/artifacts/browser.d.ts +8 -0
- package/dist/artifacts/browser.js +1 -0
- package/dist/artifacts/diff-artifact-C2tQZWcs.d.cts +354 -0
- package/dist/artifacts/diff-artifact-C2tQZWcs.d.ts +354 -0
- package/dist/artifacts/index.cjs +10 -0
- package/dist/artifacts/index.d.cts +588 -0
- package/dist/artifacts/index.d.ts +588 -0
- package/dist/artifacts/index.js +10 -0
- package/dist/artifacts/metafile-cjs.json +1 -0
- package/dist/artifacts/metafile-esm.json +1 -0
- package/dist/automation/index.cjs +438 -0
- package/dist/automation/index.d.cts +878 -0
- package/dist/automation/index.d.ts +878 -0
- package/dist/automation/index.js +438 -0
- package/dist/automation/metafile-cjs.json +1 -0
- package/dist/automation/metafile-esm.json +1 -0
- package/dist/control-plane/index.cjs +7 -0
- package/dist/control-plane/index.d.cts +403 -0
- package/dist/control-plane/index.d.ts +403 -0
- package/dist/control-plane/index.js +7 -0
- package/dist/control-plane/metafile-cjs.json +1 -0
- package/dist/control-plane/metafile-esm.json +1 -0
- package/dist/control-room/index.cjs +1 -0
- package/dist/control-room/index.d.cts +216 -0
- package/dist/control-room/index.d.ts +216 -0
- package/dist/control-room/index.js +1 -0
- package/dist/control-room/metafile-cjs.json +1 -0
- package/dist/control-room/metafile-esm.json +1 -0
- package/dist/electron/index.cjs +1476 -0
- package/dist/electron/index.d.cts +1583 -0
- package/dist/electron/index.d.ts +1583 -0
- package/dist/electron/index.js +1476 -0
- package/dist/electron/metafile-cjs.json +1 -0
- package/dist/electron/metafile-esm.json +1 -0
- package/dist/governance/index.cjs +33 -0
- package/dist/governance/index.d.cts +397 -0
- package/dist/governance/index.d.ts +397 -0
- package/dist/governance/index.js +33 -0
- package/dist/governance/metafile-cjs.json +1 -0
- package/dist/governance/metafile-esm.json +1 -0
- package/dist/hooks/index.cjs +9 -0
- package/dist/hooks/index.d.cts +198 -0
- package/dist/hooks/index.d.ts +198 -0
- package/dist/hooks/index.js +9 -0
- package/dist/hooks/metafile-cjs.json +1 -0
- package/dist/hooks/metafile-esm.json +1 -0
- package/dist/hosted/index.cjs +1 -0
- package/dist/hosted/index.d.cts +490 -0
- package/dist/hosted/index.d.ts +490 -0
- package/dist/hosted/index.js +1 -0
- package/dist/hosted/metafile-cjs.json +1 -0
- package/dist/hosted/metafile-esm.json +1 -0
- package/dist/index.cjs +2161 -0
- package/dist/index.d.cts +12259 -0
- package/dist/index.d.ts +12259 -0
- package/dist/index.js +2161 -0
- package/dist/intelligence/index.cjs +10 -0
- package/dist/intelligence/index.d.cts +220 -0
- package/dist/intelligence/index.d.ts +220 -0
- package/dist/intelligence/index.js +10 -0
- package/dist/intelligence/metafile-cjs.json +1 -0
- package/dist/intelligence/metafile-esm.json +1 -0
- package/dist/mcp/index.cjs +28 -0
- package/dist/mcp/index.d.cts +960 -0
- package/dist/mcp/index.d.ts +960 -0
- package/dist/mcp/index.js +28 -0
- package/dist/mcp/metafile-cjs.json +1 -0
- package/dist/mcp/metafile-esm.json +1 -0
- package/dist/metafile-cjs.json +1 -0
- package/dist/metafile-esm.json +1 -0
- package/dist/oracle/index.cjs +1 -0
- package/dist/oracle/index.d.cts +310 -0
- package/dist/oracle/index.d.ts +310 -0
- package/dist/oracle/index.js +1 -0
- package/dist/oracle/metafile-cjs.json +1 -0
- package/dist/oracle/metafile-esm.json +1 -0
- package/dist/providers/index.cjs +11 -0
- package/dist/providers/index.d.cts +462 -0
- package/dist/providers/index.d.ts +462 -0
- package/dist/providers/index.js +11 -0
- package/dist/providers/metafile-cjs.json +1 -0
- package/dist/providers/metafile-esm.json +1 -0
- package/dist/recipes/index.cjs +2 -0
- package/dist/recipes/index.d.cts +86 -0
- package/dist/recipes/index.d.ts +86 -0
- package/dist/recipes/index.js +2 -0
- package/dist/recipes/metafile-cjs.json +1 -0
- package/dist/recipes/metafile-esm.json +1 -0
- package/dist/research/index.cjs +3 -0
- package/dist/research/index.d.cts +285 -0
- package/dist/research/index.d.ts +285 -0
- package/dist/research/index.js +3 -0
- package/dist/research/metafile-cjs.json +1 -0
- package/dist/research/metafile-esm.json +1 -0
- package/dist/session/index.cjs +56 -0
- package/dist/session/index.d.cts +523 -0
- package/dist/session/index.d.ts +523 -0
- package/dist/session/index.js +56 -0
- package/dist/session/metafile-cjs.json +1 -0
- package/dist/session/metafile-esm.json +1 -0
- package/dist/sharing/index.cjs +4 -0
- package/dist/sharing/index.d.cts +272 -0
- package/dist/sharing/index.d.ts +272 -0
- package/dist/sharing/index.js +4 -0
- package/dist/sharing/metafile-cjs.json +1 -0
- package/dist/sharing/metafile-esm.json +1 -0
- package/dist/skills/index.cjs +6 -0
- package/dist/skills/index.d.cts +277 -0
- package/dist/skills/index.d.ts +277 -0
- package/dist/skills/index.js +6 -0
- package/dist/skills/metafile-cjs.json +1 -0
- package/dist/skills/metafile-esm.json +1 -0
- package/dist/soul/index.cjs +32 -0
- package/dist/soul/index.d.cts +138 -0
- package/dist/soul/index.d.ts +138 -0
- package/dist/soul/index.js +32 -0
- package/dist/soul/metafile-cjs.json +1 -0
- package/dist/soul/metafile-esm.json +1 -0
- package/dist/terminal/index.cjs +4 -0
- package/dist/terminal/index.d.cts +55 -0
- package/dist/terminal/index.d.ts +55 -0
- package/dist/terminal/index.js +4 -0
- package/dist/terminal/metafile-cjs.json +1 -0
- package/dist/terminal/metafile-esm.json +1 -0
- package/dist/ui/index.cjs +35 -0
- package/dist/ui/index.d.cts +298 -0
- package/dist/ui/index.d.ts +298 -0
- package/dist/ui/index.js +35 -0
- package/dist/ui/metafile-cjs.json +1 -0
- package/dist/ui/metafile-esm.json +1 -0
- package/dist/utils/index.cjs +23 -0
- package/dist/utils/index.d.cts +245 -0
- package/dist/utils/index.d.ts +245 -0
- package/dist/utils/index.js +23 -0
- package/dist/utils/metafile-cjs.json +1 -0
- package/dist/utils/metafile-esm.json +1 -0
- package/native/mxc/LICENSE.microsoft-mxc-sdk.md +21 -0
- package/native/mxc/README.md +25 -0
- package/native/mxc/bin/arm64/lxc-exec +0 -0
- package/native/mxc/bin/arm64/mxc-exec-mac +0 -0
- package/native/mxc/bin/arm64/wxc-exec.exe +0 -0
- package/native/mxc/bin/arm64/wxc-host-prep.exe +0 -0
- package/native/mxc/bin/x64/lxc-exec +0 -0
- package/native/mxc/bin/x64/wxc-exec.exe +0 -0
- package/native/mxc/bin/x64/wxc-host-prep.exe +0 -0
- package/native/mxc/package.json +58 -0
- package/ownership/CLEAN_ROOM_CONTRIBUTOR_GUIDE.md +63 -0
- package/ownership/audit.mjs +727 -0
- package/ownership/evidence/PROPRIETARY-COMMAND-1/implementation-record.md +77 -0
- package/ownership/evidence/PROPRIETARY-COMMAND-1/provenance-review.md +51 -0
- package/ownership/evidence/PROPRIETARY-MEDIA-1/implementation-record.md +131 -0
- package/ownership/evidence/PROPRIETARY-MEDIA-1/provenance-review.md +50 -0
- package/ownership/evidence/PROPRIETARY-PTY-1/implementation-record.md +86 -0
- package/ownership/evidence/PROPRIETARY-PTY-1/provenance-review.md +52 -0
- package/ownership/evidence/PROPRIETARY-RUNTIME-1/implementation-record.md +68 -0
- package/ownership/evidence/PROPRIETARY-RUNTIME-1/provenance-review.md +32 -0
- package/ownership/evidence/PROPRIETARY-TOOLCHAIN-1/implementation-record.md +53 -0
- package/ownership/evidence/PROPRIETARY-TOOLCHAIN-1/provenance-review.md +32 -0
- package/ownership/evidence/PROPRIETARY-UI-1/implementation-record.md +96 -0
- package/ownership/evidence/PROPRIETARY-UI-1/provenance-review.md +46 -0
- package/ownership/ownership-policy.json +232 -0
- package/ownership/ownership-policy.schema.json +192 -0
- package/ownership/templates/clean-room-implementation-record.md +70 -0
- package/ownership/templates/provenance-review.md +51 -0
- package/package.json +209 -0
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
declare const XENO_CONTROL_ROOM_SCHEMA_VERSION: "xeno.control-room.v1";
|
|
2
|
+
type XenoControlRoomAgentStatus = "queued" | "starting" | "running" | "working" | "idle" | "waiting_for_user" | "waiting_for_tool" | "waiting_for_hook" | "waiting_for_permission" | "blocked" | "paused" | "completed" | "failed" | "cancelled" | "interrupted" | "detached" | "unknown";
|
|
3
|
+
type XenoControlRoomStatusCategory = "queued" | "active" | "waiting" | "blocked" | "terminal";
|
|
4
|
+
interface XenoControlRoomUsage {
|
|
5
|
+
inputTokens: number;
|
|
6
|
+
outputTokens: number;
|
|
7
|
+
totalTokens: number;
|
|
8
|
+
cachedInputTokens?: number;
|
|
9
|
+
estimatedCostUsd?: number;
|
|
10
|
+
}
|
|
11
|
+
interface XenoControlRoomAgentInput {
|
|
12
|
+
agentId: string;
|
|
13
|
+
runId?: string;
|
|
14
|
+
sessionId?: string;
|
|
15
|
+
parentAgentId?: string;
|
|
16
|
+
rootAgentId?: string;
|
|
17
|
+
workspaceId: string;
|
|
18
|
+
teamId?: string;
|
|
19
|
+
name: string;
|
|
20
|
+
title?: string;
|
|
21
|
+
profile?: string;
|
|
22
|
+
model?: string;
|
|
23
|
+
status: XenoControlRoomAgentStatus;
|
|
24
|
+
statusReason?: string;
|
|
25
|
+
currentStep?: string;
|
|
26
|
+
currentTool?: string;
|
|
27
|
+
createdAt: string;
|
|
28
|
+
updatedAt: string;
|
|
29
|
+
lastActivityAt?: string;
|
|
30
|
+
heartbeatAt?: string;
|
|
31
|
+
usage?: Partial<XenoControlRoomUsage>;
|
|
32
|
+
taskIds?: string[];
|
|
33
|
+
artifactIds?: string[];
|
|
34
|
+
allowedActions?: XenoControlRoomActionKind[];
|
|
35
|
+
transcriptRef?: string;
|
|
36
|
+
executionBoundary?: {
|
|
37
|
+
level: string;
|
|
38
|
+
certified: boolean;
|
|
39
|
+
adapter?: string;
|
|
40
|
+
};
|
|
41
|
+
metadata?: Record<string, string | number | boolean>;
|
|
42
|
+
}
|
|
43
|
+
interface XenoControlRoomAgent extends XenoControlRoomAgentInput {
|
|
44
|
+
statusCategory: XenoControlRoomStatusCategory;
|
|
45
|
+
depth: number;
|
|
46
|
+
childAgentIds: string[];
|
|
47
|
+
orphaned: boolean;
|
|
48
|
+
stale: boolean;
|
|
49
|
+
elapsedMs: number;
|
|
50
|
+
allowedActions: XenoControlRoomActionKind[];
|
|
51
|
+
usage: XenoControlRoomUsage;
|
|
52
|
+
}
|
|
53
|
+
interface XenoControlRoomTaskInput {
|
|
54
|
+
taskId: string;
|
|
55
|
+
title: string;
|
|
56
|
+
status: "pending" | "in_progress" | "completed" | "blocked" | "skipped" | "failed";
|
|
57
|
+
ownerAgentId?: string;
|
|
58
|
+
dependencyIds?: string[];
|
|
59
|
+
requirementIds?: string[];
|
|
60
|
+
artifactIds?: string[];
|
|
61
|
+
evidenceCount?: number;
|
|
62
|
+
specId?: string;
|
|
63
|
+
updatedAt: string;
|
|
64
|
+
}
|
|
65
|
+
interface XenoControlRoomTask extends XenoControlRoomTaskInput {
|
|
66
|
+
dependencyIds: string[];
|
|
67
|
+
artifactIds: string[];
|
|
68
|
+
evidenceCount: number;
|
|
69
|
+
orphanedOwner: boolean;
|
|
70
|
+
blockedByTaskIds: string[];
|
|
71
|
+
}
|
|
72
|
+
type XenoControlRoomApprovalKind = "artifact" | "plan" | "permission" | "external_action" | "capability_lease";
|
|
73
|
+
interface XenoControlRoomApprovalInput {
|
|
74
|
+
approvalId: string;
|
|
75
|
+
kind: XenoControlRoomApprovalKind;
|
|
76
|
+
state: "pending" | "approved" | "rejected" | "expired" | "cancelled";
|
|
77
|
+
title: string;
|
|
78
|
+
requestedByAgentId?: string;
|
|
79
|
+
targetId: string;
|
|
80
|
+
runId?: string;
|
|
81
|
+
requestedAt: string;
|
|
82
|
+
expiresAt?: string;
|
|
83
|
+
scope: string;
|
|
84
|
+
summary?: string;
|
|
85
|
+
artifactRevision?: number;
|
|
86
|
+
capabilityLeaseId?: string;
|
|
87
|
+
}
|
|
88
|
+
interface XenoControlRoomArtifactInput {
|
|
89
|
+
artifactId: string;
|
|
90
|
+
revision: number;
|
|
91
|
+
kind: string;
|
|
92
|
+
state: string;
|
|
93
|
+
title: string;
|
|
94
|
+
producerAgentId?: string;
|
|
95
|
+
runId?: string;
|
|
96
|
+
updatedAt: string;
|
|
97
|
+
unresolvedComments?: number;
|
|
98
|
+
}
|
|
99
|
+
interface XenoControlRoomMonitorInput {
|
|
100
|
+
monitorId: string;
|
|
101
|
+
status: "running" | "completed" | "stopped" | "failed";
|
|
102
|
+
label: string;
|
|
103
|
+
runId?: string;
|
|
104
|
+
updatedAt: string;
|
|
105
|
+
summary?: string;
|
|
106
|
+
}
|
|
107
|
+
interface XenoControlRoomGoalInput {
|
|
108
|
+
goalId: string;
|
|
109
|
+
status: "active" | "complete" | "blocked" | "cancelled" | "expired";
|
|
110
|
+
condition: string;
|
|
111
|
+
runId?: string;
|
|
112
|
+
updatedAt: string;
|
|
113
|
+
nextAction?: string;
|
|
114
|
+
}
|
|
115
|
+
interface XenoControlRoomNotificationInput {
|
|
116
|
+
notificationId: string;
|
|
117
|
+
type: string;
|
|
118
|
+
targetAgentId?: string;
|
|
119
|
+
targetRunId?: string;
|
|
120
|
+
createdAt: string;
|
|
121
|
+
acknowledgedAt?: string;
|
|
122
|
+
summary: string;
|
|
123
|
+
}
|
|
124
|
+
interface XenoControlRoomInput {
|
|
125
|
+
agents: XenoControlRoomAgentInput[];
|
|
126
|
+
tasks?: XenoControlRoomTaskInput[];
|
|
127
|
+
approvals?: XenoControlRoomApprovalInput[];
|
|
128
|
+
artifacts?: XenoControlRoomArtifactInput[];
|
|
129
|
+
monitors?: XenoControlRoomMonitorInput[];
|
|
130
|
+
goals?: XenoControlRoomGoalInput[];
|
|
131
|
+
notifications?: XenoControlRoomNotificationInput[];
|
|
132
|
+
}
|
|
133
|
+
type XenoControlRoomAttentionKind = "approval" | "blocked_agent" | "waiting_agent" | "failed_agent" | "stale_agent" | "orphaned_agent" | "blocked_task" | "orphaned_task" | "blocked_goal" | "orphaned_notification";
|
|
134
|
+
interface XenoControlRoomAttentionItem {
|
|
135
|
+
attentionId: string;
|
|
136
|
+
kind: XenoControlRoomAttentionKind;
|
|
137
|
+
priority: "critical" | "high" | "normal";
|
|
138
|
+
targetId: string;
|
|
139
|
+
title: string;
|
|
140
|
+
summary: string;
|
|
141
|
+
createdAt: string;
|
|
142
|
+
actions: XenoControlRoomActionKind[];
|
|
143
|
+
}
|
|
144
|
+
interface XenoControlRoomSummary {
|
|
145
|
+
agents: number;
|
|
146
|
+
activeAgents: number;
|
|
147
|
+
waitingAgents: number;
|
|
148
|
+
blockedAgents: number;
|
|
149
|
+
terminalAgents: number;
|
|
150
|
+
staleAgents: number;
|
|
151
|
+
orphanedAgents: number;
|
|
152
|
+
tasks: number;
|
|
153
|
+
completedTasks: number;
|
|
154
|
+
blockedTasks: number;
|
|
155
|
+
pendingApprovals: number;
|
|
156
|
+
activeMonitors: number;
|
|
157
|
+
activeGoals: number;
|
|
158
|
+
unacknowledgedNotifications: number;
|
|
159
|
+
usage: XenoControlRoomUsage;
|
|
160
|
+
}
|
|
161
|
+
interface XenoControlRoomSnapshot {
|
|
162
|
+
schemaVersion: typeof XENO_CONTROL_ROOM_SCHEMA_VERSION;
|
|
163
|
+
snapshotId: string;
|
|
164
|
+
generatedAt: string;
|
|
165
|
+
staleAfterMs: number;
|
|
166
|
+
sourceFingerprint: string;
|
|
167
|
+
snapshotHash: string;
|
|
168
|
+
agents: XenoControlRoomAgent[];
|
|
169
|
+
rootAgentIds: string[];
|
|
170
|
+
tasks: XenoControlRoomTask[];
|
|
171
|
+
approvals: XenoControlRoomApprovalInput[];
|
|
172
|
+
artifacts: XenoControlRoomArtifactInput[];
|
|
173
|
+
monitors: XenoControlRoomMonitorInput[];
|
|
174
|
+
goals: XenoControlRoomGoalInput[];
|
|
175
|
+
notifications: XenoControlRoomNotificationInput[];
|
|
176
|
+
attention: XenoControlRoomAttentionItem[];
|
|
177
|
+
summary: XenoControlRoomSummary;
|
|
178
|
+
}
|
|
179
|
+
interface XenoControlRoomProjectionOptions {
|
|
180
|
+
snapshotId?: string;
|
|
181
|
+
generatedAt?: string;
|
|
182
|
+
staleAfterMs?: number;
|
|
183
|
+
}
|
|
184
|
+
type XenoControlRoomActionKind = "jump" | "steer" | "follow_up" | "stop" | "retry" | "approve" | "reject" | "acknowledge";
|
|
185
|
+
interface XenoControlRoomActionRequest {
|
|
186
|
+
actionId: string;
|
|
187
|
+
snapshotHash: string;
|
|
188
|
+
kind: XenoControlRoomActionKind;
|
|
189
|
+
targetId: string;
|
|
190
|
+
actorId: string;
|
|
191
|
+
requestedAt: string;
|
|
192
|
+
message?: string;
|
|
193
|
+
reason?: string;
|
|
194
|
+
scope?: string;
|
|
195
|
+
}
|
|
196
|
+
interface XenoControlRoomActionPlan {
|
|
197
|
+
schemaVersion: "xeno.control-room-action.v1";
|
|
198
|
+
actionId: string;
|
|
199
|
+
kind: XenoControlRoomActionKind;
|
|
200
|
+
targetId: string;
|
|
201
|
+
actorId: string;
|
|
202
|
+
requestedAt: string;
|
|
203
|
+
expectedSnapshotHash: string;
|
|
204
|
+
idempotencyKey: string;
|
|
205
|
+
authority: "read" | "agent_message" | "process_control" | "approval_decision" | "notification_ack";
|
|
206
|
+
confirmationRequired: boolean;
|
|
207
|
+
scope: string;
|
|
208
|
+
payload: Record<string, string>;
|
|
209
|
+
}
|
|
210
|
+
declare class XenoControlRoomValidationError extends Error {
|
|
211
|
+
constructor(message: string);
|
|
212
|
+
}
|
|
213
|
+
declare function projectXenoControlRoom(input: XenoControlRoomInput, options?: XenoControlRoomProjectionOptions): XenoControlRoomSnapshot;
|
|
214
|
+
declare function planXenoControlRoomAction(snapshot: XenoControlRoomSnapshot, request: XenoControlRoomActionRequest): XenoControlRoomActionPlan;
|
|
215
|
+
declare function validateXenoControlRoomSnapshot(snapshot: XenoControlRoomSnapshot): XenoControlRoomSnapshot;
|
|
216
|
+
export { XENO_CONTROL_ROOM_SCHEMA_VERSION, type XenoControlRoomActionKind, type XenoControlRoomActionPlan, type XenoControlRoomActionRequest, type XenoControlRoomAgent, type XenoControlRoomAgentInput, type XenoControlRoomAgentStatus, type XenoControlRoomApprovalInput, type XenoControlRoomApprovalKind, type XenoControlRoomArtifactInput, type XenoControlRoomAttentionItem, type XenoControlRoomAttentionKind, type XenoControlRoomGoalInput, type XenoControlRoomInput, type XenoControlRoomMonitorInput, type XenoControlRoomNotificationInput, type XenoControlRoomProjectionOptions, type XenoControlRoomSnapshot, type XenoControlRoomStatusCategory, type XenoControlRoomSummary, type XenoControlRoomTask, type XenoControlRoomTaskInput, type XenoControlRoomUsage, XenoControlRoomValidationError, planXenoControlRoomAction, projectXenoControlRoom, validateXenoControlRoomSnapshot };
|
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
declare const XENO_CONTROL_ROOM_SCHEMA_VERSION: "xeno.control-room.v1";
|
|
2
|
+
type XenoControlRoomAgentStatus = "queued" | "starting" | "running" | "working" | "idle" | "waiting_for_user" | "waiting_for_tool" | "waiting_for_hook" | "waiting_for_permission" | "blocked" | "paused" | "completed" | "failed" | "cancelled" | "interrupted" | "detached" | "unknown";
|
|
3
|
+
type XenoControlRoomStatusCategory = "queued" | "active" | "waiting" | "blocked" | "terminal";
|
|
4
|
+
interface XenoControlRoomUsage {
|
|
5
|
+
inputTokens: number;
|
|
6
|
+
outputTokens: number;
|
|
7
|
+
totalTokens: number;
|
|
8
|
+
cachedInputTokens?: number;
|
|
9
|
+
estimatedCostUsd?: number;
|
|
10
|
+
}
|
|
11
|
+
interface XenoControlRoomAgentInput {
|
|
12
|
+
agentId: string;
|
|
13
|
+
runId?: string;
|
|
14
|
+
sessionId?: string;
|
|
15
|
+
parentAgentId?: string;
|
|
16
|
+
rootAgentId?: string;
|
|
17
|
+
workspaceId: string;
|
|
18
|
+
teamId?: string;
|
|
19
|
+
name: string;
|
|
20
|
+
title?: string;
|
|
21
|
+
profile?: string;
|
|
22
|
+
model?: string;
|
|
23
|
+
status: XenoControlRoomAgentStatus;
|
|
24
|
+
statusReason?: string;
|
|
25
|
+
currentStep?: string;
|
|
26
|
+
currentTool?: string;
|
|
27
|
+
createdAt: string;
|
|
28
|
+
updatedAt: string;
|
|
29
|
+
lastActivityAt?: string;
|
|
30
|
+
heartbeatAt?: string;
|
|
31
|
+
usage?: Partial<XenoControlRoomUsage>;
|
|
32
|
+
taskIds?: string[];
|
|
33
|
+
artifactIds?: string[];
|
|
34
|
+
allowedActions?: XenoControlRoomActionKind[];
|
|
35
|
+
transcriptRef?: string;
|
|
36
|
+
executionBoundary?: {
|
|
37
|
+
level: string;
|
|
38
|
+
certified: boolean;
|
|
39
|
+
adapter?: string;
|
|
40
|
+
};
|
|
41
|
+
metadata?: Record<string, string | number | boolean>;
|
|
42
|
+
}
|
|
43
|
+
interface XenoControlRoomAgent extends XenoControlRoomAgentInput {
|
|
44
|
+
statusCategory: XenoControlRoomStatusCategory;
|
|
45
|
+
depth: number;
|
|
46
|
+
childAgentIds: string[];
|
|
47
|
+
orphaned: boolean;
|
|
48
|
+
stale: boolean;
|
|
49
|
+
elapsedMs: number;
|
|
50
|
+
allowedActions: XenoControlRoomActionKind[];
|
|
51
|
+
usage: XenoControlRoomUsage;
|
|
52
|
+
}
|
|
53
|
+
interface XenoControlRoomTaskInput {
|
|
54
|
+
taskId: string;
|
|
55
|
+
title: string;
|
|
56
|
+
status: "pending" | "in_progress" | "completed" | "blocked" | "skipped" | "failed";
|
|
57
|
+
ownerAgentId?: string;
|
|
58
|
+
dependencyIds?: string[];
|
|
59
|
+
requirementIds?: string[];
|
|
60
|
+
artifactIds?: string[];
|
|
61
|
+
evidenceCount?: number;
|
|
62
|
+
specId?: string;
|
|
63
|
+
updatedAt: string;
|
|
64
|
+
}
|
|
65
|
+
interface XenoControlRoomTask extends XenoControlRoomTaskInput {
|
|
66
|
+
dependencyIds: string[];
|
|
67
|
+
artifactIds: string[];
|
|
68
|
+
evidenceCount: number;
|
|
69
|
+
orphanedOwner: boolean;
|
|
70
|
+
blockedByTaskIds: string[];
|
|
71
|
+
}
|
|
72
|
+
type XenoControlRoomApprovalKind = "artifact" | "plan" | "permission" | "external_action" | "capability_lease";
|
|
73
|
+
interface XenoControlRoomApprovalInput {
|
|
74
|
+
approvalId: string;
|
|
75
|
+
kind: XenoControlRoomApprovalKind;
|
|
76
|
+
state: "pending" | "approved" | "rejected" | "expired" | "cancelled";
|
|
77
|
+
title: string;
|
|
78
|
+
requestedByAgentId?: string;
|
|
79
|
+
targetId: string;
|
|
80
|
+
runId?: string;
|
|
81
|
+
requestedAt: string;
|
|
82
|
+
expiresAt?: string;
|
|
83
|
+
scope: string;
|
|
84
|
+
summary?: string;
|
|
85
|
+
artifactRevision?: number;
|
|
86
|
+
capabilityLeaseId?: string;
|
|
87
|
+
}
|
|
88
|
+
interface XenoControlRoomArtifactInput {
|
|
89
|
+
artifactId: string;
|
|
90
|
+
revision: number;
|
|
91
|
+
kind: string;
|
|
92
|
+
state: string;
|
|
93
|
+
title: string;
|
|
94
|
+
producerAgentId?: string;
|
|
95
|
+
runId?: string;
|
|
96
|
+
updatedAt: string;
|
|
97
|
+
unresolvedComments?: number;
|
|
98
|
+
}
|
|
99
|
+
interface XenoControlRoomMonitorInput {
|
|
100
|
+
monitorId: string;
|
|
101
|
+
status: "running" | "completed" | "stopped" | "failed";
|
|
102
|
+
label: string;
|
|
103
|
+
runId?: string;
|
|
104
|
+
updatedAt: string;
|
|
105
|
+
summary?: string;
|
|
106
|
+
}
|
|
107
|
+
interface XenoControlRoomGoalInput {
|
|
108
|
+
goalId: string;
|
|
109
|
+
status: "active" | "complete" | "blocked" | "cancelled" | "expired";
|
|
110
|
+
condition: string;
|
|
111
|
+
runId?: string;
|
|
112
|
+
updatedAt: string;
|
|
113
|
+
nextAction?: string;
|
|
114
|
+
}
|
|
115
|
+
interface XenoControlRoomNotificationInput {
|
|
116
|
+
notificationId: string;
|
|
117
|
+
type: string;
|
|
118
|
+
targetAgentId?: string;
|
|
119
|
+
targetRunId?: string;
|
|
120
|
+
createdAt: string;
|
|
121
|
+
acknowledgedAt?: string;
|
|
122
|
+
summary: string;
|
|
123
|
+
}
|
|
124
|
+
interface XenoControlRoomInput {
|
|
125
|
+
agents: XenoControlRoomAgentInput[];
|
|
126
|
+
tasks?: XenoControlRoomTaskInput[];
|
|
127
|
+
approvals?: XenoControlRoomApprovalInput[];
|
|
128
|
+
artifacts?: XenoControlRoomArtifactInput[];
|
|
129
|
+
monitors?: XenoControlRoomMonitorInput[];
|
|
130
|
+
goals?: XenoControlRoomGoalInput[];
|
|
131
|
+
notifications?: XenoControlRoomNotificationInput[];
|
|
132
|
+
}
|
|
133
|
+
type XenoControlRoomAttentionKind = "approval" | "blocked_agent" | "waiting_agent" | "failed_agent" | "stale_agent" | "orphaned_agent" | "blocked_task" | "orphaned_task" | "blocked_goal" | "orphaned_notification";
|
|
134
|
+
interface XenoControlRoomAttentionItem {
|
|
135
|
+
attentionId: string;
|
|
136
|
+
kind: XenoControlRoomAttentionKind;
|
|
137
|
+
priority: "critical" | "high" | "normal";
|
|
138
|
+
targetId: string;
|
|
139
|
+
title: string;
|
|
140
|
+
summary: string;
|
|
141
|
+
createdAt: string;
|
|
142
|
+
actions: XenoControlRoomActionKind[];
|
|
143
|
+
}
|
|
144
|
+
interface XenoControlRoomSummary {
|
|
145
|
+
agents: number;
|
|
146
|
+
activeAgents: number;
|
|
147
|
+
waitingAgents: number;
|
|
148
|
+
blockedAgents: number;
|
|
149
|
+
terminalAgents: number;
|
|
150
|
+
staleAgents: number;
|
|
151
|
+
orphanedAgents: number;
|
|
152
|
+
tasks: number;
|
|
153
|
+
completedTasks: number;
|
|
154
|
+
blockedTasks: number;
|
|
155
|
+
pendingApprovals: number;
|
|
156
|
+
activeMonitors: number;
|
|
157
|
+
activeGoals: number;
|
|
158
|
+
unacknowledgedNotifications: number;
|
|
159
|
+
usage: XenoControlRoomUsage;
|
|
160
|
+
}
|
|
161
|
+
interface XenoControlRoomSnapshot {
|
|
162
|
+
schemaVersion: typeof XENO_CONTROL_ROOM_SCHEMA_VERSION;
|
|
163
|
+
snapshotId: string;
|
|
164
|
+
generatedAt: string;
|
|
165
|
+
staleAfterMs: number;
|
|
166
|
+
sourceFingerprint: string;
|
|
167
|
+
snapshotHash: string;
|
|
168
|
+
agents: XenoControlRoomAgent[];
|
|
169
|
+
rootAgentIds: string[];
|
|
170
|
+
tasks: XenoControlRoomTask[];
|
|
171
|
+
approvals: XenoControlRoomApprovalInput[];
|
|
172
|
+
artifacts: XenoControlRoomArtifactInput[];
|
|
173
|
+
monitors: XenoControlRoomMonitorInput[];
|
|
174
|
+
goals: XenoControlRoomGoalInput[];
|
|
175
|
+
notifications: XenoControlRoomNotificationInput[];
|
|
176
|
+
attention: XenoControlRoomAttentionItem[];
|
|
177
|
+
summary: XenoControlRoomSummary;
|
|
178
|
+
}
|
|
179
|
+
interface XenoControlRoomProjectionOptions {
|
|
180
|
+
snapshotId?: string;
|
|
181
|
+
generatedAt?: string;
|
|
182
|
+
staleAfterMs?: number;
|
|
183
|
+
}
|
|
184
|
+
type XenoControlRoomActionKind = "jump" | "steer" | "follow_up" | "stop" | "retry" | "approve" | "reject" | "acknowledge";
|
|
185
|
+
interface XenoControlRoomActionRequest {
|
|
186
|
+
actionId: string;
|
|
187
|
+
snapshotHash: string;
|
|
188
|
+
kind: XenoControlRoomActionKind;
|
|
189
|
+
targetId: string;
|
|
190
|
+
actorId: string;
|
|
191
|
+
requestedAt: string;
|
|
192
|
+
message?: string;
|
|
193
|
+
reason?: string;
|
|
194
|
+
scope?: string;
|
|
195
|
+
}
|
|
196
|
+
interface XenoControlRoomActionPlan {
|
|
197
|
+
schemaVersion: "xeno.control-room-action.v1";
|
|
198
|
+
actionId: string;
|
|
199
|
+
kind: XenoControlRoomActionKind;
|
|
200
|
+
targetId: string;
|
|
201
|
+
actorId: string;
|
|
202
|
+
requestedAt: string;
|
|
203
|
+
expectedSnapshotHash: string;
|
|
204
|
+
idempotencyKey: string;
|
|
205
|
+
authority: "read" | "agent_message" | "process_control" | "approval_decision" | "notification_ack";
|
|
206
|
+
confirmationRequired: boolean;
|
|
207
|
+
scope: string;
|
|
208
|
+
payload: Record<string, string>;
|
|
209
|
+
}
|
|
210
|
+
declare class XenoControlRoomValidationError extends Error {
|
|
211
|
+
constructor(message: string);
|
|
212
|
+
}
|
|
213
|
+
declare function projectXenoControlRoom(input: XenoControlRoomInput, options?: XenoControlRoomProjectionOptions): XenoControlRoomSnapshot;
|
|
214
|
+
declare function planXenoControlRoomAction(snapshot: XenoControlRoomSnapshot, request: XenoControlRoomActionRequest): XenoControlRoomActionPlan;
|
|
215
|
+
declare function validateXenoControlRoomSnapshot(snapshot: XenoControlRoomSnapshot): XenoControlRoomSnapshot;
|
|
216
|
+
export { XENO_CONTROL_ROOM_SCHEMA_VERSION, type XenoControlRoomActionKind, type XenoControlRoomActionPlan, type XenoControlRoomActionRequest, type XenoControlRoomAgent, type XenoControlRoomAgentInput, type XenoControlRoomAgentStatus, type XenoControlRoomApprovalInput, type XenoControlRoomApprovalKind, type XenoControlRoomArtifactInput, type XenoControlRoomAttentionItem, type XenoControlRoomAttentionKind, type XenoControlRoomGoalInput, type XenoControlRoomInput, type XenoControlRoomMonitorInput, type XenoControlRoomNotificationInput, type XenoControlRoomProjectionOptions, type XenoControlRoomSnapshot, type XenoControlRoomStatusCategory, type XenoControlRoomSummary, type XenoControlRoomTask, type XenoControlRoomTaskInput, type XenoControlRoomUsage, XenoControlRoomValidationError, planXenoControlRoomAction, projectXenoControlRoom, validateXenoControlRoomSnapshot };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var y="xeno.control-room.v1";import{createHash as H,randomUUID as K}from"node:crypto";var E=6e4,s=class extends Error{constructor(n){super(n),this.name="XenoControlRoomValidationError"}};function at(t,n={}){let r=k(n.generatedAt??new Date().toISOString(),"generatedAt"),a=Date.parse(r),l=tt(n.staleAfterMs??E,1e3,864e5,"staleAfterMs");A(t.agents.map(o=>o.agentId),"agent"),A((t.tasks??[]).map(o=>o.taskId),"task"),A((t.approvals??[]).map(o=>o.approvalId),"approval"),A((t.artifacts??[]).map(o=>`${o.artifactId}:${o.revision}`),"artifact revision");let i=new Map(t.agents.map(o=>[o.agentId,F(o)]));P(i);let g=new Map;for(let o of i.values())!o.parentAgentId||!i.has(o.parentAgentId)||g.set(o.parentAgentId,[...g.get(o.parentAgentId)??[],o.agentId]);let p=V(i),e=[...i.values()].map(o=>{let d=L(o.status),u=Date.parse(o.heartbeatAt??o.lastActivityAt??o.updatedAt),b=(d==="active"||d==="waiting"||d==="queued")&&Number.isFinite(u)&&a-u>l,N=Date.parse(o.createdAt);return{...o,statusCategory:d,depth:p(o.agentId),childAgentIds:(g.get(o.agentId)??[]).sort(),orphaned:!!(o.parentAgentId&&!i.has(o.parentAgentId)),stale:b,elapsedMs:Number.isFinite(N)?Math.max(0,a-N):0,allowedActions:J(o,d),usage:W(o.usage)}}).sort(Q),c=new Set(e.map(o=>o.agentId)),m=(t.tasks??[]).map(o=>({...o,dependencyIds:[...new Set(o.dependencyIds??[])].sort(),artifactIds:[...new Set(o.artifactIds??[])].sort(),evidenceCount:nt(o.evidenceCount??0,"task evidenceCount"),orphanedOwner:!!(o.ownerAgentId&&!c.has(o.ownerAgentId)),blockedByTaskIds:(o.dependencyIds??[]).filter(d=>{let u=t.tasks?.find(b=>b.taskId===d);return!u||u.status!=="completed"}).sort()})).sort((o,d)=>o.taskId.localeCompare(d.taskId));z(m);let R=[...t.approvals??[]].sort((o,d)=>Date.parse(o.requestedAt)-Date.parse(d.requestedAt)),O=[...t.artifacts??[]].sort((o,d)=>o.artifactId.localeCompare(d.artifactId)||o.revision-d.revision),x=[...t.monitors??[]].sort((o,d)=>o.monitorId.localeCompare(d.monitorId)),w=[...t.goals??[]].sort((o,d)=>o.goalId.localeCompare(d.goalId)),X=[...t.notifications??[]].sort((o,d)=>Date.parse(o.createdAt)-Date.parse(d.createdAt)),U=Z(e,m,R,w,X),M=e.reduce((o,d)=>q(o,d.usage),Y()),j={agents:e.length,activeAgents:e.filter(o=>o.statusCategory==="active").length,waitingAgents:e.filter(o=>o.statusCategory==="waiting").length,blockedAgents:e.filter(o=>o.statusCategory==="blocked").length,terminalAgents:e.filter(o=>o.statusCategory==="terminal").length,staleAgents:e.filter(o=>o.stale).length,orphanedAgents:e.filter(o=>o.orphaned).length,tasks:m.length,completedTasks:m.filter(o=>o.status==="completed").length,blockedTasks:m.filter(o=>o.status==="blocked"||o.blockedByTaskIds.length>0).length,pendingApprovals:R.filter(o=>o.state==="pending").length,activeMonitors:x.filter(o=>o.status==="running").length,activeGoals:w.filter(o=>o.status==="active"||o.status==="blocked").length,unacknowledgedNotifications:X.filter(o=>!o.acknowledgedAt).length,usage:M},S={agents:e,rootAgentIds:e.filter(o=>!o.parentAgentId||!c.has(o.parentAgentId)).map(o=>o.agentId),tasks:m,approvals:R,artifacts:O,monitors:x,goals:w,notifications:X,attention:U,summary:j},D=C(_(S)),$={schemaVersion:y,snapshotId:n.snapshotId?.trim()||`control_room_${K()}`,generatedAt:r,staleAfterMs:l,sourceFingerprint:D,...S};return{...$,snapshotHash:C(_($))}}function it(t,n){if(B(t),n.snapshotHash!==t.snapshotHash)throw new s("Control-room action targets a stale snapshot");h(n.actionId,"actionId"),h(n.actorId,"actorId"),k(n.requestedAt,"requestedAt");let r=t.agents.find(c=>c.agentId===n.targetId||c.runId===n.targetId||c.sessionId===n.targetId),a=t.approvals.find(c=>c.approvalId===n.targetId),l=t.notifications.find(c=>c.notificationId===n.targetId),i,g=!1,p=n.scope?.trim()||"target",e={};if(n.kind==="jump"){if(!r&&!a&&!l)throw new s("Jump target is not present in the snapshot");i="read"}else if(n.kind==="steer"||n.kind==="follow_up"){if(!r||!r.allowedActions.includes(n.kind))throw new s(`${n.kind} is not available for this agent`);e.message=v(n.message,"message"),i="agent_message"}else if(n.kind==="stop"||n.kind==="retry"){if(!r||!r.allowedActions.includes(n.kind))throw new s(`${n.kind} is not available for this agent`);n.reason?.trim()&&(e.reason=n.reason.trim()),i="process_control",g=n.kind==="stop"}else if(n.kind==="approve"||n.kind==="reject"){if(!a||a.state!=="pending")throw new s("Approval target is not pending in this snapshot");if(n.reason?.trim()&&(e.reason=n.reason.trim()),n.kind==="reject"&&!e.reason)throw new s("A rejection reason is required");i="approval_decision",g=!0,p=n.scope?.trim()||a.scope}else if(n.kind==="acknowledge"){if(!l||l.acknowledgedAt)throw new s("Notification target is not awaiting acknowledgement");i="notification_ack"}else throw new s(`Unsupported control-room action: ${String(n.kind)}`);return{schemaVersion:"xeno.control-room-action.v1",actionId:n.actionId,kind:n.kind,targetId:n.targetId,actorId:n.actorId,requestedAt:n.requestedAt,expectedSnapshotHash:t.snapshotHash,idempotencyKey:C(`${t.snapshotHash}:${n.actionId}:${n.kind}:${n.targetId}`),authority:i,confirmationRequired:g,scope:p,payload:e}}function B(t){if(t.schemaVersion!==y)throw new s("Unsupported control-room schema");let{snapshotHash:n,...r}=t;if(C(_(r))!==t.snapshotHash)throw new s("Control-room snapshot hash mismatch");return t}function F(t){if(h(t.agentId,"agentId"),v(t.workspaceId,"workspaceId"),v(t.name,"agent name"),k(t.createdAt,"agent createdAt"),k(t.updatedAt,"agent updatedAt"),t.parentAgentId===t.agentId)throw new s(`Agent ${t.agentId} cannot parent itself`);return{...t,taskIds:[...new Set(t.taskIds??[])].sort(),artifactIds:[...new Set(t.artifactIds??[])].sort()}}function P(t){for(let n of t.values()){let r=new Set,a=n;for(;a?.parentAgentId&&t.has(a.parentAgentId);){if(r.has(a.agentId))throw new s(`Agent hierarchy contains a cycle at ${a.agentId}`);r.add(a.agentId),a=t.get(a.parentAgentId)}}}function V(t){let n=new Map;return function r(a){let l=n.get(a);if(l!==void 0)return l;let i=t.get(a)?.parentAgentId,g=i&&t.has(i)?r(i)+1:0;return n.set(a,g),g}}function z(t){let n=new Set(t.map(r=>r.taskId));for(let r of t){if(r.dependencyIds.includes(r.taskId))throw new s(`Task ${r.taskId} depends on itself`);for(let a of r.dependencyIds)if(!n.has(a))throw new s(`Task ${r.taskId} has unknown dependency ${a}`)}}function L(t){return t==="queued"||t==="starting"?"queued":t==="running"||t==="working"||t==="idle"||t==="detached"?"active":t==="waiting_for_user"||t==="waiting_for_tool"||t==="waiting_for_hook"||t==="waiting_for_permission"||t==="paused"?"waiting":t==="blocked"?"blocked":"terminal"}function G(t){return t==="active"||t==="waiting"||t==="blocked"||t==="queued"?["jump","steer","follow_up","stop"]:["jump","retry"]}function J(t,n){let r=G(n);if(t.allowedActions===void 0)return r;let a=[...new Set(t.allowedActions)];for(let l of a)if(!r.includes(l))throw new s(`Agent ${t.agentId} cannot advertise ${l} while ${n}`);return r.filter(l=>a.includes(l))}function Z(t,n,r,a,l){let i=[],g=new Set(t.map(e=>e.agentId));for(let e of r.filter(c=>c.state==="pending"))i.push({attentionId:`attention:approval:${e.approvalId}`,kind:"approval",priority:"critical",targetId:e.approvalId,title:e.title,summary:e.summary??`${e.kind} approval requested for ${e.scope}`,createdAt:e.requestedAt,actions:["jump","approve","reject"]});for(let e of t)e.statusCategory==="blocked"?i.push(I(e,"blocked_agent","high",e.statusReason??"Agent is blocked")):e.statusCategory==="waiting"?i.push(I(e,"waiting_agent","high",e.statusReason??"Agent is waiting")):e.status==="failed"&&i.push(I(e,"failed_agent","high",e.statusReason??"Agent failed")),e.stale&&i.push(I(e,"stale_agent","high","Agent heartbeat is stale")),e.orphaned&&i.push(I(e,"orphaned_agent","normal",`Parent agent ${e.parentAgentId} is missing`));for(let e of n)(e.status==="blocked"||e.blockedByTaskIds.length)&&i.push({attentionId:`attention:task:${e.taskId}`,kind:"blocked_task",priority:"high",targetId:e.taskId,title:e.title,summary:e.blockedByTaskIds.length?`Blocked by ${e.blockedByTaskIds.join(", ")}`:"Task is blocked",createdAt:e.updatedAt,actions:["jump"]}),e.orphanedOwner&&i.push({attentionId:`attention:task-owner:${e.taskId}`,kind:"orphaned_task",priority:"normal",targetId:e.taskId,title:e.title,summary:`Assigned agent ${e.ownerAgentId} is missing`,createdAt:e.updatedAt,actions:["jump"]});for(let e of a.filter(c=>c.status==="blocked"))i.push({attentionId:`attention:goal:${e.goalId}`,kind:"blocked_goal",priority:"high",targetId:e.goalId,title:"Blocked goal",summary:e.nextAction??e.condition,createdAt:e.updatedAt,actions:["jump"]});for(let e of l.filter(c=>!c.acknowledgedAt&&c.targetAgentId&&!g.has(c.targetAgentId)))i.push({attentionId:`attention:notification:${e.notificationId}`,kind:"orphaned_notification",priority:"normal",targetId:e.notificationId,title:"Orphaned notification",summary:e.summary,createdAt:e.createdAt,actions:["jump","acknowledge"]});let p={critical:0,high:1,normal:2};return i.sort((e,c)=>p[e.priority]-p[c.priority]||Date.parse(e.createdAt)-Date.parse(c.createdAt))}function I(t,n,r,a){return{attentionId:`attention:${n}:${t.agentId}`,kind:n,priority:r,targetId:t.agentId,title:t.title??t.name,summary:a,createdAt:t.lastActivityAt??t.updatedAt,actions:t.allowedActions}}function Q(t,n){return t.depth-n.depth||t.agentId.localeCompare(n.agentId)}function W(t){let n=f(t?.inputTokens),r=f(t?.outputTokens);return{inputTokens:n,outputTokens:r,totalTokens:f(t?.totalTokens??n+r),...t?.cachedInputTokens!==void 0?{cachedInputTokens:f(t.cachedInputTokens)}:{},...t?.estimatedCostUsd!==void 0?{estimatedCostUsd:f(t.estimatedCostUsd)}:{}}}function Y(){return{inputTokens:0,outputTokens:0,totalTokens:0,cachedInputTokens:0,estimatedCostUsd:0}}function q(t,n){return{inputTokens:t.inputTokens+n.inputTokens,outputTokens:t.outputTokens+n.outputTokens,totalTokens:t.totalTokens+n.totalTokens,cachedInputTokens:(t.cachedInputTokens??0)+(n.cachedInputTokens??0),estimatedCostUsd:(t.estimatedCostUsd??0)+(n.estimatedCostUsd??0)}}function A(t,n){let r=new Set;for(let a of t){if(h(a,`${n} ID`),r.has(a))throw new s(`Duplicate ${n} ID: ${a}`);r.add(a)}}function h(t,n){let r=t?.trim()??"";if(!/^[A-Za-z0-9][A-Za-z0-9._:-]{0,255}$/u.test(r))throw new s(`${n} is invalid`);return r}function v(t,n){let r=t?.trim()??"";if(!r||r.length>64*1024)throw new s(`${n} is required`);return r}function k(t,n){if(!Number.isFinite(Date.parse(t)))throw new s(`${n} must be a valid timestamp`);return t}function tt(t,n,r,a){if(!Number.isInteger(t)||t<n||t>r)throw new s(`${a} must be between ${n} and ${r}`);return t}function nt(t,n){if(!Number.isInteger(t)||t<0)throw new s(`${n} must be a non-negative integer`);return t}function f(t){return Number.isFinite(t)?Math.max(0,t??0):0}function C(t){return H("sha256").update(t,"utf8").digest("hex")}function _(t){return JSON.stringify(T(t))}function T(t){return Array.isArray(t)?t.map(T):!t||typeof t!="object"?t:Object.fromEntries(Object.entries(t).filter(([,n])=>n!==void 0).sort(([n],[r])=>n.localeCompare(r)).map(([n,r])=>[n,T(r)]))}export{y as XENO_CONTROL_ROOM_SCHEMA_VERSION,s as XenoControlRoomValidationError,it as planXenoControlRoomAction,at as projectXenoControlRoom,B as validateXenoControlRoomSnapshot};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"inputs":{"src/control-room/types.ts":{"bytes":7136,"imports":[],"format":"esm"},"src/control-room/projector.ts":{"bytes":21797,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"src/control-room/types.ts","kind":"import-statement","original":"./types.js"}],"format":"esm"},"src/control-room/index.ts":{"bytes":62,"imports":[{"path":"src/control-room/types.ts","kind":"import-statement","original":"./types.js"},{"path":"src/control-room/projector.ts","kind":"import-statement","original":"./projector.js"}],"format":"esm"}},"outputs":{"dist/control-room/index.cjs":{"imports":[{"path":"node:crypto","kind":"require-call","external":true}],"exports":[],"entryPoint":"src/control-room/index.ts","inputs":{"src/control-room/index.ts":{"bytesInOutput":214},"src/control-room/types.ts":{"bytesInOutput":29},"src/control-room/projector.ts":{"bytesInOutput":11006}},"bytes":11842}}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"inputs":{"src/control-room/types.ts":{"bytes":7136,"imports":[],"format":"esm"},"src/control-room/projector.ts":{"bytes":21797,"imports":[{"path":"node:crypto","kind":"import-statement","external":true},{"path":"src/control-room/types.ts","kind":"import-statement","original":"./types.js"}],"format":"esm"},"src/control-room/index.ts":{"bytes":62,"imports":[{"path":"src/control-room/types.ts","kind":"import-statement","original":"./types.js"},{"path":"src/control-room/projector.ts","kind":"import-statement","original":"./projector.js"}],"format":"esm"}},"outputs":{"dist/control-room/index.js":{"imports":[{"path":"node:crypto","kind":"import-statement","external":true}],"exports":["XENO_CONTROL_ROOM_SCHEMA_VERSION","XenoControlRoomValidationError","planXenoControlRoomAction","projectXenoControlRoom","validateXenoControlRoomSnapshot"],"entryPoint":"src/control-room/index.ts","inputs":{"src/control-room/types.ts":{"bytesInOutput":29},"src/control-room/index.ts":{"bytesInOutput":0},"src/control-room/projector.ts":{"bytesInOutput":10991}},"bytes":11201}}}
|