@nocobase/app-plugin-agents 0.1.0-beta.4 → 0.1.0-beta.6
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 +93 -0
- package/README.md +41 -24
- package/dist/client/chat.d.ts +2 -0
- package/dist/client/chat.d.ts.map +1 -1
- package/dist/client/chat.js +2 -0
- package/dist/client/chat.js.map +1 -1
- package/dist/client/lib/install.js +1 -1
- package/dist/client/lib/tool-policy.d.ts +0 -2
- package/dist/client/lib/tool-policy.d.ts.map +1 -1
- package/dist/client/lib/tool-policy.js +1 -6
- package/dist/client/lib/tool-policy.js.map +1 -1
- package/dist/client/locales/en-US.d.ts +3 -9
- package/dist/client/locales/en-US.d.ts.map +1 -1
- package/dist/client/locales/en-US.js +3 -9
- package/dist/client/locales/en-US.js.map +1 -1
- package/dist/client/locales/runtimes.en-US.d.ts +38 -0
- package/dist/client/locales/runtimes.en-US.d.ts.map +1 -1
- package/dist/client/locales/runtimes.en-US.js +40 -2
- package/dist/client/locales/runtimes.en-US.js.map +1 -1
- package/dist/client/locales/runtimes.zh-CN.d.ts.map +1 -1
- package/dist/client/locales/runtimes.zh-CN.js +40 -2
- package/dist/client/locales/runtimes.zh-CN.js.map +1 -1
- package/dist/client/locales/zh-CN.d.ts.map +1 -1
- package/dist/client/locales/zh-CN.js +3 -9
- package/dist/client/locales/zh-CN.js.map +1 -1
- package/dist/client/pages/agents/agent-model.d.ts +0 -4
- package/dist/client/pages/agents/agent-model.d.ts.map +1 -1
- package/dist/client/pages/agents/agent-model.js +0 -19
- package/dist/client/pages/agents/agent-model.js.map +1 -1
- package/dist/client/pages/agents/detail/index.d.ts.map +1 -1
- package/dist/client/pages/agents/detail/index.js +2 -2
- package/dist/client/pages/agents/detail/index.js.map +1 -1
- package/dist/client/pages/agents/detail/sections.d.ts +0 -1
- package/dist/client/pages/agents/detail/sections.d.ts.map +1 -1
- package/dist/client/pages/agents/detail/sections.js +2 -33
- package/dist/client/pages/agents/detail/sections.js.map +1 -1
- package/dist/client/pages/runtimes/connect.js +1 -1
- package/dist/client/pages/runtimes/connect.js.map +1 -1
- package/dist/client/pages/runtimes/index.d.ts.map +1 -1
- package/dist/client/pages/runtimes/index.js +2 -1
- package/dist/client/pages/runtimes/index.js.map +1 -1
- package/dist/client/pages/runtimes/runner-sheet.d.ts.map +1 -1
- package/dist/client/pages/runtimes/runner-sheet.js +2 -1
- package/dist/client/pages/runtimes/runner-sheet.js.map +1 -1
- package/dist/client/pages/runtimes/workspace-diagnostics.d.ts +9 -0
- package/dist/client/pages/runtimes/workspace-diagnostics.d.ts.map +1 -0
- package/dist/client/pages/runtimes/workspace-diagnostics.js +58 -0
- package/dist/client/pages/runtimes/workspace-diagnostics.js.map +1 -0
- package/dist/client/runs/subject-runs.d.ts.map +1 -1
- package/dist/client/runs/subject-runs.js +2 -3
- package/dist/client/runs/subject-runs.js.map +1 -1
- package/dist/database/migrations/.manifest.json +8 -0
- package/dist/database/migrations/202610100002_ag_add_run_git_credentials.d.ts +9 -0
- package/dist/database/migrations/202610100002_ag_add_run_git_credentials.d.ts.map +1 -0
- package/dist/database/migrations/202610100002_ag_add_run_git_credentials.js +30 -0
- package/dist/database/migrations/202610100002_ag_add_run_git_credentials.js.map +1 -0
- package/dist/database/migrations/202610110001_ag_add_fresh_sessions.d.ts +4 -0
- package/dist/database/migrations/202610110001_ag_add_fresh_sessions.d.ts.map +1 -0
- package/dist/database/migrations/202610110001_ag_add_fresh_sessions.js +23 -0
- package/dist/database/migrations/202610110001_ag_add_fresh_sessions.js.map +1 -0
- package/dist/package.json +1 -1
- package/dist/server/composition.d.ts +3 -1
- package/dist/server/composition.d.ts.map +1 -1
- package/dist/server/composition.js +18 -2
- package/dist/server/composition.js.map +1 -1
- package/dist/server/core/runs/claim.d.ts +2 -0
- package/dist/server/core/runs/claim.d.ts.map +1 -1
- package/dist/server/core/runs/claim.js +53 -7
- package/dist/server/core/runs/claim.js.map +1 -1
- package/dist/server/core/runs/extensions.d.ts +57 -4
- package/dist/server/core/runs/extensions.d.ts.map +1 -1
- package/dist/server/core/runs/extensions.js +45 -9
- package/dist/server/core/runs/extensions.js.map +1 -1
- package/dist/server/core/runs/git-credentials.d.ts +43 -0
- package/dist/server/core/runs/git-credentials.d.ts.map +1 -0
- package/dist/server/core/runs/git-credentials.js +129 -0
- package/dist/server/core/runs/git-credentials.js.map +1 -0
- package/dist/server/core/runs/index.d.ts +2 -1
- package/dist/server/core/runs/index.d.ts.map +1 -1
- package/dist/server/core/runs/index.js +2 -1
- package/dist/server/core/runs/index.js.map +1 -1
- package/dist/server/core/runs/input-gate.d.ts +34 -0
- package/dist/server/core/runs/input-gate.d.ts.map +1 -0
- package/dist/server/core/runs/input-gate.js +56 -0
- package/dist/server/core/runs/input-gate.js.map +1 -0
- package/dist/server/core/runs/lifecycle.d.ts +2 -1
- package/dist/server/core/runs/lifecycle.d.ts.map +1 -1
- package/dist/server/core/runs/lifecycle.js +27 -8
- package/dist/server/core/runs/lifecycle.js.map +1 -1
- package/dist/server/core/runs/policy.d.ts +8 -0
- package/dist/server/core/runs/policy.d.ts.map +1 -1
- package/dist/server/core/runs/policy.js +10 -0
- package/dist/server/core/runs/policy.js.map +1 -1
- package/dist/server/core/runs/ports.d.ts +30 -3
- package/dist/server/core/runs/ports.d.ts.map +1 -1
- package/dist/server/core/runs/ports.js.map +1 -1
- package/dist/server/core/runs/run-requests.d.ts +3 -0
- package/dist/server/core/runs/run-requests.d.ts.map +1 -1
- package/dist/server/core/runs/run-requests.js +5 -0
- package/dist/server/core/runs/run-requests.js.map +1 -1
- package/dist/server/core/runs/run.service.d.ts +5 -1
- package/dist/server/core/runs/run.service.d.ts.map +1 -1
- package/dist/server/core/runs/run.service.js +51 -3
- package/dist/server/core/runs/run.service.js.map +1 -1
- package/dist/server/core/runs/run.store.d.ts +5 -0
- package/dist/server/core/runs/run.store.d.ts.map +1 -1
- package/dist/server/core/runs/run.store.js +7 -0
- package/dist/server/core/runs/run.store.js.map +1 -1
- package/dist/server/core/runs/runner-view.d.ts +1 -0
- package/dist/server/core/runs/runner-view.d.ts.map +1 -1
- package/dist/server/core/runs/runner-view.js +2 -1
- package/dist/server/core/runs/runner-view.js.map +1 -1
- package/dist/server/core/runs/transitions.d.ts +1 -1
- package/dist/server/core/runs/transitions.d.ts.map +1 -1
- package/dist/server/core/runs/transitions.js +39 -5
- package/dist/server/core/runs/transitions.js.map +1 -1
- package/dist/server/distribution/dist.service.d.ts +27 -5
- package/dist/server/distribution/dist.service.d.ts.map +1 -1
- package/dist/server/distribution/dist.service.js +41 -5
- package/dist/server/distribution/dist.service.js.map +1 -1
- package/dist/server/distribution/download-tokens.d.ts +1 -1
- package/dist/server/distribution/download-tokens.d.ts.map +1 -1
- package/dist/server/distribution/download-tokens.js +7 -4
- package/dist/server/distribution/download-tokens.js.map +1 -1
- package/dist/server/distribution/index.d.ts +11 -3
- package/dist/server/distribution/index.d.ts.map +1 -1
- package/dist/server/distribution/index.js +31 -8
- package/dist/server/distribution/index.js.map +1 -1
- package/dist/server/kernel/redaction.d.ts +2 -0
- package/dist/server/kernel/redaction.d.ts.map +1 -1
- package/dist/server/kernel/redaction.js +17 -0
- package/dist/server/kernel/redaction.js.map +1 -1
- package/dist/server/routes/runners/dist.d.ts +5 -1
- package/dist/server/routes/runners/dist.d.ts.map +1 -1
- package/dist/server/routes/runners/dist.js +36 -9
- package/dist/server/routes/runners/dist.js.map +1 -1
- package/dist/server/routes/runners/install.d.ts.map +1 -1
- package/dist/server/routes/runners/install.js +98 -15
- package/dist/server/routes/runners/install.js.map +1 -1
- package/dist/server/routes/runners/runner.js +4 -4
- package/dist/server/routes/runners/runner.js.map +1 -1
- package/dist/server/routes/runners/runs.d.ts +1 -1
- package/dist/server/routes/runners/runs.d.ts.map +1 -1
- package/dist/server/routes/runners/runs.js +23 -3
- package/dist/server/routes/runners/runs.js.map +1 -1
- package/dist/server/routes/schemas.d.ts +1 -0
- package/dist/server/routes/schemas.d.ts.map +1 -1
- package/dist/server/routes/schemas.js +23 -3
- package/dist/server/routes/schemas.js.map +1 -1
- package/dist/server/runners/runner.store.d.ts.map +1 -1
- package/dist/server/runners/runner.store.js +13 -3
- package/dist/server/runners/runner.store.js.map +1 -1
- package/dist/server/runners/workspaces.d.ts +7 -4
- package/dist/server/runners/workspaces.d.ts.map +1 -1
- package/dist/server/runners/workspaces.js +123 -26
- package/dist/server/runners/workspaces.js.map +1 -1
- package/dist/server/tokens.d.ts +3 -2
- package/dist/server/tokens.d.ts.map +1 -1
- package/dist/server/tokens.js +1 -0
- package/dist/server/tokens.js.map +1 -1
- package/dist/shared/models.js +1 -1
- package/dist/shared/models.js.map +1 -1
- package/dist/shared/runners.d.ts +6 -2
- package/dist/shared/runners.d.ts.map +1 -1
- package/dist/shared/runners.js.map +1 -1
- package/dist/shared/runs.d.ts +20 -0
- package/dist/shared/runs.d.ts.map +1 -1
- package/dist/shared/runs.js.map +1 -1
- package/package.json +5 -5
- package/skills/nocobase-app-plugin-agents/SKILL.md +1 -1
- package/skills/nocobase-app-plugin-agents/references/distribution.md +21 -4
- package/skills/nocobase-app-plugin-agents/references/extension-points.md +7 -1
- package/skills/nocobase-app-plugin-agents/references/runners.md +6 -0
- package/skills/nocobase-app-plugin-agents/references/setup-and-config.md +2 -0
|
@@ -45,9 +45,10 @@ export const RECENT_RUNS = 10;
|
|
|
45
45
|
*/
|
|
46
46
|
export function runnerForViewer(runner, seesMachine) {
|
|
47
47
|
if (seesMachine)
|
|
48
|
-
return runner;
|
|
48
|
+
return { ...runner, canSeeMachine: true };
|
|
49
49
|
return {
|
|
50
50
|
...runner,
|
|
51
|
+
canSeeMachine: false,
|
|
51
52
|
hostname: null,
|
|
52
53
|
tools: runner.tools.map(({ path: _path, ...tool }) => tool),
|
|
53
54
|
...(runner.workspaceUsage
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner-view.js","sourceRoot":"","sources":["../../../../server/core/runs/runner-view.ts"],"names":[],"mappings":"AASA,OAAO,EACL,gBAAgB,GAKjB,MAAM,4BAA4B,CAAC;AAMpC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAEzD,wEAAwE;AACxE,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAAwB,EACxB,SAA4B;IAE5B,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAC1C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;QACzC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CACZ,CAAC,CAAC,GAAG,CAAC;YACJ,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACxD,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;SAC5D,CAAC;KACL,CAAC,CAAC;IACH,KAAK,MAAM,GAAG,IAAI,IAAI;QACpB,IAAI,GAAG,CAAC,QAAQ;YACd,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAClE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAAwB,EACxB,QAAgB;IAEhB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;QACzC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CACZ,CAAC,CAAC,GAAG,CAAC;YACJ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC;YACjC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;SAC5D,CAAC;KACL,CAAC,CAAC;IACH,MAAM,MAAM,GAAuC,EAAE,CAAC;IACtD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAwB,CAAC;QAC1C,IAAI,IAAI;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,yDAAyD;AACzD,MAAM,CAAC,MAAM,WAAW,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"runner-view.js","sourceRoot":"","sources":["../../../../server/core/runs/runner-view.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ export interface TransitionDeps {
|
|
|
14
14
|
}
|
|
15
15
|
export interface FinishOutcome {
|
|
16
16
|
readonly status: 'completed' | 'failed' | 'cancelled';
|
|
17
|
-
readonly reason?: FailureReason;
|
|
17
|
+
readonly reason?: FailureReason | null;
|
|
18
18
|
readonly detail?: string;
|
|
19
19
|
readonly summary?: string;
|
|
20
20
|
readonly sessionId?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transitions.d.ts","sourceRoot":"","sources":["../../../../server/core/runs/transitions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAEzE,OAAO,EAAS,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"transitions.d.ts","sourceRoot":"","sources":["../../../../server/core/runs/transitions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAEzE,OAAO,EAAS,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAOlD,OAAO,EAOL,KAAK,SAAS,EACf,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;CACpC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IACtD,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,2CAA2C;AAC3C,wBAAsB,YAAY,CAChC,EAAE,EAAE,EAAE,EACN,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;;GAGG;AACH,wBAAsB,SAAS,CAC7B,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,cAAc,EACpB,GAAG,EAAE,SAAS,EACd,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAoC3B;AAyCD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAAC;CAChC;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,EAAE,EAAE,EAAE,EACN,IAAI,EAAE,cAAc,EACpB,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,aAAa,EACrB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,cAAc,CAAC,CA0DzB"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { later } from '../../kernel/clock.js';
|
|
2
|
-
import { retryDelayMs } from './policy.js';
|
|
2
|
+
import { retryDelayMs, WORKSPACE_WAIT_LIMIT_MS, workspaceBusyDelayMs, } from './policy.js';
|
|
3
3
|
import { endExecution } from './execution.js';
|
|
4
|
-
import { ACTIVE, findRunRecord, runsRepo, tokensRepo, toRun, } from './run.store.js';
|
|
4
|
+
import { ACTIVE, findRunRecord, runsRepo, tokensRepo, toExecutions, toRun, } from './run.store.js';
|
|
5
5
|
/** Revokes every live token of the run. */
|
|
6
6
|
export async function revokeTokens(tx, runId, now) {
|
|
7
7
|
await tokensRepo(tx.conn).updateMany({
|
|
@@ -53,12 +53,44 @@ export async function finishRun(tx, deps, run, outcome) {
|
|
|
53
53
|
?.sink?.onRunFinished?.(tx, toRun(ended));
|
|
54
54
|
return ended;
|
|
55
55
|
}
|
|
56
|
+
/**
|
|
57
|
+
* The run's attempts that only waited for its working directory (`workspaceBusy`). They are not counted against
|
|
58
|
+
* `maxAttempts`: nothing was tried, another run was still working there. The current attempt is still open in the
|
|
59
|
+
* history (its reason is written when it ends), so it counts as one when the run is now reporting `workspaceBusy`.
|
|
60
|
+
*/
|
|
61
|
+
function workspaceWaits(run, reporting) {
|
|
62
|
+
const executions = toExecutions(run.executionHistory);
|
|
63
|
+
const current = executions.find((item) => item.attempt === Number(run.attempt) && item.finishedAt === null);
|
|
64
|
+
const ended = executions.filter((item) => item !== current);
|
|
65
|
+
let total = ended.filter((item) => item.failureReason === 'workspaceBusy').length;
|
|
66
|
+
let trailing = 0;
|
|
67
|
+
let since = null;
|
|
68
|
+
if (reporting) {
|
|
69
|
+
total += 1;
|
|
70
|
+
trailing = 1;
|
|
71
|
+
since = current?.dispatchedAt ?? run.dispatchedAt ?? null;
|
|
72
|
+
for (let i = ended.length - 1; i >= 0; i -= 1) {
|
|
73
|
+
const item = ended[i];
|
|
74
|
+
if (item.failureReason !== 'workspaceBusy')
|
|
75
|
+
break;
|
|
76
|
+
trailing += 1;
|
|
77
|
+
since = item.dispatchedAt;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return { total, trailing, since };
|
|
81
|
+
}
|
|
56
82
|
/**
|
|
57
83
|
* Takes a held run back from its runner after a retryable failure: it goes back to the queue while attempts remain,
|
|
58
84
|
* and fails with `reason` otherwise.
|
|
59
85
|
*/
|
|
60
86
|
export async function requeueRun(tx, deps, run, reason, detail) {
|
|
61
|
-
|
|
87
|
+
const now = deps.clock.now();
|
|
88
|
+
const waits = workspaceWaits(run, reason === 'workspaceBusy');
|
|
89
|
+
const exhausted = reason === 'workspaceBusy'
|
|
90
|
+
? waits.since !== null &&
|
|
91
|
+
now.getTime() - Date.parse(waits.since) >= WORKSPACE_WAIT_LIMIT_MS
|
|
92
|
+
: Number(run.attempt) - waits.total >= Number(run.maxAttempts);
|
|
93
|
+
if (exhausted) {
|
|
62
94
|
const ended = await finishRun(tx, deps, run, {
|
|
63
95
|
status: 'failed',
|
|
64
96
|
reason,
|
|
@@ -66,9 +98,10 @@ export async function requeueRun(tx, deps, run, reason, detail) {
|
|
|
66
98
|
});
|
|
67
99
|
return { status: ended?.status ?? run.status, run: ended };
|
|
68
100
|
}
|
|
69
|
-
const now = deps.clock.now();
|
|
70
101
|
const nowText = now.toISOString();
|
|
71
|
-
const delay =
|
|
102
|
+
const delay = reason === 'workspaceBusy'
|
|
103
|
+
? workspaceBusyDelayMs(waits.trailing)
|
|
104
|
+
: retryDelayMs(reason, Number(run.attempt) - waits.total);
|
|
72
105
|
const availableAt = delay > 0 ? later(now, delay) : null;
|
|
73
106
|
const result = await runsRepo(tx.conn).updateMany({
|
|
74
107
|
filter: (f) => f.and([
|
|
@@ -81,6 +114,7 @@ export async function requeueRun(tx, deps, run, reason, detail) {
|
|
|
81
114
|
values: {
|
|
82
115
|
status: 'queued',
|
|
83
116
|
teamOnlyVariables: null,
|
|
117
|
+
gitCredentialUrls: null,
|
|
84
118
|
runnerId: null,
|
|
85
119
|
attempt: Number(run.attempt) + 1,
|
|
86
120
|
availableAt,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transitions.js","sourceRoot":"","sources":["../../../../server/core/runs/transitions.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,EAAc,MAAM,uBAAuB,CAAC;AAG1D,OAAO,
|
|
1
|
+
{"version":3,"file":"transitions.js","sourceRoot":"","sources":["../../../../server/core/runs/transitions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Distribution: the runner (`nocobase-runner`) and the application's CLI (such as `acme`), served by the application
|
|
3
|
-
* itself as
|
|
4
|
-
* machine
|
|
3
|
+
* itself as tarballs, so nothing is published to a registry: one per target, each bundling Node, or one for every
|
|
4
|
+
* target (`UNIVERSAL_TARGET`, `nocobase cli build --universal`) that runs on the machine's own Node.js 24 or newer.
|
|
5
5
|
*
|
|
6
6
|
* `nocobase cli build` of `@nocobase/app-cli` (`--runner` for the runner) builds each product into a directory of its
|
|
7
7
|
* own, with its own manifest, so the products are built and mounted apart (in CI, one artifact each):
|
|
@@ -10,12 +10,16 @@
|
|
|
10
10
|
* <dir>/<channel>/<product>/<version>/<product>-v<version>-<target>.tar.gz
|
|
11
11
|
*
|
|
12
12
|
* where a product's manifest lists its versions with each target's file (relative to the product's directory),
|
|
13
|
-
* SHA-256 and size.
|
|
13
|
+
* SHA-256 and size. A target without a file of its own gets the version's universal one, if it has one, answered with
|
|
14
|
+
* `universal: true`; a file built for the target wins over it. The application serves one channel (`agents.dist.channel`, `stable` by default); a product's
|
|
14
15
|
* current version is the one `agents.dist.versions` pins, or the highest the channel has. Only files a manifest lists
|
|
15
16
|
* are ever served.
|
|
17
|
+
*
|
|
18
|
+
* A product the directory has no current version of may instead be named on the npm registry (`agents.dist.npm`: its
|
|
19
|
+
* package and exact version), answered only to callers that understand it (`npmPackage`). The directory always wins.
|
|
16
20
|
*/
|
|
17
21
|
import { type ReadStream } from 'node:fs';
|
|
18
|
-
import { type DistArtifact, type DistManifest } from '@nocobase/agent-protocol';
|
|
22
|
+
import { type DistArtifact, type DistManifest, type DistNpmPackage } from '@nocobase/agent-protocol';
|
|
19
23
|
/** `agents.dist` in the application's configuration. */
|
|
20
24
|
export interface DistConfig {
|
|
21
25
|
/** Where the built tarballs are; `storage/runners/dist` of the application by default. */
|
|
@@ -24,11 +28,23 @@ export interface DistConfig {
|
|
|
24
28
|
readonly channel?: string;
|
|
25
29
|
/** A version to serve per product instead of the channel's highest, such as `{ acme: '0.3.1' }`. */
|
|
26
30
|
readonly versions?: Readonly<Record<string, string>>;
|
|
31
|
+
/**
|
|
32
|
+
* The npm package and exact version each product is published as, such as
|
|
33
|
+
* `{ 'nocobase-runner': { package: '@nocobase/agent-runner', version: '1.0.0' } }`: answered instead of a tarball
|
|
34
|
+
* only when `dir` has no current version of the product, and only to callers that understand it (`DistNpmPackage`).
|
|
35
|
+
*/
|
|
36
|
+
readonly npm?: Readonly<Record<string, DistNpmSource>>;
|
|
37
|
+
}
|
|
38
|
+
/** One product of `DistConfig.npm`. */
|
|
39
|
+
export interface DistNpmSource {
|
|
40
|
+
readonly package: string;
|
|
41
|
+
/** An exact version, never a range. */
|
|
42
|
+
readonly version: string;
|
|
27
43
|
}
|
|
28
44
|
export declare const DEFAULT_CHANNEL = "stable";
|
|
29
45
|
/** A file the application may serve, found through the manifest. */
|
|
30
46
|
export interface DistFile {
|
|
31
|
-
/** The platform it is built for. */
|
|
47
|
+
/** The platform it is built for: `UNIVERSAL_TARGET` for the one that serves every platform. */
|
|
32
48
|
readonly target: string;
|
|
33
49
|
readonly path: string;
|
|
34
50
|
readonly sha256: string;
|
|
@@ -45,6 +61,12 @@ export interface DistService {
|
|
|
45
61
|
resolve(product: string, target: string): Promise<DistArtifact>;
|
|
46
62
|
/** A file the manifest lists (any version on the channel); 404 otherwise. */
|
|
47
63
|
file(product: string, version: string, name: string): Promise<DistFile>;
|
|
64
|
+
/**
|
|
65
|
+
* The npm package to install `product` from (`DistConfig.npm`), or null when none is configured or the directory has
|
|
66
|
+
* a current version of the product, which is then served as a tarball exactly as without it. Only for callers that
|
|
67
|
+
* understand the answer: the resolve route's `accept=npm`, a runner with the `npm` feature.
|
|
68
|
+
*/
|
|
69
|
+
npmPackage(product: string): Promise<DistNpmPackage | null>;
|
|
48
70
|
}
|
|
49
71
|
export declare function createDistService(config?: DistConfig): DistService;
|
|
50
72
|
//# sourceMappingURL=dist.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dist.service.d.ts","sourceRoot":"","sources":["../../../server/distribution/dist.service.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"dist.service.d.ts","sourceRoot":"","sources":["../../../server/distribution/dist.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EAAoB,KAAK,UAAU,EAAE,MAAM,SAAS,CAAC;AAI5D,OAAO,EASL,KAAK,YAAY,EACjB,KAAK,YAAY,EAEjB,KAAK,cAAc,EACpB,MAAM,0BAA0B,CAAC;AAKlC,wDAAwD;AACxD,MAAM,WAAW,UAAU;IACzB,0FAA0F;IAC1F,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,mDAAmD;IACnD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,oGAAoG;IACpG,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACrD;;;;OAIG;IACH,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;CACxD;AAED,uCAAuC;AACvC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAUD,eAAO,MAAM,eAAe,WAAW,CAAC;AA6BxC,oEAAoE;AACpE,MAAM,WAAW,QAAQ;IACvB,+FAA+F;IAC/F,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,IAAI,IAAI,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,iEAAiE;IACjE,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;IAClC,mDAAmD;IACnD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IACpE,mHAAmH;IACnH,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAChE,6EAA6E;IAC7E,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACxE;;;;OAIG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;CAC7D;AAED,wBAAgB,iBAAiB,CAAC,MAAM,GAAE,UAAe,GAAG,WAAW,CA+MtE"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Distribution: the runner (`nocobase-runner`) and the application's CLI (such as `acme`), served by the application
|
|
3
|
-
* itself as
|
|
4
|
-
* machine
|
|
3
|
+
* itself as tarballs, so nothing is published to a registry: one per target, each bundling Node, or one for every
|
|
4
|
+
* target (`UNIVERSAL_TARGET`, `nocobase cli build --universal`) that runs on the machine's own Node.js 24 or newer.
|
|
5
5
|
*
|
|
6
6
|
* `nocobase cli build` of `@nocobase/app-cli` (`--runner` for the runner) builds each product into a directory of its
|
|
7
7
|
* own, with its own manifest, so the products are built and mounted apart (in CI, one artifact each):
|
|
@@ -10,16 +10,24 @@
|
|
|
10
10
|
* <dir>/<channel>/<product>/<version>/<product>-v<version>-<target>.tar.gz
|
|
11
11
|
*
|
|
12
12
|
* where a product's manifest lists its versions with each target's file (relative to the product's directory),
|
|
13
|
-
* SHA-256 and size.
|
|
13
|
+
* SHA-256 and size. A target without a file of its own gets the version's universal one, if it has one, answered with
|
|
14
|
+
* `universal: true`; a file built for the target wins over it. The application serves one channel (`agents.dist.channel`, `stable` by default); a product's
|
|
14
15
|
* current version is the one `agents.dist.versions` pins, or the highest the channel has. Only files a manifest lists
|
|
15
16
|
* are ever served.
|
|
17
|
+
*
|
|
18
|
+
* A product the directory has no current version of may instead be named on the npm registry (`agents.dist.npm`: its
|
|
19
|
+
* package and exact version), answered only to callers that understand it (`npmPackage`). The directory always wins.
|
|
16
20
|
*/
|
|
17
21
|
import { createReadStream } from 'node:fs';
|
|
18
22
|
import { readdir, readFile, stat } from 'node:fs/promises';
|
|
19
23
|
import path from 'node:path';
|
|
20
|
-
import { compareVersions, DIST_PRODUCT_PATTERN, DIST_ROUTES, DIST_TARGET_PATTERN, ProtocolError, routePath, } from '@nocobase/agent-protocol';
|
|
24
|
+
import { compareVersions, DIST_PRODUCT_PATTERN, DIST_ROUTES, DIST_TARGET_PATTERN, EXACT_VERSION_PATTERN, NPM_PACKAGE_PATTERN, ProtocolError, routePath, UNIVERSAL_TARGET, } from '@nocobase/agent-protocol';
|
|
21
25
|
import { z } from 'zod';
|
|
22
26
|
import { notFound } from '../kernel/errors.js';
|
|
27
|
+
const DistNpmConfigSchema = z.record(z.string().regex(DIST_PRODUCT_PATTERN), z.object({
|
|
28
|
+
package: z.string().max(214).regex(NPM_PACKAGE_PATTERN),
|
|
29
|
+
version: z.string().max(64).regex(EXACT_VERSION_PATTERN),
|
|
30
|
+
}));
|
|
23
31
|
export const DEFAULT_CHANNEL = 'stable';
|
|
24
32
|
const StoredTargetSchema = z.object({
|
|
25
33
|
file: z.string().min(1),
|
|
@@ -36,6 +44,7 @@ const ProductManifestSchema = z.object({
|
|
|
36
44
|
});
|
|
37
45
|
export function createDistService(config = {}) {
|
|
38
46
|
const channel = config.channel ?? DEFAULT_CHANNEL;
|
|
47
|
+
const npmSources = parseNpmSources(config.npm);
|
|
39
48
|
const channelDir = config.dir === undefined ? null : path.resolve(config.dir, channel);
|
|
40
49
|
let cache;
|
|
41
50
|
/** Each product's manifest file with its modification time, or nothing when there is none. */
|
|
@@ -119,7 +128,9 @@ export function createDistService(config = {}) {
|
|
|
119
128
|
const version = currentVersion(stored, product);
|
|
120
129
|
if (version === null)
|
|
121
130
|
return null;
|
|
122
|
-
const
|
|
131
|
+
const targets = stored.products[product]?.versions[version]?.targets;
|
|
132
|
+
const own = targets?.[target];
|
|
133
|
+
const entry = own ?? targets?.[UNIVERSAL_TARGET];
|
|
123
134
|
if (entry === undefined)
|
|
124
135
|
return null;
|
|
125
136
|
return {
|
|
@@ -134,6 +145,7 @@ export function createDistService(config = {}) {
|
|
|
134
145
|
sha256: entry.sha256,
|
|
135
146
|
size: entry.size,
|
|
136
147
|
channel,
|
|
148
|
+
...(own === undefined ? { universal: true } : {}),
|
|
137
149
|
};
|
|
138
150
|
};
|
|
139
151
|
return {
|
|
@@ -196,6 +208,30 @@ export function createDistService(config = {}) {
|
|
|
196
208
|
open: () => createReadStream(file),
|
|
197
209
|
};
|
|
198
210
|
},
|
|
211
|
+
async npmPackage(product) {
|
|
212
|
+
const source = npmSources[product];
|
|
213
|
+
if (source === undefined)
|
|
214
|
+
return null;
|
|
215
|
+
const stored = await load();
|
|
216
|
+
if (stored && currentVersion(stored, product) !== null)
|
|
217
|
+
return null;
|
|
218
|
+
return {
|
|
219
|
+
kind: 'npm',
|
|
220
|
+
product,
|
|
221
|
+
version: source.version,
|
|
222
|
+
package: source.package,
|
|
223
|
+
channel,
|
|
224
|
+
};
|
|
225
|
+
},
|
|
199
226
|
};
|
|
200
227
|
}
|
|
228
|
+
/** `agents.dist.npm`, checked when the service is created so a wrong entry fails the start rather than an install. */
|
|
229
|
+
function parseNpmSources(npm) {
|
|
230
|
+
const parsed = DistNpmConfigSchema.safeParse(npm ?? {});
|
|
231
|
+
if (!parsed.success)
|
|
232
|
+
throw new Error(`agents.dist.npm names each product's npm package and exact version, such as { nocobase-runner: { package: '@nocobase/agent-runner', version: '1.0.0' } }: ${parsed.error.issues
|
|
233
|
+
.map((issue) => `${issue.path.join('.')}: ${issue.message}`)
|
|
234
|
+
.join('; ')}`);
|
|
235
|
+
return parsed.data;
|
|
236
|
+
}
|
|
201
237
|
//# sourceMappingURL=dist.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dist.service.js","sourceRoot":"","sources":["../../../server/distribution/dist.service.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"dist.service.js","sourceRoot":"","sources":["../../../server/distribution/dist.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@ export declare const DOWNLOAD_TOKEN_MAX_DOWNLOADS = 3;
|
|
|
9
9
|
/** What a request with a download token asks for. */
|
|
10
10
|
export interface DownloadRequest {
|
|
11
11
|
readonly product?: string;
|
|
12
|
-
/** The platform it resolves or downloads for; absent for the manifest. */
|
|
12
|
+
/** The platform it resolves or downloads for; absent for the manifest, and for the universal tarball. */
|
|
13
13
|
readonly target?: string;
|
|
14
14
|
/** A tarball download, which counts against the token. */
|
|
15
15
|
readonly download?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download-tokens.d.ts","sourceRoot":"","sources":["../../../server/distribution/download-tokens.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAS,KAAK,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAMvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,8CAA8C;AAC9C,eAAO,MAAM,qBAAqB,EAAE,MAAoB,CAAC;AAEzD,wFAAwF;AACxF,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAkB9C,qDAAqD;AACrD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,
|
|
1
|
+
{"version":3,"file":"download-tokens.d.ts","sourceRoot":"","sources":["../../../server/distribution/download-tokens.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAS,KAAK,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAMvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhD,8CAA8C;AAC9C,eAAO,MAAM,qBAAqB,EAAE,MAAoB,CAAC;AAEzD,wFAAwF;AACxF,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAkB9C,qDAAqD;AACrD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,yGAAyG;IACzG,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,0DAA0D;IAC1D,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC3D,6HAA6H;IAC7H,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/D;AAED,MAAM,WAAW,wBAAwB;IACvC,6FAA6F;IAC7F,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;CACvB;AAED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,wBAAwB,GAC7B,oBAAoB,CAgFtB"}
|
|
@@ -57,11 +57,14 @@ export function createDownloadTokenService(deps) {
|
|
|
57
57
|
downloads >= DOWNLOAD_TOKEN_MAX_DOWNLOADS)
|
|
58
58
|
throw spent();
|
|
59
59
|
const { target } = request;
|
|
60
|
-
if (target === undefined)
|
|
60
|
+
if (target === undefined && !request.download)
|
|
61
61
|
return;
|
|
62
|
-
if (
|
|
62
|
+
if (target !== undefined &&
|
|
63
|
+
record.target !== null &&
|
|
64
|
+
record.target !== target)
|
|
63
65
|
throw invalid(`This download token is for ${record.target}, not ${target}.`);
|
|
64
|
-
if (record.target === target &&
|
|
66
|
+
if ((target === undefined || record.target === target) &&
|
|
67
|
+
!request.download)
|
|
65
68
|
return;
|
|
66
69
|
// Binds the platform and counts the download; a concurrent request that changed the row first wins.
|
|
67
70
|
const updated = await tokens.updateMany({
|
|
@@ -70,7 +73,7 @@ export function createDownloadTokenService(deps) {
|
|
|
70
73
|
f.number('downloads').eq(downloads),
|
|
71
74
|
]),
|
|
72
75
|
values: {
|
|
73
|
-
target,
|
|
76
|
+
target: target ?? record.target,
|
|
74
77
|
downloads: request.download ? downloads + 1 : downloads,
|
|
75
78
|
},
|
|
76
79
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download-tokens.js","sourceRoot":"","sources":["../../../server/distribution/download-tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAIzD,OAAO,EAAE,KAAK,EAAc,MAAM,oBAAoB,CAAC;AACvD,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,GACf,MAAM,qBAAqB,CAAC;AAI7B,8CAA8C;AAC9C,MAAM,CAAC,MAAM,qBAAqB,GAAW,EAAE,GAAG,MAAM,CAAC;AAEzD,wFAAwF;AACxF,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAY9C,SAAS,kBAAkB,CACzB,IAAwB;IAExB,OAAO,IAAI,CAAC,UAAU,CAAsB,kBAAkB,CAAC,CAAC;AAClE,CAAC;AAyBD,MAAM,UAAU,0BAA0B,CACxC,IAA8B;IAE9B,MAAM,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IACzC,MAAM,OAAO,GAAG,CAAC,OAAe,EAAiB,EAAE,CACjD,IAAI,aAAa,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,GAAkB,EAAE,CAChC,OAAO,CACL,uFAAuF,CACxF,CAAC;IAEJ,OAAO;QACL,MAAM,EAAE,CAAC,WAAW,EAAE,EAAE,CACtB,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;YACxB,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAC3D,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,EAAE,qBAAqB,CAAC,CAAC;YACpD,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC;gBACvC,MAAM,EAAE;oBACN,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE;oBACd,SAAS,EAAE,cAAc,CAAC,KAAK,CAAC;oBAChC,WAAW;oBACX,MAAM,EAAE,IAAI;oBACZ,SAAS,EAAE,CAAC;oBACZ,SAAS;oBACT,SAAS,EAAE,GAAG,CAAC,WAAW,EAAE;iBAC7B;aACF,CAAC,CAAC;YACH,OAAO;gBACL,KAAK;gBACL,SAAS;gBACT,YAAY,EAAE,4BAA4B;aAC3C,CAAC;QACJ,CAAC,CAAC;QAEJ,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CACxB,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;YACxB,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO;gBAC9D,MAAM,OAAO,CAAC,mCAAmC,OAAO,GAAG,CAAC,CAAC;YAC/D,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACxC,MAAM,MAAM,GAAG,KAAK;gBAClB,CAAC,CAAC,MAAM,MAAM,CAAC,OAAO,CAAC;oBACnB,MAAM,EAAE,EAAE,SAAS,EAAE,cAAc,CAAC,KAAK,CAAC,EAAE;iBAC7C,CAAC;gBACJ,CAAC,CAAC,SAAS,CAAC;YACd,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,CAAC,CAAC;YACjD,IACE,CAAC,MAAM;gBACP,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE;gBACrD,SAAS,IAAI,4BAA4B;gBAEzC,MAAM,KAAK,EAAE,CAAC;YAChB,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;YAC3B,IAAI,MAAM,KAAK,SAAS;gBAAE,OAAO;
|
|
1
|
+
{"version":3,"file":"download-tokens.js","sourceRoot":"","sources":["../../../server/distribution/download-tokens.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,22 @@
|
|
|
1
|
-
import { type UpgradeNotice } from '@nocobase/agent-protocol';
|
|
1
|
+
import { type HeartbeatResponse, type NpmUpgradeNotice, type UpgradeNotice } from '@nocobase/agent-protocol';
|
|
2
2
|
import type { Runner } from '../../shared/runners.js';
|
|
3
3
|
import type { DistService } from './dist.service.js';
|
|
4
4
|
export { createDownloadTokenService, DOWNLOAD_TOKEN_MAX_DOWNLOADS, DOWNLOAD_TOKEN_TTL_MS, type DownloadRequest, type DownloadTokenService, } from './download-tokens.js';
|
|
5
|
-
export { createDistService, DEFAULT_CHANNEL, type DistConfig, type DistFile, type DistService, } from './dist.service.js';
|
|
5
|
+
export { createDistService, DEFAULT_CHANNEL, type DistConfig, type DistFile, type DistNpmSource, type DistService, } from './dist.service.js';
|
|
6
6
|
/** The platform a runner reported, as the tarballs name it. */
|
|
7
7
|
export declare function runnerTarget(runner: Pick<Runner, 'os' | 'arch'>): string;
|
|
8
|
+
/** An update for a runner: a tarball the application serves, or a package to install from npm. */
|
|
9
|
+
export type RunnerUpgrade = UpgradeNotice | NpmUpgradeNotice;
|
|
8
10
|
/**
|
|
9
11
|
* A newer version of the product `runner` runs as (`nocobase-runner`, or a CLI that carries the runner) that the
|
|
10
12
|
* application serves for its platform, if there is one. A runner that reported no product is offered none: it may be
|
|
11
13
|
* carried by a CLI that no longer carries it.
|
|
14
|
+
*
|
|
15
|
+
* The tarball is offered whenever there is one. Only when the application has none of the product, and names it on npm
|
|
16
|
+
* (`agents.dist.npm`), is the package offered, and then only to a runner with the `npm` feature: any other runner is
|
|
17
|
+
* offered nothing, as before.
|
|
12
18
|
*/
|
|
13
|
-
export declare function upgradeFor(dist: DistService, runner: Pick<Runner, 'os' | 'arch' | 'version' | 'product'>): Promise<
|
|
19
|
+
export declare function upgradeFor(dist: DistService, runner: Pick<Runner, 'os' | 'arch' | 'version' | 'product' | 'features'>): Promise<RunnerUpgrade | undefined>;
|
|
20
|
+
/** Where an update goes in a heartbeat answer: a tarball in `upgrade`, an npm package in `npmUpgrade`. */
|
|
21
|
+
export declare function upgradeFields(upgrade: RunnerUpgrade | undefined): Pick<HeartbeatResponse, 'upgrade' | 'npmUpgrade'>;
|
|
14
22
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../server/distribution/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../server/distribution/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EACnB,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,qBAAqB,EACrB,KAAK,eAAe,EACpB,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,WAAW,GACjB,MAAM,mBAAmB,CAAC;AAE3B,+DAA+D;AAC/D,wBAAgB,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM,CAAC,GAAG,MAAM,CAExE;AAED,kGAAkG;AAClG,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG,gBAAgB,CAAC;AAE7D;;;;;;;;GAQG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC,GACvE,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,CAwBpC;AAED,0GAA0G;AAC1G,wBAAgB,aAAa,CAC3B,OAAO,EAAE,aAAa,GAAG,SAAS,GACjC,IAAI,CAAC,iBAAiB,EAAE,SAAS,GAAG,YAAY,CAAC,CAGnD"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { compareVersions } from '@nocobase/agent-protocol';
|
|
1
|
+
import { compareVersions, NPM_UPGRADE_FEATURE, } from '@nocobase/agent-protocol';
|
|
2
2
|
export { createDownloadTokenService, DOWNLOAD_TOKEN_MAX_DOWNLOADS, DOWNLOAD_TOKEN_TTL_MS, } from './download-tokens.js';
|
|
3
3
|
export { createDistService, DEFAULT_CHANNEL, } from './dist.service.js';
|
|
4
4
|
/** The platform a runner reported, as the tarballs name it. */
|
|
@@ -9,20 +9,43 @@ export function runnerTarget(runner) {
|
|
|
9
9
|
* A newer version of the product `runner` runs as (`nocobase-runner`, or a CLI that carries the runner) that the
|
|
10
10
|
* application serves for its platform, if there is one. A runner that reported no product is offered none: it may be
|
|
11
11
|
* carried by a CLI that no longer carries it.
|
|
12
|
+
*
|
|
13
|
+
* The tarball is offered whenever there is one. Only when the application has none of the product, and names it on npm
|
|
14
|
+
* (`agents.dist.npm`), is the package offered, and then only to a runner with the `npm` feature: any other runner is
|
|
15
|
+
* offered nothing, as before.
|
|
12
16
|
*/
|
|
13
17
|
export async function upgradeFor(dist, runner) {
|
|
14
18
|
if (runner.product === null)
|
|
15
19
|
return undefined;
|
|
16
20
|
const latest = await dist.find(runner.product, runnerTarget(runner));
|
|
17
|
-
if (
|
|
21
|
+
if (latest) {
|
|
22
|
+
if (compareVersions(latest.version, runner.version) <= 0)
|
|
23
|
+
return undefined;
|
|
24
|
+
return {
|
|
25
|
+
minVersion: '0.0.0',
|
|
26
|
+
latestVersion: latest.version,
|
|
27
|
+
downloadUrl: latest.url,
|
|
28
|
+
sha256: latest.sha256,
|
|
29
|
+
channel: latest.channel,
|
|
30
|
+
reason: `The application serves ${latest.product} ${latest.version} on the ${latest.channel} channel.`,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
if (!runner.features.includes(NPM_UPGRADE_FEATURE))
|
|
34
|
+
return undefined;
|
|
35
|
+
const npm = await dist.npmPackage(runner.product);
|
|
36
|
+
if (!npm || compareVersions(npm.version, runner.version) <= 0)
|
|
18
37
|
return undefined;
|
|
19
38
|
return {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
channel: latest.channel,
|
|
25
|
-
reason: `The application serves ${latest.product} ${latest.version} on the ${latest.channel} channel.`,
|
|
39
|
+
latestVersion: npm.version,
|
|
40
|
+
package: npm.package,
|
|
41
|
+
channel: npm.channel,
|
|
42
|
+
reason: `The application runs ${npm.product} ${npm.version}: install ${npm.package}@${npm.version} from npm.`,
|
|
26
43
|
};
|
|
27
44
|
}
|
|
45
|
+
/** Where an update goes in a heartbeat answer: a tarball in `upgrade`, an npm package in `npmUpgrade`. */
|
|
46
|
+
export function upgradeFields(upgrade) {
|
|
47
|
+
if (upgrade === undefined)
|
|
48
|
+
return {};
|
|
49
|
+
return 'downloadUrl' in upgrade ? { upgrade } : { npmUpgrade: upgrade };
|
|
50
|
+
}
|
|
28
51
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/distribution/index.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../server/distribution/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,mBAAmB,GAIpB,MAAM,0BAA0B,CAAC;AAIlC,OAAO,EACL,0BAA0B,EAC1B,4BAA4B,EAC5B,qBAAqB,GAGtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,iBAAiB,EACjB,eAAe,GAKhB,MAAM,mBAAmB,CAAC;AAE3B,+DAA+D;AAC/D,MAAM,UAAU,YAAY,CAAC,MAAmC;IAC9D,OAAO,GAAG,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;AACvC,CAAC;AAKD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAAiB,EACjB,MAAwE;IAExE,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI;QAAE,OAAO,SAAS,CAAC;IAC9C,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IACrE,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QAC3E,OAAO;YACL,UAAU,EAAE,OAAO;YACnB,aAAa,EAAE,MAAM,CAAC,OAAO;YAC7B,WAAW,EAAE,MAAM,CAAC,GAAG;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,MAAM,EAAE,0BAA0B,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC,OAAO,WAAW;SACvG,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC;QAAE,OAAO,SAAS,CAAC;IACrE,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,CAAC,GAAG,IAAI,eAAe,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;QAC3D,OAAO,SAAS,CAAC;IACnB,OAAO;QACL,aAAa,EAAE,GAAG,CAAC,OAAO;QAC1B,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,OAAO,EAAE,GAAG,CAAC,OAAO;QACpB,MAAM,EAAE,wBAAwB,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,aAAa,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,YAAY;KAC9G,CAAC;AACJ,CAAC;AAED,0GAA0G;AAC1G,MAAM,UAAU,aAAa,CAC3B,OAAkC;IAElC,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACrC,OAAO,aAAa,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AAC1E,CAAC"}
|
|
@@ -12,6 +12,8 @@ import { type Redactor } from '@nocobase/agent-protocol';
|
|
|
12
12
|
export interface SecretMemory {
|
|
13
13
|
/** The secrets handed out with a claim of `owner` (`run:<id>`, `job:<id>`), replacing earlier ones. */
|
|
14
14
|
remember(owner: string, secrets: Iterable<string | null | undefined>): void;
|
|
15
|
+
/** Adds secrets handed out to `owner` after its claim (a credential it asked for later), keeping the earlier ones. */
|
|
16
|
+
add(owner: string, secrets: Iterable<string | null | undefined>): void;
|
|
15
17
|
/** Forgets `owner`'s secrets once it ended. */
|
|
16
18
|
forget(owner: string): void;
|
|
17
19
|
/** A redactor for what `owner` reports: its secrets, when remembered, and the common patterns. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redaction.d.ts","sourceRoot":"","sources":["../../../server/kernel/redaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzE,MAAM,WAAW,YAAY;IAC3B,uGAAuG;IACvG,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC;IAC5E,+CAA+C;IAC/C,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,kGAAkG;IAClG,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC;CACnC;AAED,sEAAsE;AACtE,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAIxC,wBAAgB,kBAAkB,CAChC,KAAK,GAAE,MAA4B,GAClC,YAAY,
|
|
1
|
+
{"version":3,"file":"redaction.d.ts","sourceRoot":"","sources":["../../../server/kernel/redaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAEzE,MAAM,WAAW,YAAY;IAC3B,uGAAuG;IACvG,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC;IAC5E,sHAAsH;IACtH,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC;IACvE,+CAA+C;IAC/C,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,kGAAkG;IAClG,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC;CACnC;AAED,sEAAsE;AACtE,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAIxC,wBAAgB,kBAAkB,CAChC,KAAK,GAAE,MAA4B,GAClC,YAAY,CAkCd;AAED,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,KAAG,MAAwB,CAAC;AACvE,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,KAAG,MAAwB,CAAC"}
|
|
@@ -28,6 +28,23 @@ export function createSecretMemory(limit = SECRET_MEMORY_LIMIT) {
|
|
|
28
28
|
redactors.delete(oldest.value);
|
|
29
29
|
}
|
|
30
30
|
},
|
|
31
|
+
add(owner, secrets) {
|
|
32
|
+
const current = redactors.get(owner);
|
|
33
|
+
const redactor = current
|
|
34
|
+
? current.with(secrets)
|
|
35
|
+
: createRedactor(secrets);
|
|
36
|
+
if (redactor.secrets.length === 0)
|
|
37
|
+
return;
|
|
38
|
+
// Most recent last: a run that keeps asking is not the first to be forgotten.
|
|
39
|
+
redactors.delete(owner);
|
|
40
|
+
redactors.set(owner, redactor);
|
|
41
|
+
while (redactors.size > limit) {
|
|
42
|
+
const oldest = redactors.keys().next();
|
|
43
|
+
if (oldest.done)
|
|
44
|
+
break;
|
|
45
|
+
redactors.delete(oldest.value);
|
|
46
|
+
}
|
|
47
|
+
},
|
|
31
48
|
forget(owner) {
|
|
32
49
|
redactors.delete(owner);
|
|
33
50
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"redaction.js","sourceRoot":"","sources":["../../../server/kernel/redaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,cAAc,EAAiB,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"redaction.js","sourceRoot":"","sources":["../../../server/kernel/redaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,cAAc,EAAiB,MAAM,0BAA0B,CAAC;AAazE,sEAAsE;AACtE,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC;AAExC,MAAM,YAAY,GAAG,cAAc,EAAE,CAAC;AAEtC,MAAM,UAAU,kBAAkB,CAChC,QAAgB,mBAAmB;IAEnC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC9C,OAAO;QACL,QAAQ,CAAC,KAAK,EAAE,OAAO;YACrB,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACxB,MAAM,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAC1C,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC/B,OAAO,SAAS,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC;gBAC9B,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;gBACvC,IAAI,MAAM,CAAC,IAAI;oBAAE,MAAM;gBACvB,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QACD,GAAG,CAAC,KAAK,EAAE,OAAO;YAChB,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACrC,MAAM,QAAQ,GAAG,OAAO;gBACtB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;gBACvB,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAC5B,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAC1C,8EAA8E;YAC9E,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACxB,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC/B,OAAO,SAAS,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC;gBAC9B,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;gBACvC,IAAI,MAAM,CAAC,IAAI;oBAAE,MAAM;gBACvB,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QACD,MAAM,CAAC,KAAK;YACV,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;QACD,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,YAAY;KAC1D,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,OAAO,KAAK,EAAE,CAAC;AACvE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,OAAO,KAAK,EAAE,CAAC"}
|