wicked-crew 0.9.13 → 0.10.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.
- package/dist/api/job-title.d.ts +24 -0
- package/dist/api/job-title.d.ts.map +1 -0
- package/dist/api/job-title.js +97 -0
- package/dist/api/job-title.js.map +1 -0
- package/dist/api/mcp.d.ts +26 -6
- package/dist/api/mcp.d.ts.map +1 -1
- package/dist/api/mcp.js +87 -10
- package/dist/api/mcp.js.map +1 -1
- package/dist/api/routes.d.ts.map +1 -1
- package/dist/api/routes.js +32 -2
- package/dist/api/routes.js.map +1 -1
- package/dist/api/run-timing-index.d.ts +23 -1
- package/dist/api/run-timing-index.d.ts.map +1 -1
- package/dist/api/run-timing-index.js +66 -1
- package/dist/api/run-timing-index.js.map +1 -1
- package/dist/api/seat-record.d.ts +1 -1
- package/dist/api/seat-record.js +1 -1
- package/dist/api/server.js +1 -1
- package/dist/api/server.js.map +1 -1
- package/dist/editors/registry.d.ts +11 -11
- package/dist/editors/registry.d.ts.map +1 -1
- package/dist/editors/registry.js +1 -0
- package/dist/editors/registry.js.map +1 -1
- package/dist/editors/routes.d.ts +19 -1
- package/dist/editors/routes.d.ts.map +1 -1
- package/dist/editors/routes.js +85 -7
- package/dist/editors/routes.js.map +1 -1
- package/dist/mcp/broker.d.ts.map +1 -1
- package/dist/mcp/broker.js +17 -0
- package/dist/mcp/broker.js.map +1 -1
- package/dist/mcp/classify.d.ts +12 -2
- package/dist/mcp/classify.d.ts.map +1 -1
- package/dist/mcp/classify.js +5 -2
- package/dist/mcp/classify.js.map +1 -1
- package/dist/mcp/policies.d.ts +10 -1
- package/dist/mcp/policies.d.ts.map +1 -1
- package/dist/mcp/policies.js +16 -4
- package/dist/mcp/policies.js.map +1 -1
- package/dist/mcp/probe.d.ts +2 -0
- package/dist/mcp/probe.d.ts.map +1 -1
- package/dist/mcp/probe.js.map +1 -1
- package/dist/mcp/registry-store.d.ts +6 -0
- package/dist/mcp/registry-store.d.ts.map +1 -1
- package/dist/mcp/registry-store.js.map +1 -1
- package/dist/mcp/registry.d.ts +83 -7
- package/dist/mcp/registry.d.ts.map +1 -1
- package/dist/mcp/registry.js +213 -24
- package/dist/mcp/registry.js.map +1 -1
- package/dist/mcp/rest.d.ts +29 -2
- package/dist/mcp/rest.d.ts.map +1 -1
- package/dist/mcp/rest.js +123 -2
- package/dist/mcp/rest.js.map +1 -1
- package/dist/mcp-inspect/routes.d.ts +55 -0
- package/dist/mcp-inspect/routes.d.ts.map +1 -0
- package/dist/mcp-inspect/routes.js +268 -0
- package/dist/mcp-inspect/routes.js.map +1 -0
- package/dist/mcp-inspect/session.d.ts +153 -0
- package/dist/mcp-inspect/session.d.ts.map +1 -0
- package/dist/mcp-inspect/session.js +487 -0
- package/dist/mcp-inspect/session.js.map +1 -0
- package/dist/projects/state-home.d.ts +2 -1
- package/dist/projects/state-home.d.ts.map +1 -1
- package/dist/projects/state-home.js +34 -4
- package/dist/projects/state-home.js.map +1 -1
- package/endpoint-manifest.json +56 -2
- package/package.json +2 -2
package/dist/api/routes.js
CHANGED
|
@@ -82,6 +82,7 @@ import { UsageError, replayOutboxInto } from '../cli/governance.js';
|
|
|
82
82
|
import { foldDeadletters } from './governance-health.js';
|
|
83
83
|
import { RetryIndex } from './retry-index.js';
|
|
84
84
|
import { SEAT_RECORD_DEFAULT_DAYS, SEAT_RECORD_MAX_DAYS, seatRecord } from './seat-record.js';
|
|
85
|
+
import { jobTitle } from './job-title.js';
|
|
85
86
|
import { DeliveryFreeze, frozenRefusal, isDeliverUnit, registerDeliveryFreezeRoutes } from './delivery-freeze.js';
|
|
86
87
|
import { GroupIndex } from './group-index.js';
|
|
87
88
|
import { RunTimingIndex, recordRunLaunched } from './run-timing-index.js';
|
|
@@ -103,6 +104,7 @@ import { ConsiderationService } from '../decisions/consider.js';
|
|
|
103
104
|
import { gardenConformance, gardenPackCheck } from '../editors/pack-install.js';
|
|
104
105
|
import { EditorRegistry } from '../editors/registry.js';
|
|
105
106
|
import { registerEditorRoutes } from '../editors/routes.js';
|
|
107
|
+
import { registerMcpInspectRoutes } from '../mcp-inspect/routes.js';
|
|
106
108
|
import { discoverLivePlugin } from '../skills/plugin-source.js';
|
|
107
109
|
import { resolveDecisionsMode } from '../decisions/types.js';
|
|
108
110
|
const V = API_PREFIX;
|
|
@@ -744,6 +746,13 @@ runtime = {}) {
|
|
|
744
746
|
return;
|
|
745
747
|
await deliveryResolver.settle(views, runtime.deliverySettleMs);
|
|
746
748
|
};
|
|
749
|
+
// crew#985: terminal runs with no `run.ended` entry are dated from the engine's event log before
|
|
750
|
+
// the DTO is assembled (read-only, once per run per process; see `backfillEndedFromEvents`).
|
|
751
|
+
const backfillEndedAt = async (views) => {
|
|
752
|
+
if (typeof adapter.runEvents !== 'function')
|
|
753
|
+
return;
|
|
754
|
+
await runTimingIndex.backfillEndedFromEvents(views, (id) => adapter.runEvents(id));
|
|
755
|
+
};
|
|
747
756
|
const deliveryCache = runtime.deliveryCache ??
|
|
748
757
|
new DeliveryDerivationCache({
|
|
749
758
|
listViews: () => adapter.sessionsDetail(),
|
|
@@ -925,6 +934,9 @@ runtime = {}) {
|
|
|
925
934
|
// Wave 6 (F-4R2-006): the interactive document this run answered, from the seams' handoff
|
|
926
935
|
// ledgers — `null` = genuinely not a document run, so the field is ALWAYS present on served runs.
|
|
927
936
|
view.session.document_id = docRuns.documentOf(view.session.id) ?? null;
|
|
937
|
+
// api-types 0.113.0 (operator ruling 2026-10-12): the run's short job title, derived here from its
|
|
938
|
+
// own problem (pure, `job-title.ts`) so every skin shows the same one; the full text stays `problem`.
|
|
939
|
+
view.session.title = jobTitle(view.session.problem);
|
|
928
940
|
const retryOf = retryIndex.retryOfFor(view.session.id);
|
|
929
941
|
if (retryOf !== undefined)
|
|
930
942
|
view.session.retry_of = retryOf;
|
|
@@ -1281,7 +1293,17 @@ runtime = {}) {
|
|
|
1281
1293
|
}
|
|
1282
1294
|
days = n;
|
|
1283
1295
|
}
|
|
1284
|
-
|
|
1296
|
+
// api-types 0.113.0: `?project=<id>` folds only that project's runs (the dashboards' spend);
|
|
1297
|
+
// the answer echoes it, so a skin can tell a scoped answer from an older daemon's global one.
|
|
1298
|
+
const rawProject = req.query.project;
|
|
1299
|
+
if (rawProject !== undefined && (Array.isArray(rawProject) || rawProject.trim() === '')) {
|
|
1300
|
+
return reply.code(400).send({ error: 'Invalid ?project — expected one project id' });
|
|
1301
|
+
}
|
|
1302
|
+
const project = rawProject?.trim();
|
|
1303
|
+
const detail = await adapter.sessionsDetail();
|
|
1304
|
+
await backfillEndedAt(detail);
|
|
1305
|
+
const all = detail.map(decorateRun);
|
|
1306
|
+
const views = project === undefined ? all : all.filter((v) => v.session.project_id === project);
|
|
1285
1307
|
const out = await seatRecord(views, async (id) => {
|
|
1286
1308
|
const engine = await adapter.runEvents(id);
|
|
1287
1309
|
if (engine === null)
|
|
@@ -1292,7 +1314,7 @@ runtime = {}) {
|
|
|
1292
1314
|
if (out === null) {
|
|
1293
1315
|
return reply.code(503).send({ error: 'Seat records are unavailable: this wicked-core build has no event-log read binding' });
|
|
1294
1316
|
}
|
|
1295
|
-
return out;
|
|
1317
|
+
return project === undefined ? out : { ...out, project };
|
|
1296
1318
|
});
|
|
1297
1319
|
// Open a file/folder with the OS default application (crew#273) — the studio Files tab's
|
|
1298
1320
|
// click-to-open. The open MUST happen daemon-side (the SPA cannot spawn a process), which is
|
|
@@ -2174,6 +2196,7 @@ runtime = {}) {
|
|
|
2174
2196
|
const ordered = sortActionableFirst(visible);
|
|
2175
2197
|
const served = cap !== undefined ? ordered.slice(0, cap) : ordered;
|
|
2176
2198
|
await settleDeliveries(served);
|
|
2199
|
+
await backfillEndedAt(served);
|
|
2177
2200
|
return { runs: served.map(decorateRun) };
|
|
2178
2201
|
});
|
|
2179
2202
|
// ── Run archival (crew#265) — write-off, not delete ────────────────────────
|
|
@@ -2235,6 +2258,7 @@ runtime = {}) {
|
|
|
2235
2258
|
if (!run)
|
|
2236
2259
|
return reply.code(404).send({ error: 'Run not found' });
|
|
2237
2260
|
await settleDeliveries([run]);
|
|
2261
|
+
await backfillEndedAt([run]);
|
|
2238
2262
|
return { run: decorateRun(run) };
|
|
2239
2263
|
});
|
|
2240
2264
|
// ── Inventory claims (crew#721) — whether each enumerating step's list is complete ──
|
|
@@ -5939,6 +5963,12 @@ runtime = {}) {
|
|
|
5939
5963
|
previewCalls: (json) => adapter.previewMcpCalls(json),
|
|
5940
5964
|
})
|
|
5941
5965
|
: undefined;
|
|
5966
|
+
// The MCP inspector bridge (DES-MCP-INSPECTOR-001): live sessions to MCP servers for studio's
|
|
5967
|
+
// `mcp-server` editor host; registry servers resolve through the same registry and secrets.
|
|
5968
|
+
registerMcpInspectRoutes(app, {
|
|
5969
|
+
...(runtime.mcp !== undefined ? { registry: runtime.mcp } : {}),
|
|
5970
|
+
log: (m) => app.log.info(m),
|
|
5971
|
+
});
|
|
5942
5972
|
registerMcpRoutes(app, {
|
|
5943
5973
|
...(runtime.mcp !== undefined ? { registry: runtime.mcp, toolLister: () => CoreAdapter.mcpToolLister() } : {}),
|
|
5944
5974
|
...(runtime.mcpBroker !== undefined ? { broker: runtime.mcpBroker } : {}),
|