@adonis-agora/durable 1.0.0-rc.11 → 1.0.0-rc.13
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/CHANGELOG.md +18 -0
- package/dist/assets/spa/assets/index-DkiDTtil.css +1 -0
- package/dist/assets/spa/assets/index-DlFfJoOc.js +16 -0
- package/dist/assets/spa/assets/index-DlFfJoOc.js.map +1 -0
- package/dist/assets/spa/index.html +2 -2
- package/dist/commands/agora_doctor.d.ts +23 -0
- package/dist/commands/agora_doctor.d.ts.map +1 -0
- package/dist/commands/agora_doctor.js +110 -0
- package/dist/commands/agora_doctor.js.map +1 -0
- package/dist/commands/durable_doctor.d.ts +8 -0
- package/dist/commands/durable_doctor.d.ts.map +1 -0
- package/dist/commands/durable_doctor.js +8 -0
- package/dist/commands/durable_doctor.js.map +1 -0
- package/dist/commands/main.d.ts +4 -3
- package/dist/commands/main.d.ts.map +1 -1
- package/dist/commands/main.js +5 -1
- package/dist/commands/main.js.map +1 -1
- package/dist/providers/dashboard_provider.d.ts +9 -0
- package/dist/providers/dashboard_provider.d.ts.map +1 -1
- package/dist/providers/dashboard_provider.js +128 -8
- package/dist/providers/dashboard_provider.js.map +1 -1
- package/dist/providers/durable_provider.d.ts.map +1 -1
- package/dist/providers/durable_provider.js +16 -3
- package/dist/providers/durable_provider.js.map +1 -1
- package/dist/src/config_types.d.ts +67 -14
- package/dist/src/config_types.d.ts.map +1 -1
- package/dist/src/dashboard/console_authorize.d.ts +16 -0
- package/dist/src/dashboard/console_authorize.d.ts.map +1 -1
- package/dist/src/dashboard/console_authorize.js +50 -0
- package/dist/src/dashboard/console_authorize.js.map +1 -1
- package/dist/src/dashboard/console_switcher.d.ts +121 -0
- package/dist/src/dashboard/console_switcher.d.ts.map +1 -0
- package/dist/src/dashboard/console_switcher.js +201 -0
- package/dist/src/dashboard/console_switcher.js.map +1 -0
- package/dist/src/dashboard/define_config.d.ts +4 -2
- package/dist/src/dashboard/define_config.d.ts.map +1 -1
- package/dist/src/dashboard/define_config.js.map +1 -1
- package/dist/src/dashboard/dev_tools.d.ts +99 -0
- package/dist/src/dashboard/dev_tools.d.ts.map +1 -0
- package/dist/src/dashboard/dev_tools.js +487 -0
- package/dist/src/dashboard/dev_tools.js.map +1 -0
- package/dist/src/dashboard/index.d.ts +6 -2
- package/dist/src/dashboard/index.d.ts.map +1 -1
- package/dist/src/dashboard/index.js +6 -2
- package/dist/src/dashboard/index.js.map +1 -1
- package/dist/src/dashboard/spa.d.ts +12 -1
- package/dist/src/dashboard/spa.d.ts.map +1 -1
- package/dist/src/dashboard/spa.js +6 -2
- package/dist/src/dashboard/spa.js.map +1 -1
- package/dist/src/doctor/agora_doctor.d.ts +116 -0
- package/dist/src/doctor/agora_doctor.d.ts.map +1 -0
- package/dist/src/doctor/agora_doctor.js +685 -0
- package/dist/src/doctor/agora_doctor.js.map +1 -0
- package/dist/src/doctor/checks.d.ts +22 -0
- package/dist/src/doctor/checks.d.ts.map +1 -0
- package/dist/src/doctor/checks.js +197 -0
- package/dist/src/doctor/checks.js.map +1 -0
- package/dist/src/doctor/index.d.ts +9 -0
- package/dist/src/doctor/index.d.ts.map +1 -0
- package/dist/src/doctor/index.js +16 -0
- package/dist/src/doctor/index.js.map +1 -0
- package/dist/src/index.d.ts +3 -3
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/run-gateway/proxy-run-gateway.d.ts +3 -1
- package/dist/src/run-gateway/proxy-run-gateway.d.ts.map +1 -1
- package/dist/src/run-gateway/proxy-run-gateway.js +17 -5
- package/dist/src/run-gateway/proxy-run-gateway.js.map +1 -1
- package/dist/src/run-gateway/run-request-responder.d.ts.map +1 -1
- package/dist/src/run-gateway/run-request-responder.js +3 -1
- package/dist/src/run-gateway/run-request-responder.js.map +1 -1
- package/dist/src/run-gateway/tenant-auth.d.ts +19 -1
- package/dist/src/run-gateway/tenant-auth.d.ts.map +1 -1
- package/dist/src/run-gateway/tenant-auth.js +133 -0
- package/dist/src/run-gateway/tenant-auth.js.map +1 -1
- package/package.json +12 -4
- package/skills/durable-cluster/SKILL.md +8 -1
- package/dist/assets/spa/assets/index-B2kIfzsc.css +0 -1
- package/dist/assets/spa/assets/index-Bgf_8IJ0.js +0 -16
- package/dist/assets/spa/assets/index-Bgf_8IJ0.js.map +0 -1
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* The console switcher registry, version 1, declared here STRUCTURALLY: every `@adonis-agora`
|
|
3
|
+
* console declares the same shapes and binds the same plain value at `'agora.consoles'` when it is
|
|
4
|
+
* the first to boot. No lib imports another; whichever copy creates the registry, the others append
|
|
5
|
+
* to it.
|
|
6
|
+
*/
|
|
7
|
+
/** The container binding the registry lives at. */
|
|
8
|
+
export const AGORA_CONSOLES_BINDING = 'agora.consoles';
|
|
9
|
+
const ID = /^[a-z][a-z0-9-]*$/;
|
|
10
|
+
const ICONS = new Set([
|
|
11
|
+
'workflow',
|
|
12
|
+
'telescope',
|
|
13
|
+
'media',
|
|
14
|
+
'payments',
|
|
15
|
+
'agent',
|
|
16
|
+
'identity',
|
|
17
|
+
'generic',
|
|
18
|
+
]);
|
|
19
|
+
/** How long another console's `authorize` (or `search`) may take before it is left out. */
|
|
20
|
+
export const PROBE_TIMEOUT_MS = 300;
|
|
21
|
+
/** Hits per console in a global search. */
|
|
22
|
+
export const SEARCH_HITS_PER_CONSOLE = 5;
|
|
23
|
+
/** Whether `path` is a same-origin absolute path (`/x`, never `//host` or a URL). */
|
|
24
|
+
export function isSameOriginPath(path) {
|
|
25
|
+
return typeof path === 'string' && path.startsWith('/') && !path.startsWith('//');
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Add a console to the app's switcher registry, creating the registry when this is the first
|
|
29
|
+
* console to boot. Consoles call it from their provider's `boot()`; an app can call it too, for a
|
|
30
|
+
* console it mounts itself. A registry of another version is left alone; a duplicate id is skipped
|
|
31
|
+
* with a warning. Returns whether the entry was added.
|
|
32
|
+
*/
|
|
33
|
+
export async function registerAgoraConsole(container, entry, logger) {
|
|
34
|
+
if (!ID.test(entry.id)) {
|
|
35
|
+
throw new Error(`[@adonis-agora/durable] console id ${JSON.stringify(entry.id)} is invalid`);
|
|
36
|
+
}
|
|
37
|
+
if (!isSameOriginPath(entry.path)) {
|
|
38
|
+
throw new Error(`[@adonis-agora/durable] console path ${JSON.stringify(entry.path)} must start with a single "/"`);
|
|
39
|
+
}
|
|
40
|
+
if (!container.hasBinding(AGORA_CONSOLES_BINDING)) {
|
|
41
|
+
const fresh = { version: 1, entries: [] };
|
|
42
|
+
container.bindValue(AGORA_CONSOLES_BINDING, fresh);
|
|
43
|
+
}
|
|
44
|
+
const registry = (await container.make(AGORA_CONSOLES_BINDING));
|
|
45
|
+
if (registry?.version !== 1 || !Array.isArray(registry.entries))
|
|
46
|
+
return false;
|
|
47
|
+
if (registry.entries.some((existing) => existing.id === entry.id)) {
|
|
48
|
+
logger?.warn(`[@adonis-agora/durable] console id "${entry.id}" already registered`);
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
registry.entries.push(entry);
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
/** The registry, when one is bound with a version this copy reads. */
|
|
55
|
+
export async function readAgoraConsoles(container) {
|
|
56
|
+
if (!container.hasBinding(AGORA_CONSOLES_BINDING))
|
|
57
|
+
return undefined;
|
|
58
|
+
const registry = (await container.make(AGORA_CONSOLES_BINDING));
|
|
59
|
+
if (registry?.version !== 1 || !Array.isArray(registry.entries))
|
|
60
|
+
return undefined;
|
|
61
|
+
return registry;
|
|
62
|
+
}
|
|
63
|
+
/** How many consoles other than `selfId` are registered (no `authorize` runs). */
|
|
64
|
+
export function otherConsoles(registry, selfId) {
|
|
65
|
+
return registry ? registry.entries.filter((entry) => entry.id !== selfId).length : 0;
|
|
66
|
+
}
|
|
67
|
+
/** `work`, or `fallback` when it rejects or takes longer than `ms`. */
|
|
68
|
+
async function within(work, ms, fallback) {
|
|
69
|
+
let timer;
|
|
70
|
+
const timeout = new Promise((resolve) => {
|
|
71
|
+
timer = setTimeout(() => resolve(fallback), ms);
|
|
72
|
+
});
|
|
73
|
+
try {
|
|
74
|
+
return await Promise.race([
|
|
75
|
+
Promise.resolve()
|
|
76
|
+
.then(work)
|
|
77
|
+
.catch(() => fallback),
|
|
78
|
+
timeout,
|
|
79
|
+
]);
|
|
80
|
+
}
|
|
81
|
+
finally {
|
|
82
|
+
if (timer !== undefined)
|
|
83
|
+
clearTimeout(timer);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Run `fn` with the probe marker on `ctx`: an `authorize` that writes an audit trail can read
|
|
88
|
+
* `ctx.agoraProbe === true` and skip it, since the switcher only asks, it does not open anything.
|
|
89
|
+
*/
|
|
90
|
+
async function probing(ctx, fn) {
|
|
91
|
+
const marked = ctx;
|
|
92
|
+
const previous = marked.agoraProbe;
|
|
93
|
+
marked.agoraProbe = true;
|
|
94
|
+
try {
|
|
95
|
+
return await fn();
|
|
96
|
+
}
|
|
97
|
+
finally {
|
|
98
|
+
if (previous === undefined)
|
|
99
|
+
delete marked.agoraProbe;
|
|
100
|
+
else
|
|
101
|
+
marked.agoraProbe = previous;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
function sorted(entries) {
|
|
105
|
+
return [...entries].sort((a, b) => a.order - b.order || a.id.localeCompare(b.id));
|
|
106
|
+
}
|
|
107
|
+
async function allowedEntries(entries, ctx, timeoutMs) {
|
|
108
|
+
const verdicts = await probing(ctx, () => Promise.all(entries.map((entry) => within(async () => (await entry.authorize(ctx)).allowed === true, timeoutMs, false))));
|
|
109
|
+
return entries.filter((_, index) => verdicts[index]);
|
|
110
|
+
}
|
|
111
|
+
function iconOf(icon) {
|
|
112
|
+
return ICONS.has(icon) ? icon : 'generic';
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* The consoles other than `selfId` the viewer may open: every other entry's `authorize` runs in
|
|
116
|
+
* parallel, each given {@link PROBE_TIMEOUT_MS}; a timeout, a rejection or any denial hides it. No
|
|
117
|
+
* reason is ever returned.
|
|
118
|
+
*/
|
|
119
|
+
export async function listVisibleConsoles(registry, selfId, ctx, timeoutMs = PROBE_TIMEOUT_MS) {
|
|
120
|
+
const others = registry
|
|
121
|
+
? sorted(registry.entries.filter((entry) => entry.id !== selfId && isSameOriginPath(entry.path)))
|
|
122
|
+
: [];
|
|
123
|
+
const allowed = await allowedEntries(others, ctx, timeoutMs);
|
|
124
|
+
return {
|
|
125
|
+
version: 1,
|
|
126
|
+
current: selfId,
|
|
127
|
+
consoles: allowed.map((entry) => ({
|
|
128
|
+
id: entry.id,
|
|
129
|
+
title: entry.title,
|
|
130
|
+
...(entry.package !== undefined ? { package: entry.package } : {}),
|
|
131
|
+
icon: iconOf(entry.icon),
|
|
132
|
+
href: entry.path,
|
|
133
|
+
})),
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Global search: `q` goes to every console the viewer may open that has a `search` (this one
|
|
138
|
+
* included, the viewer is already in it), in parallel, {@link PROBE_TIMEOUT_MS} each, at most
|
|
139
|
+
* {@link SEARCH_HITS_PER_CONSOLE} same-origin hits per console. Consoles with no hit are left out.
|
|
140
|
+
*/
|
|
141
|
+
export async function searchConsoles(registry, selfId, ctx, q, timeoutMs = PROBE_TIMEOUT_MS) {
|
|
142
|
+
const query = q.trim().slice(0, 200);
|
|
143
|
+
if (!registry || query === '')
|
|
144
|
+
return { version: 1, q: query, results: [] };
|
|
145
|
+
const searchable = sorted(registry.entries.filter((entry) => typeof entry.search === 'function' && isSameOriginPath(entry.path)));
|
|
146
|
+
const self = searchable.filter((entry) => entry.id === selfId);
|
|
147
|
+
const others = await allowedEntries(searchable.filter((entry) => entry.id !== selfId), ctx, timeoutMs);
|
|
148
|
+
const targets = sorted([...self, ...others]);
|
|
149
|
+
const hits = await probing(ctx, () => Promise.all(targets.map((entry) => within(async () => (await entry.search?.(ctx, query, SEARCH_HITS_PER_CONSOLE)) ?? [], timeoutMs, []))));
|
|
150
|
+
const results = [];
|
|
151
|
+
targets.forEach((entry, index) => {
|
|
152
|
+
const safe = (hits[index] ?? [])
|
|
153
|
+
.filter((hit) => typeof hit === 'object' &&
|
|
154
|
+
hit !== null &&
|
|
155
|
+
typeof hit.title === 'string' &&
|
|
156
|
+
isSameOriginPath(hit.href))
|
|
157
|
+
.slice(0, SEARCH_HITS_PER_CONSOLE)
|
|
158
|
+
.map((hit) => ({
|
|
159
|
+
title: hit.title,
|
|
160
|
+
...(typeof hit.subtitle === 'string' ? { subtitle: hit.subtitle } : {}),
|
|
161
|
+
href: hit.href,
|
|
162
|
+
}));
|
|
163
|
+
if (safe.length > 0) {
|
|
164
|
+
results.push({ id: entry.id, title: entry.title, icon: iconOf(entry.icon), hits: safe });
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
return { version: 1, q: query, results };
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* The durable console's global search: an exact run id opens that run, and workflow names that
|
|
171
|
+
* contain `q` open the workflow's page. `base` is the console's mount path (`''` at the root).
|
|
172
|
+
*/
|
|
173
|
+
export function durableConsoleSearch(source, base) {
|
|
174
|
+
const shell = base === '' ? '/' : base;
|
|
175
|
+
return async (_ctx, q, limit) => {
|
|
176
|
+
const reader = await source();
|
|
177
|
+
const hits = [];
|
|
178
|
+
const run = await reader.getRun(q).catch(() => null);
|
|
179
|
+
if (run) {
|
|
180
|
+
hits.push({
|
|
181
|
+
title: run.id,
|
|
182
|
+
subtitle: `run · ${run.workflow} · ${run.status}`,
|
|
183
|
+
href: `${shell}#/run/${encodeURIComponent(run.id)}`,
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
const rows = await reader.workflows(q, limit).catch(() => []);
|
|
187
|
+
for (const row of rows) {
|
|
188
|
+
if (hits.length >= limit)
|
|
189
|
+
break;
|
|
190
|
+
if (row.value === null)
|
|
191
|
+
continue;
|
|
192
|
+
hits.push({
|
|
193
|
+
title: row.value,
|
|
194
|
+
subtitle: `workflow · ${row.count} ${row.count === 1 ? 'run' : 'runs'}`,
|
|
195
|
+
href: `${shell}#/workflow/${encodeURIComponent(row.value)}`,
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
return hits.slice(0, limit);
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
//# sourceMappingURL=console_switcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"console_switcher.js","sourceRoot":"","sources":["../../../src/dashboard/console_switcher.ts"],"names":[],"mappings":"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"}
|
|
@@ -117,11 +117,13 @@ export interface DashboardAuditEntry {
|
|
|
117
117
|
at: Date;
|
|
118
118
|
/**
|
|
119
119
|
* The signed-in user (`ctx.auth.user`'s `email`, `name` or `id`), `'bearer'` for a caller with an
|
|
120
|
-
* `Authorization` header and no user, else `'anonymous'`.
|
|
120
|
+
* `Authorization` header and no user, else `'anonymous'`. An action run from a developer tool
|
|
121
|
+
* over MCP is `'mcp:<caller>'` (`mcp:token:3f9a1c2b7d10`, `mcp:user:42`).
|
|
121
122
|
*/
|
|
122
123
|
actor: string;
|
|
124
|
+
/** The HTTP method, or `'MCP'` for a developer tool. */
|
|
123
125
|
method: string;
|
|
124
|
-
/** The request path (no query string). */
|
|
126
|
+
/** The request path (no query string), or `'<tool> <run id or schedule key>'` for a developer tool. */
|
|
125
127
|
path: string;
|
|
126
128
|
}
|
|
127
129
|
/** The warning logged once at boot when `authorize` is omitted. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define_config.d.ts","sourceRoot":"","sources":["../../../src/dashboard/define_config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EACV,kBAAkB,IAAI,yBAAyB,EAC/C,oBAAoB,IAAI,2BAA2B,EACpD,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EACzB,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EAGrB,MAAM,wBAAwB,CAAC;AAEhC;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAAG,2BAA2B,CAAC,WAAW,CAAC,CAAC;AAE5E,8FAA8F;AAC9F,MAAM,MAAM,kBAAkB,GAAG,yBAAyB,CAAC,WAAW,CAAC,CAAC;AAExE;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,iBAAiB,GAAG,WAAW,CAAC;CAC1C;AAED;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,sBAAsB,GAAG,iBAAiB,CAAC;AAEzE;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,EAAE,WAAW,KAAK,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAE7F;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,OAAO,GAAG,eAAe,CAEzE;AAED,8CAA8C;AAC9C,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;;;;;;;;OAUG;IACH,SAAS,CAAC,EAAE,gBAAgB,GAAG,aAAa,CAAC;IAC7C;;;;;OAKG;IACH,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC7C;;;;;;OAMG;IACH,MAAM,CAAC,EAAE;QACP,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChE,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC/E,CAAC;IACF;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC;AAED,wEAAwE;AACxE,MAAM,WAAW,8BAA8B;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,0FAA0F;IAC1F,SAAS,EAAE,oBAAoB,CAAC;IAChC,+FAA+F;IAC/F,mBAAmB,EAAE,OAAO,CAAC;IAC7B,gGAAgG;IAChG,YAAY,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACxC,oEAAoE;IACpE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC;IACrD,mEAAmE;IACnE,MAAM,EAAE;QACN,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChE,UAAU,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC/E,GAAG,IAAI,CAAC;CACV;AAED,qFAAqF;AACrF,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,IAAI,CAAC;IACT
|
|
1
|
+
{"version":3,"file":"define_config.d.ts","sourceRoot":"","sources":["../../../src/dashboard/define_config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define_config.js","sourceRoot":"","sources":["../../../src/dashboard/define_config.ts"],"names":[],"mappings":"AAKA,OAAO,EAKL,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAoChC;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAe;IACtD,OAAO,wBAAwB,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC;
|
|
1
|
+
{"version":3,"file":"define_config.js","sourceRoot":"","sources":["../../../src/dashboard/define_config.ts"],"names":[],"mappings":"AAKA,OAAO,EAKL,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAoChC;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAe;IACtD,OAAO,wBAAwB,CAAC,MAAM,CAAC,CAAC;AAC1C,CAAC;AA8FD,mEAAmE;AACnE,MAAM,CAAC,MAAM,oBAAoB,GAC/B,sLAAsL,CAAC;AAEzL,MAAM,QAAQ,GAAyB,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;AACvE,MAAM,OAAO,GAAyB,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;AAW5F,0EAA0E;AAC1E,MAAM,UAAU,aAAa,CAC3B,MAAM,GAA2B,EAAE,EACnC,OAAO,GAAyB,EAAE;IAElC,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,IAAI,UAAU,CAAC;IAC1C,mFAAmF;IACnF,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;IACtE,MAAM,mBAAmB,GAAG,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC;IAC3D,IAAI,SAA+B,CAAC;IACpC,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;QAAE,SAAS,GAAG,uBAAuB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;;QACrF,SAAS,GAAG,OAAO,CAAC,YAAY,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;IACrE,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI;QAC/B,IAAI,EAAE,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO;QACpC,SAAS;QACT,mBAAmB;QACnB,YAAY,EAAE,MAAM,CAAC,YAAY,IAAI,IAAI;QACzC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,IAAI;KAC9B,CAAC;AACJ,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,YAAY,CAAC,MAAM,GAA2B,EAAE;IAC9D,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import type { HttpContext } from '@adonisjs/core/http';
|
|
2
|
+
import type { ConsoleDecision } from './console_authorize.js';
|
|
3
|
+
import { type Deps } from './handlers.js';
|
|
4
|
+
/** The container binding the dev-tools hub lives at. */
|
|
5
|
+
export declare const DEV_TOOLS_BINDING = "agora.devTools";
|
|
6
|
+
/** The hub a lib registers its developer tools into. */
|
|
7
|
+
export interface DevToolsHub {
|
|
8
|
+
readonly version: 1;
|
|
9
|
+
register(lib: DevToolsLib): void;
|
|
10
|
+
}
|
|
11
|
+
/** One lib's tools and the gate that decides who may use them. */
|
|
12
|
+
export interface DevToolsLib {
|
|
13
|
+
lib: string;
|
|
14
|
+
title: string;
|
|
15
|
+
authorize(ctx: HttpContext): Promise<DevToolsDecision>;
|
|
16
|
+
tools: DevTool[];
|
|
17
|
+
}
|
|
18
|
+
/** What a lib's `authorize` answers: the console decision. */
|
|
19
|
+
export type DevToolsDecision = ConsoleDecision;
|
|
20
|
+
/** One developer tool. */
|
|
21
|
+
export interface DevTool {
|
|
22
|
+
name: string;
|
|
23
|
+
kind: 'read' | 'action';
|
|
24
|
+
description: string;
|
|
25
|
+
input: DevToolInputSchema;
|
|
26
|
+
destructive?: boolean;
|
|
27
|
+
available?(): boolean | Promise<boolean>;
|
|
28
|
+
run(input: Record<string, unknown>, call: DevToolCall): Promise<unknown>;
|
|
29
|
+
}
|
|
30
|
+
/** What a tool's `run` receives besides its input. */
|
|
31
|
+
export interface DevToolCall {
|
|
32
|
+
ctx: HttpContext;
|
|
33
|
+
caller: DevToolsCaller;
|
|
34
|
+
limits: {
|
|
35
|
+
maxRows: number;
|
|
36
|
+
maxBytes: number;
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
/** Who is calling. Never a token value. */
|
|
40
|
+
export interface DevToolsCaller {
|
|
41
|
+
id: string;
|
|
42
|
+
via: 'token' | 'session' | 'open';
|
|
43
|
+
}
|
|
44
|
+
/** One property of a {@link DevToolInputSchema}. */
|
|
45
|
+
export interface DevToolInputProperty {
|
|
46
|
+
type: 'string' | 'number' | 'integer' | 'boolean' | 'array';
|
|
47
|
+
description?: string;
|
|
48
|
+
enum?: readonly string[];
|
|
49
|
+
items?: {
|
|
50
|
+
type: 'string';
|
|
51
|
+
};
|
|
52
|
+
minimum?: number;
|
|
53
|
+
maximum?: number;
|
|
54
|
+
}
|
|
55
|
+
/** An object of scalar / enum / array-of-string properties. */
|
|
56
|
+
export interface DevToolInputSchema {
|
|
57
|
+
type: 'object';
|
|
58
|
+
properties: Record<string, DevToolInputProperty>;
|
|
59
|
+
required?: string[];
|
|
60
|
+
}
|
|
61
|
+
/** One console action performed through a dev tool, for the console's audit sink. */
|
|
62
|
+
export interface DevToolAuditEntry {
|
|
63
|
+
/** `mcp:<caller id>`. */
|
|
64
|
+
actor: string;
|
|
65
|
+
/** The tool name, e.g. `durable_cancel_run`. */
|
|
66
|
+
tool: string;
|
|
67
|
+
/** The run id or schedule key the action targets. */
|
|
68
|
+
target: string;
|
|
69
|
+
}
|
|
70
|
+
/** What {@link durableDevTools} needs from the console. */
|
|
71
|
+
export interface DurableDevToolsOptions {
|
|
72
|
+
/** The console's read/control port, resolved per call (the same `Deps` the console routes use). */
|
|
73
|
+
deps: () => Promise<Deps>;
|
|
74
|
+
/** Records an action (retry, cancel, …) before it runs, like a console POST. */
|
|
75
|
+
audit?: (entry: DevToolAuditEntry) => void;
|
|
76
|
+
/** The fleet compatibility panel's body, when the console can build it (`GET /api/compat`). */
|
|
77
|
+
compat?: () => Promise<unknown>;
|
|
78
|
+
}
|
|
79
|
+
/** A blob field (run input/output/error, a step's input/output/error) is cut to this many bytes. */
|
|
80
|
+
export declare const DEV_TOOL_FIELD_BYTES: number;
|
|
81
|
+
/** Cut one value to {@link DEV_TOOL_FIELD_BYTES} of JSON, ending with `…(truncated, N bytes)`. */
|
|
82
|
+
export declare function truncateBlob(value: unknown, maxBytes?: number): unknown;
|
|
83
|
+
/**
|
|
84
|
+
* The durable console's developer tools: the same handlers (and so the same `redact` hooks) the
|
|
85
|
+
* console's JSON API runs, under `durable_*` names. Reads are listed by default; the actions (retry,
|
|
86
|
+
* cancel, continue, signal, schedule control) only when the app opts in on the dev endpoint.
|
|
87
|
+
*/
|
|
88
|
+
export declare function durableDevTools(options: DurableDevToolsOptions): DevTool[];
|
|
89
|
+
/**
|
|
90
|
+
* Register the durable console's tools into the app's dev-tools hub, when one is bound (the app
|
|
91
|
+
* registered `@adonis-agora/agent/mcp_provider`). Returns whether it registered.
|
|
92
|
+
*/
|
|
93
|
+
export declare function registerDurableDevTools(container: {
|
|
94
|
+
hasBinding(binding: string): boolean;
|
|
95
|
+
make(binding: string): Promise<unknown>;
|
|
96
|
+
}, options: DurableDevToolsOptions & {
|
|
97
|
+
authorize: (ctx: HttpContext) => Promise<DevToolsDecision>;
|
|
98
|
+
}): Promise<boolean>;
|
|
99
|
+
//# sourceMappingURL=dev_tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dev_tools.d.ts","sourceRoot":"","sources":["../../../src/dashboard/dev_tools.ts"],"names":[],"mappings":"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"}
|