minutework 0.1.45 → 0.1.46

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.
@@ -0,0 +1,380 @@
1
+ import { promises as fs } from "node:fs";
2
+ import path from "node:path";
3
+ import { z } from "zod";
4
+ import { RUNTIME_PRIMITIVE_THREE_LAYER_RULE, } from "./types.js";
5
+ const DEFAULT_RUNTIME_FETCH_TIMEOUT_MS = 6000;
6
+ const RUNTIME_PRIMITIVE_STATUS_REQUEST_PATH = "/api/v1/developer/runtime/primitive-status/?tier=sandbox";
7
+ const PRIMITIVE_CATALOG_WORKSPACE_RELATIVE_PATH = path.join("skills", "runtime-capability-inventory", "primitive-catalog.json");
8
+ const EXECUTOR_READY_VALUES = ["live", "partial", "none"];
9
+ const AGENT_EXPOSURE_PATH_VALUES = ["native_tool", "app_pack_action", "none"];
10
+ const WorkspacePrimitiveCatalogFileSchema = z.object({
11
+ catalog_version: z.string().optional(),
12
+ primitives: z.array(z.unknown()),
13
+ });
14
+ const StoredAuthProfileTokenSchema = z.object({
15
+ token: z.string().min(1),
16
+ });
17
+ const RuntimePrimitiveWireCatalogSchema = z.object({
18
+ agent_exposable: z.boolean().nullish(),
19
+ agent_exposure_path: z.enum(AGENT_EXPOSURE_PATH_VALUES).nullish(),
20
+ approval_required: z.boolean().nullish(),
21
+ executor_notes: z.string().nullish(),
22
+ executor_ready: z.enum(EXECUTOR_READY_VALUES).nullish(),
23
+ executor_ref: z.string().nullish(),
24
+ interim_path: z.string().nullish(),
25
+ });
26
+ const RuntimePrimitiveWireLiveSchema = z.object({
27
+ action_capability_registered: z.boolean(),
28
+ agent_exposed_surfaces: z.array(z.object({
29
+ action_key: z.string(),
30
+ app_id: z.string(),
31
+ })),
32
+ agents_with_app_pack_action: z.array(z.string()),
33
+ agents_with_native_tool: z.array(z.string()),
34
+ capability_approval_required: z.boolean().nullable(),
35
+ definition_forced_approval: z.boolean(),
36
+ native_tool_registered: z.boolean(),
37
+ });
38
+ const RuntimePrimitiveWireEntrySchema = z.object({
39
+ catalog: RuntimePrimitiveWireCatalogSchema,
40
+ family: z.string(),
41
+ live: RuntimePrimitiveWireLiveSchema,
42
+ primitive_id: z.string().min(1),
43
+ registration_status: z.enum(["active", "inactive", "missing"]),
44
+ });
45
+ const DeveloperRuntimePrimitiveStatusResponseSchema = z.object({
46
+ primitive_status: z.object({
47
+ catalog_version: z.string(),
48
+ collected_at: z.string(),
49
+ default_tool_ring: z.array(z.string()),
50
+ primitives: z.array(RuntimePrimitiveWireEntrySchema),
51
+ schema_version: z.literal("RuntimePrimitiveStatusV1"),
52
+ warnings: z.array(z.string()),
53
+ }),
54
+ runtime_id: z.string(),
55
+ tier: z.literal("sandbox"),
56
+ });
57
+ export async function collectRuntimePrimitiveStatus(context, options = {}) {
58
+ const catalogPath = path.join(context.workspaceRoot, PRIMITIVE_CATALOG_WORKSPACE_RELATIVE_PATH);
59
+ const diagnostics = [];
60
+ if (context.bindingStatus.status === "linked" && context.authStatus.status === "active") {
61
+ const runtimeResponse = await tryLoadLinkedRuntimePrimitiveStatus(context, options, diagnostics);
62
+ if (runtimeResponse) {
63
+ return buildLinkedRuntimeStatus(runtimeResponse, catalogPath, diagnostics);
64
+ }
65
+ }
66
+ return buildCatalogBackedStatus(catalogPath, diagnostics);
67
+ }
68
+ async function tryLoadLinkedRuntimePrimitiveStatus(context, options, diagnostics) {
69
+ const profile = context.authStatus.profile;
70
+ // The bearer token is only ever sent to the platform that issued it: the
71
+ // request host comes from the machine-local auth profile, never from the
72
+ // workspace-local binding file (which any repo can ship or tamper with).
73
+ const platformBaseUrl = normalizeBaseUrl(profile?.platformBaseUrl ?? null);
74
+ const bindingBaseUrl = normalizeBaseUrl(context.bindingStatus.binding?.platformBaseUrl ?? null);
75
+ if (!profile || !platformBaseUrl) {
76
+ diagnostics.push({
77
+ action: "Run `minutework login` and `minutework link`, then retry.",
78
+ code: "workspace.primitive_status.platform_unresolved",
79
+ detail: "The linked-runtime leg needs a platform base URL from the active auth profile, but none was resolvable.",
80
+ severity: "warning",
81
+ summary: "Falling back to the synced primitive catalog: no platform base URL.",
82
+ });
83
+ return null;
84
+ }
85
+ if (context.bindingStatus.matchesActiveAuthProfile !== true ||
86
+ (bindingBaseUrl !== null && bindingBaseUrl !== platformBaseUrl)) {
87
+ diagnostics.push({
88
+ action: "Run `minutework link` to re-bind this workspace to the active auth profile, then retry.",
89
+ code: "workspace.primitive_status.binding_profile_mismatch",
90
+ detail: "The workspace binding does not match the active auth profile (different profile id or platform base URL), so the authenticated linked-runtime leg is skipped.",
91
+ severity: "warning",
92
+ summary: "Falling back to the synced primitive catalog: binding/auth-profile mismatch.",
93
+ });
94
+ return null;
95
+ }
96
+ const token = await readStoredAuthProfileToken(context.authStatus.profilePath);
97
+ if (!token) {
98
+ diagnostics.push({
99
+ action: "Run `minutework login` to refresh the machine-local auth profile.",
100
+ code: "workspace.primitive_status.auth_token_unavailable",
101
+ detail: "The stored CLI auth profile file does not contain a readable token, so the linked runtime cannot be queried.",
102
+ path: context.authStatus.profilePath ?? undefined,
103
+ severity: "warning",
104
+ summary: "Falling back to the synced primitive catalog: auth token unavailable.",
105
+ });
106
+ return null;
107
+ }
108
+ const fetchImpl = options.fetchImpl ?? globalThis.fetch;
109
+ const requestUrl = new URL(RUNTIME_PRIMITIVE_STATUS_REQUEST_PATH, `${platformBaseUrl}/`).toString();
110
+ const abortController = new AbortController();
111
+ const timeoutMs = options.timeoutMs ?? DEFAULT_RUNTIME_FETCH_TIMEOUT_MS;
112
+ const timeoutHandle = setTimeout(() => abortController.abort(), timeoutMs);
113
+ let response;
114
+ try {
115
+ response = await fetchImpl(requestUrl, {
116
+ headers: {
117
+ Authorization: `Bearer ${token}`,
118
+ "X-Tenant-Id": profile.tenantId,
119
+ },
120
+ method: "GET",
121
+ signal: abortController.signal,
122
+ });
123
+ }
124
+ catch (error) {
125
+ diagnostics.push({
126
+ action: "Confirm the platform is reachable, then retry `minutework_runtime_primitive_status`.",
127
+ code: "workspace.primitive_status.runtime_unreachable",
128
+ detail: `The developer primitive-status request to ${requestUrl} failed: ${sanitizeDetail(error instanceof Error ? error.message : String(error), token)}`,
129
+ severity: "warning",
130
+ summary: "Falling back to the synced primitive catalog: linked runtime is unreachable.",
131
+ });
132
+ return null;
133
+ }
134
+ finally {
135
+ clearTimeout(timeoutHandle);
136
+ }
137
+ if (!response.ok) {
138
+ diagnostics.push({
139
+ action: response.status === 401 || response.status === 403
140
+ ? "Run `minutework login` to refresh the machine-local auth profile, then retry."
141
+ : "Retry once the platform developer API is healthy.",
142
+ code: "workspace.primitive_status.runtime_error",
143
+ detail: `The developer primitive-status request to ${requestUrl} returned HTTP ${response.status}.`,
144
+ severity: "warning",
145
+ summary: "Falling back to the synced primitive catalog: linked runtime request failed.",
146
+ });
147
+ return null;
148
+ }
149
+ let payload;
150
+ try {
151
+ payload = await response.json();
152
+ }
153
+ catch {
154
+ diagnostics.push({
155
+ code: "workspace.primitive_status.runtime_response_invalid",
156
+ detail: `The developer primitive-status response from ${requestUrl} was not valid JSON.`,
157
+ severity: "warning",
158
+ summary: "Falling back to the synced primitive catalog: linked runtime response is malformed.",
159
+ });
160
+ return null;
161
+ }
162
+ const parsed = DeveloperRuntimePrimitiveStatusResponseSchema.safeParse(payload);
163
+ if (!parsed.success) {
164
+ diagnostics.push({
165
+ code: "workspace.primitive_status.runtime_response_invalid",
166
+ detail: `The developer primitive-status response from ${requestUrl} did not match the RuntimePrimitiveStatusV1 contract: ${sanitizeDetail(parsed.error.issues[0]?.message ?? "unknown schema error", token)}`,
167
+ severity: "warning",
168
+ summary: "Falling back to the synced primitive catalog: linked runtime response is schema-invalid.",
169
+ });
170
+ return null;
171
+ }
172
+ return parsed.data;
173
+ }
174
+ function buildLinkedRuntimeStatus(response, catalogPath, diagnostics) {
175
+ for (const warning of response.primitive_status.warnings) {
176
+ diagnostics.push({
177
+ code: "workspace.primitive_status.runtime_warning",
178
+ detail: warning,
179
+ severity: "warning",
180
+ summary: "The linked runtime reported a primitive-status warning.",
181
+ });
182
+ }
183
+ return {
184
+ catalogPath,
185
+ catalogVersion: response.primitive_status.catalog_version,
186
+ defaultToolRing: [...response.primitive_status.default_tool_ring],
187
+ diagnostics,
188
+ primitives: response.primitive_status.primitives.map(mapLinkedRuntimePrimitive),
189
+ runtimeId: response.runtime_id,
190
+ source: "linked_runtime",
191
+ threeLayerRule: RUNTIME_PRIMITIVE_THREE_LAYER_RULE,
192
+ tier: response.tier,
193
+ unknowns: [],
194
+ };
195
+ }
196
+ function mapLinkedRuntimePrimitive(entry) {
197
+ return {
198
+ agentExposable: entry.catalog.agent_exposable ?? null,
199
+ agentExposurePath: entry.catalog.agent_exposure_path ?? "unknown",
200
+ agentsWithAccess: [
201
+ ...new Set([...entry.live.agents_with_native_tool, ...entry.live.agents_with_app_pack_action]),
202
+ ],
203
+ approvalRequired: entry.catalog.approval_required ?? null,
204
+ executorNotes: entry.catalog.executor_notes ?? "",
205
+ executorReady: entry.catalog.executor_ready ?? "unknown",
206
+ family: entry.family,
207
+ interimPath: entry.catalog.interim_path ?? "",
208
+ primitiveId: entry.primitive_id,
209
+ registrationStatus: entry.registration_status,
210
+ };
211
+ }
212
+ async function buildCatalogBackedStatus(catalogPath, diagnostics) {
213
+ const catalogRecord = await readWorkspacePrimitiveCatalog(catalogPath, diagnostics);
214
+ const primitives = [];
215
+ let invalidEntryCount = 0;
216
+ for (const rawEntry of catalogRecord.entries) {
217
+ const mapped = mapCatalogPrimitive(rawEntry);
218
+ if (mapped) {
219
+ primitives.push(mapped);
220
+ }
221
+ else {
222
+ invalidEntryCount += 1;
223
+ }
224
+ }
225
+ if (invalidEntryCount > 0) {
226
+ diagnostics.push({
227
+ action: "Run `minutework workspace sync-assets` to restore the synced primitive catalog.",
228
+ code: "workspace.primitive_status.catalog_entry_invalid",
229
+ detail: `${invalidEntryCount} primitive catalog ${invalidEntryCount === 1 ? "entry was" : "entries were"} skipped because they have no valid primitive_id.`,
230
+ path: catalogPath,
231
+ severity: "warning",
232
+ summary: "Some synced primitive catalog entries are invalid and were skipped.",
233
+ });
234
+ }
235
+ return {
236
+ catalogPath,
237
+ catalogVersion: catalogRecord.catalogVersion,
238
+ defaultToolRing: null,
239
+ diagnostics,
240
+ primitives,
241
+ runtimeId: null,
242
+ source: "catalog",
243
+ threeLayerRule: RUNTIME_PRIMITIVE_THREE_LAYER_RULE,
244
+ tier: null,
245
+ unknowns: buildCatalogBackedUnknowns(),
246
+ };
247
+ }
248
+ async function readWorkspacePrimitiveCatalog(catalogPath, diagnostics) {
249
+ let raw;
250
+ try {
251
+ raw = await fs.readFile(catalogPath, "utf8");
252
+ }
253
+ catch (error) {
254
+ const errno = error;
255
+ if (errno.code !== "ENOENT") {
256
+ throw error;
257
+ }
258
+ diagnostics.push({
259
+ action: "Run `minutework workspace sync-assets` to restore the synced primitive catalog.",
260
+ code: "workspace.primitive_status.catalog_missing",
261
+ detail: "The synced runtime primitive catalog file does not exist in this workspace, so no primitive status can be reported.",
262
+ path: catalogPath,
263
+ severity: "error",
264
+ summary: "Synced primitive catalog is missing.",
265
+ });
266
+ return { catalogVersion: null, entries: [] };
267
+ }
268
+ let parsedJson;
269
+ try {
270
+ parsedJson = JSON.parse(raw);
271
+ }
272
+ catch (error) {
273
+ diagnostics.push({
274
+ action: "Run `minutework workspace sync-assets` to restore the synced primitive catalog.",
275
+ code: "workspace.primitive_status.catalog_malformed",
276
+ detail: `The synced runtime primitive catalog is not valid JSON: ${error instanceof Error ? error.message : String(error)}`,
277
+ path: catalogPath,
278
+ severity: "error",
279
+ summary: "Synced primitive catalog is malformed.",
280
+ });
281
+ return { catalogVersion: null, entries: [] };
282
+ }
283
+ const parsed = WorkspacePrimitiveCatalogFileSchema.safeParse(parsedJson);
284
+ if (!parsed.success) {
285
+ diagnostics.push({
286
+ action: "Run `minutework workspace sync-assets` to restore the synced primitive catalog.",
287
+ code: "workspace.primitive_status.catalog_malformed",
288
+ detail: `The synced runtime primitive catalog does not have the expected {catalog_version, primitives[]} shape: ${parsed.error.issues[0]?.message ?? "unknown schema error"}`,
289
+ path: catalogPath,
290
+ severity: "error",
291
+ summary: "Synced primitive catalog is malformed.",
292
+ });
293
+ return { catalogVersion: null, entries: [] };
294
+ }
295
+ return {
296
+ catalogVersion: parsed.data.catalog_version ?? null,
297
+ entries: parsed.data.primitives,
298
+ };
299
+ }
300
+ function mapCatalogPrimitive(rawEntry) {
301
+ if (typeof rawEntry !== "object" || rawEntry === null || Array.isArray(rawEntry)) {
302
+ return null;
303
+ }
304
+ const entry = rawEntry;
305
+ const primitiveId = readNonEmptyString(entry.primitive_id);
306
+ if (!primitiveId) {
307
+ return null;
308
+ }
309
+ return {
310
+ agentExposable: readOptionalBoolean(entry.agent_exposable),
311
+ agentExposurePath: readEnumValue(entry.agent_exposure_path, AGENT_EXPOSURE_PATH_VALUES),
312
+ agentsWithAccess: null,
313
+ approvalRequired: readOptionalBoolean(entry.approval_required),
314
+ executorNotes: readStringWithDefault(entry.executor_notes),
315
+ executorReady: readEnumValue(entry.executor_ready, EXECUTOR_READY_VALUES),
316
+ family: readNonEmptyString(entry.family) ?? "unknown",
317
+ interimPath: readStringWithDefault(entry.interim_path),
318
+ primitiveId,
319
+ registrationStatus: "unknown",
320
+ };
321
+ }
322
+ function buildCatalogBackedUnknowns() {
323
+ return [
324
+ {
325
+ detail: "Without a linked runtime, RuntimePrimitiveRegistration rows cannot be read, so per-primitive registration status (active/inactive/missing) is unknown.",
326
+ id: "primitive_registration_status",
327
+ nextCheck: "Run `minutework login` and `minutework link`, then call `minutework_runtime_primitive_status` again to read live registration state.",
328
+ },
329
+ {
330
+ detail: "Per-agent enablement (which agents hold each native tool or `app_pack.action` exposure) is only visible from a linked runtime, so agentsWithAccess is null in catalog-backed results.",
331
+ id: "per_agent_tool_enablement",
332
+ nextCheck: "Run `minutework login` and `minutework link`, then call `minutework_runtime_primitive_status` again to read per-agent enablement.",
333
+ },
334
+ ];
335
+ }
336
+ function readEnumValue(value, allowed) {
337
+ if (typeof value === "string" && allowed.includes(value)) {
338
+ return value;
339
+ }
340
+ return "unknown";
341
+ }
342
+ function readOptionalBoolean(value) {
343
+ return typeof value === "boolean" ? value : null;
344
+ }
345
+ function readStringWithDefault(value) {
346
+ return typeof value === "string" ? value : "";
347
+ }
348
+ function readNonEmptyString(value) {
349
+ return typeof value === "string" && value.length > 0 ? value : null;
350
+ }
351
+ function normalizeBaseUrl(value) {
352
+ if (!value) {
353
+ return null;
354
+ }
355
+ const trimmed = value.trim().replace(/\/+$/, "");
356
+ return trimmed.length > 0 ? trimmed : null;
357
+ }
358
+ async function readStoredAuthProfileToken(profilePath) {
359
+ if (!profilePath) {
360
+ return null;
361
+ }
362
+ let raw;
363
+ try {
364
+ raw = await fs.readFile(profilePath, "utf8");
365
+ }
366
+ catch {
367
+ return null;
368
+ }
369
+ try {
370
+ const parsed = StoredAuthProfileTokenSchema.safeParse(JSON.parse(raw));
371
+ return parsed.success ? parsed.data.token : null;
372
+ }
373
+ catch {
374
+ return null;
375
+ }
376
+ }
377
+ function sanitizeDetail(detail, token) {
378
+ return token.length > 0 ? detail.split(token).join("[redacted]") : detail;
379
+ }
380
+ //# sourceMappingURL=primitive-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitive-status.js","sourceRoot":"","sources":["../src/primitive-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EACL,kCAAkC,GAKnC,MAAM,YAAY,CAAC;AAEpB,MAAM,gCAAgC,GAAG,IAAI,CAAC;AAE9C,MAAM,qCAAqC,GAAG,0DAA0D,CAAC;AAEzG,MAAM,yCAAyC,GAAG,IAAI,CAAC,IAAI,CACzD,QAAQ,EACR,8BAA8B,EAC9B,wBAAwB,CACzB,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAU,CAAC;AACnE,MAAM,0BAA0B,GAAG,CAAC,aAAa,EAAE,iBAAiB,EAAE,MAAM,CAAU,CAAC;AAEvF,MAAM,mCAAmC,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;CACjC,CAAC,CAAC;AAEH,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACzB,CAAC,CAAC;AAEH,MAAM,iCAAiC,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE;IACtC,mBAAmB,EAAE,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,OAAO,EAAE;IACjE,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE;IACxC,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;IACpC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,OAAO,EAAE;IACvD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;IAClC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;CACnC,CAAC,CAAC;AAEH,MAAM,8BAA8B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,4BAA4B,EAAE,CAAC,CAAC,OAAO,EAAE;IACzC,sBAAsB,EAAE,CAAC,CAAC,KAAK,CAC7B,CAAC,CAAC,MAAM,CAAC;QACP,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;QACtB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;KACnB,CAAC,CACH;IACD,2BAA2B,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAChD,uBAAuB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5C,4BAA4B,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACpD,0BAA0B,EAAE,CAAC,CAAC,OAAO,EAAE;IACvC,sBAAsB,EAAE,CAAC,CAAC,OAAO,EAAE;CACpC,CAAC,CAAC;AAEH,MAAM,+BAA+B,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/C,OAAO,EAAE,iCAAiC;IAC1C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,IAAI,EAAE,8BAA8B;IACpC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,mBAAmB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;CAC/D,CAAC,CAAC;AAEH,MAAM,6CAA6C,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7D,gBAAgB,EAAE,CAAC,CAAC,MAAM,CAAC;QACzB,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;QAC3B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;QACxB,iBAAiB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACtC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,+BAA+B,CAAC;QACpD,cAAc,EAAE,CAAC,CAAC,OAAO,CAAC,0BAA0B,CAAC;QACrD,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KAC9B,CAAC;IACF,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;CAC3B,CAAC,CAAC;AAWH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,OAAyB,EACzB,UAAkD,EAAE;IAEpD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,yCAAyC,CAAC,CAAC;IAChG,MAAM,WAAW,GAA0B,EAAE,CAAC;IAE9C,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxF,MAAM,eAAe,GAAG,MAAM,mCAAmC,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QACjG,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,wBAAwB,CAAC,eAAe,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAED,OAAO,wBAAwB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAC5D,CAAC;AAED,KAAK,UAAU,mCAAmC,CAChD,OAAyB,EACzB,OAA+C,EAC/C,WAAkC;IAElC,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC;IAC3C,yEAAyE;IACzE,yEAAyE;IACzE,yEAAyE;IACzE,MAAM,eAAe,GAAG,gBAAgB,CAAC,OAAO,EAAE,eAAe,IAAI,IAAI,CAAC,CAAC;IAC3E,MAAM,cAAc,GAAG,gBAAgB,CACrC,OAAO,CAAC,aAAa,CAAC,OAAO,EAAE,eAAe,IAAI,IAAI,CACvD,CAAC;IAEF,IAAI,CAAC,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;QACjC,WAAW,CAAC,IAAI,CAAC;YACf,MAAM,EAAE,2DAA2D;YACnE,IAAI,EAAE,gDAAgD;YACtD,MAAM,EACJ,yGAAyG;YAC3G,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,qEAAqE;SAC/E,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IACE,OAAO,CAAC,aAAa,CAAC,wBAAwB,KAAK,IAAI;QACvD,CAAC,cAAc,KAAK,IAAI,IAAI,cAAc,KAAK,eAAe,CAAC,EAC/D,CAAC;QACD,WAAW,CAAC,IAAI,CAAC;YACf,MAAM,EAAE,yFAAyF;YACjG,IAAI,EAAE,qDAAqD;YAC3D,MAAM,EACJ,+JAA+J;YACjK,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,8EAA8E;SACxF,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,0BAA0B,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IAC/E,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,WAAW,CAAC,IAAI,CAAC;YACf,MAAM,EAAE,mEAAmE;YAC3E,IAAI,EAAE,mDAAmD;YACzD,MAAM,EACJ,8GAA8G;YAChH,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,WAAW,IAAI,SAAS;YACjD,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,uEAAuE;SACjF,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,UAAU,CAAC,KAAK,CAAC;IACxD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,qCAAqC,EAAE,GAAG,eAAe,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;IACpG,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAC;IAC9C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,gCAAgC,CAAC;IACxE,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAE3E,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,SAAS,CAAC,UAAU,EAAE;YACrC,OAAO,EAAE;gBACP,aAAa,EAAE,UAAU,KAAK,EAAE;gBAChC,aAAa,EAAE,OAAO,CAAC,QAAQ;aAChC;YACD,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,eAAe,CAAC,MAAM;SAC/B,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,IAAI,CAAC;YACf,MAAM,EAAE,sFAAsF;YAC9F,IAAI,EAAE,gDAAgD;YACtD,MAAM,EAAE,6CAA6C,UAAU,YAAY,cAAc,CACvF,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACtD,KAAK,CACN,EAAE;YACH,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,8EAA8E;SACxF,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,aAAa,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,WAAW,CAAC,IAAI,CAAC;YACf,MAAM,EACJ,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;gBAChD,CAAC,CAAC,+EAA+E;gBACjF,CAAC,CAAC,mDAAmD;YACzD,IAAI,EAAE,0CAA0C;YAChD,MAAM,EAAE,6CAA6C,UAAU,kBAAkB,QAAQ,CAAC,MAAM,GAAG;YACnG,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,8EAA8E;SACxF,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,OAAgB,CAAC;IACrB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,qDAAqD;YAC3D,MAAM,EAAE,gDAAgD,UAAU,sBAAsB;YACxF,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,qFAAqF;SAC/F,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,6CAA6C,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAChF,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,qDAAqD;YAC3D,MAAM,EAAE,gDAAgD,UAAU,yDAAyD,cAAc,CACvI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,sBAAsB,EACzD,KAAK,CACN,EAAE;YACH,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,0FAA0F;SACpG,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,SAAS,wBAAwB,CAC/B,QAAiD,EACjD,WAAmB,EACnB,WAAkC;IAElC,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;QACzD,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,4CAA4C;YAClD,MAAM,EAAE,OAAO;YACf,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,yDAAyD;SACnE,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,WAAW;QACX,cAAc,EAAE,QAAQ,CAAC,gBAAgB,CAAC,eAAe;QACzD,eAAe,EAAE,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,iBAAiB,CAAC;QACjE,WAAW;QACX,UAAU,EAAE,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,GAAG,CAAC,yBAAyB,CAAC;QAC/E,SAAS,EAAE,QAAQ,CAAC,UAAU;QAC9B,MAAM,EAAE,gBAAgB;QACxB,cAAc,EAAE,kCAAkC;QAClD,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,QAAQ,EAAE,EAAE;KACb,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAChC,KAAsD;IAEtD,OAAO;QACL,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,eAAe,IAAI,IAAI;QACrD,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC,mBAAmB,IAAI,SAAS;QACjE,gBAAgB,EAAE;YAChB,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,uBAAuB,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;SAC/F;QACD,gBAAgB,EAAE,KAAK,CAAC,OAAO,CAAC,iBAAiB,IAAI,IAAI;QACzD,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,cAAc,IAAI,EAAE;QACjD,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,cAAc,IAAI,SAAS;QACxD,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE;QAC7C,WAAW,EAAE,KAAK,CAAC,YAAY;QAC/B,kBAAkB,EAAE,KAAK,CAAC,mBAAmB;KAC9C,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,WAAmB,EACnB,WAAkC;IAElC,MAAM,aAAa,GAAG,MAAM,6BAA6B,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACpF,MAAM,UAAU,GAAkC,EAAE,CAAC;IACrD,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAE1B,KAAK,MAAM,QAAQ,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,MAAM,EAAE,CAAC;YACX,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,iBAAiB,IAAI,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,IAAI,iBAAiB,GAAG,CAAC,EAAE,CAAC;QAC1B,WAAW,CAAC,IAAI,CAAC;YACf,MAAM,EAAE,iFAAiF;YACzF,IAAI,EAAE,kDAAkD;YACxD,MAAM,EAAE,GAAG,iBAAiB,sBAC1B,iBAAiB,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAC1C,mDAAmD;YACnD,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,SAAS;YACnB,OAAO,EAAE,qEAAqE;SAC/E,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,WAAW;QACX,cAAc,EAAE,aAAa,CAAC,cAAc;QAC5C,eAAe,EAAE,IAAI;QACrB,WAAW;QACX,UAAU;QACV,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,SAAS;QACjB,cAAc,EAAE,kCAAkC;QAClD,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,0BAA0B,EAAE;KACvC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,6BAA6B,CAC1C,WAAmB,EACnB,WAAkC;IAElC,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,KAAK,GAAG,KAA8B,CAAC;QAC7C,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,KAAK,CAAC;QACd,CAAC;QACD,WAAW,CAAC,IAAI,CAAC;YACf,MAAM,EAAE,iFAAiF;YACzF,IAAI,EAAE,4CAA4C;YAClD,MAAM,EACJ,qHAAqH;YACvH,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,sCAAsC;SAChD,CAAC,CAAC;QACH,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC/C,CAAC;IAED,IAAI,UAAmB,CAAC;IACxB,IAAI,CAAC;QACH,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,WAAW,CAAC,IAAI,CAAC;YACf,MAAM,EAAE,iFAAiF;YACzF,IAAI,EAAE,8CAA8C;YACpD,MAAM,EAAE,2DACN,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACvD,EAAE;YACF,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,wCAAwC;SAClD,CAAC,CAAC;QACH,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC/C,CAAC;IAED,MAAM,MAAM,GAAG,mCAAmC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACzE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,WAAW,CAAC,IAAI,CAAC;YACf,MAAM,EAAE,iFAAiF;YACzF,IAAI,EAAE,8CAA8C;YACpD,MAAM,EAAE,0GACN,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,sBACrC,EAAE;YACF,IAAI,EAAE,WAAW;YACjB,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,wCAAwC;SAClD,CAAC,CAAC;QACH,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC/C,CAAC;IAED,OAAO;QACL,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI;QACnD,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU;KAChC,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAiB;IAC5C,IAAI,OAAO,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,QAAmC,CAAC;IAClD,MAAM,WAAW,GAAG,kBAAkB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAC3D,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,cAAc,EAAE,mBAAmB,CAAC,KAAK,CAAC,eAAe,CAAC;QAC1D,iBAAiB,EAAE,aAAa,CAAC,KAAK,CAAC,mBAAmB,EAAE,0BAA0B,CAAC;QACvF,gBAAgB,EAAE,IAAI;QACtB,gBAAgB,EAAE,mBAAmB,CAAC,KAAK,CAAC,iBAAiB,CAAC;QAC9D,aAAa,EAAE,qBAAqB,CAAC,KAAK,CAAC,cAAc,CAAC;QAC1D,aAAa,EAAE,aAAa,CAAC,KAAK,CAAC,cAAc,EAAE,qBAAqB,CAAC;QACzE,MAAM,EAAE,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,SAAS;QACrD,WAAW,EAAE,qBAAqB,CAAC,KAAK,CAAC,YAAY,CAAC;QACtD,WAAW;QACX,kBAAkB,EAAE,SAAS;KAC9B,CAAC;AACJ,CAAC;AAED,SAAS,0BAA0B;IACjC,OAAO;QACL;YACE,MAAM,EACJ,wJAAwJ;YAC1J,EAAE,EAAE,+BAA+B;YACnC,SAAS,EACP,sIAAsI;SACzI;QACD;YACE,MAAM,EACJ,uLAAuL;YACzL,EAAE,EAAE,2BAA2B;YAC/B,SAAS,EACP,mIAAmI;SACtI;KACF,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CACpB,KAAc,EACd,OAAgB;IAEhB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAK,OAA6B,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAChF,OAAO,KAAwB,CAAC;IAClC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc;IACzC,OAAO,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACnD,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAc;IAC3C,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAChD,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACtE,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAoB;IAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACjD,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC;AAED,KAAK,UAAU,0BAA0B,CAAC,WAA0B;IAClE,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,4BAA4B,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QACvE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,MAAc,EAAE,KAAa;IACnD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC5E,CAAC"}
@@ -11,6 +11,7 @@ export type WorkspaceMcpCliOptions = {
11
11
  stdout?: Writable;
12
12
  };
13
13
  export declare function createWorkspaceMcpServer(options: {
14
+ fetchImpl?: typeof globalThis.fetch;
14
15
  loadContext: () => Promise<WorkspaceContext>;
15
16
  loadLocalRuntimeContext: () => Promise<LocalRuntimeStatusContext>;
16
17
  }): McpServer;
@@ -1,7 +1,8 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
3
3
  import { collectCapabilityInventory, collectDeployStatus, collectLocalRuntimeStatus, collectSchemaStatus, collectWorkspaceDoctor, collectWorkspaceSnapshot, getWorkspaceMcpToolDescription, loadLocalRuntimeStatusContext, loadWorkspaceContext, parseWorkspaceMcpCliArgs, renderWorkspaceMcpHelp, } from "./context.js";
4
- import { CapabilityInventorySchema, DeployStatusSchema, LocalRuntimeStatusSchema, SchemaStatusSchema, WorkspaceDoctorSchema, WorkspaceSnapshotSchema, } from "./types.js";
4
+ import { collectRuntimePrimitiveStatus } from "./primitive-status.js";
5
+ import { CapabilityInventorySchema, DeployStatusSchema, LocalRuntimeStatusSchema, RuntimePrimitiveStatusSchema, SchemaStatusSchema, WorkspaceDoctorSchema, WorkspaceSnapshotSchema, } from "./types.js";
5
6
  export function createWorkspaceMcpServer(options) {
6
7
  const server = new McpServer({
7
8
  name: "minutework-workspace-mcp",
@@ -37,6 +38,13 @@ export function createWorkspaceMcpServer(options) {
37
38
  inputSchema: {},
38
39
  outputSchema: CapabilityInventorySchema.shape,
39
40
  }, async () => createStructuredToolResult(collectCapabilityInventory(await options.loadContext())));
41
+ server.registerTool("minutework_runtime_primitive_status", {
42
+ description: getWorkspaceMcpToolDescription("minutework_runtime_primitive_status"),
43
+ inputSchema: {},
44
+ outputSchema: RuntimePrimitiveStatusSchema.shape,
45
+ }, async () => createStructuredToolResult(await collectRuntimePrimitiveStatus(await options.loadContext(), {
46
+ fetchImpl: options.fetchImpl,
47
+ })));
40
48
  return server;
41
49
  }
42
50
  export async function runWorkspaceMcpCli(options = {}) {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -1603,6 +1603,108 @@ export declare const CapabilityInventorySchema: z.ZodObject<{
1603
1603
  }, z.core.$strip>>;
1604
1604
  workspaceRoot: z.ZodString;
1605
1605
  }, z.core.$strip>;
1606
+ export declare const RUNTIME_PRIMITIVE_THREE_LAYER_RULE = "Catalogued != executor-wired != agent-exposed: catalog membership never implies a primitive can execute today or that any agent can call it.";
1607
+ export declare const RuntimePrimitiveExecutorReadySchema: z.ZodEnum<{
1608
+ live: "live";
1609
+ unknown: "unknown";
1610
+ partial: "partial";
1611
+ none: "none";
1612
+ }>;
1613
+ export declare const RuntimePrimitiveAgentExposurePathSchema: z.ZodEnum<{
1614
+ unknown: "unknown";
1615
+ none: "none";
1616
+ native_tool: "native_tool";
1617
+ app_pack_action: "app_pack_action";
1618
+ }>;
1619
+ export declare const RuntimePrimitiveRegistrationStatusSchema: z.ZodEnum<{
1620
+ missing: "missing";
1621
+ unknown: "unknown";
1622
+ active: "active";
1623
+ inactive: "inactive";
1624
+ }>;
1625
+ export declare const RuntimePrimitiveStatusEntrySchema: z.ZodObject<{
1626
+ agentExposable: z.ZodNullable<z.ZodBoolean>;
1627
+ agentExposurePath: z.ZodEnum<{
1628
+ unknown: "unknown";
1629
+ none: "none";
1630
+ native_tool: "native_tool";
1631
+ app_pack_action: "app_pack_action";
1632
+ }>;
1633
+ agentsWithAccess: z.ZodNullable<z.ZodArray<z.ZodString>>;
1634
+ approvalRequired: z.ZodNullable<z.ZodBoolean>;
1635
+ executorNotes: z.ZodString;
1636
+ executorReady: z.ZodEnum<{
1637
+ live: "live";
1638
+ unknown: "unknown";
1639
+ partial: "partial";
1640
+ none: "none";
1641
+ }>;
1642
+ family: z.ZodString;
1643
+ interimPath: z.ZodString;
1644
+ primitiveId: z.ZodString;
1645
+ registrationStatus: z.ZodEnum<{
1646
+ missing: "missing";
1647
+ unknown: "unknown";
1648
+ active: "active";
1649
+ inactive: "inactive";
1650
+ }>;
1651
+ }, z.core.$strip>;
1652
+ export declare const RuntimePrimitiveStatusSchema: z.ZodObject<{
1653
+ catalogPath: z.ZodString;
1654
+ catalogVersion: z.ZodNullable<z.ZodString>;
1655
+ defaultToolRing: z.ZodNullable<z.ZodArray<z.ZodString>>;
1656
+ diagnostics: z.ZodArray<z.ZodObject<{
1657
+ action: z.ZodOptional<z.ZodString>;
1658
+ code: z.ZodString;
1659
+ detail: z.ZodString;
1660
+ path: z.ZodOptional<z.ZodString>;
1661
+ severity: z.ZodEnum<{
1662
+ info: "info";
1663
+ warning: "warning";
1664
+ error: "error";
1665
+ }>;
1666
+ summary: z.ZodString;
1667
+ }, z.core.$strip>>;
1668
+ primitives: z.ZodArray<z.ZodObject<{
1669
+ agentExposable: z.ZodNullable<z.ZodBoolean>;
1670
+ agentExposurePath: z.ZodEnum<{
1671
+ unknown: "unknown";
1672
+ none: "none";
1673
+ native_tool: "native_tool";
1674
+ app_pack_action: "app_pack_action";
1675
+ }>;
1676
+ agentsWithAccess: z.ZodNullable<z.ZodArray<z.ZodString>>;
1677
+ approvalRequired: z.ZodNullable<z.ZodBoolean>;
1678
+ executorNotes: z.ZodString;
1679
+ executorReady: z.ZodEnum<{
1680
+ live: "live";
1681
+ unknown: "unknown";
1682
+ partial: "partial";
1683
+ none: "none";
1684
+ }>;
1685
+ family: z.ZodString;
1686
+ interimPath: z.ZodString;
1687
+ primitiveId: z.ZodString;
1688
+ registrationStatus: z.ZodEnum<{
1689
+ missing: "missing";
1690
+ unknown: "unknown";
1691
+ active: "active";
1692
+ inactive: "inactive";
1693
+ }>;
1694
+ }, z.core.$strip>>;
1695
+ runtimeId: z.ZodNullable<z.ZodString>;
1696
+ source: z.ZodEnum<{
1697
+ linked_runtime: "linked_runtime";
1698
+ catalog: "catalog";
1699
+ }>;
1700
+ threeLayerRule: z.ZodLiteral<"Catalogued != executor-wired != agent-exposed: catalog membership never implies a primitive can execute today or that any agent can call it.">;
1701
+ tier: z.ZodNullable<z.ZodLiteral<"sandbox">>;
1702
+ unknowns: z.ZodArray<z.ZodObject<{
1703
+ detail: z.ZodString;
1704
+ id: z.ZodString;
1705
+ nextCheck: z.ZodNullable<z.ZodString>;
1706
+ }, z.core.$strip>>;
1707
+ }, z.core.$strip>;
1606
1708
  export declare const WorkspaceDoctorSchema: z.ZodObject<{
1607
1709
  diagnostics: z.ZodArray<z.ZodObject<{
1608
1710
  action: z.ZodOptional<z.ZodString>;
@@ -1648,4 +1750,6 @@ export type PreviewDeployTerminalReceiptState = z.infer<typeof PreviewDeployTerm
1648
1750
  export type PreviewDeployState = z.infer<typeof PreviewDeployStateSchema>;
1649
1751
  export type DeployCompiledRelease = z.infer<typeof DeployCompiledReleaseSchema>;
1650
1752
  export type DeployStatus = z.infer<typeof DeployStatusSchema>;
1753
+ export type RuntimePrimitiveStatus = z.infer<typeof RuntimePrimitiveStatusSchema>;
1754
+ export type RuntimePrimitiveStatusEntry = z.infer<typeof RuntimePrimitiveStatusEntrySchema>;
1651
1755
  export type WorkspaceDoctor = z.infer<typeof WorkspaceDoctorSchema>;
@@ -424,6 +424,44 @@ export const CapabilityInventorySchema = z.object({
424
424
  unknowns: z.array(CapabilityInventoryUnknownSchema),
425
425
  workspaceRoot: z.string(),
426
426
  });
427
+ export const RUNTIME_PRIMITIVE_THREE_LAYER_RULE = "Catalogued != executor-wired != agent-exposed: catalog membership never implies a primitive can execute today or that any agent can call it.";
428
+ export const RuntimePrimitiveExecutorReadySchema = z.enum(["live", "partial", "none", "unknown"]);
429
+ export const RuntimePrimitiveAgentExposurePathSchema = z.enum([
430
+ "native_tool",
431
+ "app_pack_action",
432
+ "none",
433
+ "unknown",
434
+ ]);
435
+ export const RuntimePrimitiveRegistrationStatusSchema = z.enum([
436
+ "active",
437
+ "inactive",
438
+ "missing",
439
+ "unknown",
440
+ ]);
441
+ export const RuntimePrimitiveStatusEntrySchema = z.object({
442
+ agentExposable: z.boolean().nullable(),
443
+ agentExposurePath: RuntimePrimitiveAgentExposurePathSchema,
444
+ agentsWithAccess: z.array(z.string()).nullable(),
445
+ approvalRequired: z.boolean().nullable(),
446
+ executorNotes: z.string(),
447
+ executorReady: RuntimePrimitiveExecutorReadySchema,
448
+ family: z.string(),
449
+ interimPath: z.string(),
450
+ primitiveId: z.string(),
451
+ registrationStatus: RuntimePrimitiveRegistrationStatusSchema,
452
+ });
453
+ export const RuntimePrimitiveStatusSchema = z.object({
454
+ catalogPath: z.string(),
455
+ catalogVersion: z.string().nullable(),
456
+ defaultToolRing: z.array(z.string()).nullable(),
457
+ diagnostics: z.array(WorkspaceDiagnosticSchema),
458
+ primitives: z.array(RuntimePrimitiveStatusEntrySchema),
459
+ runtimeId: z.string().nullable(),
460
+ source: z.enum(["linked_runtime", "catalog"]),
461
+ threeLayerRule: z.literal(RUNTIME_PRIMITIVE_THREE_LAYER_RULE),
462
+ tier: z.literal("sandbox").nullable(),
463
+ unknowns: z.array(CapabilityInventoryUnknownSchema),
464
+ });
427
465
  export const WorkspaceDoctorSchema = z.object({
428
466
  diagnostics: z.array(WorkspaceDiagnosticSchema),
429
467
  recommendedActions: z.array(z.string()),