@hotmeshio/long-tail 0.28.0 → 0.28.2
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/build/api/files.d.ts +5 -0
- package/build/api/files.js +19 -2
- package/build/api/knowledge.d.ts +3 -1
- package/build/lib/db/schemas/042_knowledge_edition_labels.sql +9 -0
- package/build/lib/events/publish.js +3 -2
- package/build/lib/machines/line.d.ts +3 -0
- package/build/lib/machines/line.js +7 -1
- package/build/lib/machines/protocol/codec.d.ts +6 -0
- package/build/lib/machines/protocol/codec.js +1 -1
- package/build/lib/machines/protocol/contract.d.ts +2 -0
- package/build/lib/machines/protocol/contract.js +12 -7
- package/build/lib/machines/site/mosquitto-conf.d.ts +7 -3
- package/build/lib/machines/site/mosquitto-conf.js +3 -8
- package/build/lib/machines/site/site-conf.d.ts +4 -1
- package/build/lib/machines/site/site-conf.js +5 -1
- package/build/lib/machines/transport/nats-bus.d.ts +4 -0
- package/build/lib/machines/transport/stream-bus.d.ts +7 -1
- package/build/lib/machines/transport/stream-bus.js +20 -6
- package/build/lib/machines/transport/streams.d.ts +11 -2
- package/build/lib/machines/transport/streams.js +33 -5
- package/build/lib/messaging/memory.js +10 -3
- package/build/lib/messaging/nats/permissions.js +1 -0
- package/build/lib/messaging/nats/streams.d.ts +21 -4
- package/build/lib/messaging/nats/streams.js +71 -10
- package/build/lib/storage/local.d.ts +2 -0
- package/build/lib/storage/local.js +3 -0
- package/build/lib/storage/s3.d.ts +3 -2
- package/build/lib/storage/s3.js +6 -1
- package/build/lib/storage/types.d.ts +7 -1
- package/build/routes/file-browser.js +3 -1
- package/build/routes/knowledge.js +6 -5
- package/build/routes/machines.js +33 -0
- package/build/services/knowledge/index.d.ts +4 -2
- package/build/services/knowledge/index.js +8 -2
- package/build/services/knowledge/lookup-cache.d.ts +8 -0
- package/build/services/knowledge/lookup-cache.js +30 -3
- package/build/services/knowledge/lookup-refs.js +1 -1
- package/build/services/knowledge/sql.d.ts +4 -2
- package/build/services/knowledge/sql.js +8 -3
- package/build/services/machines/config.d.ts +2 -0
- package/build/services/machines/config.js +1 -0
- package/build/services/machines/contracts.d.ts +18 -0
- package/build/services/machines/contracts.js +15 -1
- package/build/services/machines/forms.d.ts +26 -1
- package/build/services/machines/forms.js +17 -1
- package/build/services/machines/gateway/actions.d.ts +13 -1
- package/build/services/machines/gateway/admission.d.ts +15 -1
- package/build/services/machines/gateway/admission.js +47 -0
- package/build/services/machines/gateway/api-escalations.js +4 -0
- package/build/services/machines/gateway/dispatcher.d.ts +9 -4
- package/build/services/machines/gateway/dispatcher.js +42 -14
- package/build/services/machines/gateway/executor.d.ts +2 -0
- package/build/services/machines/gateway/executor.js +18 -2
- package/build/services/machines/gateway/gateway.d.ts +5 -0
- package/build/services/machines/gateway/gateway.js +11 -3
- package/build/services/machines/gateway/log.d.ts +3 -0
- package/build/services/machines/gateway/log.js +3 -0
- package/build/services/machines/gateway/lt-http.js +11 -2
- package/build/services/machines/gateway/pacing.js +1 -1
- package/build/services/machines/gateway/plan-machine.js +26 -11
- package/build/services/machines/gateway/plan-shared.d.ts +5 -3
- package/build/services/machines/gateway/plan-shared.js +6 -4
- package/build/services/machines/gateway/reply-waiter.d.ts +2 -0
- package/build/services/machines/gateway/state.d.ts +24 -1
- package/build/services/machines/gateway/state.js +67 -6
- package/build/services/machines/gateway/wire-window.d.ts +21 -0
- package/build/services/machines/gateway/wire-window.js +61 -0
- package/build/services/machines/gateway/wire.js +1 -0
- package/build/services/machines/leadership.d.ts +2 -0
- package/build/services/machines/leadership.js +7 -1
- package/build/services/machines/roles.d.ts +5 -4
- package/build/services/machines/roles.js +13 -4
- package/build/services/machines/select.d.ts +3 -2
- package/build/services/machines/select.js +4 -3
- package/build/services/machines/surface.d.ts +10 -1
- package/build/services/machines/surface.js +27 -5
- package/build/system/activities/knowledge.d.ts +4 -0
- package/build/system/activities/knowledge.js +15 -0
- package/build/system/activities/sql.d.ts +2 -0
- package/build/system/activities/sql.js +6 -1
- package/build/system/mcp-servers/knowledge.js +4 -2
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/types/escalation.d.ts +9 -6
- package/build/types/escalation.js +8 -2
- package/build/types/machines-view.d.ts +16 -0
- package/build/types/machines.d.ts +1 -0
- package/build/types/messaging.d.ts +7 -1
- package/build/types/startup.d.ts +2 -0
- package/docs/dashboard.md +1 -1
- package/docs/hitl/lookups.md +6 -4
- package/docs/machines.md +26 -17
- package/package.json +1 -1
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
*/
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.MachineSurface = void 0;
|
|
13
|
+
exports.codecFor = codecFor;
|
|
13
14
|
exports.surfaceConfig = surfaceConfig;
|
|
14
15
|
exports.summarizeLine = summarizeLine;
|
|
15
16
|
exports.commandOpsOf = commandOpsOf;
|
|
@@ -23,6 +24,10 @@ const log_1 = require("./gateway/log");
|
|
|
23
24
|
const identities_1 = require("./identities");
|
|
24
25
|
const leadership_1 = require("./leadership");
|
|
25
26
|
const select_1 = require("./select");
|
|
27
|
+
/** The codec a line runs on: its own, the surface's, or the generic line protocol. */
|
|
28
|
+
function codecFor(opts, config, line) {
|
|
29
|
+
return opts.codecs?.[keyOf(line.siteId, line.lineId)] ?? opts.codec ?? (0, select_1.defaultCodec)(config, line);
|
|
30
|
+
}
|
|
26
31
|
/** Inside Long Tail the gateway reads escalation events in process. */
|
|
27
32
|
function surfaceConfig(env) {
|
|
28
33
|
const transport = env.MACHINE_TRANSPORT;
|
|
@@ -51,15 +56,18 @@ function commandOpsOf(codec) {
|
|
|
51
56
|
return [...new Set([...protocol_1.CONTROL_OPS, protocol_1.OP.SNAPSHOT, ...(0, protocol_1.declaredRowOps)(codec)])];
|
|
52
57
|
}
|
|
53
58
|
class LineRun {
|
|
54
|
-
constructor(line, config, opts, log
|
|
59
|
+
constructor(line, config, opts, log,
|
|
60
|
+
/** The codecs of every line on this line's site, read when the gateway starts. */
|
|
61
|
+
siteCodecs = () => []) {
|
|
55
62
|
this.line = line;
|
|
56
63
|
this.config = config;
|
|
57
64
|
this.opts = opts;
|
|
58
65
|
this.log = log;
|
|
66
|
+
this.siteCodecs = siteCodecs;
|
|
59
67
|
this.ready = false;
|
|
60
68
|
this.stopped = false;
|
|
61
69
|
this.leadership = new leadership_1.LineLeadership(`lt-machine-line:${line.siteId}/${line.lineId}`);
|
|
62
|
-
this.codec = opts
|
|
70
|
+
this.codec = codecFor(opts, config, line);
|
|
63
71
|
}
|
|
64
72
|
start() {
|
|
65
73
|
const where = { site: this.line.siteId, line: this.line.lineId };
|
|
@@ -95,8 +103,14 @@ class LineRun {
|
|
|
95
103
|
return id;
|
|
96
104
|
};
|
|
97
105
|
const { config, line, codec } = this;
|
|
106
|
+
const where = { site: line.siteId, line: line.lineId };
|
|
107
|
+
// A wire that stops delivering ends this turn: the gateway stops, the line contends again and ensures its streams anew.
|
|
108
|
+
const onLost = (reason) => {
|
|
109
|
+
this.log.warn(log_1.GATEWAY_LOG.WIRE_LOST, { ...where, reason });
|
|
110
|
+
this.leadership.relinquish(`wire lost: ${reason}`);
|
|
111
|
+
};
|
|
98
112
|
this.gateway = new gateway_1.MachineGateway({
|
|
99
|
-
bus: (0, select_1.createMachineBus)(config, line, codec),
|
|
113
|
+
bus: (0, select_1.createMachineBus)(config, line, codec, undefined, this.siteCodecs(), onLost),
|
|
100
114
|
codec,
|
|
101
115
|
rows: this.opts.rows,
|
|
102
116
|
feed: (0, select_1.createEscalationFeed)(config, line, this.opts.callbacks),
|
|
@@ -108,11 +122,12 @@ class LineRun {
|
|
|
108
122
|
topicRoot: config.topicRoot, replyTimeoutMs: config.replyTimeoutMs, dispatchAttempts: config.dispatchAttempts,
|
|
109
123
|
offlineDebounceMs: config.offlineDebounceMs, dispatchTtlMs: config.dispatchTtlMs, quietMs: config.quietMs,
|
|
110
124
|
receiptDelayMs: config.receiptDelayMs, lifecycle: config.lifecycle, progressStep: config.progressStep, wireTelemetry: config.wireTelemetry,
|
|
125
|
+
wireWindow: config.wireWindow,
|
|
111
126
|
},
|
|
112
127
|
});
|
|
113
128
|
await this.gateway.start();
|
|
114
129
|
this.ready = true;
|
|
115
|
-
this.log.info(log_1.GATEWAY_LOG.LEADING,
|
|
130
|
+
this.log.info(log_1.GATEWAY_LOG.LEADING, where);
|
|
116
131
|
}
|
|
117
132
|
}
|
|
118
133
|
class MachineSurface {
|
|
@@ -162,6 +177,9 @@ class MachineSurface {
|
|
|
162
177
|
inspect(siteId, lineId, probe) {
|
|
163
178
|
return this.run(siteId, lineId)?.leader()?.inspect(probe) ?? null;
|
|
164
179
|
}
|
|
180
|
+
wire(siteId, lineId, query = {}) {
|
|
181
|
+
return this.run(siteId, lineId)?.leader()?.window.read(query) ?? null;
|
|
182
|
+
}
|
|
165
183
|
findLine(siteId, lineId) {
|
|
166
184
|
return this.run(siteId, lineId)?.line;
|
|
167
185
|
}
|
|
@@ -169,8 +187,12 @@ class MachineSurface {
|
|
|
169
187
|
const run = this.run(siteId, lineId);
|
|
170
188
|
return run ? commandOpsOf(run.codec) : [];
|
|
171
189
|
}
|
|
190
|
+
/** The codecs every line on a site runs, so one site's streams keep all their subjects. */
|
|
191
|
+
codecsOnSite(siteId) {
|
|
192
|
+
return [...new Set([...this.runs.values()].filter((run) => run.line.siteId === siteId).map((run) => run.codec))];
|
|
193
|
+
}
|
|
172
194
|
begin(line) {
|
|
173
|
-
const run = new LineRun(line, this.config, this.opts, (0, log_1.composeLogs)(this.log, (0, log_1.eventsLog)(line)));
|
|
195
|
+
const run = new LineRun(line, this.config, this.opts, (0, log_1.composeLogs)(this.log, (0, log_1.eventsLog)(line)), () => this.codecsOnSite(line.siteId));
|
|
174
196
|
this.runs.set(keyOf(line.siteId, line.lineId), run);
|
|
175
197
|
run.start();
|
|
176
198
|
}
|
|
@@ -4,6 +4,8 @@ export declare function storeKnowledge(args: {
|
|
|
4
4
|
data: Record<string, any>;
|
|
5
5
|
tags?: string[];
|
|
6
6
|
replace?: boolean;
|
|
7
|
+
/** A name for the edition this write leaves current, which lookup refs may pin. */
|
|
8
|
+
label?: string;
|
|
7
9
|
}): Promise<{
|
|
8
10
|
id: string;
|
|
9
11
|
domain: string;
|
|
@@ -75,6 +77,8 @@ export declare function appendKnowledge(args: {
|
|
|
75
77
|
key: string;
|
|
76
78
|
path: string;
|
|
77
79
|
value: any;
|
|
80
|
+
/** A name for the edition this write leaves current, which lookup refs may pin. */
|
|
81
|
+
label?: string;
|
|
78
82
|
}): Promise<{
|
|
79
83
|
id: string;
|
|
80
84
|
domain: string;
|
|
@@ -23,10 +23,23 @@ async function withClient(fn) {
|
|
|
23
23
|
await client.end();
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
|
+
/** Name the entry's current edition. A label already naming another edition of the entry is refused. */
|
|
27
|
+
async function labelCurrentEdition(client, domain, key, version, label) {
|
|
28
|
+
try {
|
|
29
|
+
await client.query(sql_1.LABEL_KNOWLEDGE_VERSION, [domain, key, label, version]);
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
if (err?.code === '23505')
|
|
33
|
+
throw new Error(`label "${label}" already names another edition of ${domain}/${key}`);
|
|
34
|
+
throw err;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
26
37
|
async function storeKnowledge(args) {
|
|
27
38
|
return withClient(async (client) => {
|
|
28
39
|
const sql = args.replace ? sql_1.REPLACE_KNOWLEDGE : sql_1.UPSERT_KNOWLEDGE;
|
|
29
40
|
const { rows } = await client.query(sql, [args.domain, args.key, JSON.stringify(args.data), args.tags || []]);
|
|
41
|
+
if (args.label)
|
|
42
|
+
await labelCurrentEdition(client, args.domain, args.key, rows[0].current_version, args.label);
|
|
30
43
|
const result = { ...rows[0], updated_at: rows[0].updated_at.toISOString() };
|
|
31
44
|
(0, publish_1.publishKnowledgeEvent)({ type: 'knowledge.stored', domain: args.domain, key: args.key });
|
|
32
45
|
return result;
|
|
@@ -173,6 +186,8 @@ async function appendKnowledge(args) {
|
|
|
173
186
|
initData = { [pathParts[i]]: initData };
|
|
174
187
|
}
|
|
175
188
|
const { rows } = await client.query(sql_1.APPEND_KNOWLEDGE, [args.domain, args.key, JSON.stringify(initData), pathArray, valueJson]);
|
|
189
|
+
if (args.label)
|
|
190
|
+
await labelCurrentEdition(client, args.domain, args.key, rows[0].current_version, args.label);
|
|
176
191
|
return { ...rows[0], updated_at: rows[0].updated_at.toISOString() };
|
|
177
192
|
});
|
|
178
193
|
}
|
|
@@ -6,3 +6,5 @@ export declare const LIST_DOMAINS = "\n SELECT domain, COUNT(*)::int AS count,
|
|
|
6
6
|
export declare const SET_KNOWLEDGE_FIELD = "\n WITH upserted AS (\n INSERT INTO lt_knowledge (domain, key, data, tags)\n VALUES ($1, $2, $3::jsonb, $4)\n ON CONFLICT (domain, key) DO UPDATE SET\n data = jsonb_set(lt_knowledge.data, $5::text[], $6::jsonb, true),\n tags = ARRAY(SELECT DISTINCT unnest(lt_knowledge.tags || EXCLUDED.tags)),\n current_version = CASE\n WHEN jsonb_set(lt_knowledge.data, $5::text[], $6::jsonb, true) IS DISTINCT FROM lt_knowledge.data\n THEN lt_knowledge.current_version + 1\n ELSE lt_knowledge.current_version\n END\n RETURNING id, domain, key, data, tags, current_version, (xmax = 0) AS created, updated_at\n ), snapshot AS (\n INSERT INTO lt_knowledge_versions (domain, key, version, data, tags)\n SELECT domain, key, current_version, data, tags FROM upserted\n ON CONFLICT (domain, key, version) DO NOTHING\n )\n SELECT id, domain, key, current_version, created, updated_at FROM upserted";
|
|
7
7
|
export declare const REMOVE_KNOWLEDGE_FIELD = "\n WITH updated AS (\n UPDATE lt_knowledge\n SET data = data #- $3::text[],\n current_version = CASE\n WHEN data #- $3::text[] IS DISTINCT FROM data\n THEN current_version + 1\n ELSE current_version\n END\n WHERE domain = $1 AND key = $2\n RETURNING id, domain, key, data, tags, current_version, updated_at\n ), snapshot AS (\n INSERT INTO lt_knowledge_versions (domain, key, version, data, tags)\n SELECT domain, key, current_version, data, tags FROM updated\n ON CONFLICT (domain, key, version) DO NOTHING\n )\n SELECT id, domain, key, current_version, updated_at FROM updated";
|
|
8
8
|
export declare const APPEND_KNOWLEDGE = "\n WITH upserted AS (\n INSERT INTO lt_knowledge (domain, key, data)\n VALUES ($1, $2, $3::jsonb)\n ON CONFLICT (domain, key) DO UPDATE SET\n data = CASE\n WHEN lt_knowledge.data #> $4::text[] IS NULL\n THEN jsonb_set(lt_knowledge.data, $4::text[], jsonb_build_array($5::jsonb))\n ELSE jsonb_set(lt_knowledge.data, $4::text[], (lt_knowledge.data #> $4::text[]) || jsonb_build_array($5::jsonb))\n END,\n current_version = lt_knowledge.current_version + 1\n RETURNING id, domain, key, data, tags, current_version, updated_at\n ), snapshot AS (\n INSERT INTO lt_knowledge_versions (domain, key, version, data, tags)\n SELECT domain, key, current_version, data, tags FROM upserted\n ON CONFLICT (domain, key, version) DO NOTHING\n )\n SELECT id, domain, key, current_version, updated_at FROM upserted";
|
|
9
|
+
/** Name an edition: the label a lookup ref may pin instead of the number. A label names one edition of an entry. */
|
|
10
|
+
export declare const LABEL_KNOWLEDGE_VERSION = "\n UPDATE lt_knowledge_versions SET label = $3\n WHERE domain = $1 AND key = $2 AND version = $4\n RETURNING version";
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
// no-op writes snapshot-free). Tags-only changes never bump — the version is
|
|
9
9
|
// the data's identity.
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
exports.APPEND_KNOWLEDGE = exports.REMOVE_KNOWLEDGE_FIELD = exports.SET_KNOWLEDGE_FIELD = exports.LIST_DOMAINS = exports.DELETE_KNOWLEDGE = exports.GET_KNOWLEDGE = exports.REPLACE_KNOWLEDGE = exports.UPSERT_KNOWLEDGE = void 0;
|
|
11
|
+
exports.LABEL_KNOWLEDGE_VERSION = exports.APPEND_KNOWLEDGE = exports.REMOVE_KNOWLEDGE_FIELD = exports.SET_KNOWLEDGE_FIELD = exports.LIST_DOMAINS = exports.DELETE_KNOWLEDGE = exports.GET_KNOWLEDGE = exports.REPLACE_KNOWLEDGE = exports.UPSERT_KNOWLEDGE = void 0;
|
|
12
12
|
// Upsert knowledge entry. On conflict (domain+key), merges JSONB data at
|
|
13
13
|
// the top level — new keys are added, existing keys are overwritten.
|
|
14
14
|
//
|
|
@@ -130,3 +130,8 @@ exports.APPEND_KNOWLEDGE = `
|
|
|
130
130
|
ON CONFLICT (domain, key, version) DO NOTHING
|
|
131
131
|
)
|
|
132
132
|
SELECT id, domain, key, current_version, updated_at FROM upserted`;
|
|
133
|
+
/** Name an edition: the label a lookup ref may pin instead of the number. A label names one edition of an entry. */
|
|
134
|
+
exports.LABEL_KNOWLEDGE_VERSION = `
|
|
135
|
+
UPDATE lt_knowledge_versions SET label = $3
|
|
136
|
+
WHERE domain = $1 AND key = $2 AND version = $4
|
|
137
|
+
RETURNING version`;
|
|
@@ -45,11 +45,12 @@ const storeSchema = zod_1.z.object({
|
|
|
45
45
|
field: zod_1.z.string().optional().describe('RECOMMENDED. Names a specific field to set within the entry (e.g. "2026-05-09", "url", "score"). Using field is additive — it merges into existing data without clobbering other fields. Without field, the entire data object is merged at the top level, which can overwrite existing fields with the same keys. Always use field when adding to an entry that may already have data.'),
|
|
46
46
|
data: zod_1.z.any().describe('The value to store. When field is provided, this can be any type (string, number, boolean, object, array) and is stored as { [field]: data }. When field is omitted, data must be a JSON object whose keys merge into existing data.'),
|
|
47
47
|
tags: zod_1.z.array(zod_1.z.string()).optional().describe('Categorization tags (unioned on upsert)'),
|
|
48
|
+
label: zod_1.z.string().min(1).optional().describe('A name for the edition this write leaves current; lookup refs may pin it as their version'),
|
|
48
49
|
});
|
|
49
50
|
const getSchema = zod_1.z.object({
|
|
50
51
|
domain: zod_1.z.string().describe('Knowledge domain'),
|
|
51
52
|
key: zod_1.z.string().describe('Document key'),
|
|
52
|
-
version: zod_1.z.number().int().min(1).optional().describe('Fetch this immutable edition instead of the live entry'),
|
|
53
|
+
version: zod_1.z.union([zod_1.z.number().int().min(1), zod_1.z.string().min(1)]).optional().describe('Fetch this immutable edition, by number or by the label it carries, instead of the live entry'),
|
|
53
54
|
});
|
|
54
55
|
const listVersionsSchema = zod_1.z.object({
|
|
55
56
|
domain: zod_1.z.string().describe('Knowledge domain'),
|
|
@@ -90,6 +91,7 @@ const appendSchema = zod_1.z.object({
|
|
|
90
91
|
key: zod_1.z.string().describe('Document key'),
|
|
91
92
|
path: zod_1.z.string().describe('JSONB path to array field (e.g. "screenshots" or "analysis.variations")'),
|
|
92
93
|
value: zod_1.z.any().refine((v) => v !== undefined, 'value is required').describe('Value to append to the array'),
|
|
94
|
+
label: zod_1.z.string().min(1).optional().describe('A name for the edition this write leaves current; lookup refs may pin it as their version'),
|
|
93
95
|
});
|
|
94
96
|
function registerTools(server) {
|
|
95
97
|
server.registerTool('store_knowledge', {
|
|
@@ -124,7 +126,7 @@ function registerTools(server) {
|
|
|
124
126
|
dataObj = args.data;
|
|
125
127
|
}
|
|
126
128
|
const result = await knowledge.storeKnowledge({
|
|
127
|
-
domain: args.domain, key: args.key, data: dataObj, tags: args.tags,
|
|
129
|
+
domain: args.domain, key: args.key, data: dataObj, tags: args.tags, label: args.label,
|
|
128
130
|
});
|
|
129
131
|
return { content: [{ type: 'text', text: JSON.stringify(result) }] };
|
|
130
132
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../index.ts","../vitest.config.ts","../vitest.fast.config.ts","../vitest.integration.config.ts","../vitest.llm.config.ts","../adapters/express.ts","../api/agent-subscriptions.ts","../api/agents.ts","../api/announcements.ts","../api/auth-sso.ts","../api/auth.ts","../api/bot-accounts.ts","../api/capabilities.ts","../api/controlplane.ts","../api/dba.ts","../api/diagnostics.ts","../api/domain.ts","../api/exports.ts","../api/files.ts","../api/index.ts","../api/insight.ts","../api/knowledge.ts","../api/maintenance.ts","../api/me.ts","../api/namespaces.ts","../api/overview.ts","../api/personas.ts","../api/pipelines.ts","../api/roles.ts","../api/settings.ts","../api/tasks.ts","../api/topics.ts","../api/users.ts","../api/workflow-sets.ts","../api/escalations/accumulate.ts","../api/escalations/analytics.ts","../api/escalations/batch-flag.ts","../api/escalations/bulk.ts","../api/escalations/cancel.ts","../api/escalations/claim.ts","../api/escalations/create.ts","../api/escalations/facets.ts","../api/escalations/helpers.ts","../api/escalations/index.ts","../api/escalations/list.ts","../api/escalations/lookups.ts","../api/escalations/metadata.ts","../api/escalations/related.ts","../api/escalations/resolve-batch.ts","../api/escalations/resolve.ts","../api/escalations/roster-action.ts","../api/escalations/single.ts","../api/mcp/index.ts","../api/mcp/servers.ts","../api/mcp/tools.ts","../api/scan-codes/badge-policy.ts","../api/scan-codes/choice-roles.ts","../api/scan-codes/choice.ts","../api/scan-codes/config.ts","../api/scan-codes/context.ts","../api/scan-codes/execute.ts","../api/scan-codes/fill-labels.ts","../api/scan-codes/grant.ts","../api/scan-codes/hold.ts","../api/scan-codes/identity.ts","../api/scan-codes/index.ts","../api/scan-codes/locate.ts","../api/scan-codes/present.ts","../api/scan-codes/subject.ts","../api/scan-codes/verb-accumulate.ts","../api/scan-codes/verb-fill.ts","../api/scan-codes/verb-into-subject.ts","../api/scan-codes/verbs-subject.ts","../api/scan-codes/verbs.ts","../api/workflows/config.ts","../api/workflows/discovery.ts","../api/workflows/index.ts","../api/workflows/input-lookups.ts","../api/workflows/input-validation.ts","../api/workflows/invocable.ts","../api/workflows/invocation.ts","../api/yaml-workflows/cron.ts","../api/yaml-workflows/crud.ts","../api/yaml-workflows/deploy.ts","../api/yaml-workflows/helpers.ts","../api/yaml-workflows/index.ts","../api/yaml-workflows/versions.ts","../bin/ltc.ts","../lib/typed-resolution.ts","../lib/uuid.ts","../lib/cli/auth.ts","../lib/cli/client.ts","../lib/cli/compile.ts","../lib/cli/format.ts","../lib/cli/init.ts","../lib/cli/output.ts","../lib/cli/scanner.ts","../lib/cli/types.ts","../lib/cli/commands/escalations.ts","../lib/cli/commands/knowledge.ts","../lib/cli/commands/mcp.ts","../lib/cli/commands/personas.ts","../lib/cli/commands/pipelines.ts","../lib/cli/commands/roles.ts","../lib/cli/commands/status.ts","../lib/cli/commands/streams.ts","../lib/cli/commands/users.ts","../lib/cli/commands/workflows.ts","../lib/db/config-lock.ts","../lib/db/index.ts","../lib/db/migrate.ts","../lib/events/browser-view.ts","../lib/events/callback.ts","../lib/events/escalation-wire.ts","../lib/events/index.ts","../lib/events/matching.ts","../lib/events/memory.ts","../lib/events/nats-ws-filter.ts","../lib/events/nats-ws-proxy.ts","../lib/events/nats-ws-server-filter.ts","../lib/events/nats-ws-ticket.ts","../lib/events/nats.ts","../lib/events/publish.ts","../lib/events/socketio.ts","../lib/events/system-events.ts","../lib/http/index.ts","../lib/json-path/pick.ts","../lib/logger/index.ts","../lib/logger/pino.ts","../lib/machines/index.ts","../lib/machines/line.ts","../lib/machines/protocol/codec.ts","../lib/machines/protocol/constants.ts","../lib/machines/protocol/contract.ts","../lib/machines/protocol/envelope.ts","../lib/machines/protocol/index.ts","../lib/machines/protocol/topics.ts","../lib/machines/site/edge-account.ts","../lib/machines/site/mosquitto-conf.ts","../lib/machines/site/site-conf.ts","../lib/machines/transport/callback-feed.ts","../lib/machines/transport/delivery.ts","../lib/machines/transport/index.ts","../lib/machines/transport/memory-broker.ts","../lib/machines/transport/memory.ts","../lib/machines/transport/mqtt-bus.ts","../lib/machines/transport/mqtt-link.ts","../lib/machines/transport/mqtt-session.ts","../lib/machines/transport/nats-bus.ts","../lib/machines/transport/nats-feed.ts","../lib/machines/transport/pubsub-feed.ts","../lib/machines/transport/serial.ts","../lib/machines/transport/stream-bus.ts","../lib/machines/transport/streams.ts","../lib/messaging/config.ts","../lib/messaging/constants.ts","../lib/messaging/index.ts","../lib/messaging/memory.ts","../lib/messaging/subjects.ts","../lib/messaging/nats/permissions.ts","../lib/messaging/nats/provider.ts","../lib/messaging/nats/render-conf.ts","../lib/messaging/nats/streams.ts","../lib/storage/index.ts","../lib/storage/local.ts","../lib/storage/mime.ts","../lib/storage/s3.ts","../lib/storage/types.ts","../lib/telemetry/honeycomb.ts","../lib/telemetry/index.ts","../modules/auth.ts","../modules/branding.ts","../modules/capabilities.ts","../modules/config.ts","../modules/defaults.ts","../modules/display.ts","../modules/features.ts","../modules/ltconfig.ts","../modules/machines.ts","../modules/maintenance.ts","../modules/mcp-auth.ts","../modules/oauth-server.ts","../modules/search.ts","../modules/sso.ts","../modules/utils.ts","../modules/version.ts","../routes/agents.ts","../routes/announcements.ts","../routes/auth-sso.ts","../routes/auth.ts","../routes/bot-accounts.ts","../routes/capabilities.ts","../routes/controlplane.ts","../routes/dba.ts","../routes/delegation.ts","../routes/diagnostics.ts","../routes/docs.ts","../routes/domain.ts","../routes/exports.ts","../routes/file-browser.ts","../routes/files.ts","../routes/index.ts","../routes/insight.ts","../routes/knowledge.ts","../routes/machines.ts","../routes/maintenance.ts","../routes/mcp-endpoint.ts","../routes/mcp.ts","../routes/me.ts","../routes/namespaces.ts","../routes/nats-credentials.ts","../routes/oauth-well-known.ts","../routes/oauth.ts","../routes/overview.ts","../routes/personas.ts","../routes/pipelines.ts","../routes/roles.ts","../routes/scan-codes.ts","../routes/settings.ts","../routes/tasks.ts","../routes/topics.ts","../routes/users.ts","../routes/workflow-sets.ts","../routes/escalations/accumulate.ts","../routes/escalations/acting.ts","../routes/escalations/analytics.ts","../routes/escalations/bulk.ts","../routes/escalations/facets.ts","../routes/escalations/index.ts","../routes/escalations/list.ts","../routes/escalations/metadata.ts","../routes/escalations/related.ts","../routes/escalations/resolve.ts","../routes/escalations/single.ts","../routes/oauth-server/authorize.ts","../routes/oauth-server/grants.ts","../routes/oauth-server/index.ts","../routes/oauth-server/registration.ts","../routes/oauth-server/token.ts","../routes/workflows/config.ts","../routes/workflows/discovery.ts","../routes/workflows/index.ts","../routes/workflows/invocation.ts","../routes/yaml-workflows/cron.ts","../routes/yaml-workflows/crud.ts","../routes/yaml-workflows/deployment.ts","../routes/yaml-workflows/index.ts","../routes/yaml-workflows/versions.ts","../scripts/bambu-boat.ts","../scripts/bambu-print.ts","../scripts/consolidation-sim.ts","../scripts/machine-line.ts","../scripts/ortho-populate.ts","../scripts/printer-cycle.ts","../scripts/process-helpers.ts","../scripts/process.ts","../scripts/token.ts","../scripts/twin-farm.ts","../sdk/index.ts","../services/dba.ts","../services/hotmesh-utils.ts","../services/invocation-access.ts","../services/workflow-invocation.ts","../services/workflow-state.ts","../services/agent/authority.ts","../services/agent/index.ts","../services/agent/input-mapper.ts","../services/agent/sql.ts","../services/agent/subscription-sql.ts","../services/agent/subscriptions.ts","../services/agent/trigger-registry.ts","../services/announcement/index.ts","../services/announcement/sql.ts","../services/auth/bot-api-key.ts","../services/auth/delegation.ts","../services/auth/index.ts","../services/auth/service-token.ts","../services/auth/sql.ts","../services/auth/oauth-server/access-token.ts","../services/auth/oauth-server/authorization.ts","../services/auth/oauth-server/constants.ts","../services/auth/oauth-server/index.ts","../services/auth/oauth-server/metadata.ts","../services/auth/oauth-server/registration.ts","../services/auth/oauth-server/sql.ts","../services/auth/oauth-server/store.ts","../services/config/cache.ts","../services/config/index.ts","../services/config/provider.ts","../services/config/read.ts","../services/config/sql.ts","../services/config/write.ts","../services/controlplane/index.ts","../services/controlplane/quorum-bridge.ts","../services/controlplane/sql.ts","../services/controlplane/stream-messages-sql.ts","../services/controlplane/types.ts","../services/cron/index.ts","../services/diagnostics/index.ts","../services/diagnostics/patterns.ts","../services/domain/index.ts","../services/domain/read.ts","../services/domain/seed.ts","../services/domain/sql.ts","../services/domain/validate.ts","../services/domain/write.ts","../services/escalation/accumulate.ts","../services/escalation/aggregate-sql.ts","../services/escalation/aggregate-validate.ts","../services/escalation/aggregates.ts","../services/escalation/batch-flag.ts","../services/escalation/batch.ts","../services/escalation/bulk.ts","../services/escalation/claim-asserted.ts","../services/escalation/client.ts","../services/escalation/crud.ts","../services/escalation/facet-sql.ts","../services/escalation/facets.ts","../services/escalation/grouped-list.ts","../services/escalation/index.ts","../services/escalation/map.ts","../services/escalation/metrics-cache.ts","../services/escalation/queries.ts","../services/escalation/read-scope-sql.ts","../services/escalation/related-extremes.ts","../services/escalation/related.ts","../services/escalation/resolver-validation.ts","../services/escalation/roster.ts","../services/escalation/sql.ts","../services/escalation/submit-guard.ts","../services/escalation/types.ts","../services/escalation-strategy/default.ts","../services/escalation-strategy/index.ts","../services/escalation-strategy/mcp.ts","../services/export/client.ts","../services/export/index.ts","../services/export/post-process.ts","../services/export/types.ts","../services/iam/acting-identity.ts","../services/iam/activity.ts","../services/iam/bots.ts","../services/iam/context.ts","../services/iam/credentials.ts","../services/iam/envelope.ts","../services/iam/ephemeral.ts","../services/iam/index.ts","../services/iam/principal.ts","../services/iam/resolve.ts","../services/iam/sql.ts","../services/insight/index.ts","../services/insight/prompts.ts","../services/interceptor/activity-interceptor.ts","../services/interceptor/completion.ts","../services/interceptor/context.ts","../services/interceptor/escalation.ts","../services/interceptor/index.ts","../services/interceptor/lifecycle.ts","../services/interceptor/state.ts","../services/interceptor/types.ts","../services/interceptor/activities/config.ts","../services/interceptor/activities/escalation.ts","../services/interceptor/activities/index.ts","../services/interceptor/activities/task.ts","../services/interceptor/activities/workflow.ts","../services/knowledge/index.ts","../services/knowledge/lookup-cache.ts","../services/knowledge/lookup-refs.ts","../services/knowledge/sql.ts","../services/llm/detect.ts","../services/llm/index.ts","../services/llm/translate.ts","../services/llm/types.ts","../services/llm/providers/anthropic.ts","../services/llm/providers/openai.ts","../services/machines/commands.ts","../services/machines/config.ts","../services/machines/contracts.ts","../services/machines/forms.ts","../services/machines/identities.ts","../services/machines/index.ts","../services/machines/leadership.ts","../services/machines/line-index.ts","../services/machines/registry-sql.ts","../services/machines/registry-sync.ts","../services/machines/registry.ts","../services/machines/roles.ts","../services/machines/rows.ts","../services/machines/select.ts","../services/machines/surface.ts","../services/machines/gateway/actions.ts","../services/machines/gateway/address-book.ts","../services/machines/gateway/admission.ts","../services/machines/gateway/api-escalations.ts","../services/machines/gateway/dispatcher.ts","../services/machines/gateway/escalations.ts","../services/machines/gateway/executor.ts","../services/machines/gateway/gateway.ts","../services/machines/gateway/index.ts","../services/machines/gateway/inspect.ts","../services/machines/gateway/jobs.ts","../services/machines/gateway/lifecycle.ts","../services/machines/gateway/log.ts","../services/machines/gateway/lt-http.ts","../services/machines/gateway/pacing.ts","../services/machines/gateway/plan-escalation.ts","../services/machines/gateway/plan-machine.ts","../services/machines/gateway/plan-shared.ts","../services/machines/gateway/project.ts","../services/machines/gateway/provision.ts","../services/machines/gateway/receipts.ts","../services/machines/gateway/reconcile.ts","../services/machines/gateway/registration.ts","../services/machines/gateway/reply-waiter.ts","../services/machines/gateway/state.ts","../services/machines/gateway/trace.ts","../services/machines/gateway/wire.ts","../services/machines/testing/fake-long-tail.ts","../services/machines/testing/index.ts","../services/machines/testing/recording-log.ts","../services/machines/testing/wait.ts","../services/maintenance/index.ts","../services/mcp/adapter.ts","../services/mcp/db.ts","../services/mcp/exposure.ts","../services/mcp/external-server.ts","../services/mcp/index.ts","../services/mcp/register-tool.ts","../services/mcp/registered-tools.ts","../services/mcp/seed-service-account.ts","../services/mcp/server-lifecycle.ts","../services/mcp/server-tools.ts","../services/mcp/server.ts","../services/mcp/sql.ts","../services/mcp/types.ts","../services/mcp/workflow-compiler-server.ts","../services/mcp/workflow-server.ts","../services/mcp/client/connection-dispatch.ts","../services/mcp/client/connection-lifecycle.ts","../services/mcp/client/connection-test.ts","../services/mcp/client/connection.ts","../services/mcp/client/index.ts","../services/mcp/client/network-transport.ts","../services/mcp/client/tools.ts","../services/mcp/db-server/index.ts","../services/mcp/db-server/schemas.ts","../services/mcp/db-server/tools.ts","../services/mcp/playwright-server/index.ts","../services/mcp/playwright-server/lifecycle.ts","../services/mcp/playwright-server/schemas.ts","../services/mcp/playwright-server/tools.ts","../services/namespace/index.ts","../services/namespace/sql.ts","../services/namespace/types.ts","../services/oauth/crypto.ts","../services/oauth/db.ts","../services/oauth/index.ts","../services/oauth/sql.ts","../services/oauth/state.ts","../services/oauth/providers/anthropic.ts","../services/oauth/providers/github.ts","../services/oauth/providers/google.ts","../services/oauth/providers/index.ts","../services/oauth/providers/microsoft.ts","../services/oauth/providers/mock.ts","../services/oauth/providers/registry.ts","../services/oauth/providers/types.ts","../services/orchestrator/condition.ts","../services/orchestrator/index.ts","../services/orchestrator/types.ts","../services/overview/index.ts","../services/overview/sql.ts","../services/persona/index.ts","../services/persona/sql.ts","../services/persona/types.ts","../services/pipelines/enrichment.ts","../services/pipelines/events.ts","../services/pipelines/execution-builder.ts","../services/pipelines/index.ts","../services/pipelines/queries.ts","../services/pipelines/sql.ts","../services/pipelines/types.ts","../services/role/badge-grant.ts","../services/role/enforcement-cache.ts","../services/role/index.ts","../services/role/schema-validator.ts","../services/role/seed.ts","../services/role/sql.ts","../services/role/types.ts","../services/scan-code/index.ts","../services/scan-code/parse.ts","../services/scan-code/read.ts","../services/scan-code/sql.ts","../services/scan-code/validate-facts.ts","../services/scan-code/validate-query.ts","../services/scan-code/validate-subject.ts","../services/scan-code/validate.ts","../services/scan-code/write.ts","../services/task/crud.ts","../services/task/index.ts","../services/task/process.ts","../services/task/resolve.ts","../services/task/sql.ts","../services/task/types.ts","../services/topics/index.ts","../services/topics/sql.ts","../services/topics/system-topics.ts","../services/user/auth.ts","../services/user/crud.ts","../services/user/index.ts","../services/user/preferences.ts","../services/user/rbac.ts","../services/user/roles.ts","../services/user/scope.ts","../services/user/seed-admin.ts","../services/user/sql.ts","../services/user/sso-provision.ts","../services/user/types.ts","../services/workers/registry.ts","../services/workflow-sets/db.ts","../services/workflow-sets/index.ts","../services/workflow-sets/sql.ts","../services/yaml-workflow/builder-regenerate.ts","../services/yaml-workflow/db-utils.ts","../services/yaml-workflow/db-versions.ts","../services/yaml-workflow/db.ts","../services/yaml-workflow/deployer-helpers.ts","../services/yaml-workflow/deployer.ts","../services/yaml-workflow/generator.ts","../services/yaml-workflow/index.ts","../services/yaml-workflow/input-analyzer-helpers.ts","../services/yaml-workflow/input-analyzer.ts","../services/yaml-workflow/invoke.ts","../services/yaml-workflow/pipe-validator.ts","../services/yaml-workflow/sql.ts","../services/yaml-workflow/types.ts","../services/yaml-workflow/durable-compiler/index.ts","../services/yaml-workflow/durable-compiler/parser.ts","../services/yaml-workflow/durable-compiler/prompts.ts","../services/yaml-workflow/durable-compiler/types.ts","../services/yaml-workflow/pattern-detector/array-source.ts","../services/yaml-workflow/pattern-detector/collapse.ts","../services/yaml-workflow/pattern-detector/index.ts","../services/yaml-workflow/pattern-detector/run-detection.ts","../services/yaml-workflow/pattern-detector/types.ts","../services/yaml-workflow/pipeline/analyze.ts","../services/yaml-workflow/pipeline/extract-helpers.ts","../services/yaml-workflow/pipeline/extract.ts","../services/yaml-workflow/pipeline/index.ts","../services/yaml-workflow/pipeline/prompt-templates.ts","../services/yaml-workflow/pipeline/prompts.ts","../services/yaml-workflow/pipeline/validate.ts","../services/yaml-workflow/pipeline/build/dag-assembly.ts","../services/yaml-workflow/pipeline/build/dag.ts","../services/yaml-workflow/pipeline/build/index.ts","../services/yaml-workflow/pipeline/build/iteration.ts","../services/yaml-workflow/pipeline/build/metadata.ts","../services/yaml-workflow/pipeline/build/transform.ts","../services/yaml-workflow/pipeline/build/utils.ts","../services/yaml-workflow/pipeline/build/wiring.ts","../services/yaml-workflow/pipeline/compile/index.ts","../services/yaml-workflow/pipeline/compile/llm-call.ts","../services/yaml-workflow/pipeline/compile/parse-plan.ts","../services/yaml-workflow/pipeline/compile/summarize.ts","../services/yaml-workflow/workers/callbacks.ts","../services/yaml-workflow/workers/events.ts","../services/yaml-workflow/workers/index.ts","../services/yaml-workflow/workers/register.ts","../services/yaml-workflow/workers/scope.ts","../services/yaml-workflow/workers/step-tool.ts","../shared/workflow-state.ts","../shared/form-validation/ctx-path.ts","../shared/form-validation/derive-field-label.ts","../shared/form-validation/display-only-widgets.ts","../shared/form-validation/field-validator.ts","../shared/form-validation/index.ts","../shared/form-validation/invoke-context.ts","../shared/form-validation/validate-resolver-payload.ts","../shared/form-validation/x-lt-actions.ts","../shared/form-validation/x-lt-bind.ts","../shared/form-validation/x-lt-help.ts","../shared/form-validation/x-lt-invoke.ts","../shared/form-validation/x-lt-labels.ts","../shared/form-validation/x-lt-options.ts","../shared/form-validation/x-lt-query.ts","../shared/form-validation/x-lt-require-any.ts","../shared/form-validation/x-lt-require-sum.ts","../shared/form-validation/x-lt-roster.ts","../shared/form-validation/x-lt-scan.ts","../shared/form-validation/x-lt-show-if.ts","../shared/form-validation/x-lt-submit-guard.ts","../shared/form-validation/x-lt-submit-on-claim.ts","../shared/form-validation/x-lt-transition.ts","../shared/list-schema/aggregate.ts","../shared/list-schema/index.ts","../shared/list-schema/template.ts","../shared/list-schema/types.ts","../shared/list-schema/validate.ts","../shared/roles/segment.ts","../shared/scan-code/gtin.ts","../shared/scan-code/index.ts","../shared/scan-code/parse.ts","../start/adapters.ts","../start/apply-report.ts","../start/config.ts","../start/graph-workflows.ts","../start/index.ts","../start/server.ts","../start/socket-auth.ts","../start/workers.ts","../system/index.ts","../system/activities/claude-code.ts","../system/activities/file-storage.ts","../system/activities/http.ts","../system/activities/knowledge.ts","../system/activities/oauth.ts","../system/activities/schema-exchange.ts","../system/activities/sql.ts","../system/activities/triage/cache.ts","../system/activities/triage/context.ts","../system/activities/triage/discovery.ts","../system/activities/triage/index.ts","../system/activities/triage/llm.ts","../system/activities/triage/tools.ts","../system/mcp-servers/caller-auth.ts","../system/mcp-servers/claude-code.ts","../system/mcp-servers/docs.ts","../system/mcp-servers/events.ts","../system/mcp-servers/file-storage.ts","../system/mcp-servers/http-fetch.ts","../system/mcp-servers/human-queue-schemas.ts","../system/mcp-servers/human-queue.ts","../system/mcp-servers/knowledge.ts","../system/mcp-servers/machines-schemas.ts","../system/mcp-servers/machines.ts","../system/mcp-servers/oauth.ts","../system/mcp-servers/schema-exchange.ts","../system/mcp-servers/translation.ts","../system/mcp-servers/vision-prompts.ts","../system/mcp-servers/vision.ts","../system/mcp-servers/workflow-compiler.ts","../system/mcp-servers/workflow.ts","../system/mcp-servers/admin/agent-subscriptions.ts","../system/mcp-servers/admin/agents.ts","../system/mcp-servers/admin/announcements.ts","../system/mcp-servers/admin/bot-accounts.ts","../system/mcp-servers/admin/controlplane.ts","../system/mcp-servers/admin/diagnostics.ts","../system/mcp-servers/admin/domain-context.ts","../system/mcp-servers/admin/escalations.ts","../system/mcp-servers/admin/exports.ts","../system/mcp-servers/admin/index.ts","../system/mcp-servers/admin/maintenance.ts","../system/mcp-servers/admin/mcp-servers.ts","../system/mcp-servers/admin/overview.ts","../system/mcp-servers/admin/personas.ts","../system/mcp-servers/admin/pipelines.ts","../system/mcp-servers/admin/run-read.ts","../system/mcp-servers/admin/scan-codes.ts","../system/mcp-servers/admin/schemas.ts","../system/mcp-servers/admin/settings.ts","../system/mcp-servers/admin/tasks.ts","../system/mcp-servers/admin/topics.ts","../system/mcp-servers/admin/users.ts","../system/mcp-servers/admin/workflow-config.ts","../system/mcp-servers/admin/workflows.ts","../system/mcp-servers/admin/yaml-workflows.ts","../system/mcp-servers/db-query/index.ts","../system/mcp-servers/db-query/schemas.ts","../system/mcp-servers/db-query/tools.ts","../system/seed/index.ts","../system/seed/tool-manifests-admin.ts","../system/seed/tool-manifests-data.ts","../system/seed/tool-manifests-escalation.ts","../system/seed/tool-manifests-events.ts","../system/seed/tool-manifests-knowledge.ts","../system/seed/tool-manifests-machines.ts","../system/seed/tool-manifests-workflows.ts","../system/workflows/tool-result-guard.ts","../system/workflows/capability-invoke/activities.ts","../system/workflows/capability-invoke/index.ts","../system/workflows/mcp-deterministic/activities.ts","../system/workflows/mcp-deterministic/index.ts","../system/workflows/mcp-query/index.ts","../system/workflows/mcp-query/prompts.ts","../system/workflows/mcp-query/strategy-advisors.ts","../system/workflows/mcp-query/types.ts","../system/workflows/mcp-query/activities/caches.ts","../system/workflows/mcp-query/activities/discovery.ts","../system/workflows/mcp-query/activities/index.ts","../system/workflows/mcp-query/activities/llm.ts","../system/workflows/mcp-query/activities/tool-executor.ts","../system/workflows/mcp-query/activities/tool-loader.ts","../system/workflows/mcp-query-router/activities.ts","../system/workflows/mcp-query-router/index.ts","../system/workflows/mcp-query-router/prompts.ts","../system/workflows/mcp-triage/activities-proxy.ts","../system/workflows/mcp-triage/index.ts","../system/workflows/mcp-triage/prompts.ts","../system/workflows/mcp-triage/response-builders.ts","../system/workflows/mcp-triage/response.ts","../system/workflows/mcp-triage/types.ts","../system/workflows/mcp-triage-deterministic/activities.ts","../system/workflows/mcp-triage-deterministic/index.ts","../system/workflows/mcp-triage-router/activities.ts","../system/workflows/mcp-triage-router/index.ts","../system/workflows/mcp-workflow-builder/index.ts","../system/workflows/mcp-workflow-builder/prompts.ts","../system/workflows/mcp-workflow-builder/activities/caches.ts","../system/workflows/mcp-workflow-builder/activities/index.ts","../system/workflows/mcp-workflow-builder/activities/llm.ts","../system/workflows/mcp-workflow-builder/activities/tool-loader.ts","../system/workflows/mcp-workflow-planner/index.ts","../system/workflows/mcp-workflow-planner/prompts.ts","../system/workflows/mcp-workflow-planner/activities/analyze.ts","../system/workflows/mcp-workflow-planner/activities/index.ts","../system/workflows/mcp-workflow-planner/activities/persist.ts","../system/workflows/mcp-workflow-planner/activities/plan.ts","../system/workflows/shared/discovery.ts","../system/workflows/shared/index.ts","../system/workflows/shared/llm-caller.ts","../system/workflows/shared/principal-tools.ts","../system/workflows/shared/prompts.ts","../system/workflows/shared/strategy-advisors.ts","../system/workflows/shared/tool-executor.ts","../system/workflows/shared/tool-loader.ts","../system/workflows/shared/types.ts","../themes/midnight.ts","../types/agent.ts","../types/analytics.ts","../types/auth.ts","../types/capability.ts","../types/config.ts","../types/delegation.ts","../types/discovery.ts","../types/domain-manifest.ts","../types/envelope.ts","../types/escalation-strategy.ts","../types/escalation.ts","../types/events.ts","../types/export.ts","../types/express.d.ts","../types/facets.ts","../types/index.ts","../types/logger.ts","../types/machines-view.ts","../types/machines.ts","../types/maintenance.ts","../types/mcp.ts","../types/messaging.ts","../types/oauth-server.ts","../types/oauth.ts","../types/persona.ts","../types/scan-choice.ts","../types/sdk.ts","../types/startup.ts","../types/task.ts","../types/telemetry.ts","../types/tool-context.ts","../types/user.ts","../types/validation.ts","../types/workflow-icons.ts","../types/workflow-set.ts","../types/workflow.ts","../types/yaml-workflow.ts","../types/scan-code/constants.ts","../types/scan-code/index.ts","../types/scan-code/response.ts","../types/scan-code/rule.ts","../workers/index.ts"],"version":"5.9.3"}
|
|
1
|
+
{"root":["../index.ts","../vitest.config.ts","../vitest.fast.config.ts","../vitest.integration.config.ts","../vitest.llm.config.ts","../adapters/express.ts","../api/agent-subscriptions.ts","../api/agents.ts","../api/announcements.ts","../api/auth-sso.ts","../api/auth.ts","../api/bot-accounts.ts","../api/capabilities.ts","../api/controlplane.ts","../api/dba.ts","../api/diagnostics.ts","../api/domain.ts","../api/exports.ts","../api/files.ts","../api/index.ts","../api/insight.ts","../api/knowledge.ts","../api/maintenance.ts","../api/me.ts","../api/namespaces.ts","../api/overview.ts","../api/personas.ts","../api/pipelines.ts","../api/roles.ts","../api/settings.ts","../api/tasks.ts","../api/topics.ts","../api/users.ts","../api/workflow-sets.ts","../api/escalations/accumulate.ts","../api/escalations/analytics.ts","../api/escalations/batch-flag.ts","../api/escalations/bulk.ts","../api/escalations/cancel.ts","../api/escalations/claim.ts","../api/escalations/create.ts","../api/escalations/facets.ts","../api/escalations/helpers.ts","../api/escalations/index.ts","../api/escalations/list.ts","../api/escalations/lookups.ts","../api/escalations/metadata.ts","../api/escalations/related.ts","../api/escalations/resolve-batch.ts","../api/escalations/resolve.ts","../api/escalations/roster-action.ts","../api/escalations/single.ts","../api/mcp/index.ts","../api/mcp/servers.ts","../api/mcp/tools.ts","../api/scan-codes/badge-policy.ts","../api/scan-codes/choice-roles.ts","../api/scan-codes/choice.ts","../api/scan-codes/config.ts","../api/scan-codes/context.ts","../api/scan-codes/execute.ts","../api/scan-codes/fill-labels.ts","../api/scan-codes/grant.ts","../api/scan-codes/hold.ts","../api/scan-codes/identity.ts","../api/scan-codes/index.ts","../api/scan-codes/locate.ts","../api/scan-codes/present.ts","../api/scan-codes/subject.ts","../api/scan-codes/verb-accumulate.ts","../api/scan-codes/verb-fill.ts","../api/scan-codes/verb-into-subject.ts","../api/scan-codes/verbs-subject.ts","../api/scan-codes/verbs.ts","../api/workflows/config.ts","../api/workflows/discovery.ts","../api/workflows/index.ts","../api/workflows/input-lookups.ts","../api/workflows/input-validation.ts","../api/workflows/invocable.ts","../api/workflows/invocation.ts","../api/yaml-workflows/cron.ts","../api/yaml-workflows/crud.ts","../api/yaml-workflows/deploy.ts","../api/yaml-workflows/helpers.ts","../api/yaml-workflows/index.ts","../api/yaml-workflows/versions.ts","../bin/ltc.ts","../lib/typed-resolution.ts","../lib/uuid.ts","../lib/cli/auth.ts","../lib/cli/client.ts","../lib/cli/compile.ts","../lib/cli/format.ts","../lib/cli/init.ts","../lib/cli/output.ts","../lib/cli/scanner.ts","../lib/cli/types.ts","../lib/cli/commands/escalations.ts","../lib/cli/commands/knowledge.ts","../lib/cli/commands/mcp.ts","../lib/cli/commands/personas.ts","../lib/cli/commands/pipelines.ts","../lib/cli/commands/roles.ts","../lib/cli/commands/status.ts","../lib/cli/commands/streams.ts","../lib/cli/commands/users.ts","../lib/cli/commands/workflows.ts","../lib/db/config-lock.ts","../lib/db/index.ts","../lib/db/migrate.ts","../lib/events/browser-view.ts","../lib/events/callback.ts","../lib/events/escalation-wire.ts","../lib/events/index.ts","../lib/events/matching.ts","../lib/events/memory.ts","../lib/events/nats-ws-filter.ts","../lib/events/nats-ws-proxy.ts","../lib/events/nats-ws-server-filter.ts","../lib/events/nats-ws-ticket.ts","../lib/events/nats.ts","../lib/events/publish.ts","../lib/events/socketio.ts","../lib/events/system-events.ts","../lib/http/index.ts","../lib/json-path/pick.ts","../lib/logger/index.ts","../lib/logger/pino.ts","../lib/machines/index.ts","../lib/machines/line.ts","../lib/machines/protocol/codec.ts","../lib/machines/protocol/constants.ts","../lib/machines/protocol/contract.ts","../lib/machines/protocol/envelope.ts","../lib/machines/protocol/index.ts","../lib/machines/protocol/topics.ts","../lib/machines/site/edge-account.ts","../lib/machines/site/mosquitto-conf.ts","../lib/machines/site/site-conf.ts","../lib/machines/transport/callback-feed.ts","../lib/machines/transport/delivery.ts","../lib/machines/transport/index.ts","../lib/machines/transport/memory-broker.ts","../lib/machines/transport/memory.ts","../lib/machines/transport/mqtt-bus.ts","../lib/machines/transport/mqtt-link.ts","../lib/machines/transport/mqtt-session.ts","../lib/machines/transport/nats-bus.ts","../lib/machines/transport/nats-feed.ts","../lib/machines/transport/pubsub-feed.ts","../lib/machines/transport/serial.ts","../lib/machines/transport/stream-bus.ts","../lib/machines/transport/streams.ts","../lib/messaging/config.ts","../lib/messaging/constants.ts","../lib/messaging/index.ts","../lib/messaging/memory.ts","../lib/messaging/subjects.ts","../lib/messaging/nats/permissions.ts","../lib/messaging/nats/provider.ts","../lib/messaging/nats/render-conf.ts","../lib/messaging/nats/streams.ts","../lib/storage/index.ts","../lib/storage/local.ts","../lib/storage/mime.ts","../lib/storage/s3.ts","../lib/storage/types.ts","../lib/telemetry/honeycomb.ts","../lib/telemetry/index.ts","../modules/auth.ts","../modules/branding.ts","../modules/capabilities.ts","../modules/config.ts","../modules/defaults.ts","../modules/display.ts","../modules/features.ts","../modules/ltconfig.ts","../modules/machines.ts","../modules/maintenance.ts","../modules/mcp-auth.ts","../modules/oauth-server.ts","../modules/search.ts","../modules/sso.ts","../modules/utils.ts","../modules/version.ts","../routes/agents.ts","../routes/announcements.ts","../routes/auth-sso.ts","../routes/auth.ts","../routes/bot-accounts.ts","../routes/capabilities.ts","../routes/controlplane.ts","../routes/dba.ts","../routes/delegation.ts","../routes/diagnostics.ts","../routes/docs.ts","../routes/domain.ts","../routes/exports.ts","../routes/file-browser.ts","../routes/files.ts","../routes/index.ts","../routes/insight.ts","../routes/knowledge.ts","../routes/machines.ts","../routes/maintenance.ts","../routes/mcp-endpoint.ts","../routes/mcp.ts","../routes/me.ts","../routes/namespaces.ts","../routes/nats-credentials.ts","../routes/oauth-well-known.ts","../routes/oauth.ts","../routes/overview.ts","../routes/personas.ts","../routes/pipelines.ts","../routes/roles.ts","../routes/scan-codes.ts","../routes/settings.ts","../routes/tasks.ts","../routes/topics.ts","../routes/users.ts","../routes/workflow-sets.ts","../routes/escalations/accumulate.ts","../routes/escalations/acting.ts","../routes/escalations/analytics.ts","../routes/escalations/bulk.ts","../routes/escalations/facets.ts","../routes/escalations/index.ts","../routes/escalations/list.ts","../routes/escalations/metadata.ts","../routes/escalations/related.ts","../routes/escalations/resolve.ts","../routes/escalations/single.ts","../routes/oauth-server/authorize.ts","../routes/oauth-server/grants.ts","../routes/oauth-server/index.ts","../routes/oauth-server/registration.ts","../routes/oauth-server/token.ts","../routes/workflows/config.ts","../routes/workflows/discovery.ts","../routes/workflows/index.ts","../routes/workflows/invocation.ts","../routes/yaml-workflows/cron.ts","../routes/yaml-workflows/crud.ts","../routes/yaml-workflows/deployment.ts","../routes/yaml-workflows/index.ts","../routes/yaml-workflows/versions.ts","../scripts/bambu-boat.ts","../scripts/bambu-print.ts","../scripts/consolidation-sim.ts","../scripts/machine-line.ts","../scripts/ortho-populate.ts","../scripts/printer-cycle.ts","../scripts/process-helpers.ts","../scripts/process.ts","../scripts/token.ts","../scripts/twin-farm.ts","../sdk/index.ts","../services/dba.ts","../services/hotmesh-utils.ts","../services/invocation-access.ts","../services/workflow-invocation.ts","../services/workflow-state.ts","../services/agent/authority.ts","../services/agent/index.ts","../services/agent/input-mapper.ts","../services/agent/sql.ts","../services/agent/subscription-sql.ts","../services/agent/subscriptions.ts","../services/agent/trigger-registry.ts","../services/announcement/index.ts","../services/announcement/sql.ts","../services/auth/bot-api-key.ts","../services/auth/delegation.ts","../services/auth/index.ts","../services/auth/service-token.ts","../services/auth/sql.ts","../services/auth/oauth-server/access-token.ts","../services/auth/oauth-server/authorization.ts","../services/auth/oauth-server/constants.ts","../services/auth/oauth-server/index.ts","../services/auth/oauth-server/metadata.ts","../services/auth/oauth-server/registration.ts","../services/auth/oauth-server/sql.ts","../services/auth/oauth-server/store.ts","../services/config/cache.ts","../services/config/index.ts","../services/config/provider.ts","../services/config/read.ts","../services/config/sql.ts","../services/config/write.ts","../services/controlplane/index.ts","../services/controlplane/quorum-bridge.ts","../services/controlplane/sql.ts","../services/controlplane/stream-messages-sql.ts","../services/controlplane/types.ts","../services/cron/index.ts","../services/diagnostics/index.ts","../services/diagnostics/patterns.ts","../services/domain/index.ts","../services/domain/read.ts","../services/domain/seed.ts","../services/domain/sql.ts","../services/domain/validate.ts","../services/domain/write.ts","../services/escalation/accumulate.ts","../services/escalation/aggregate-sql.ts","../services/escalation/aggregate-validate.ts","../services/escalation/aggregates.ts","../services/escalation/batch-flag.ts","../services/escalation/batch.ts","../services/escalation/bulk.ts","../services/escalation/claim-asserted.ts","../services/escalation/client.ts","../services/escalation/crud.ts","../services/escalation/facet-sql.ts","../services/escalation/facets.ts","../services/escalation/grouped-list.ts","../services/escalation/index.ts","../services/escalation/map.ts","../services/escalation/metrics-cache.ts","../services/escalation/queries.ts","../services/escalation/read-scope-sql.ts","../services/escalation/related-extremes.ts","../services/escalation/related.ts","../services/escalation/resolver-validation.ts","../services/escalation/roster.ts","../services/escalation/sql.ts","../services/escalation/submit-guard.ts","../services/escalation/types.ts","../services/escalation-strategy/default.ts","../services/escalation-strategy/index.ts","../services/escalation-strategy/mcp.ts","../services/export/client.ts","../services/export/index.ts","../services/export/post-process.ts","../services/export/types.ts","../services/iam/acting-identity.ts","../services/iam/activity.ts","../services/iam/bots.ts","../services/iam/context.ts","../services/iam/credentials.ts","../services/iam/envelope.ts","../services/iam/ephemeral.ts","../services/iam/index.ts","../services/iam/principal.ts","../services/iam/resolve.ts","../services/iam/sql.ts","../services/insight/index.ts","../services/insight/prompts.ts","../services/interceptor/activity-interceptor.ts","../services/interceptor/completion.ts","../services/interceptor/context.ts","../services/interceptor/escalation.ts","../services/interceptor/index.ts","../services/interceptor/lifecycle.ts","../services/interceptor/state.ts","../services/interceptor/types.ts","../services/interceptor/activities/config.ts","../services/interceptor/activities/escalation.ts","../services/interceptor/activities/index.ts","../services/interceptor/activities/task.ts","../services/interceptor/activities/workflow.ts","../services/knowledge/index.ts","../services/knowledge/lookup-cache.ts","../services/knowledge/lookup-refs.ts","../services/knowledge/sql.ts","../services/llm/detect.ts","../services/llm/index.ts","../services/llm/translate.ts","../services/llm/types.ts","../services/llm/providers/anthropic.ts","../services/llm/providers/openai.ts","../services/machines/commands.ts","../services/machines/config.ts","../services/machines/contracts.ts","../services/machines/forms.ts","../services/machines/identities.ts","../services/machines/index.ts","../services/machines/leadership.ts","../services/machines/line-index.ts","../services/machines/registry-sql.ts","../services/machines/registry-sync.ts","../services/machines/registry.ts","../services/machines/roles.ts","../services/machines/rows.ts","../services/machines/select.ts","../services/machines/surface.ts","../services/machines/gateway/actions.ts","../services/machines/gateway/address-book.ts","../services/machines/gateway/admission.ts","../services/machines/gateway/api-escalations.ts","../services/machines/gateway/dispatcher.ts","../services/machines/gateway/escalations.ts","../services/machines/gateway/executor.ts","../services/machines/gateway/gateway.ts","../services/machines/gateway/index.ts","../services/machines/gateway/inspect.ts","../services/machines/gateway/jobs.ts","../services/machines/gateway/lifecycle.ts","../services/machines/gateway/log.ts","../services/machines/gateway/lt-http.ts","../services/machines/gateway/pacing.ts","../services/machines/gateway/plan-escalation.ts","../services/machines/gateway/plan-machine.ts","../services/machines/gateway/plan-shared.ts","../services/machines/gateway/project.ts","../services/machines/gateway/provision.ts","../services/machines/gateway/receipts.ts","../services/machines/gateway/reconcile.ts","../services/machines/gateway/registration.ts","../services/machines/gateway/reply-waiter.ts","../services/machines/gateway/state.ts","../services/machines/gateway/trace.ts","../services/machines/gateway/wire-window.ts","../services/machines/gateway/wire.ts","../services/machines/testing/fake-long-tail.ts","../services/machines/testing/index.ts","../services/machines/testing/recording-log.ts","../services/machines/testing/wait.ts","../services/maintenance/index.ts","../services/mcp/adapter.ts","../services/mcp/db.ts","../services/mcp/exposure.ts","../services/mcp/external-server.ts","../services/mcp/index.ts","../services/mcp/register-tool.ts","../services/mcp/registered-tools.ts","../services/mcp/seed-service-account.ts","../services/mcp/server-lifecycle.ts","../services/mcp/server-tools.ts","../services/mcp/server.ts","../services/mcp/sql.ts","../services/mcp/types.ts","../services/mcp/workflow-compiler-server.ts","../services/mcp/workflow-server.ts","../services/mcp/client/connection-dispatch.ts","../services/mcp/client/connection-lifecycle.ts","../services/mcp/client/connection-test.ts","../services/mcp/client/connection.ts","../services/mcp/client/index.ts","../services/mcp/client/network-transport.ts","../services/mcp/client/tools.ts","../services/mcp/db-server/index.ts","../services/mcp/db-server/schemas.ts","../services/mcp/db-server/tools.ts","../services/mcp/playwright-server/index.ts","../services/mcp/playwright-server/lifecycle.ts","../services/mcp/playwright-server/schemas.ts","../services/mcp/playwright-server/tools.ts","../services/namespace/index.ts","../services/namespace/sql.ts","../services/namespace/types.ts","../services/oauth/crypto.ts","../services/oauth/db.ts","../services/oauth/index.ts","../services/oauth/sql.ts","../services/oauth/state.ts","../services/oauth/providers/anthropic.ts","../services/oauth/providers/github.ts","../services/oauth/providers/google.ts","../services/oauth/providers/index.ts","../services/oauth/providers/microsoft.ts","../services/oauth/providers/mock.ts","../services/oauth/providers/registry.ts","../services/oauth/providers/types.ts","../services/orchestrator/condition.ts","../services/orchestrator/index.ts","../services/orchestrator/types.ts","../services/overview/index.ts","../services/overview/sql.ts","../services/persona/index.ts","../services/persona/sql.ts","../services/persona/types.ts","../services/pipelines/enrichment.ts","../services/pipelines/events.ts","../services/pipelines/execution-builder.ts","../services/pipelines/index.ts","../services/pipelines/queries.ts","../services/pipelines/sql.ts","../services/pipelines/types.ts","../services/role/badge-grant.ts","../services/role/enforcement-cache.ts","../services/role/index.ts","../services/role/schema-validator.ts","../services/role/seed.ts","../services/role/sql.ts","../services/role/types.ts","../services/scan-code/index.ts","../services/scan-code/parse.ts","../services/scan-code/read.ts","../services/scan-code/sql.ts","../services/scan-code/validate-facts.ts","../services/scan-code/validate-query.ts","../services/scan-code/validate-subject.ts","../services/scan-code/validate.ts","../services/scan-code/write.ts","../services/task/crud.ts","../services/task/index.ts","../services/task/process.ts","../services/task/resolve.ts","../services/task/sql.ts","../services/task/types.ts","../services/topics/index.ts","../services/topics/sql.ts","../services/topics/system-topics.ts","../services/user/auth.ts","../services/user/crud.ts","../services/user/index.ts","../services/user/preferences.ts","../services/user/rbac.ts","../services/user/roles.ts","../services/user/scope.ts","../services/user/seed-admin.ts","../services/user/sql.ts","../services/user/sso-provision.ts","../services/user/types.ts","../services/workers/registry.ts","../services/workflow-sets/db.ts","../services/workflow-sets/index.ts","../services/workflow-sets/sql.ts","../services/yaml-workflow/builder-regenerate.ts","../services/yaml-workflow/db-utils.ts","../services/yaml-workflow/db-versions.ts","../services/yaml-workflow/db.ts","../services/yaml-workflow/deployer-helpers.ts","../services/yaml-workflow/deployer.ts","../services/yaml-workflow/generator.ts","../services/yaml-workflow/index.ts","../services/yaml-workflow/input-analyzer-helpers.ts","../services/yaml-workflow/input-analyzer.ts","../services/yaml-workflow/invoke.ts","../services/yaml-workflow/pipe-validator.ts","../services/yaml-workflow/sql.ts","../services/yaml-workflow/types.ts","../services/yaml-workflow/durable-compiler/index.ts","../services/yaml-workflow/durable-compiler/parser.ts","../services/yaml-workflow/durable-compiler/prompts.ts","../services/yaml-workflow/durable-compiler/types.ts","../services/yaml-workflow/pattern-detector/array-source.ts","../services/yaml-workflow/pattern-detector/collapse.ts","../services/yaml-workflow/pattern-detector/index.ts","../services/yaml-workflow/pattern-detector/run-detection.ts","../services/yaml-workflow/pattern-detector/types.ts","../services/yaml-workflow/pipeline/analyze.ts","../services/yaml-workflow/pipeline/extract-helpers.ts","../services/yaml-workflow/pipeline/extract.ts","../services/yaml-workflow/pipeline/index.ts","../services/yaml-workflow/pipeline/prompt-templates.ts","../services/yaml-workflow/pipeline/prompts.ts","../services/yaml-workflow/pipeline/validate.ts","../services/yaml-workflow/pipeline/build/dag-assembly.ts","../services/yaml-workflow/pipeline/build/dag.ts","../services/yaml-workflow/pipeline/build/index.ts","../services/yaml-workflow/pipeline/build/iteration.ts","../services/yaml-workflow/pipeline/build/metadata.ts","../services/yaml-workflow/pipeline/build/transform.ts","../services/yaml-workflow/pipeline/build/utils.ts","../services/yaml-workflow/pipeline/build/wiring.ts","../services/yaml-workflow/pipeline/compile/index.ts","../services/yaml-workflow/pipeline/compile/llm-call.ts","../services/yaml-workflow/pipeline/compile/parse-plan.ts","../services/yaml-workflow/pipeline/compile/summarize.ts","../services/yaml-workflow/workers/callbacks.ts","../services/yaml-workflow/workers/events.ts","../services/yaml-workflow/workers/index.ts","../services/yaml-workflow/workers/register.ts","../services/yaml-workflow/workers/scope.ts","../services/yaml-workflow/workers/step-tool.ts","../shared/workflow-state.ts","../shared/form-validation/ctx-path.ts","../shared/form-validation/derive-field-label.ts","../shared/form-validation/display-only-widgets.ts","../shared/form-validation/field-validator.ts","../shared/form-validation/index.ts","../shared/form-validation/invoke-context.ts","../shared/form-validation/validate-resolver-payload.ts","../shared/form-validation/x-lt-actions.ts","../shared/form-validation/x-lt-bind.ts","../shared/form-validation/x-lt-help.ts","../shared/form-validation/x-lt-invoke.ts","../shared/form-validation/x-lt-labels.ts","../shared/form-validation/x-lt-options.ts","../shared/form-validation/x-lt-query.ts","../shared/form-validation/x-lt-require-any.ts","../shared/form-validation/x-lt-require-sum.ts","../shared/form-validation/x-lt-roster.ts","../shared/form-validation/x-lt-scan.ts","../shared/form-validation/x-lt-show-if.ts","../shared/form-validation/x-lt-submit-guard.ts","../shared/form-validation/x-lt-submit-on-claim.ts","../shared/form-validation/x-lt-transition.ts","../shared/list-schema/aggregate.ts","../shared/list-schema/index.ts","../shared/list-schema/template.ts","../shared/list-schema/types.ts","../shared/list-schema/validate.ts","../shared/roles/segment.ts","../shared/scan-code/gtin.ts","../shared/scan-code/index.ts","../shared/scan-code/parse.ts","../start/adapters.ts","../start/apply-report.ts","../start/config.ts","../start/graph-workflows.ts","../start/index.ts","../start/server.ts","../start/socket-auth.ts","../start/workers.ts","../system/index.ts","../system/activities/claude-code.ts","../system/activities/file-storage.ts","../system/activities/http.ts","../system/activities/knowledge.ts","../system/activities/oauth.ts","../system/activities/schema-exchange.ts","../system/activities/sql.ts","../system/activities/triage/cache.ts","../system/activities/triage/context.ts","../system/activities/triage/discovery.ts","../system/activities/triage/index.ts","../system/activities/triage/llm.ts","../system/activities/triage/tools.ts","../system/mcp-servers/caller-auth.ts","../system/mcp-servers/claude-code.ts","../system/mcp-servers/docs.ts","../system/mcp-servers/events.ts","../system/mcp-servers/file-storage.ts","../system/mcp-servers/http-fetch.ts","../system/mcp-servers/human-queue-schemas.ts","../system/mcp-servers/human-queue.ts","../system/mcp-servers/knowledge.ts","../system/mcp-servers/machines-schemas.ts","../system/mcp-servers/machines.ts","../system/mcp-servers/oauth.ts","../system/mcp-servers/schema-exchange.ts","../system/mcp-servers/translation.ts","../system/mcp-servers/vision-prompts.ts","../system/mcp-servers/vision.ts","../system/mcp-servers/workflow-compiler.ts","../system/mcp-servers/workflow.ts","../system/mcp-servers/admin/agent-subscriptions.ts","../system/mcp-servers/admin/agents.ts","../system/mcp-servers/admin/announcements.ts","../system/mcp-servers/admin/bot-accounts.ts","../system/mcp-servers/admin/controlplane.ts","../system/mcp-servers/admin/diagnostics.ts","../system/mcp-servers/admin/domain-context.ts","../system/mcp-servers/admin/escalations.ts","../system/mcp-servers/admin/exports.ts","../system/mcp-servers/admin/index.ts","../system/mcp-servers/admin/maintenance.ts","../system/mcp-servers/admin/mcp-servers.ts","../system/mcp-servers/admin/overview.ts","../system/mcp-servers/admin/personas.ts","../system/mcp-servers/admin/pipelines.ts","../system/mcp-servers/admin/run-read.ts","../system/mcp-servers/admin/scan-codes.ts","../system/mcp-servers/admin/schemas.ts","../system/mcp-servers/admin/settings.ts","../system/mcp-servers/admin/tasks.ts","../system/mcp-servers/admin/topics.ts","../system/mcp-servers/admin/users.ts","../system/mcp-servers/admin/workflow-config.ts","../system/mcp-servers/admin/workflows.ts","../system/mcp-servers/admin/yaml-workflows.ts","../system/mcp-servers/db-query/index.ts","../system/mcp-servers/db-query/schemas.ts","../system/mcp-servers/db-query/tools.ts","../system/seed/index.ts","../system/seed/tool-manifests-admin.ts","../system/seed/tool-manifests-data.ts","../system/seed/tool-manifests-escalation.ts","../system/seed/tool-manifests-events.ts","../system/seed/tool-manifests-knowledge.ts","../system/seed/tool-manifests-machines.ts","../system/seed/tool-manifests-workflows.ts","../system/workflows/tool-result-guard.ts","../system/workflows/capability-invoke/activities.ts","../system/workflows/capability-invoke/index.ts","../system/workflows/mcp-deterministic/activities.ts","../system/workflows/mcp-deterministic/index.ts","../system/workflows/mcp-query/index.ts","../system/workflows/mcp-query/prompts.ts","../system/workflows/mcp-query/strategy-advisors.ts","../system/workflows/mcp-query/types.ts","../system/workflows/mcp-query/activities/caches.ts","../system/workflows/mcp-query/activities/discovery.ts","../system/workflows/mcp-query/activities/index.ts","../system/workflows/mcp-query/activities/llm.ts","../system/workflows/mcp-query/activities/tool-executor.ts","../system/workflows/mcp-query/activities/tool-loader.ts","../system/workflows/mcp-query-router/activities.ts","../system/workflows/mcp-query-router/index.ts","../system/workflows/mcp-query-router/prompts.ts","../system/workflows/mcp-triage/activities-proxy.ts","../system/workflows/mcp-triage/index.ts","../system/workflows/mcp-triage/prompts.ts","../system/workflows/mcp-triage/response-builders.ts","../system/workflows/mcp-triage/response.ts","../system/workflows/mcp-triage/types.ts","../system/workflows/mcp-triage-deterministic/activities.ts","../system/workflows/mcp-triage-deterministic/index.ts","../system/workflows/mcp-triage-router/activities.ts","../system/workflows/mcp-triage-router/index.ts","../system/workflows/mcp-workflow-builder/index.ts","../system/workflows/mcp-workflow-builder/prompts.ts","../system/workflows/mcp-workflow-builder/activities/caches.ts","../system/workflows/mcp-workflow-builder/activities/index.ts","../system/workflows/mcp-workflow-builder/activities/llm.ts","../system/workflows/mcp-workflow-builder/activities/tool-loader.ts","../system/workflows/mcp-workflow-planner/index.ts","../system/workflows/mcp-workflow-planner/prompts.ts","../system/workflows/mcp-workflow-planner/activities/analyze.ts","../system/workflows/mcp-workflow-planner/activities/index.ts","../system/workflows/mcp-workflow-planner/activities/persist.ts","../system/workflows/mcp-workflow-planner/activities/plan.ts","../system/workflows/shared/discovery.ts","../system/workflows/shared/index.ts","../system/workflows/shared/llm-caller.ts","../system/workflows/shared/principal-tools.ts","../system/workflows/shared/prompts.ts","../system/workflows/shared/strategy-advisors.ts","../system/workflows/shared/tool-executor.ts","../system/workflows/shared/tool-loader.ts","../system/workflows/shared/types.ts","../themes/midnight.ts","../types/agent.ts","../types/analytics.ts","../types/auth.ts","../types/capability.ts","../types/config.ts","../types/delegation.ts","../types/discovery.ts","../types/domain-manifest.ts","../types/envelope.ts","../types/escalation-strategy.ts","../types/escalation.ts","../types/events.ts","../types/export.ts","../types/express.d.ts","../types/facets.ts","../types/index.ts","../types/logger.ts","../types/machines-view.ts","../types/machines.ts","../types/maintenance.ts","../types/mcp.ts","../types/messaging.ts","../types/oauth-server.ts","../types/oauth.ts","../types/persona.ts","../types/scan-choice.ts","../types/sdk.ts","../types/startup.ts","../types/task.ts","../types/telemetry.ts","../types/tool-context.ts","../types/user.ts","../types/validation.ts","../types/workflow-icons.ts","../types/workflow-set.ts","../types/workflow.ts","../types/yaml-workflow.ts","../types/scan-code/constants.ts","../types/scan-code/index.ts","../types/scan-code/response.ts","../types/scan-code/rule.ts","../workers/index.ts"],"version":"5.9.3"}
|
|
@@ -148,20 +148,23 @@ export declare const ESCALATION_ENVELOPE_KEYS: {
|
|
|
148
148
|
/** A lookup ref `version` that follows the entry's newest edition. */
|
|
149
149
|
export declare const LOOKUP_VERSION_CURRENT: "current";
|
|
150
150
|
/**
|
|
151
|
-
* One knowledge lookup reference. `version` pins an immutable edition
|
|
152
|
-
* or
|
|
153
|
-
*
|
|
154
|
-
*
|
|
155
|
-
* form-context address when the key
|
|
151
|
+
* One knowledge lookup reference. `version` pins an immutable edition by its
|
|
152
|
+
* number or by the label an edition carries; absent or `'current'`, the ref
|
|
153
|
+
* follows the entry's newest edition: a pending row reads the edition in
|
|
154
|
+
* force when it renders, and a closed row reads the edition that was current
|
|
155
|
+
* when it closed. `as` renames the ref's form-context address when the key
|
|
156
|
+
* alone is ambiguous.
|
|
156
157
|
*/
|
|
157
158
|
export interface EscalationLookupRef {
|
|
158
159
|
domain: string;
|
|
159
160
|
key: string;
|
|
160
|
-
version?: number |
|
|
161
|
+
version?: number | string;
|
|
161
162
|
as?: string;
|
|
162
163
|
}
|
|
163
164
|
/** True when the ref follows the newest edition rather than pinning one. */
|
|
164
165
|
export declare function isCurrentLookupRef(ref: Pick<EscalationLookupRef, 'version'>): boolean;
|
|
166
|
+
/** True when the ref pins an edition by the label it carries. */
|
|
167
|
+
export declare function isLabelLookupRef(ref: Pick<EscalationLookupRef, 'version'>): boolean;
|
|
165
168
|
/**
|
|
166
169
|
* Fail-loud structural validation for lookup refs, run before the escalation
|
|
167
170
|
* row is written on every creation path. Dependency-free: the `conditional`
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.LOOKUP_VERSION_CURRENT = exports.ESCALATION_ENVELOPE_KEYS = exports.ESCALATION_METADATA_KEYS = exports.ACCUMULATOR_RESULT_KEYS = exports.ESCALATION_ACCUMULATE_KEYS = exports.ESCALATION_BATCH_KEYS = exports.ESCALATION_ITEM_KEY_MAX_LENGTH = void 0;
|
|
4
4
|
exports.isCurrentLookupRef = isCurrentLookupRef;
|
|
5
|
+
exports.isLabelLookupRef = isLabelLookupRef;
|
|
5
6
|
exports.assertLookupRefs = assertLookupRefs;
|
|
6
7
|
exports.isEffectivelyClaimed = isEffectivelyClaimed;
|
|
7
8
|
exports.isAvailable = isAvailable;
|
|
@@ -97,6 +98,10 @@ exports.LOOKUP_VERSION_CURRENT = 'current';
|
|
|
97
98
|
function isCurrentLookupRef(ref) {
|
|
98
99
|
return ref.version === undefined || ref.version === exports.LOOKUP_VERSION_CURRENT;
|
|
99
100
|
}
|
|
101
|
+
/** True when the ref pins an edition by the label it carries. */
|
|
102
|
+
function isLabelLookupRef(ref) {
|
|
103
|
+
return typeof ref.version === 'string' && ref.version.length > 0 && ref.version !== exports.LOOKUP_VERSION_CURRENT;
|
|
104
|
+
}
|
|
100
105
|
/**
|
|
101
106
|
* Fail-loud structural validation for lookup refs, run before the escalation
|
|
102
107
|
* row is written on every creation path. Dependency-free: the `conditional`
|
|
@@ -113,8 +118,9 @@ function assertLookupRefs(refs) {
|
|
|
113
118
|
throw new Error('Each lookup ref requires a non-empty domain and key');
|
|
114
119
|
}
|
|
115
120
|
const pinned = typeof r.version === 'number' && Number.isInteger(r.version) && r.version >= 1;
|
|
116
|
-
|
|
117
|
-
|
|
121
|
+
const labelled = typeof r.version === 'string' && r.version.length > 0;
|
|
122
|
+
if (r.version !== undefined && !pinned && !labelled) {
|
|
123
|
+
throw new Error(`Lookup ref ${r.domain}/${r.key}: version must be a positive integer, an edition label, 'current', or absent`);
|
|
118
124
|
}
|
|
119
125
|
if (r.as !== undefined && (typeof r.as !== 'string' || r.as.length === 0)) {
|
|
120
126
|
throw new Error(`Lookup ref ${r.domain}/${r.key}: "as" must be a non-empty string when present`);
|
|
@@ -110,6 +110,22 @@ export interface WireEvent {
|
|
|
110
110
|
payload?: unknown;
|
|
111
111
|
}
|
|
112
112
|
/** A dry run of one message: what the codec read and what the gateway would do. */
|
|
113
|
+
/** A read of the leader's wire window: newest first. */
|
|
114
|
+
export interface WireWindowQuery {
|
|
115
|
+
limit?: number;
|
|
116
|
+
machine?: string;
|
|
117
|
+
direction?: WireDirection;
|
|
118
|
+
kind?: WireKind;
|
|
119
|
+
/** Only events after this time (ISO 8601). */
|
|
120
|
+
since?: string;
|
|
121
|
+
}
|
|
122
|
+
export interface LineWireResponse {
|
|
123
|
+
siteId: string;
|
|
124
|
+
lineId: string;
|
|
125
|
+
/** False from a replica that is not leading the line; its window is then empty. */
|
|
126
|
+
leading: boolean;
|
|
127
|
+
events: WireEvent[];
|
|
128
|
+
}
|
|
113
129
|
export interface InspectResult {
|
|
114
130
|
kind: WireKind | null;
|
|
115
131
|
event: string | null;
|
|
@@ -47,13 +47,19 @@ export interface LTStreamMessage extends LTMessage {
|
|
|
47
47
|
export interface LTConsumeOptions {
|
|
48
48
|
/** Delay before a nak'd message is delivered again. */
|
|
49
49
|
nakDelayMs?: number;
|
|
50
|
+
/** Told once when the consumer can deliver nothing more: its stream or itself is gone, or the server fell silent. */
|
|
51
|
+
onLost?: (reason: string) => void;
|
|
50
52
|
}
|
|
51
53
|
/** Durable streams: messages kept, delivered to named consumers in order, one at a time, until settled. */
|
|
52
54
|
export interface LTStreams {
|
|
53
55
|
/** Create the stream, or bring an existing one's subjects and age up to the spec. */
|
|
54
56
|
ensureStream(spec: StreamSpec): Promise<void>;
|
|
55
|
-
/** Create the consumer, or
|
|
57
|
+
/** Create the consumer, or keep an existing one whose subjects match the spec; one whose subjects changed is made again. */
|
|
56
58
|
ensureConsumer(stream: string, spec: ConsumerSpec): Promise<void>;
|
|
59
|
+
/** The stream as it is now, or null when there is none. */
|
|
60
|
+
describeStream(name: string): Promise<StreamSpec | null>;
|
|
61
|
+
/** The consumer as it is now, or null when there is none. */
|
|
62
|
+
describeConsumer(stream: string, name: string): Promise<ConsumerSpec | null>;
|
|
57
63
|
/** Append a message; resolves once the stream holds it. */
|
|
58
64
|
append(subject: Subject, payload: string): Promise<void>;
|
|
59
65
|
/** Deliver the consumer's messages to `handler` one at a time; a thrown handler counts as a nak. */
|
package/build/types/startup.d.ts
CHANGED
|
@@ -212,6 +212,8 @@ export interface LTMachinesConfig {
|
|
|
212
212
|
declareRoles?: boolean;
|
|
213
213
|
/** The machines' wire protocol; the generic line protocol under MACHINE_TOPIC_ROOT by default. */
|
|
214
214
|
codec?: LineCodec;
|
|
215
|
+
/** A codec for one line, keyed `<siteId>/<lineId>`; every other line, code or API declared, uses `codec`. */
|
|
216
|
+
codecs?: Record<string, LineCodec>;
|
|
215
217
|
/** Reads the host's rows into machine handoffs; the standard handoff facets by default. */
|
|
216
218
|
rows?: HandoffRowAdapter;
|
|
217
219
|
}
|
package/docs/dashboard.md
CHANGED
|
@@ -495,7 +495,7 @@ Accessible at `/files` (builder-only: superadmin or the `engineer` role). Browse
|
|
|
495
495
|
|
|
496
496
|
The backend is selected by the `LT_STORAGE_BACKEND` env var — `local` (filesystem) or `s3` (S3-compatible, including MinIO). The same interface serves every backend; only env changes.
|
|
497
497
|
|
|
498
|
-
**API:** `GET /api/file-browser/browse?prefix=<path>` lists. `POST /api/file-browser/upload?path=<path
|
|
498
|
+
**API:** `GET /api/file-browser/browse?prefix=<path>` lists. `POST /api/file-browser/upload?path=<path>[&sha256=<hex>]` uploads raw bytes; the stored object keeps the bytes' SHA-256, the response carries it, and a `sha256` the caller names is checked first, 422 when the bytes differ and nothing stored. `GET /api/file-browser/metadata/<path>` reports the digest beside size and type. `GET /api/file-browser/download/<path>` downloads; `DELETE /api/file-browser/delete/<path>` removes; `POST /api/file-browser/signed-url` mints a link. Token-scoped serving is at `GET /api/files/<path>?token=<jwt>`.
|
|
499
499
|
|
|
500
500
|
### Knowledge
|
|
501
501
|
|
package/docs/hitl/lookups.md
CHANGED
|
@@ -15,13 +15,15 @@ An escalation can reference **versioned knowledge lookups** — enumerated lists
|
|
|
15
15
|
|-------|----------|---------|
|
|
16
16
|
| `domain` | yes | Knowledge domain |
|
|
17
17
|
| `key` | yes | Entry key within the domain |
|
|
18
|
-
| `version` | no | An edition to pin. Absent or `"current"`, the ref follows the newest edition |
|
|
18
|
+
| `version` | no | An edition to pin, by its number or by the label it carries. Absent or `"current"`, the ref follows the newest edition |
|
|
19
19
|
| `as` | no | The ref's form-context address, when the key alone is ambiguous |
|
|
20
20
|
|
|
21
21
|
**Current refs** (no `version`, or `"current"`) read the entry's newest edition. A pending row reads the edition in force when its form renders, so a row that stays open for days shows today's list. A resolved or cancelled row reads the edition that was current when it closed, so its history shows the list its work was done against. Form schemas stay pinned (`schemaVersion`); the lists they read follow the knowledge entry.
|
|
22
22
|
|
|
23
23
|
**Pinned refs** (`version: N`) name an immutable edition: every escalation created against edition 2 renders edition 2 forever, however the entry evolves afterward. Pin when the form must read one exact edition.
|
|
24
24
|
|
|
25
|
+
**Labelled refs** (`version: "rev-b"`) name an edition by the label the write that minted it gave (`label` on `storeEntry`, `store_knowledge` and `append_knowledge`). A label names one edition of an entry for good, so a ref that carries the label a machine or a document quotes, such as a catalog revision, reads the right edition without knowing its number. A whole-number label no edition carries, `"2"`, reads edition 2. A label nothing carries resolves to nothing: the row is created all the same and its lookup answers `missing: true` until an edition with that label exists.
|
|
26
|
+
|
|
25
27
|
A value picked from a current list is validated against the edition in force at submit, so an option removed while the form was open is refused with the canonical 422 and the person picks again.
|
|
26
28
|
|
|
27
29
|
Refs live under the reserved `envelope.lookups` key — the unindexed, render-only bag beside `formDefaults`. They ride the engine's atomic write but never touch the GIN-indexed metadata surface: refs are form plumbing, not facets.
|
|
@@ -42,7 +44,7 @@ const decision = await conditional<CascadeResolverV1>(signalId, {
|
|
|
42
44
|
});
|
|
43
45
|
```
|
|
44
46
|
|
|
45
|
-
The refs fold into `envelope.lookups` as a pure transform — a wait with refs costs exactly what one without does. A malformed ref (missing field, a version that is
|
|
47
|
+
The refs fold into `envelope.lookups` as a pure transform — a wait with refs costs exactly what one without does. A malformed ref (missing field, a version that is neither a positive integer, a non-empty label nor `"current"`) throws before the row is written; over the HTTP create surface the same validation answers with a 400.
|
|
46
48
|
|
|
47
49
|
## Pinning on a Workflow Config
|
|
48
50
|
|
|
@@ -63,7 +65,7 @@ const fleetToolsConfig: LTWorkerConfig = {
|
|
|
63
65
|
|
|
64
66
|
The Invoke Tool page fetches `GET /api/workflows/:type/input-lookups` each time the form opens; the grant is the invoke predicate, so whoever may start the workflow reads exactly the entries the config names. The invoke API resolves the same refs into the gate, so a value outside the edition is refused with the canonical 422. The registry detail page edits the refs under **Lookups** in its Invocation column; the preview renders against the resolved editions.
|
|
65
67
|
|
|
66
|
-
The refs are checked twice on save. Shape first: a missing `domain` or `key`, a `version` that is
|
|
68
|
+
The refs are checked twice on save. Shape first: a missing `domain` or `key`, a `version` that is neither a positive integer, a label nor `"current"`, or an empty `as` answers `400` with the field named. Existence second: a ref with no edition behind it answers `400` naming the editions that do (`Lookup ref fleet/serial-numbers v3 names no edition (editions: v1, v2)`; a current ref to an entry with no editions says `current`), from `PUT /api/workflows/:type/config` and from the MCP `upsert_workflow_config` tool alike. On the worker boot path a malformed ref fails the boot; a ref whose edition is not yet written logs a warning, since seeds commonly run after registration. At run time the resolver holds each edition in memory once read (editions are immutable; a current ref first looks up which edition is newest), a missing edition answers `missing: true` for that ref without failing the batch, the Invoke Tool page shows which editions are unavailable, and the fields that read them follow the `x-lt-options` rules: a plain path falls back to the typed input, an interpolated path stays a disabled select and fails closed.
|
|
67
69
|
|
|
68
70
|
## Versioning
|
|
69
71
|
|
|
@@ -73,7 +75,7 @@ Every knowledge entry carries a `current_version`, and every write that changes
|
|
|
73
75
|
2. **Current refs follow** — every pending row with a current ref shows the new edition on its next render. Nothing to repin.
|
|
74
76
|
3. **Pinned rows keep their edition** — an escalation pinned to v1 renders v1's list even after v5 exists. Repin the literal (and evolve the resolver payload type) when a pinned form should move.
|
|
75
77
|
|
|
76
|
-
Inspect the lineage with `GET /api/knowledge/entry/versions?domain=catalog&key=materials`, `ltc kb versions catalog materials`, or the `list_knowledge_versions` MCP tool. Fetch a specific edition with `?version=N` on the entry endpoint
|
|
78
|
+
A write may name the edition it leaves current with `label` (`storeEntry`, `store_knowledge`, `append_knowledge`); the label stays with that edition, and a second edition of the entry cannot take it. Inspect the lineage with `GET /api/knowledge/entry/versions?domain=catalog&key=materials`, `ltc kb versions catalog materials`, or the `list_knowledge_versions` MCP tool; each edition lists its label. Fetch a specific edition with `?version=N` or `?version=<label>` on the entry endpoint, or `version` on `get_knowledge`.
|
|
77
79
|
|
|
78
80
|
## The Grant
|
|
79
81
|
|