@nocobase/app-plugin-agents 0.1.0-beta.5 → 0.1.0-beta.7
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 +66 -0
- package/README.md +36 -21
- 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/locales/en-US.d.ts +3 -0
- package/dist/client/locales/en-US.d.ts.map +1 -1
- package/dist/client/locales/en-US.js +3 -0
- package/dist/client/locales/en-US.js.map +1 -1
- package/dist/client/locales/runtimes.en-US.d.ts +37 -0
- package/dist/client/locales/runtimes.en-US.d.ts.map +1 -1
- package/dist/client/locales/runtimes.en-US.js +37 -0
- 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 +37 -0
- 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 -0
- package/dist/client/locales/zh-CN.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/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.js +1 -1
- package/dist/server/routes/runners/dist.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.map +1 -1
- package/dist/server/routes/schemas.js +17 -2
- 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 +2 -1
- 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 +20 -20
- package/skills/nocobase-app-plugin-agents/references/extension-points.md +7 -1
- package/skills/nocobase-app-plugin-agents/references/runners.md +6 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../../../../server/core/runs/extensions.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"extensions.d.ts","sourceRoot":"","sources":["../../../../server/core/runs/extensions.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,10 @@
|
|
|
13
13
|
*
|
|
14
14
|
* - Repository access is asked per run (`forRun`, in the claim's transaction) once the run has repositories to check
|
|
15
15
|
* out. Its credentials are minted in `prepare` (a network call is fine there), handed to the runner in the payload
|
|
16
|
-
* and never stored; the claim remembers them as secrets, so nothing the run reports carries them.
|
|
16
|
+
* and never stored; the claim remembers them as secrets, so nothing the run reports carries them. When the runner
|
|
17
|
+
* asks for credentials on demand (the `gitCredentials` feature, `RepoAccessContext.onDemand`), a provider that can
|
|
18
|
+
* `issue` one lists its repositories in `RunGit.onDemand` instead and mints nothing at the claim: the runner asks
|
|
19
|
+
* for each credential whenever git needs one, for as long as it holds the run (`git-credentials.ts`).
|
|
17
20
|
*
|
|
18
21
|
* Inside the claim's transaction a provider reads through the claim's connection only: on SQLite that transaction
|
|
19
22
|
* holds the one connection there is, so anything else (a person's permissions, another plugin's services) would wait
|
|
@@ -104,6 +107,19 @@ export async function mountsFor(conn, registry, context, prepared) {
|
|
|
104
107
|
}
|
|
105
108
|
return { mounts, resumeNotes };
|
|
106
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* What a provider throws from `issue` when it cannot give a credential, with a message safe to show the run's people
|
|
112
|
+
* and the agent (no credential, no internal detail): `unavailable` when its code host is down or slow and asking again
|
|
113
|
+
* later may work, `denied` when it will not issue one (no access to the repository, an installation gone).
|
|
114
|
+
*/
|
|
115
|
+
export class RepoAccessError extends Error {
|
|
116
|
+
name = 'RepoAccessError';
|
|
117
|
+
kind;
|
|
118
|
+
constructor(kind, message) {
|
|
119
|
+
super(message);
|
|
120
|
+
this.kind = kind;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
107
123
|
export function createRepoAccessRegistry() {
|
|
108
124
|
const providers = new Map();
|
|
109
125
|
return {
|
|
@@ -121,7 +137,9 @@ export function createRepoAccessRegistry() {
|
|
|
121
137
|
}
|
|
122
138
|
/**
|
|
123
139
|
* The run's git, from every provider: the first author given, every trailer and credential in order (one credential
|
|
124
|
-
* per URL, the first).
|
|
140
|
+
* per URL, the first). With `context.onDemand`, the URLs any provider lists in `onDemand` (only repositories of the
|
|
141
|
+
* run) are asked for on demand, and no credential of the claim is handed out for them; without it, `onDemand` is
|
|
142
|
+
* dropped.
|
|
125
143
|
*/
|
|
126
144
|
export async function repoAccessFor(conn, registry, context, prepared) {
|
|
127
145
|
if (context.repos.length === 0)
|
|
@@ -129,6 +147,8 @@ export async function repoAccessFor(conn, registry, context, prepared) {
|
|
|
129
147
|
let author;
|
|
130
148
|
const trailers = [];
|
|
131
149
|
const credentials = new Map();
|
|
150
|
+
const repoUrls = new Set(context.repos.map((repo) => repo.url));
|
|
151
|
+
const onDemand = new Set();
|
|
132
152
|
for (const provider of registry?.list() ?? []) {
|
|
133
153
|
const given = await provider.forRun(conn, context, prepared.get(`repo:${provider.key}`));
|
|
134
154
|
if (!given)
|
|
@@ -140,20 +160,30 @@ export async function repoAccessFor(conn, registry, context, prepared) {
|
|
|
140
160
|
for (const credential of given.credentials ?? [])
|
|
141
161
|
if (!credentials.has(credential.url))
|
|
142
162
|
credentials.set(credential.url, credential);
|
|
163
|
+
if (context.onDemand)
|
|
164
|
+
for (const url of given.onDemand ?? [])
|
|
165
|
+
if (repoUrls.has(url))
|
|
166
|
+
onDemand.add(url);
|
|
143
167
|
}
|
|
144
|
-
|
|
168
|
+
for (const url of onDemand)
|
|
169
|
+
credentials.delete(url);
|
|
170
|
+
if (!author &&
|
|
171
|
+
trailers.length === 0 &&
|
|
172
|
+
credentials.size === 0 &&
|
|
173
|
+
onDemand.size === 0)
|
|
145
174
|
return null;
|
|
146
175
|
return {
|
|
147
176
|
...(author ? { author } : {}),
|
|
148
177
|
...(trailers.length > 0 ? { trailers } : {}),
|
|
149
178
|
...(credentials.size > 0 ? { credentials: [...credentials.values()] } : {}),
|
|
179
|
+
...(onDemand.size > 0 ? { onDemand: [...onDemand] } : {}),
|
|
150
180
|
};
|
|
151
181
|
}
|
|
152
182
|
/**
|
|
153
183
|
* Runs every provider's `prepare` for `run`, outside any transaction. A provider whose preparation fails gets
|
|
154
184
|
* undefined, and is told so by its own absent answer; the claim goes on.
|
|
155
185
|
*/
|
|
156
|
-
export async function prepareExtensions(run, sections, mounts, onError, repoAccess) {
|
|
186
|
+
export async function prepareExtensions(run, sections, mounts, onError, repoAccess, repoOptions = { onDemand: false }) {
|
|
157
187
|
const prepared = new Map();
|
|
158
188
|
const hooks = [
|
|
159
189
|
...(sections?.list() ?? []).flatMap((provider) => provider.prepare
|
|
@@ -166,11 +196,17 @@ export async function prepareExtensions(run, sections, mounts, onError, repoAcce
|
|
|
166
196
|
[`mount:${provider.name}`, provider.prepare],
|
|
167
197
|
]
|
|
168
198
|
: []),
|
|
169
|
-
...(repoAccess?.list() ?? []).flatMap((provider) =>
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
199
|
+
...(repoAccess?.list() ?? []).flatMap((provider) => {
|
|
200
|
+
const prepare = provider.prepare;
|
|
201
|
+
return prepare
|
|
202
|
+
? [
|
|
203
|
+
[
|
|
204
|
+
`repo:${provider.key}`,
|
|
205
|
+
(each) => prepare(each, repoOptions),
|
|
206
|
+
],
|
|
207
|
+
]
|
|
208
|
+
: [];
|
|
209
|
+
}),
|
|
174
210
|
];
|
|
175
211
|
for (const [key, prepare] of hooks)
|
|
176
212
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../../../server/core/runs/extensions.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"extensions.js","sourceRoot":"","sources":["../../../../server/core/runs/extensions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EACL,kBAAkB,EAClB,SAAS,EACT,aAAa,GAKd,MAAM,0BAA0B,CAAC;AA8BlC,MAAM,UAAU,0BAA0B;IACxC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAgC,CAAC;IAC1D,OAAO;QACL,QAAQ,CAAC,QAAQ;YACf,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,qCAAqC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC;YACvE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YACtC,OAAO,GAAG,EAAE;gBACV,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,QAAQ;oBAC1C,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACnC,CAAC,CAAC;QACJ,CAAC;QACD,IAAI,EAAE,GAAG,EAAE,CACT,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;aACpB,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;aAC/C,IAAI,CACH,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,MAAM,CAAC,iBAAiB,CAAC;YAC5C,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,MAAM,CAAC,iBAAiB,CAAC;YAChD,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CACpB;aACA,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC;KACrC,CAAC;AACJ,CAAC;AAED,2GAA2G;AAC3G,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,IAAwB,EACxB,QAA0C,EAC1C,KAAmB,EACnB,QAAyB,EACzB,QAAkB;IAElB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CACjC,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,QAAQ,CAAC,GAAG,CAAC,WAAW,QAAQ,CAAC,GAAG,EAAE,CAAC,CACxC,CAAC;QACF,IAAI,IAAI,EAAE,IAAI,EAAE;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IACxC,OAAO;QACL,GAAG,QAAQ;QACX,OAAO,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,KAAK,CAAC;aACzC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;aAC7B,IAAI,CAAC,MAAM,CAAC;KAChB,CAAC;AACJ,CAAC;AAuDD,MAAM,UAAU,sBAAsB;IACpC,MAAM,SAAS,GAAG,IAAI,GAAG,EAA4B,CAAC;IACtD,OAAO;QACL,QAAQ,CAAC,QAAQ;YACf,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACzC,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YACxD,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YAChE,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;YACvC,OAAO,GAAG,EAAE;gBACV,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,QAAQ;oBAC3C,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC,CAAC;QACJ,CAAC;QACD,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;QAClC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;KACpC,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,YAAY,CAAC,GAAwB;IACnD,OAAO,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAC1E,IAAI,CACL,CAAC;AACJ,CAAC;AAED,uEAAuE;AACvE,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAAwB,EACxB,QAAsC,EACtC,OAAqB,EACrB,QAAkB;IAElB,MAAM,MAAM,GAAe,EAAE,CAAC;IAC9B,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,MAAM,CACjC,IAAI,EACJ,OAAO,EACP,QAAQ,CAAC,GAAG,CAAC,SAAS,QAAQ,CAAC,IAAI,EAAE,CAAC,CACvC,CAAC;QACF,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,uGAAuG;YACvG,SAAS,EAAE,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE;gBACxC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBAC3B,IAAI,EAAE,QAAQ,CAAC,IAAI;aACpB,CAAC;YACF,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC5C,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,EAAE,IAAI,EAAE;YAC1D,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AACjC,CAAC;AA0CD;;;;GAIG;AACH,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAC/B,IAAI,GAAG,iBAAiB,CAAC;IACzB,IAAI,CAA2B;IAExC,YAAY,IAA8B,EAAE,OAAe;QACzD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAmCD,MAAM,UAAU,wBAAwB;IACtC,MAAM,SAAS,GAAG,IAAI,GAAG,EAA8B,CAAC;IACxD,OAAO;QACL,QAAQ,CAAC,QAAQ;YACf,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAC7B,MAAM,IAAI,KAAK,CACb,yCAAyC,QAAQ,CAAC,GAAG,EAAE,CACxD,CAAC;YACJ,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YACtC,OAAO,GAAG,EAAE;gBACV,IAAI,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,QAAQ;oBAC1C,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACnC,CAAC,CAAC;QACJ,CAAC;QACD,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;KACpC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAwB,EACxB,QAAwC,EACxC,OAA0B,EAC1B,QAAkB;IAElB,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC5C,IAAI,MAAwB,CAAC;IAC7B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,WAAW,GAAG,IAAI,GAAG,EAGxB,CAAC;IACJ,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,MAAM,CACjC,IAAI,EACJ,OAAO,EACP,QAAQ,CAAC,GAAG,CAAC,QAAQ,QAAQ,CAAC,GAAG,EAAE,CAAC,CACrC,CAAC;QACF,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC;QACxB,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE;YACxC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC;gBAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1D,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,WAAW,IAAI,EAAE;YAC9C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC;gBAClC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QAChD,IAAI,OAAO,CAAC,QAAQ;YAClB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,IAAI,EAAE;gBACpC,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;oBAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,QAAQ;QAAE,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACpD,IACE,CAAC,MAAM;QACP,QAAQ,CAAC,MAAM,KAAK,CAAC;QACrB,WAAW,CAAC,IAAI,KAAK,CAAC;QACtB,QAAQ,CAAC,IAAI,KAAK,CAAC;QAEnB,OAAO,IAAI,CAAC;IACd,OAAO;QACL,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5C,GAAG,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1D,CAAC;AACJ,CAAC;AAKD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,GAAQ,EACR,QAA0C,EAC1C,MAAoC,EACpC,OAAkC,EAClC,UAA+B,EAC/B,cAAkC,EAAE,QAAQ,EAAE,KAAK,EAAE;IAErD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;IAC5C,MAAM,KAAK,GAAiC;QAC1C,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC/C,QAAQ,CAAC,OAAO;YACd,CAAC,CAAC;gBACE,CAAC,WAAW,QAAQ,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,OAAO,CAG3C;aACF;YACH,CAAC,CAAC,EAAE,CACP;QACD,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAC7C,QAAQ,CAAC,OAAO;YACd,CAAC,CAAC;gBACE,CAAC,SAAS,QAAQ,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,OAAO,CAG1C;aACF;YACH,CAAC,CAAC,EAAE,CACP;QACD,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE;YACjD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;YACjC,OAAO,OAAO;gBACZ,CAAC,CAAC;oBACE;wBACE,QAAQ,QAAQ,CAAC,GAAG,EAAE;wBACtB,CAAC,IAAS,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC;qBACZ;iBAChC;gBACH,CAAC,CAAC,EAAE,CAAC;QACT,CAAC,CAAC;KACH,CAAC;IACF,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,KAAK;QAChC,IAAI,CAAC;YACH,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC;IACH,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Repository credentials on demand (`RUNNER_ROUTES.gitCredential`, the `gitCredentials` feature): a runner asks for the
|
|
3
|
+
* credential of one of its run's repositories whenever git needs one, instead of keeping the one a claim handed out
|
|
4
|
+
* for the whole run, which a long run outlives.
|
|
5
|
+
*
|
|
6
|
+
* The answer is given only while the asking runner holds the run (`reports.holds`), for the attempt it names, under a
|
|
7
|
+
* lease that has not run out, and for a URL the claim listed in `RunGit.onDemand` (`agRuns.gitCredentialUrls`),
|
|
8
|
+
* compared exactly: case, a trailing `.git` and anything else the runner sends must match what it was given. Anything
|
|
9
|
+
* else is refused, so a run that ended, went back to the queue or was taken by another attempt gets nothing.
|
|
10
|
+
*
|
|
11
|
+
* The application issues the credential (`RepoAccessProvider.issue`), outside any transaction, within
|
|
12
|
+
* `ISSUE_TIMEOUT_MS`; whether a cached one is still good enough is its decision. Every credential handed out is added
|
|
13
|
+
* to the run's remembered secrets, so what the run reports afterwards is redacted of it too. A failure is answered
|
|
14
|
+
* with a reason the runner can act on and a message safe to show: `REPO_ACCESS_UNAVAILABLE` (try again later) or
|
|
15
|
+
* `REPO_ACCESS_DENIED` (the application will not issue one).
|
|
16
|
+
*/
|
|
17
|
+
import { type GitCredential, type GitCredentialRequest } from '@nocobase/agent-protocol';
|
|
18
|
+
import type { Clock } from '../../kernel/clock.js';
|
|
19
|
+
import { type SecretMemory } from '../../kernel/redaction.js';
|
|
20
|
+
import type { TxRunner } from '../../kernel/tx.js';
|
|
21
|
+
import type { Runner } from '../../../shared/runners.js';
|
|
22
|
+
import { type RepoAccessRegistry } from './extensions.js';
|
|
23
|
+
import type { RunnerReports } from './lifecycle.js';
|
|
24
|
+
import { type RunRecord } from './run.store.js';
|
|
25
|
+
/** How long the server waits for the application to issue a credential before answering `REPO_ACCESS_UNAVAILABLE`. */
|
|
26
|
+
export declare const ISSUE_TIMEOUT_MS = 15000;
|
|
27
|
+
export interface GitCredentialService {
|
|
28
|
+
issue(runner: Pick<Runner, 'id'>, runId: string, request: GitCredentialRequest): Promise<GitCredential>;
|
|
29
|
+
}
|
|
30
|
+
export interface GitCredentialDeps {
|
|
31
|
+
readonly tx: TxRunner;
|
|
32
|
+
readonly clock: Clock;
|
|
33
|
+
readonly reports: Pick<RunnerReports, 'holds'>;
|
|
34
|
+
readonly repoAccess: RepoAccessRegistry;
|
|
35
|
+
readonly secrets?: SecretMemory;
|
|
36
|
+
/** Told what went wrong when a provider failed in a way it did not explain (`RepoAccessError`). */
|
|
37
|
+
readonly onError?: (message: string, error: unknown) => void;
|
|
38
|
+
readonly timeoutMs?: number;
|
|
39
|
+
}
|
|
40
|
+
/** The URLs a claim listed for on-demand credentials, as stored on the run. */
|
|
41
|
+
export declare function gitCredentialUrls(run: Pick<RunRecord, 'gitCredentialUrls'>): string[];
|
|
42
|
+
export declare function createGitCredentialService(deps: GitCredentialDeps): GitCredentialService;
|
|
43
|
+
//# sourceMappingURL=git-credentials.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-credentials.d.ts","sourceRoot":"","sources":["../../../../server/core/runs/git-credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAEL,KAAK,aAAa,EAClB,KAAK,oBAAoB,EAC1B,MAAM,0BAA0B,CAAC;AAElC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAEL,KAAK,kBAAkB,EAExB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAwB,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEtE,sHAAsH;AACtH,eAAO,MAAM,gBAAgB,QAAS,CAAC;AAEvC,MAAM,WAAW,oBAAoB;IACnC,KAAK,CACH,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,EAC1B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,aAAa,CAAC,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IAC/C,QAAQ,CAAC,UAAU,EAAE,kBAAkB,CAAC;IACxC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,CAAC;IAChC,mGAAmG;IACnG,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7D,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,+EAA+E;AAC/E,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,GACxC,MAAM,EAAE,CAEV;AAED,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,iBAAiB,GACtB,oBAAoB,CAwJtB"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Repository credentials on demand (`RUNNER_ROUTES.gitCredential`, the `gitCredentials` feature): a runner asks for the
|
|
3
|
+
* credential of one of its run's repositories whenever git needs one, instead of keeping the one a claim handed out
|
|
4
|
+
* for the whole run, which a long run outlives.
|
|
5
|
+
*
|
|
6
|
+
* The answer is given only while the asking runner holds the run (`reports.holds`), for the attempt it names, under a
|
|
7
|
+
* lease that has not run out, and for a URL the claim listed in `RunGit.onDemand` (`agRuns.gitCredentialUrls`),
|
|
8
|
+
* compared exactly: case, a trailing `.git` and anything else the runner sends must match what it was given. Anything
|
|
9
|
+
* else is refused, so a run that ended, went back to the queue or was taken by another attempt gets nothing.
|
|
10
|
+
*
|
|
11
|
+
* The application issues the credential (`RepoAccessProvider.issue`), outside any transaction, within
|
|
12
|
+
* `ISSUE_TIMEOUT_MS`; whether a cached one is still good enough is its decision. Every credential handed out is added
|
|
13
|
+
* to the run's remembered secrets, so what the run reports afterwards is redacted of it too. A failure is answered
|
|
14
|
+
* with a reason the runner can act on and a message safe to show: `REPO_ACCESS_UNAVAILABLE` (try again later) or
|
|
15
|
+
* `REPO_ACCESS_DENIED` (the application will not issue one).
|
|
16
|
+
*/
|
|
17
|
+
import { ProtocolError, } from '@nocobase/agent-protocol';
|
|
18
|
+
import { runSecretsKey } from '../../kernel/redaction.js';
|
|
19
|
+
import { stringArray } from '../../kernel/values.js';
|
|
20
|
+
import { RepoAccessError, } from './extensions.js';
|
|
21
|
+
import { findRunRecord, toRun } from './run.store.js';
|
|
22
|
+
/** How long the server waits for the application to issue a credential before answering `REPO_ACCESS_UNAVAILABLE`. */
|
|
23
|
+
export const ISSUE_TIMEOUT_MS = 15_000;
|
|
24
|
+
/** The URLs a claim listed for on-demand credentials, as stored on the run. */
|
|
25
|
+
export function gitCredentialUrls(run) {
|
|
26
|
+
return stringArray(run.gitCredentialUrls);
|
|
27
|
+
}
|
|
28
|
+
export function createGitCredentialService(deps) {
|
|
29
|
+
const timeoutMs = deps.timeoutMs ?? ISSUE_TIMEOUT_MS;
|
|
30
|
+
const lost = (message, status) => new ProtocolError('LEASE_LOST', message, { status });
|
|
31
|
+
async function withTimeout(issue) {
|
|
32
|
+
const controller = new AbortController();
|
|
33
|
+
let timer;
|
|
34
|
+
const timeout = new Promise((_, reject) => {
|
|
35
|
+
timer = setTimeout(() => {
|
|
36
|
+
controller.abort();
|
|
37
|
+
reject(new RepoAccessError('unavailable', 'The application did not issue a credential in time.'));
|
|
38
|
+
}, timeoutMs);
|
|
39
|
+
});
|
|
40
|
+
try {
|
|
41
|
+
return await Promise.race([issue(controller.signal), timeout]);
|
|
42
|
+
}
|
|
43
|
+
finally {
|
|
44
|
+
clearTimeout(timer);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function checked(grant, now) {
|
|
48
|
+
const expires = Date.parse(grant.expiresAt);
|
|
49
|
+
if (typeof grant.username !== 'string' ||
|
|
50
|
+
grant.username === '' ||
|
|
51
|
+
typeof grant.password !== 'string' ||
|
|
52
|
+
grant.password === '' ||
|
|
53
|
+
Number.isNaN(expires) ||
|
|
54
|
+
expires <= now.getTime())
|
|
55
|
+
throw new RepoAccessError('unavailable', 'The application issued a credential that is incomplete or already expired.');
|
|
56
|
+
return grant;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* The run while `runner` still holds this attempt of it under a live lease and the claim listed `url`; the protocol
|
|
60
|
+
* reason otherwise. Checked before the application is asked and again once it answered, since issuing may take long
|
|
61
|
+
* enough for the run to end, be taken back or move to another attempt.
|
|
62
|
+
*/
|
|
63
|
+
async function held(runner, runId, request) {
|
|
64
|
+
await deps.reports.holds(runner, runId);
|
|
65
|
+
const run = await findRunRecord(deps.tx.read(), runId);
|
|
66
|
+
if (!run)
|
|
67
|
+
throw new ProtocolError('RUN_NOT_FOUND', 'No such run.');
|
|
68
|
+
if (Number(run.attempt) !== request.attempt)
|
|
69
|
+
throw lost(`Attempt ${request.attempt} of the run is over; it is on attempt ${Number(run.attempt)}.`, run.status);
|
|
70
|
+
if (run.leaseExpiresAt === null ||
|
|
71
|
+
Date.parse(run.leaseExpiresAt) <= deps.clock.now().getTime())
|
|
72
|
+
throw lost('The run’s lease ran out.', run.status);
|
|
73
|
+
if (!gitCredentialUrls(run).includes(request.url))
|
|
74
|
+
throw new ProtocolError('INVALID_REQUEST', 'This repository is not one the run asks credentials for on demand.', { url: request.url });
|
|
75
|
+
return run;
|
|
76
|
+
}
|
|
77
|
+
/** The first answer of a provider that issues for the URL; null when none does. */
|
|
78
|
+
async function ask(run, runner, request) {
|
|
79
|
+
const providers = deps.repoAccess
|
|
80
|
+
.list()
|
|
81
|
+
.filter((provider) => provider.issue !== undefined);
|
|
82
|
+
try {
|
|
83
|
+
for (const provider of providers) {
|
|
84
|
+
const grant = await withTimeout((signal) => provider.issue({
|
|
85
|
+
run: toRun(run),
|
|
86
|
+
runnerId: runner.id,
|
|
87
|
+
attempt: request.attempt,
|
|
88
|
+
url: request.url,
|
|
89
|
+
refresh: request.refresh === true,
|
|
90
|
+
signal,
|
|
91
|
+
}));
|
|
92
|
+
if (grant)
|
|
93
|
+
return grant;
|
|
94
|
+
}
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
if (error instanceof RepoAccessError)
|
|
99
|
+
throw new ProtocolError(error.kind === 'denied'
|
|
100
|
+
? 'REPO_ACCESS_DENIED'
|
|
101
|
+
: 'REPO_ACCESS_UNAVAILABLE', error.message, { url: request.url });
|
|
102
|
+
deps.onError?.(`Agents could not issue a repository credential for run ${run.id}.`, error);
|
|
103
|
+
throw new ProtocolError('REPO_ACCESS_UNAVAILABLE', 'The application could not issue a credential for this repository.', { url: request.url });
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return {
|
|
107
|
+
async issue(runner, runId, request) {
|
|
108
|
+
const run = await held(runner, runId, request);
|
|
109
|
+
const grant = await ask(run, runner, request);
|
|
110
|
+
if (!grant)
|
|
111
|
+
throw new ProtocolError('REPO_ACCESS_DENIED', 'The application issues no credential for this repository.', { url: request.url });
|
|
112
|
+
// The run may have ended, been taken back or moved to another attempt while the application issued: then the
|
|
113
|
+
// credential is dropped, never remembered, and the runner told why.
|
|
114
|
+
await held(runner, runId, request);
|
|
115
|
+
let valid;
|
|
116
|
+
try {
|
|
117
|
+
// Checked against the time it came back, not the time it was asked for.
|
|
118
|
+
valid = checked(grant, deps.clock.now());
|
|
119
|
+
}
|
|
120
|
+
catch (error) {
|
|
121
|
+
throw new ProtocolError('REPO_ACCESS_UNAVAILABLE', error instanceof Error ? error.message : String(error), { url: request.url });
|
|
122
|
+
}
|
|
123
|
+
const { username, password, expiresAt } = valid;
|
|
124
|
+
deps.secrets?.add(runSecretsKey(run.id), [password]);
|
|
125
|
+
return { username, password, expiresAt };
|
|
126
|
+
},
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=git-credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git-credentials.js","sourceRoot":"","sources":["../../../../server/core/runs/git-credentials.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export { briefOf, createClaimService, fits, fitsActor, hasTool, onlineEntryOf, pickEntry, isServerHolder, payloadDirs, payloadRequires, skillTargets, variableTargets, type ClaimService, type RenderedBrief, type ServerClaim, type ServerHolder, } from './claim.js';
|
|
2
2
|
export { resolveAgentCli, type AgentCli } from './policy.js';
|
|
3
3
|
export { createClaimEligibility, type ClaimEligibility, type EligibilityRequest, } from './eligibility.js';
|
|
4
|
-
export { createBriefSectionRegistry, createRepoAccessRegistry, createRunMountRegistry, sessionKeyOf, type BriefSectionProvider, type BriefSectionRegistry, type ExtensionPrepare, type MountContext, type MountOffer, type RepoAccessContext, type RepoAccessProvider, type RepoAccessRegistry, type RunMountProvider, type RunMountRegistry, } from './extensions.js';
|
|
4
|
+
export { createBriefSectionRegistry, createRepoAccessRegistry, createRunMountRegistry, sessionKeyOf, type BriefSectionProvider, type BriefSectionRegistry, type ExtensionPrepare, type MountContext, type MountOffer, RepoAccessError, type RepoAccessContext, type RepoAccessProvider, type RepoAccessRegistry, type RepoCredentialGrant, type RepoCredentialRequest, type RepoPrepareOptions, type RunMountProvider, type RunMountRegistry, } from './extensions.js';
|
|
5
|
+
export { createGitCredentialService, ISSUE_TIMEOUT_MS, type GitCredentialService, } from './git-credentials.js';
|
|
5
6
|
export { createBriefPreviewer, type BriefPreviewer } from './preview.js';
|
|
6
7
|
export { findBrief, requestReset } from './workspace.store.js';
|
|
7
8
|
export { createRunnerReports, type OnlineUsageRecord, type RunnerReports, } from './lifecycle.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/core/runs/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../server/core/runs/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export { briefOf, createClaimService, fits, fitsActor, hasTool, onlineEntryOf, pickEntry, isServerHolder, payloadDirs, payloadRequires, skillTargets, variableTargets, } from './claim.js';
|
|
2
2
|
export { resolveAgentCli } from './policy.js';
|
|
3
3
|
export { createClaimEligibility, } from './eligibility.js';
|
|
4
|
-
export { createBriefSectionRegistry, createRepoAccessRegistry, createRunMountRegistry, sessionKeyOf, } from './extensions.js';
|
|
4
|
+
export { createBriefSectionRegistry, createRepoAccessRegistry, createRunMountRegistry, sessionKeyOf, RepoAccessError, } from './extensions.js';
|
|
5
|
+
export { createGitCredentialService, ISSUE_TIMEOUT_MS, } from './git-credentials.js';
|
|
5
6
|
export { createBriefPreviewer } from './preview.js';
|
|
6
7
|
export { findBrief, requestReset } from './workspace.store.js';
|
|
7
8
|
export { createRunnerReports, } from './lifecycle.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/core/runs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,kBAAkB,EAClB,IAAI,EACJ,SAAS,EACT,OAAO,EACP,aAAa,EACb,SAAS,EACT,cAAc,EACd,WAAW,EACX,eAAe,EACf,YAAY,EACZ,eAAe,GAKhB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAiB,MAAM,aAAa,CAAC;AAC7D,OAAO,EACL,sBAAsB,GAGvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,YAAY,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../server/core/runs/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,kBAAkB,EAClB,IAAI,EACJ,SAAS,EACT,OAAO,EACP,aAAa,EACb,SAAS,EACT,cAAc,EACd,WAAW,EACX,eAAe,EACf,YAAY,EACZ,eAAe,GAKhB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,eAAe,EAAiB,MAAM,aAAa,CAAC;AAC7D,OAAO,EACL,sBAAsB,GAGvB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,sBAAsB,EACtB,YAAY,EAMZ,eAAe,GAShB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,0BAA0B,EAC1B,gBAAgB,GAEjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAAuB,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EACL,mBAAmB,GAGpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,UAAU,EACV,qBAAqB,EACrB,SAAS,EACT,SAAS,GAcV,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,aAAa,GACd,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,WAAW,EACX,WAAW,EACX,UAAU,EACV,aAAa,EACb,WAAW,EACX,UAAU,EACV,UAAU,EACV,cAAc,EACd,aAAa,GAEd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,SAAS,GAQV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,kBAAkB,GAKnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAkC,MAAM,cAAc,CAAC;AAC7E,OAAO,EACL,kBAAkB,EAClB,YAAY,GAEb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,kBAAkB,GAGnB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAuB,MAAM,kBAAkB,CAAC;AACtE,OAAO,EACL,gBAAgB,EAChB,UAAU,EACV,cAAc,GAEf,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The subject's admission and input policy (`ContextProvider.admit` and `selectInputs`) applied to a run that is
|
|
3
|
+
* already working: before new input joins it, and before its pending input is delivered.
|
|
4
|
+
*/
|
|
5
|
+
import type { RunInput } from '@nocobase/agent-protocol';
|
|
6
|
+
import type { DatabaseConnection } from '@nocobase/db';
|
|
7
|
+
import type { Agent } from '../../../shared/agents.js';
|
|
8
|
+
import { type InputRecord, type RunRecord } from './run.store.js';
|
|
9
|
+
import { type SubjectRegistry } from './ports.js';
|
|
10
|
+
export interface InputGateDeps {
|
|
11
|
+
readonly subjects: SubjectRegistry;
|
|
12
|
+
readonly cliName: string;
|
|
13
|
+
readonly appName: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Of `inputs` for `run`, the ones its agent may act on now: none when the subject rejects the agent's work on it, else
|
|
17
|
+
* what the subject selects. Without a policy, all of them.
|
|
18
|
+
*/
|
|
19
|
+
export declare function gateInputs(conn: DatabaseConnection, deps: InputGateDeps, run: RunRecord, agent: Agent, inputs: readonly RunInput[]): Promise<readonly RunInput[]>;
|
|
20
|
+
/** Marks the inputs of `ids` handled without delivering them: the run is not to act on them. */
|
|
21
|
+
export declare function dropInputs(conn: DatabaseConnection, ids: readonly string[], now: string): Promise<void>;
|
|
22
|
+
/** A working run's unhandled input, split by whether the run may still act on it. */
|
|
23
|
+
export interface GatedPending {
|
|
24
|
+
/** What the run was already given, and the new input the subject still admits and selects. */
|
|
25
|
+
readonly kept: readonly InputRecord[];
|
|
26
|
+
/** New input the subject no longer lets the run act on. */
|
|
27
|
+
readonly withheld: readonly InputRecord[];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Splits `run`'s unhandled input by the subject's policy. Input already delivered stays with the run, whatever
|
|
31
|
+
* happened since; only input not yet delivered is judged.
|
|
32
|
+
*/
|
|
33
|
+
export declare function gatePending(conn: DatabaseConnection, deps: InputGateDeps, run: RunRecord): Promise<GatedPending>;
|
|
34
|
+
//# sourceMappingURL=input-gate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-gate.d.ts","sourceRoot":"","sources":["../../../../server/core/runs/input-gate.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAEvD,OAAO,EAKL,KAAK,WAAW,EAChB,KAAK,SAAS,EACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAa,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAE7D,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,kBAAkB,EACxB,IAAI,EAAE,aAAa,EACnB,GAAG,EAAE,SAAS,EACd,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,SAAS,QAAQ,EAAE,GAC1B,OAAO,CAAC,SAAS,QAAQ,EAAE,CAAC,CAgB9B;AAED,gGAAgG;AAChG,wBAAsB,UAAU,CAC9B,IAAI,EAAE,kBAAkB,EACxB,GAAG,EAAE,SAAS,MAAM,EAAE,EACtB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,IAAI,CAAC,CAUf;AAED,qFAAqF;AACrF,MAAM,WAAW,YAAY;IAC3B,8FAA8F;IAC9F,QAAQ,CAAC,IAAI,EAAE,SAAS,WAAW,EAAE,CAAC;IACtC,2DAA2D;IAC3D,QAAQ,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;CAC3C;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,kBAAkB,EACxB,IAAI,EAAE,aAAa,EACnB,GAAG,EAAE,SAAS,GACb,OAAO,CAAC,YAAY,CAAC,CAevB"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { findAgent } from '../agents/index.js';
|
|
2
|
+
import { inputsRepo, pendingInputs, toInput, toRun, } from './run.store.js';
|
|
3
|
+
import { dialectOf } from './ports.js';
|
|
4
|
+
/**
|
|
5
|
+
* Of `inputs` for `run`, the ones its agent may act on now: none when the subject rejects the agent's work on it, else
|
|
6
|
+
* what the subject selects. Without a policy, all of them.
|
|
7
|
+
*/
|
|
8
|
+
export async function gateInputs(conn, deps, run, agent, inputs) {
|
|
9
|
+
const context = deps.subjects.get(run.subjectKind)?.context;
|
|
10
|
+
if (!context || inputs.length === 0)
|
|
11
|
+
return inputs;
|
|
12
|
+
const claim = {
|
|
13
|
+
run: toRun(run),
|
|
14
|
+
agent,
|
|
15
|
+
runner: null,
|
|
16
|
+
inputs,
|
|
17
|
+
cli: deps.cliName,
|
|
18
|
+
appName: deps.appName,
|
|
19
|
+
dialect: dialectOf(agent),
|
|
20
|
+
};
|
|
21
|
+
if (await context.admit?.(conn, claim))
|
|
22
|
+
return [];
|
|
23
|
+
return context.selectInputs
|
|
24
|
+
? await context.selectInputs(conn, claim)
|
|
25
|
+
: inputs;
|
|
26
|
+
}
|
|
27
|
+
/** Marks the inputs of `ids` handled without delivering them: the run is not to act on them. */
|
|
28
|
+
export async function dropInputs(conn, ids, now) {
|
|
29
|
+
if (ids.length === 0)
|
|
30
|
+
return;
|
|
31
|
+
await inputsRepo(conn).updateMany({
|
|
32
|
+
filter: (f) => f.and([
|
|
33
|
+
f.or(ids.map((id) => f.string('id').eq(id))),
|
|
34
|
+
f.date('handledAt').empty(),
|
|
35
|
+
]),
|
|
36
|
+
values: { handledAt: now },
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Splits `run`'s unhandled input by the subject's policy. Input already delivered stays with the run, whatever
|
|
41
|
+
* happened since; only input not yet delivered is judged.
|
|
42
|
+
*/
|
|
43
|
+
export async function gatePending(conn, deps, run) {
|
|
44
|
+
const pending = await pendingInputs(conn, run.id);
|
|
45
|
+
const fresh = pending.filter((input) => !input.deliveredAt);
|
|
46
|
+
const agent = fresh.length > 0 ? await findAgent(conn, run.agentId) : null;
|
|
47
|
+
if (!agent)
|
|
48
|
+
return { kept: pending, withheld: [] };
|
|
49
|
+
const admitted = new Set((await gateInputs(conn, deps, run, agent, fresh.map(toInput))).map((input) => input.id));
|
|
50
|
+
const withheld = fresh.filter((input) => !admitted.has(input.id));
|
|
51
|
+
return {
|
|
52
|
+
kept: pending.filter((input) => !withheld.includes(input)),
|
|
53
|
+
withheld,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=input-gate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-gate.js","sourceRoot":"","sources":["../../../../server/core/runs/input-gate.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EACL,UAAU,EACV,aAAa,EACb,OAAO,EACP,KAAK,GAGN,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAwB,MAAM,YAAY,CAAC;AAQ7D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAAwB,EACxB,IAAmB,EACnB,GAAc,EACd,KAAY,EACZ,MAA2B;IAE3B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC5D,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IACnD,MAAM,KAAK,GAAG;QACZ,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;QACf,KAAK;QACL,MAAM,EAAE,IAAI;QACZ,MAAM;QACN,GAAG,EAAE,IAAI,CAAC,OAAO;QACjB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC;KAC1B,CAAC;IACF,IAAI,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAClD,OAAO,OAAO,CAAC,YAAY;QACzB,CAAC,CAAC,MAAM,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC;QACzC,CAAC,CAAC,MAAM,CAAC;AACb,CAAC;AAED,gGAAgG;AAChG,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAAwB,EACxB,GAAsB,EACtB,GAAW;IAEX,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAC7B,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC;QAChC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CACZ,CAAC,CAAC,GAAG,CAAC;YACJ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5C,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE;SAC5B,CAAC;QACJ,MAAM,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE;KAC3B,CAAC,CAAC;AACL,CAAC;AAUD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAwB,EACxB,IAAmB,EACnB,GAAc;IAEd,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3E,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACnD,MAAM,QAAQ,GAAG,IAAI,GAAG,CACtB,CAAC,MAAM,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAChE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CACpB,CACF,CAAC;IACF,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAClE,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC1D,QAAQ;KACT,CAAC;AACJ,CAAC"}
|
|
@@ -9,6 +9,7 @@ import { type Clock } from '../../kernel/clock.js';
|
|
|
9
9
|
import type { IdSource } from '../../kernel/ids.js';
|
|
10
10
|
import { type SecretMemory } from '../../kernel/redaction.js';
|
|
11
11
|
import type { TxRunner } from '../../kernel/tx.js';
|
|
12
|
+
import { type InputGateDeps } from './input-gate.js';
|
|
12
13
|
import { type TransitionDeps } from './transitions.js';
|
|
13
14
|
export interface RunnerReports {
|
|
14
15
|
/** Resolves while `runner` holds the run; `LEASE_LOST`, `RUN_NOT_ACTIVE` or `RUN_NOT_OWNED` otherwise. */
|
|
@@ -42,7 +43,7 @@ export interface OnlineUsageRecord {
|
|
|
42
43
|
readonly cacheWriteTokens?: number;
|
|
43
44
|
readonly reasoningTokens?: number;
|
|
44
45
|
}
|
|
45
|
-
export interface RunnerReportsDeps extends TransitionDeps {
|
|
46
|
+
export interface RunnerReportsDeps extends TransitionDeps, InputGateDeps {
|
|
46
47
|
readonly tx: TxRunner;
|
|
47
48
|
readonly ids: IdSource;
|
|
48
49
|
readonly clock: Clock;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../../server/core/runs/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAML,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,aAAa,EAElB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,cAAc,EAEpB,MAAM,0BAA0B,CAAC;AAMlC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAS,KAAK,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAM,QAAQ,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../../server/core/runs/lifecycle.ts"],"names":[],"mappings":"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"}
|