orizu 0.5.43 → 0.5.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hosted-agent-prompt.d.ts +6 -0
- package/dist/hosted-agent-prompt.d.ts.map +1 -1
- package/dist/hosted-agent-prompt.js +11 -0
- package/dist/hosted-bootstrap-rehearsal.d.ts +2 -0
- package/dist/hosted-bootstrap-rehearsal.d.ts.map +1 -1
- package/dist/hosted-bootstrap-rehearsal.js +5 -0
- package/dist/hosted-broker-server.d.ts +2 -0
- package/dist/hosted-broker-server.d.ts.map +1 -1
- package/dist/hosted-broker-server.js +4 -1
- package/dist/hosted-harness-opencode.d.ts +2 -0
- package/dist/hosted-harness-opencode.d.ts.map +1 -1
- package/dist/hosted-harness-opencode.js +2 -2
- package/dist/hosted-loop-lifecycle.d.ts +2 -0
- package/dist/hosted-loop-lifecycle.d.ts.map +1 -1
- package/dist/hosted-loop.d.ts.map +1 -1
- package/dist/hosted-loop.js +3 -0
- package/dist/hosted-session-cli.d.ts.map +1 -1
- package/dist/hosted-session-cli.js +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -8
- package/dist/score-save-workflow.d.ts +10 -14
- package/dist/score-save-workflow.d.ts.map +1 -1
- package/dist/score-save-workflow.js +14 -11
- package/package.json +1 -1
- package/src/hosted-agent-prompt.ts +11 -0
- package/src/hosted-bootstrap-rehearsal.ts +6 -0
- package/src/hosted-broker-server.ts +5 -1
- package/src/hosted-harness-opencode.ts +4 -2
- package/src/hosted-loop-lifecycle.ts +2 -0
- package/src/hosted-loop.ts +2 -0
- package/src/hosted-session-cli.ts +3 -1
- package/src/index.ts +9 -11
- package/src/score-save-workflow.ts +21 -16
|
@@ -1,3 +1,9 @@
|
|
|
1
1
|
export declare const HOSTED_AGENT_NAME = "orizu";
|
|
2
2
|
export declare const HOSTED_AGENT_PROMPT: string;
|
|
3
|
+
/**
|
|
4
|
+
* The prompt for one session. Every project of an approved team shares the
|
|
5
|
+
* team's repository (ORI-2601; ADR-041, added in PR #2292), which starts with one project's folder, so the
|
|
6
|
+
* agent is told which project this session is for (ORI-2601).
|
|
7
|
+
*/
|
|
8
|
+
export declare function hostedAgentPrompt(projectId?: string | null): string;
|
|
3
9
|
//# sourceMappingURL=hosted-agent-prompt.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hosted-agent-prompt.d.ts","sourceRoot":"","sources":["../src/hosted-agent-prompt.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,iBAAiB,UAAU,CAAA;AAExC,eAAO,MAAM,mBAAmB,QAK4Z,CAAA"}
|
|
1
|
+
{"version":3,"file":"hosted-agent-prompt.d.ts","sourceRoot":"","sources":["../src/hosted-agent-prompt.ts"],"names":[],"mappings":"AAaA,eAAO,MAAM,iBAAiB,UAAU,CAAA;AAExC,eAAO,MAAM,mBAAmB,QAK4Z,CAAA;AAE5b;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAInE"}
|
|
@@ -17,3 +17,14 @@ export const HOSTED_AGENT_PROMPT = `You are the Orizu agent. You work in the per
|
|
|
17
17
|
- Keep answers short and plain. Say what you did and what the person needs to know next.
|
|
18
18
|
- Follow the repository's own conventions and any instructions in its AGENTS.md.
|
|
19
19
|
- An Orizu app's page link is <Orizu server>${appPagePath('<app id>')}, where <Orizu server> is the server the orizu CLI talks to (https://app.orizu.ai by default). To give someone an app's link, run \`orizu projects list\` to get the \`<team>/<project>\` slug, then \`orizu apps list --project <team>/<project>\`: it prints each app's full link. The --project flag is required here: prompts cannot run in this environment. Never guess a link.`;
|
|
20
|
+
/**
|
|
21
|
+
* The prompt for one session. Every project of an approved team shares the
|
|
22
|
+
* team's repository (ORI-2601; ADR-041, added in PR #2292), which starts with one project's folder, so the
|
|
23
|
+
* agent is told which project this session is for (ORI-2601).
|
|
24
|
+
*/
|
|
25
|
+
export function hostedAgentPrompt(projectId) {
|
|
26
|
+
if (!projectId)
|
|
27
|
+
return HOSTED_AGENT_PROMPT;
|
|
28
|
+
return `${HOSTED_AGENT_PROMPT}
|
|
29
|
+
- This session is for the Orizu project whose id is ${projectId}. Run \`orizu projects list --json\` to find its \`<team>/<project>\` slug, and pass that whole slug as \`--project <team>/<project>\` to orizu commands. In this repository the project's files live in the folder \`projects/<project>/\`, named by the part after the slash only (for \`acme/support-bot\`, the folder is \`projects/support-bot/\`). If that folder is missing, do not create it by hand: Orizu writes a project folder with its own files (\`orizu.project.json\`, \`README.md\`, \`memory.md\`). Tell the person this project's folder is not in the workspace yet, and keep working on what they asked. Do not change another project's folder unless the person asks.`;
|
|
30
|
+
}
|
|
@@ -54,6 +54,8 @@ export interface HostedBootstrapRehearsal {
|
|
|
54
54
|
sessionId: string;
|
|
55
55
|
runId: string;
|
|
56
56
|
sessionBranch: string;
|
|
57
|
+
/** The project the fake /sessions endpoint reports for the session. */
|
|
58
|
+
projectId: string;
|
|
57
59
|
repoFullName: string;
|
|
58
60
|
provider: SandboxProvider;
|
|
59
61
|
resolveCloneUrl: (repo: string) => string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hosted-bootstrap-rehearsal.d.ts","sourceRoot":"","sources":["../src/hosted-bootstrap-rehearsal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AASH,OAAO,EAA0B,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACpF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAuC5E,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,IAAI,CAAA;CACjB;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"hosted-bootstrap-rehearsal.d.ts","sourceRoot":"","sources":["../src/hosted-bootstrap-rehearsal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AASH,OAAO,EAA0B,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAA;AACpF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAC7D,OAAO,EAAc,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAuC5E,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,IAAI,CAAA;CACjB;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmBtE;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CA0BrF;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,IAAI,CAAA;CACjB;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA0B9F;AAID,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,MAAM,CAAA;IACrB,uEAAuE;IACvE,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,eAAe,CAAA;IACzB,eAAe,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;IACzC,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAA;IACZ,4EAA4E;IAC5E,iBAAiB,EAAE,SAAS,MAAM,EAAE,CAAA;IACpC,4DAA4D;IAC5D,MAAM,EAAE,MAAM,sBAAsB,EAAE,CAAA;IACtC,0EAA0E;IAC1E,YAAY,EAAE,MAAM,MAAM,EAAE,CAAA;IAC5B,mFAAmF;IACnF,kBAAkB,EAAE,MAAM,MAAM,EAAE,CAAA;IAClC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,OAAO,CAAA;IACd;mFAC+E;IAC/E,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,+EAA+E;IAC/E,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,wEAAwE;IACxE,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,wEAAwE;IACxE,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAuBD,wBAAsB,8BAA8B,CAClD,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,wBAAwB,CAAC,CAwFnC"}
|
|
@@ -63,6 +63,8 @@ export function brokerEnv(config) {
|
|
|
63
63
|
env.HB_SESSION_ID = config.sessionId;
|
|
64
64
|
if (config.sessionBranch)
|
|
65
65
|
env.HB_SESSION_BRANCH = config.sessionBranch;
|
|
66
|
+
if (config.projectId)
|
|
67
|
+
env.HB_PROJECT_ID = config.projectId;
|
|
66
68
|
if (config.repoTokenStatus)
|
|
67
69
|
env.HB_REPO_TOKEN_STATUS = String(config.repoTokenStatus);
|
|
68
70
|
if (config.eventsStatus)
|
|
@@ -173,6 +175,7 @@ export async function createHostedBootstrapRehearsal(options = {}) {
|
|
|
173
175
|
});
|
|
174
176
|
const workspaceId = 'ws-hosted-1';
|
|
175
177
|
const sessionId = 'sess-hosted-1';
|
|
178
|
+
const projectId = '6f1c2d3e-4b5a-4c6d-8e7f-901a2b3c4d5e';
|
|
176
179
|
const runId = 'run-hosted-1';
|
|
177
180
|
const sessionBranch = `orizu/session-${sessionId}`;
|
|
178
181
|
// Cut the session branch off main on the real bare repo.
|
|
@@ -207,6 +210,7 @@ export async function createHostedBootstrapRehearsal(options = {}) {
|
|
|
207
210
|
fullRunApi: options.fullRunApi,
|
|
208
211
|
sessionId,
|
|
209
212
|
sessionBranch,
|
|
213
|
+
projectId,
|
|
210
214
|
});
|
|
211
215
|
// Real authenticated smart-HTTP git server on loopback: this is what makes the
|
|
212
216
|
// clone go git → credential helper → broker → token → Basic auth → served repo,
|
|
@@ -225,6 +229,7 @@ export async function createHostedBootstrapRehearsal(options = {}) {
|
|
|
225
229
|
sessionId,
|
|
226
230
|
runId,
|
|
227
231
|
sessionBranch,
|
|
232
|
+
projectId,
|
|
228
233
|
repoFullName: repo.repoFullName,
|
|
229
234
|
provider,
|
|
230
235
|
resolveCloneUrl: () => cloneUrl,
|
|
@@ -41,6 +41,8 @@ export interface BrokerConfig {
|
|
|
41
41
|
* a pre-seeded session branch on the local bare repo). */
|
|
42
42
|
sessionId?: string;
|
|
43
43
|
sessionBranch?: string;
|
|
44
|
+
/** E2E: the project the /sessions endpoint reports, as the real route does. */
|
|
45
|
+
projectId?: string;
|
|
44
46
|
}
|
|
45
47
|
export declare function readBrokerConfigFromEnv(env: NodeJS.ProcessEnv): BrokerConfig;
|
|
46
48
|
export declare function startBrokerServer(config: BrokerConfig): {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hosted-broker-server.d.ts","sourceRoot":"","sources":["../src/hosted-broker-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AA8BH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,4EAA4E;IAC5E,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,mEAAmE;IACnE,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;+DAC2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"hosted-broker-server.d.ts","sourceRoot":"","sources":["../src/hosted-broker-server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AA8BH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,MAAM,CAAA;IACZ,4EAA4E;IAC5E,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,mEAAmE;IACnE,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;+DAC2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,YAAY,CAiB5E;AASD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,KAAK,IAAI,CAAA;CAAE,CA8LzG"}
|
|
@@ -47,6 +47,7 @@ export function readBrokerConfigFromEnv(env) {
|
|
|
47
47
|
fullRunApi: env.HB_FULL_RUN_API === '1',
|
|
48
48
|
sessionId: env.HB_SESSION_ID,
|
|
49
49
|
sessionBranch: env.HB_SESSION_BRANCH,
|
|
50
|
+
projectId: env.HB_PROJECT_ID,
|
|
50
51
|
};
|
|
51
52
|
}
|
|
52
53
|
export function startBrokerServer(config) {
|
|
@@ -93,7 +94,9 @@ export function startBrokerServer(config) {
|
|
|
93
94
|
sessions += 1;
|
|
94
95
|
const id = config.sessionId ?? `sess-e2e-${sessions}`;
|
|
95
96
|
const repoBranch = config.sessionBranch ?? `orizu/session-${id}`;
|
|
96
|
-
return json(
|
|
97
|
+
return json(
|
|
98
|
+
// Like the real route, a session has a project only when the request names one.
|
|
99
|
+
{ session: { id, workspaceId: sessionsMatch[1], projectId: typeof body.projectSlug === 'string' ? config.projectId ?? null : null, repoBranch, status: 'active' } }, 201);
|
|
97
100
|
}
|
|
98
101
|
const agentTokenMatch = url.pathname.match(/^\/api\/cli\/sessions\/([^/]+)\/agent-token$/);
|
|
99
102
|
if (method === 'POST' && agentTokenMatch) {
|
|
@@ -159,6 +159,8 @@ export interface OpenCodeConfigOptions {
|
|
|
159
159
|
/** OpenCode permission map; defaults to allow-all EXCEPT the headless-denied
|
|
160
160
|
* tools below (sandbox is the boundary for everything else). */
|
|
161
161
|
permission?: Record<string, unknown>;
|
|
162
|
+
/** The session's Orizu project, named in the agent's prompt (ORI-2601). */
|
|
163
|
+
projectId?: string | null;
|
|
162
164
|
}
|
|
163
165
|
/**
|
|
164
166
|
* Tools denied for CLI-origin headless runs (ALI-1037). OpenCode 1.14.41 removes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hosted-harness-opencode.d.ts","sourceRoot":"","sources":["../src/hosted-harness-opencode.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"hosted-harness-opencode.d.ts","sourceRoot":"","sources":["../src/hosted-harness-opencode.ts"],"names":[],"mappings":"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"}
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
*/
|
|
51
51
|
import { readFileSync } from 'fs';
|
|
52
52
|
import { refreshHostedModels } from '../src/hosted-model-cache.mjs';
|
|
53
|
-
import { HOSTED_AGENT_NAME,
|
|
53
|
+
import { HOSTED_AGENT_NAME, hostedAgentPrompt } from './hosted-agent-prompt.js';
|
|
54
54
|
import { parseModelIdentity } from './provider-registry.js';
|
|
55
55
|
import { HARNESS_NAMES } from './hosted-harness.js';
|
|
56
56
|
// OpenCode is HARD-PINNED to this version everywhere it is installed/launched.
|
|
@@ -1004,7 +1004,7 @@ export function buildOpenCodeConfigContent(opts) {
|
|
|
1004
1004
|
model: opts.model,
|
|
1005
1005
|
permission: opts.permission ?? defaultHeadlessPermission(),
|
|
1006
1006
|
// Replaces OpenCode's built-in "You are opencode…" prompt (ORI-2207).
|
|
1007
|
-
agent: { [HOSTED_AGENT_NAME]: { mode: 'primary', prompt:
|
|
1007
|
+
agent: { [HOSTED_AGENT_NAME]: { mode: 'primary', prompt: hostedAgentPrompt(opts.projectId) } },
|
|
1008
1008
|
});
|
|
1009
1009
|
}
|
|
1010
1010
|
const OPENCODE_READY_TIMEOUT_MS = 180_000;
|
|
@@ -52,6 +52,8 @@ export interface HostedLoopContext {
|
|
|
52
52
|
taskFile: string;
|
|
53
53
|
/** Directory the agent operates in (the cloned session-branch workspace). */
|
|
54
54
|
workspaceDir: string;
|
|
55
|
+
/** The session's Orizu project, named in the agent's prompt (ORI-2601). */
|
|
56
|
+
projectId?: string | null;
|
|
55
57
|
/** Validated destination branch for the CLI-owned checkpoint push. */
|
|
56
58
|
sessionBranch: string;
|
|
57
59
|
/** Credential-free repository locator established by bootstrap. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hosted-loop-lifecycle.d.ts","sourceRoot":"","sources":["../src/hosted-loop-lifecycle.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hosted-loop-lifecycle.d.ts","sourceRoot":"","sources":["../src/hosted-loop-lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hosted-loop.d.ts","sourceRoot":"","sources":["../src/hosted-loop.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"hosted-loop.d.ts","sourceRoot":"","sources":["../src/hosted-loop.ts"],"names":[],"mappings":"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"}
|
package/dist/hosted-loop.js
CHANGED
|
@@ -498,6 +498,7 @@ export async function runHostedLoop(opts) {
|
|
|
498
498
|
spawned = await spawnImpl({
|
|
499
499
|
model: context.model,
|
|
500
500
|
permission: permissionForOrigin(context.sessionOrigin),
|
|
501
|
+
projectId: context.projectId,
|
|
501
502
|
cwd: context.workspaceDir,
|
|
502
503
|
port: context.opencodePort,
|
|
503
504
|
env: buildOpenCodeSpawnEnv(context),
|
|
@@ -882,6 +883,8 @@ function validateHostedLoopContext(value) {
|
|
|
882
883
|
for (const name of OPTIONAL_CONTEXT_STRINGS)
|
|
883
884
|
if (record[name] !== undefined && typeof record[name] !== 'string')
|
|
884
885
|
fields.push(name);
|
|
886
|
+
if (record.projectId !== undefined && record.projectId !== null && !isNonemptyString(record.projectId))
|
|
887
|
+
fields.push('projectId');
|
|
885
888
|
for (const name of ['prebaked', 'runSetupHook'])
|
|
886
889
|
if (record[name] !== undefined && typeof record[name] !== 'boolean')
|
|
887
890
|
fields.push(name);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hosted-session-cli.d.ts","sourceRoot":"","sources":["../src/hosted-session-cli.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"hosted-session-cli.d.ts","sourceRoot":"","sources":["../src/hosted-session-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAKH,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACxB,MAAM,uBAAuB,CAAA;AAK9B,OAAO,EAAE,oBAAoB,EAAqB,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAWlG,OAAO,EAKL,KAAK,sBAAsB,EAC5B,MAAM,mBAAmB,CAAA;AAQ1B,OAAO,EAAE,oBAAoB,EAAE,CAAA;AAC/B,eAAO,MAAM,wBAAwB,KAAK,CAAA;AAC1C,eAAO,MAAM,oBAAoB,QAAU,CAAA;AAC3C,eAAO,MAAM,4BAA4B,QAAiB,CAAA;AAC1D;6EAC6E;AAC7E,eAAO,MAAM,sBAAsB,QAAY,CAAA;AAC/C,eAAO,MAAM,+BAA+B,KAAK,CAAA;AACjD;sDACsD;AACtD,eAAO,MAAM,4BAA4B,QAAY,CAAA;AACrD,eAAO,MAAM,yBAAyB,MAAM,CAAA;AAC5C,yEAAyE;AACzE,eAAO,MAAM,2BAA2B,QAAa,CAAA;AAMrD;mFACmF;AACnF,eAAO,MAAM,mBAAmB,0CAA0C,CAAA;AAC1E;;+EAE+E;AAC/E,eAAO,MAAM,gCAAgC,QAAS,CAAA;AACtD,eAAO,MAAM,mCAAmC,QAAa,CAAA;AAC7D,0EAA0E;AAC1E,eAAO,MAAM,oCAAoC,QACf,CAAA;AAClC;gFACgF;AAChF,eAAO,MAAM,uCAAuC,QACP,CAAA;AAE7C;;mCAEmC;AACnC,qBAAa,mCAAoC,SAAQ,KAAK;IAC5D,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;gBAElB,KAAK,EAAE;QACjB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;QAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;QAC9B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;KAC/B;CAUF;AAID,gFAAgF;AAChF,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAEjF;2EAC2E;AAC3E,wBAAgB,aAAa,CAC3B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,WAAW,GACpB,WAAW,CAOb;AAkJD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,cAAc,CAAA;IACvB,OAAO,EAAE,iBAAiB,CAAA;IAC1B,uEAAuE;IACvE,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB;qDACiD;IACjD,MAAM,EAAE,MAAM,CAAA;CACf;AAeD,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAA;IACpB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,yBAAyB;IACxC,4EAA4E;IAC5E,OAAO,EAAE,WAAW,CAAA;IACpB,qEAAqE;IACrE,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,eAAe,CAAA;IACzB,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B;0EACsE;IACtE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,wEAAwE;IACxE,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;;;OAKG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,2EAA2E;IAC3E,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,mFAAmF;IACnF,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;iFAC6E;IAC7E,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,4EAA4E;IAC5E,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAErC,QAAQ,CAAC,EAAE,WAAW,CAAA;IACtB,WAAW,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAA;IAC9D,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACxD;;;yCAGqC;IACrC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE;QAC1B,WAAW,CAAC,EAAE,MAAM,CAAA;QACpB,YAAY,EAAE,SAAS,MAAM,EAAE,CAAA;QAC/B,cAAc,EAAE,MAAM,CAAA;KACvB,KAAK,mBAAmB,GAAG,SAAS,CAAA;IACrC;;8DAE0D;IAC1D,yBAAyB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAA;IAC/E,gFAAgF;IAChF,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IAC/C,0EAA0E;IAC1E,qBAAqB,CAAC,EAAE,sBAAsB,CAAA;IAC9C,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;IAClB,8CAA8C;IAC9C,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,mDAAmD;IACnD,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAC5D,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAChC,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;IACtD;kFAC8E;IAC9E,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,OAAO,EAAE,cAAc,CAAC;QAAC,KAAK,EAAE,kBAAkB,CAAA;KAAE,KAAK,IAAI,CAAA;IACvF,uEAAuE;IACvE,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACjD;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,WAAW,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;CACnD;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,WAAW,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,MAAM,CAAA;IACjB,KAAK,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACpC,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAC5B;AAmDD,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,OAAO,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,WAAW,EAAE,OAAO,CAAA;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB;AAED,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,cAAc,CA+BhB;AAoDD,wBAAsB,kBAAkB,CACtC,IAAI,EAAE,yBAAyB,GAC9B,OAAO,CAAC,wBAAwB,CAAC,CA+dnC;AAID,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AA4ID;kDACkD;AAClD,eAAO,MAAM,4BAA4B,QAGkC,CAAA;AAE3E;;;;GAIG;AACH;;;;;;;;;;;;+DAY+D;AAC/D,eAAO,MAAM,8BAA8B,QAAS,CAAA;AACpD,eAAO,MAAM,6BAA6B,OAAQ,CAAA;AAElD,eAAO,MAAM,gCAAgC,QAE5C,CAAA;AAiCD,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,OAAO,EACb,EAAE,EAAE,eAAe,EACnB,OAAO,GAAE,WAAqD,EAC9D,KAAK,GAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAyD,EAC5F,qBAAqB,CAAC,EAAE,sBAAsB,GAC7C,OAAO,CAAC,MAAM,CAAC,CAkPjB;AAED,kFAAkF;AAClF,MAAM,WAAW,iBAAiB;IAChC,cAAc,CAAC,EAAE,OAAO,oBAAoB,CAAA;IAC5C,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,eAAe,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;CAC9H;AAED;;;;;;;;GAQG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,MAAM,EAAE,EACd,EAAE,EAAE,eAAe,EACnB,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,MAAM,CAAC,CAkMjB"}
|
|
@@ -428,6 +428,7 @@ export async function startHostedSession(opts) {
|
|
|
428
428
|
});
|
|
429
429
|
const session = sessionResp.session;
|
|
430
430
|
const sessionId = requireString(session?.id, 'session id');
|
|
431
|
+
const sessionProjectId = typeof session?.projectId === 'string' && session.projectId ? session.projectId : undefined;
|
|
431
432
|
const sessionBranch = requireString(session?.repoBranch, 'session repoBranch');
|
|
432
433
|
log(`session ${sessionId} on ${sessionBranch}`);
|
|
433
434
|
// (b) mint the session-scoped agent token (the sandbox's Orizu bearer).
|
|
@@ -558,6 +559,7 @@ export async function startHostedSession(opts) {
|
|
|
558
559
|
taskFile: `${paths.runDirAbs}/task.txt`,
|
|
559
560
|
workspaceDir: paths.repoDirRel,
|
|
560
561
|
sessionBranch,
|
|
562
|
+
projectId: sessionProjectId,
|
|
561
563
|
repositoryRemote: repo.cloneUrl,
|
|
562
564
|
repositoryCredentialHelper: bootstrap.credentialHelper,
|
|
563
565
|
model,
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAwLA,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAEhE,eAAO,MAAM,wBAAwB,GAAI,iBAAiB,MAAM;;;EACJ,CAAA;AAE5D,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAwLA,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAEhE,eAAO,MAAM,wBAAwB,GAAI,iBAAiB,MAAM;;;EACJ,CAAA;AAE5D,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAstCtD,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAAC,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,CA0B1G;AAED,eAAO,MAAM,iBAAiB,SAAU,CAAA;AACxC,eAAO,MAAM,uBAAuB,QAAkB,CAAA;AACtD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,UAAU,CAexH;AAmMD,wBAAsB,IAAI,CAAC,OAAO,WAAwB,iBAiiBzD;AA6DD,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAEhF,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -532,9 +532,13 @@ async function submitRunResults() {
|
|
|
532
532
|
const resultsJsonl = resultsPath.endsWith('.gz')
|
|
533
533
|
? gunzipSync(resultBytes).toString('utf8')
|
|
534
534
|
: resultBytes.toString('utf8');
|
|
535
|
-
const
|
|
536
|
-
|
|
537
|
-
|
|
535
|
+
const { sendScoreSave } = await import('./score-save-workflow.js');
|
|
536
|
+
const data = await sendScoreSave({
|
|
537
|
+
command: 'run',
|
|
538
|
+
path: `/api/cli/runs/submit?project=${encodeURIComponent(project)}`,
|
|
539
|
+
project,
|
|
540
|
+
promptVersionId,
|
|
541
|
+
saves: true,
|
|
538
542
|
body: JSON.stringify({
|
|
539
543
|
promptVersionId,
|
|
540
544
|
runnerVersionId,
|
|
@@ -546,11 +550,7 @@ async function submitRunResults() {
|
|
|
546
550
|
resultsJsonl,
|
|
547
551
|
...instructionSetProvenanceFields(project),
|
|
548
552
|
}),
|
|
549
|
-
});
|
|
550
|
-
if (!response.ok) {
|
|
551
|
-
throw new Error(`Failed to submit run: ${await response.text()}`);
|
|
552
|
-
}
|
|
553
|
-
const data = await parseJsonResponse(response, 'Run submit');
|
|
553
|
+
}, authedFetch);
|
|
554
554
|
if (hasJsonFlag()) {
|
|
555
555
|
printJson({ run: data.run });
|
|
556
556
|
return;
|
|
@@ -1,26 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
readonly submit: {
|
|
3
|
-
readonly label: "Score submit";
|
|
4
|
-
readonly failed: "Failed to submit score";
|
|
5
|
-
};
|
|
6
|
-
readonly exec: {
|
|
7
|
-
readonly label: "Scorer exec";
|
|
8
|
-
readonly failed: "Failed to execute scorer";
|
|
9
|
-
};
|
|
10
|
-
};
|
|
11
|
-
export interface ScoreSave {
|
|
12
|
-
command: keyof typeof COMMANDS;
|
|
1
|
+
interface SaveRequest {
|
|
13
2
|
/** The route path with its query, as sent. */
|
|
14
3
|
path: string;
|
|
15
4
|
body: string;
|
|
16
5
|
project: string;
|
|
17
|
-
scorerVersionId: string;
|
|
18
6
|
/** False for `scorers exec --no-submit`, which saves nothing. */
|
|
19
7
|
saves: boolean;
|
|
20
8
|
}
|
|
9
|
+
/** `scores submit` and `scorers exec`, or `runs submit` (ORI-1097 S3b). */
|
|
10
|
+
export type ScoreSave = SaveRequest & {
|
|
11
|
+
command: 'submit' | 'exec';
|
|
12
|
+
scorerVersionId: string;
|
|
13
|
+
} | SaveRequest & {
|
|
14
|
+
command: 'run';
|
|
15
|
+
promptVersionId: string;
|
|
16
|
+
};
|
|
21
17
|
/** Sends one request; calls `onRequestStart` just before anything goes out. */
|
|
22
18
|
export type ScoreSaveRequest = (path: string, init: RequestInit, onRequestStart?: () => void) => Promise<Response>;
|
|
23
|
-
/** `orizu scores submit` and `orizu
|
|
19
|
+
/** `orizu scores submit`, `orizu scorers exec` and `orizu runs submit`: the reply, or an error saying whether the save may have happened. */
|
|
24
20
|
export declare function sendScoreSave(save: ScoreSave, request: ScoreSaveRequest): Promise<Record<string, unknown>>;
|
|
25
21
|
export {};
|
|
26
22
|
//# sourceMappingURL=score-save-workflow.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"score-save-workflow.d.ts","sourceRoot":"","sources":["../src/score-save-workflow.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"score-save-workflow.d.ts","sourceRoot":"","sources":["../src/score-save-workflow.ts"],"names":[],"mappings":"AAuBA,UAAU,WAAW;IACnB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,iEAAiE;IACjE,KAAK,EAAE,OAAO,CAAA;CACf;AAED,2EAA2E;AAC3E,MAAM,MAAM,SAAS,GACjB,WAAW,GAAG;IAAE,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,GACrE,WAAW,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,CAAA;AAE7D,+EAA+E;AAC/E,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,cAAc,CAAC,EAAE,MAAM,IAAI,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AA2FlH,6IAA6I;AAC7I,wBAAsB,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAMhH"}
|
|
@@ -4,16 +4,19 @@ import { datasetTransferTimeoutMs } from './dataset-transfer-policy.js';
|
|
|
4
4
|
import { extractErrorMessage } from './error-response.js';
|
|
5
5
|
import { appErrorOf, unreachedCode } from './request-outcome.js';
|
|
6
6
|
// Loaded only through `await import(...)`, like the dataset workflows.
|
|
7
|
+
const SavedScore = Schema.Struct({ scoreRun: Schema.Struct({ id: Schema.NonEmptyString }) });
|
|
8
|
+
const SavedRun = Schema.Struct({ run: Schema.Struct({ id: Schema.NonEmptyString }) });
|
|
9
|
+
// `serverMayBeSaved` is what the route says when it cannot tell whether the run was saved.
|
|
7
10
|
const COMMANDS = {
|
|
8
|
-
submit: { label: 'Score submit', failed: 'Failed to submit score' },
|
|
9
|
-
exec: { label: 'Scorer exec', failed: 'Failed to execute scorer' },
|
|
11
|
+
submit: { label: 'Score submit', failed: 'Failed to submit score', serverMayBeSaved: 'Score run may already be saved', saved: SavedScore },
|
|
12
|
+
exec: { label: 'Scorer exec', failed: 'Failed to execute scorer', serverMayBeSaved: 'Score run may already be saved', saved: SavedScore },
|
|
13
|
+
run: { label: 'Run submit', failed: 'Failed to submit run', serverMayBeSaved: 'Run may already be saved', saved: SavedRun },
|
|
10
14
|
};
|
|
11
|
-
// What the server says when it cannot tell whether the run was saved.
|
|
12
|
-
const SERVER_MAY_BE_SAVED = 'Score run may already be saved';
|
|
13
15
|
// Node's fetch publishes this once a request's whole body has been written.
|
|
14
16
|
const BODY_SENT = 'undici:request:bodySent';
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
+
const mayBeSaved = (save) => save.command === 'run'
|
|
18
|
+
? `The run may already be saved: run \`orizu runs list --project ${save.project} --prompt-version ${save.promptVersionId}\` and check its newest runs before running this again.`
|
|
19
|
+
: `The score may already be saved: run \`orizu scorers detail ${save.scorerVersionId} --project ${save.project}\` and check its newest score runs before running this again.`;
|
|
17
20
|
// The run may be saved when the server says so, when the reply was lost, late
|
|
18
21
|
// or unreadable after the request was sent, when a 5xx did not come from the
|
|
19
22
|
// app (a gateway giving up while the app kept working), or when the reply has
|
|
@@ -30,7 +33,7 @@ class ScoreSaveFailure extends Error {
|
|
|
30
33
|
// second run. The deadline starts once the whole body has been sent, so a
|
|
31
34
|
// large upload on a slow link takes as long as it did before.
|
|
32
35
|
function scoreSave(save, request, timeoutMs) {
|
|
33
|
-
const { label, failed } = COMMANDS[save.command];
|
|
36
|
+
const { label, failed, serverMayBeSaved, saved } = COMMANDS[save.command];
|
|
34
37
|
return Effect.suspend(() => {
|
|
35
38
|
let sent = false;
|
|
36
39
|
let timedOut = false;
|
|
@@ -62,7 +65,7 @@ function scoreSave(save, request, timeoutMs) {
|
|
|
62
65
|
if (!response.ok) {
|
|
63
66
|
const appError = await appErrorOf(response.clone());
|
|
64
67
|
const detail = await extractErrorMessage(response);
|
|
65
|
-
if (appError ===
|
|
68
|
+
if (appError === serverMayBeSaved)
|
|
66
69
|
throw new ScoreSaveFailure(appError, true);
|
|
67
70
|
if (response.status < 400 || (response.status >= 500 && appError === null)) {
|
|
68
71
|
throw new ScoreSaveFailure(`${label} got no clear answer (status ${response.status}).`, true);
|
|
@@ -79,7 +82,7 @@ function scoreSave(save, request, timeoutMs) {
|
|
|
79
82
|
data = undefined;
|
|
80
83
|
}
|
|
81
84
|
const usable = save.saves
|
|
82
|
-
? Result.isSuccess(Schema.decodeUnknownResult(
|
|
85
|
+
? Result.isSuccess(Schema.decodeUnknownResult(saved)(data))
|
|
83
86
|
: typeof data === 'object' && data !== null && !Array.isArray(data);
|
|
84
87
|
if (!usable) {
|
|
85
88
|
throw new ScoreSaveFailure(`${label} returned an unexpected response (status ${response.status}).`, true);
|
|
@@ -111,9 +114,9 @@ function scoreSave(save, request, timeoutMs) {
|
|
|
111
114
|
});
|
|
112
115
|
});
|
|
113
116
|
}
|
|
114
|
-
/** `orizu scores submit` and `orizu
|
|
117
|
+
/** `orizu scores submit`, `orizu scorers exec` and `orizu runs submit`: the reply, or an error saying whether the save may have happened. */
|
|
115
118
|
export async function sendScoreSave(save, request) {
|
|
116
|
-
const exit = await Effect.runPromiseExit(scoreSave(save, request, datasetTransferTimeoutMs()).pipe(Effect.mapError(failure => new Error(failure.mayBeSaved && save.saves ? `${failure.message}\n${
|
|
119
|
+
const exit = await Effect.runPromiseExit(scoreSave(save, request, datasetTransferTimeoutMs()).pipe(Effect.mapError(failure => new Error(failure.mayBeSaved && save.saves ? `${failure.message}\n${mayBeSaved(save)}` : failure.message))));
|
|
117
120
|
if (Exit.isSuccess(exit))
|
|
118
121
|
return exit.value;
|
|
119
122
|
throw Cause.squash(exit.cause);
|
package/package.json
CHANGED
|
@@ -19,3 +19,14 @@ export const HOSTED_AGENT_PROMPT = `You are the Orizu agent. You work in the per
|
|
|
19
19
|
- Keep answers short and plain. Say what you did and what the person needs to know next.
|
|
20
20
|
- Follow the repository's own conventions and any instructions in its AGENTS.md.
|
|
21
21
|
- An Orizu app's page link is <Orizu server>${appPagePath('<app id>')}, where <Orizu server> is the server the orizu CLI talks to (https://app.orizu.ai by default). To give someone an app's link, run \`orizu projects list\` to get the \`<team>/<project>\` slug, then \`orizu apps list --project <team>/<project>\`: it prints each app's full link. The --project flag is required here: prompts cannot run in this environment. Never guess a link.`
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* The prompt for one session. Every project of an approved team shares the
|
|
25
|
+
* team's repository (ORI-2601; ADR-041, added in PR #2292), which starts with one project's folder, so the
|
|
26
|
+
* agent is told which project this session is for (ORI-2601).
|
|
27
|
+
*/
|
|
28
|
+
export function hostedAgentPrompt(projectId?: string | null): string {
|
|
29
|
+
if (!projectId) return HOSTED_AGENT_PROMPT
|
|
30
|
+
return `${HOSTED_AGENT_PROMPT}
|
|
31
|
+
- This session is for the Orizu project whose id is ${projectId}. Run \`orizu projects list --json\` to find its \`<team>/<project>\` slug, and pass that whole slug as \`--project <team>/<project>\` to orizu commands. In this repository the project's files live in the folder \`projects/<project>/\`, named by the part after the slash only (for \`acme/support-bot\`, the folder is \`projects/support-bot/\`). If that folder is missing, do not create it by hand: Orizu writes a project folder with its own files (\`orizu.project.json\`, \`README.md\`, \`memory.md\`). Tell the person this project's folder is not in the workspace yet, and keep working on what they asked. Do not change another project's folder unless the person asks.`
|
|
32
|
+
}
|
|
@@ -82,6 +82,7 @@ export function brokerEnv(config: BrokerConfig): Record<string, string> {
|
|
|
82
82
|
if (config.tokensFile) env.HB_TOKENS_FILE = config.tokensFile
|
|
83
83
|
if (config.sessionId) env.HB_SESSION_ID = config.sessionId
|
|
84
84
|
if (config.sessionBranch) env.HB_SESSION_BRANCH = config.sessionBranch
|
|
85
|
+
if (config.projectId) env.HB_PROJECT_ID = config.projectId
|
|
85
86
|
if (config.repoTokenStatus) env.HB_REPO_TOKEN_STATUS = String(config.repoTokenStatus)
|
|
86
87
|
if (config.eventsStatus) env.HB_EVENTS_STATUS = String(config.eventsStatus)
|
|
87
88
|
if (config.denyWrite) env.HB_DENY_WRITE = '1'
|
|
@@ -178,6 +179,8 @@ export interface HostedBootstrapRehearsal {
|
|
|
178
179
|
sessionId: string
|
|
179
180
|
runId: string
|
|
180
181
|
sessionBranch: string
|
|
182
|
+
/** The project the fake /sessions endpoint reports for the session. */
|
|
183
|
+
projectId: string
|
|
181
184
|
repoFullName: string
|
|
182
185
|
provider: SandboxProvider
|
|
183
186
|
resolveCloneUrl: (repo: string) => string
|
|
@@ -242,6 +245,7 @@ export async function createHostedBootstrapRehearsal(
|
|
|
242
245
|
|
|
243
246
|
const workspaceId = 'ws-hosted-1'
|
|
244
247
|
const sessionId = 'sess-hosted-1'
|
|
248
|
+
const projectId = '6f1c2d3e-4b5a-4c6d-8e7f-901a2b3c4d5e'
|
|
245
249
|
const runId = 'run-hosted-1'
|
|
246
250
|
const sessionBranch = `orizu/session-${sessionId}`
|
|
247
251
|
|
|
@@ -280,6 +284,7 @@ export async function createHostedBootstrapRehearsal(
|
|
|
280
284
|
fullRunApi: options.fullRunApi,
|
|
281
285
|
sessionId,
|
|
282
286
|
sessionBranch,
|
|
287
|
+
projectId,
|
|
283
288
|
})
|
|
284
289
|
|
|
285
290
|
// Real authenticated smart-HTTP git server on loopback: this is what makes the
|
|
@@ -301,6 +306,7 @@ export async function createHostedBootstrapRehearsal(
|
|
|
301
306
|
sessionId,
|
|
302
307
|
runId,
|
|
303
308
|
sessionBranch,
|
|
309
|
+
projectId,
|
|
304
310
|
repoFullName: repo.repoFullName,
|
|
305
311
|
provider,
|
|
306
312
|
resolveCloneUrl: () => cloneUrl,
|
|
@@ -70,6 +70,8 @@ export interface BrokerConfig {
|
|
|
70
70
|
* a pre-seeded session branch on the local bare repo). */
|
|
71
71
|
sessionId?: string
|
|
72
72
|
sessionBranch?: string
|
|
73
|
+
/** E2E: the project the /sessions endpoint reports, as the real route does. */
|
|
74
|
+
projectId?: string
|
|
73
75
|
}
|
|
74
76
|
|
|
75
77
|
export function readBrokerConfigFromEnv(env: NodeJS.ProcessEnv): BrokerConfig {
|
|
@@ -87,6 +89,7 @@ export function readBrokerConfigFromEnv(env: NodeJS.ProcessEnv): BrokerConfig {
|
|
|
87
89
|
fullRunApi: env.HB_FULL_RUN_API === '1',
|
|
88
90
|
sessionId: env.HB_SESSION_ID,
|
|
89
91
|
sessionBranch: env.HB_SESSION_BRANCH,
|
|
92
|
+
projectId: env.HB_PROJECT_ID,
|
|
90
93
|
}
|
|
91
94
|
}
|
|
92
95
|
|
|
@@ -151,7 +154,8 @@ export function startBrokerServer(config: BrokerConfig): { port: number; stop: (
|
|
|
151
154
|
const id = config.sessionId ?? `sess-e2e-${sessions}`
|
|
152
155
|
const repoBranch = config.sessionBranch ?? `orizu/session-${id}`
|
|
153
156
|
return json(
|
|
154
|
-
|
|
157
|
+
// Like the real route, a session has a project only when the request names one.
|
|
158
|
+
{ session: { id, workspaceId: sessionsMatch[1], projectId: typeof body.projectSlug === 'string' ? config.projectId ?? null : null, repoBranch, status: 'active' } },
|
|
155
159
|
201
|
|
156
160
|
)
|
|
157
161
|
}
|
|
@@ -53,7 +53,7 @@ import { readFileSync } from 'fs'
|
|
|
53
53
|
|
|
54
54
|
import { refreshHostedModels } from '../src/hosted-model-cache.mjs'
|
|
55
55
|
|
|
56
|
-
import { HOSTED_AGENT_NAME,
|
|
56
|
+
import { HOSTED_AGENT_NAME, hostedAgentPrompt } from './hosted-agent-prompt.js'
|
|
57
57
|
import { parseModelIdentity } from './provider-registry.js'
|
|
58
58
|
|
|
59
59
|
import { HARNESS_NAMES } from './hosted-harness.js'
|
|
@@ -1098,6 +1098,8 @@ export interface OpenCodeConfigOptions {
|
|
|
1098
1098
|
/** OpenCode permission map; defaults to allow-all EXCEPT the headless-denied
|
|
1099
1099
|
* tools below (sandbox is the boundary for everything else). */
|
|
1100
1100
|
permission?: Record<string, unknown>
|
|
1101
|
+
/** The session's Orizu project, named in the agent's prompt (ORI-2601). */
|
|
1102
|
+
projectId?: string | null
|
|
1101
1103
|
}
|
|
1102
1104
|
|
|
1103
1105
|
/**
|
|
@@ -1134,7 +1136,7 @@ export function buildOpenCodeConfigContent(opts: OpenCodeConfigOptions): string
|
|
|
1134
1136
|
model: opts.model,
|
|
1135
1137
|
permission: opts.permission ?? defaultHeadlessPermission(),
|
|
1136
1138
|
// Replaces OpenCode's built-in "You are opencode…" prompt (ORI-2207).
|
|
1137
|
-
agent: { [HOSTED_AGENT_NAME]: { mode: 'primary', prompt:
|
|
1139
|
+
agent: { [HOSTED_AGENT_NAME]: { mode: 'primary', prompt: hostedAgentPrompt(opts.projectId) } },
|
|
1138
1140
|
})
|
|
1139
1141
|
}
|
|
1140
1142
|
|
|
@@ -55,6 +55,8 @@ export interface HostedLoopContext {
|
|
|
55
55
|
taskFile: string
|
|
56
56
|
/** Directory the agent operates in (the cloned session-branch workspace). */
|
|
57
57
|
workspaceDir: string
|
|
58
|
+
/** The session's Orizu project, named in the agent's prompt (ORI-2601). */
|
|
59
|
+
projectId?: string | null
|
|
58
60
|
/** Validated destination branch for the CLI-owned checkpoint push. */
|
|
59
61
|
sessionBranch: string
|
|
60
62
|
/** Credential-free repository locator established by bootstrap. */
|
package/src/hosted-loop.ts
CHANGED
|
@@ -674,6 +674,7 @@ export async function runHostedLoop(opts: RunHostedLoopOptions): Promise<HostedL
|
|
|
674
674
|
spawned = await spawnImpl({
|
|
675
675
|
model: context.model,
|
|
676
676
|
permission: permissionForOrigin(context.sessionOrigin),
|
|
677
|
+
projectId: context.projectId,
|
|
677
678
|
cwd: context.workspaceDir,
|
|
678
679
|
port: context.opencodePort,
|
|
679
680
|
env: buildOpenCodeSpawnEnv(context),
|
|
@@ -1063,6 +1064,7 @@ function validateHostedLoopContext(value: unknown): { context: HostedLoopContext
|
|
|
1063
1064
|
if (record.sandboxBudgetMs !== undefined && (typeof record.sandboxBudgetMs !== 'number' || !Number.isFinite(record.sandboxBudgetMs) || record.sandboxBudgetMs <= 0)) fields.push('sandboxBudgetMs')
|
|
1064
1065
|
if (record.opencodePort !== undefined && (typeof record.opencodePort !== 'number' || !Number.isInteger(record.opencodePort) || record.opencodePort <= 0 || record.opencodePort > 65_535)) fields.push('opencodePort')
|
|
1065
1066
|
for (const name of OPTIONAL_CONTEXT_STRINGS) if (record[name] !== undefined && typeof record[name] !== 'string') fields.push(name)
|
|
1067
|
+
if (record.projectId !== undefined && record.projectId !== null && !isNonemptyString(record.projectId)) fields.push('projectId')
|
|
1066
1068
|
for (const name of ['prebaked', 'runSetupHook'] as const) if (record[name] !== undefined && typeof record[name] !== 'boolean') fields.push(name)
|
|
1067
1069
|
return { context: fields.length === 0 ? value as HostedLoopContext : null, fields: [...new Set(fields)] }
|
|
1068
1070
|
}
|
|
@@ -678,8 +678,9 @@ export async function startHostedSession(
|
|
|
678
678
|
}),
|
|
679
679
|
}
|
|
680
680
|
)
|
|
681
|
-
const session = sessionResp.session as { id?: unknown; repoBranch?: unknown } | undefined
|
|
681
|
+
const session = sessionResp.session as { id?: unknown; repoBranch?: unknown; projectId?: unknown } | undefined
|
|
682
682
|
const sessionId = requireString(session?.id, 'session id')
|
|
683
|
+
const sessionProjectId = typeof session?.projectId === 'string' && session.projectId ? session.projectId : undefined
|
|
683
684
|
const sessionBranch = requireString(session?.repoBranch, 'session repoBranch')
|
|
684
685
|
log(`session ${sessionId} on ${sessionBranch}`)
|
|
685
686
|
|
|
@@ -821,6 +822,7 @@ export async function startHostedSession(
|
|
|
821
822
|
taskFile: `${paths.runDirAbs}/task.txt`,
|
|
822
823
|
workspaceDir: paths.repoDirRel,
|
|
823
824
|
sessionBranch,
|
|
825
|
+
projectId: sessionProjectId,
|
|
824
826
|
repositoryRemote: repo.cloneUrl,
|
|
825
827
|
repositoryCredentialHelper: bootstrap.credentialHelper,
|
|
826
828
|
model,
|
package/src/index.ts
CHANGED
|
@@ -796,9 +796,13 @@ async function submitRunResults() {
|
|
|
796
796
|
const resultsJsonl = resultsPath.endsWith('.gz')
|
|
797
797
|
? gunzipSync(resultBytes).toString('utf8')
|
|
798
798
|
: resultBytes.toString('utf8')
|
|
799
|
-
const
|
|
800
|
-
|
|
801
|
-
|
|
799
|
+
const { sendScoreSave } = await import('./score-save-workflow.js')
|
|
800
|
+
const data = await sendScoreSave({
|
|
801
|
+
command: 'run',
|
|
802
|
+
path: `/api/cli/runs/submit?project=${encodeURIComponent(project)}`,
|
|
803
|
+
project,
|
|
804
|
+
promptVersionId,
|
|
805
|
+
saves: true,
|
|
802
806
|
body: JSON.stringify({
|
|
803
807
|
promptVersionId,
|
|
804
808
|
runnerVersionId,
|
|
@@ -810,19 +814,13 @@ async function submitRunResults() {
|
|
|
810
814
|
resultsJsonl,
|
|
811
815
|
...instructionSetProvenanceFields(project),
|
|
812
816
|
}),
|
|
813
|
-
})
|
|
814
|
-
|
|
815
|
-
if (!response.ok) {
|
|
816
|
-
throw new Error(`Failed to submit run: ${await response.text()}`)
|
|
817
|
-
}
|
|
818
|
-
|
|
819
|
-
const data = await parseJsonResponse<{
|
|
817
|
+
}, authedFetch) as {
|
|
820
818
|
run: {
|
|
821
819
|
id: string
|
|
822
820
|
aggregateScore: number | null
|
|
823
821
|
perRowResultsStoragePath: string
|
|
824
822
|
}
|
|
825
|
-
}
|
|
823
|
+
}
|
|
826
824
|
if (hasJsonFlag()) {
|
|
827
825
|
printJson({ run: data.run })
|
|
828
826
|
return
|
|
@@ -8,34 +8,39 @@ import { appErrorOf, unreachedCode } from './request-outcome.js'
|
|
|
8
8
|
|
|
9
9
|
// Loaded only through `await import(...)`, like the dataset workflows.
|
|
10
10
|
|
|
11
|
+
const SavedScore = Schema.Struct({ scoreRun: Schema.Struct({ id: Schema.NonEmptyString }) })
|
|
12
|
+
const SavedRun = Schema.Struct({ run: Schema.Struct({ id: Schema.NonEmptyString }) })
|
|
13
|
+
|
|
14
|
+
// `serverMayBeSaved` is what the route says when it cannot tell whether the run was saved.
|
|
11
15
|
const COMMANDS = {
|
|
12
|
-
submit: { label: 'Score submit', failed: 'Failed to submit score' },
|
|
13
|
-
exec: { label: 'Scorer exec', failed: 'Failed to execute scorer' },
|
|
16
|
+
submit: { label: 'Score submit', failed: 'Failed to submit score', serverMayBeSaved: 'Score run may already be saved', saved: SavedScore },
|
|
17
|
+
exec: { label: 'Scorer exec', failed: 'Failed to execute scorer', serverMayBeSaved: 'Score run may already be saved', saved: SavedScore },
|
|
18
|
+
run: { label: 'Run submit', failed: 'Failed to submit run', serverMayBeSaved: 'Run may already be saved', saved: SavedRun },
|
|
14
19
|
} as const
|
|
15
20
|
|
|
16
|
-
// What the server says when it cannot tell whether the run was saved.
|
|
17
|
-
const SERVER_MAY_BE_SAVED = 'Score run may already be saved'
|
|
18
21
|
// Node's fetch publishes this once a request's whole body has been written.
|
|
19
22
|
const BODY_SENT = 'undici:request:bodySent'
|
|
20
23
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
export interface ScoreSave {
|
|
24
|
-
command: keyof typeof COMMANDS
|
|
24
|
+
interface SaveRequest {
|
|
25
25
|
/** The route path with its query, as sent. */
|
|
26
26
|
path: string
|
|
27
27
|
body: string
|
|
28
28
|
project: string
|
|
29
|
-
scorerVersionId: string
|
|
30
29
|
/** False for `scorers exec --no-submit`, which saves nothing. */
|
|
31
30
|
saves: boolean
|
|
32
31
|
}
|
|
33
32
|
|
|
33
|
+
/** `scores submit` and `scorers exec`, or `runs submit` (ORI-1097 S3b). */
|
|
34
|
+
export type ScoreSave =
|
|
35
|
+
| SaveRequest & { command: 'submit' | 'exec'; scorerVersionId: string }
|
|
36
|
+
| SaveRequest & { command: 'run'; promptVersionId: string }
|
|
37
|
+
|
|
34
38
|
/** Sends one request; calls `onRequestStart` just before anything goes out. */
|
|
35
39
|
export type ScoreSaveRequest = (path: string, init: RequestInit, onRequestStart?: () => void) => Promise<Response>
|
|
36
40
|
|
|
37
|
-
const
|
|
38
|
-
`The
|
|
41
|
+
const mayBeSaved = (save: ScoreSave) => save.command === 'run'
|
|
42
|
+
? `The run may already be saved: run \`orizu runs list --project ${save.project} --prompt-version ${save.promptVersionId}\` and check its newest runs before running this again.`
|
|
43
|
+
: `The score may already be saved: run \`orizu scorers detail ${save.scorerVersionId} --project ${save.project}\` and check its newest score runs before running this again.`
|
|
39
44
|
|
|
40
45
|
// The run may be saved when the server says so, when the reply was lost, late
|
|
41
46
|
// or unreadable after the request was sent, when a 5xx did not come from the
|
|
@@ -50,7 +55,7 @@ class ScoreSaveFailure extends Error {
|
|
|
50
55
|
// second run. The deadline starts once the whole body has been sent, so a
|
|
51
56
|
// large upload on a slow link takes as long as it did before.
|
|
52
57
|
function scoreSave(save: ScoreSave, request: ScoreSaveRequest, timeoutMs: number): Effect.Effect<Record<string, unknown>, ScoreSaveFailure> {
|
|
53
|
-
const { label, failed } = COMMANDS[save.command]
|
|
58
|
+
const { label, failed, serverMayBeSaved, saved } = COMMANDS[save.command]
|
|
54
59
|
return Effect.suspend(() => {
|
|
55
60
|
let sent = false
|
|
56
61
|
let timedOut = false
|
|
@@ -79,7 +84,7 @@ function scoreSave(save: ScoreSave, request: ScoreSaveRequest, timeoutMs: number
|
|
|
79
84
|
if (!response.ok) {
|
|
80
85
|
const appError = await appErrorOf(response.clone())
|
|
81
86
|
const detail = await extractErrorMessage(response)
|
|
82
|
-
if (appError ===
|
|
87
|
+
if (appError === serverMayBeSaved) throw new ScoreSaveFailure(appError, true)
|
|
83
88
|
if (response.status < 400 || (response.status >= 500 && appError === null)) {
|
|
84
89
|
throw new ScoreSaveFailure(`${label} got no clear answer (status ${response.status}).`, true)
|
|
85
90
|
}
|
|
@@ -94,7 +99,7 @@ function scoreSave(save: ScoreSave, request: ScoreSaveRequest, timeoutMs: number
|
|
|
94
99
|
data = undefined
|
|
95
100
|
}
|
|
96
101
|
const usable = save.saves
|
|
97
|
-
? Result.isSuccess(Schema.decodeUnknownResult(
|
|
102
|
+
? Result.isSuccess(Schema.decodeUnknownResult(saved)(data))
|
|
98
103
|
: typeof data === 'object' && data !== null && !Array.isArray(data)
|
|
99
104
|
if (!usable) {
|
|
100
105
|
throw new ScoreSaveFailure(`${label} returned an unexpected response (status ${response.status}).`, true)
|
|
@@ -122,10 +127,10 @@ function scoreSave(save: ScoreSave, request: ScoreSaveRequest, timeoutMs: number
|
|
|
122
127
|
})
|
|
123
128
|
}
|
|
124
129
|
|
|
125
|
-
/** `orizu scores submit` and `orizu
|
|
130
|
+
/** `orizu scores submit`, `orizu scorers exec` and `orizu runs submit`: the reply, or an error saying whether the save may have happened. */
|
|
126
131
|
export async function sendScoreSave(save: ScoreSave, request: ScoreSaveRequest): Promise<Record<string, unknown>> {
|
|
127
132
|
const exit = await Effect.runPromiseExit(scoreSave(save, request, datasetTransferTimeoutMs()).pipe(
|
|
128
|
-
Effect.mapError(failure => new Error(failure.mayBeSaved && save.saves ? `${failure.message}\n${
|
|
133
|
+
Effect.mapError(failure => new Error(failure.mayBeSaved && save.saves ? `${failure.message}\n${mayBeSaved(save)}` : failure.message)),
|
|
129
134
|
))
|
|
130
135
|
if (Exit.isSuccess(exit)) return exit.value
|
|
131
136
|
throw Cause.squash(exit.cause)
|