orizu 0.5.26 → 0.5.28
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/README.md +19 -0
- package/dist/artifacts-git-runtime.d.ts +34 -0
- package/dist/artifacts-git-runtime.d.ts.map +1 -0
- package/dist/artifacts-git-runtime.js +312 -0
- package/dist/cloudflare-artifacts-git-remote.d.ts +5 -0
- package/dist/cloudflare-artifacts-git-remote.d.ts.map +1 -0
- package/dist/cloudflare-artifacts-git-remote.js +21 -0
- package/dist/dataset-transfer-download.d.ts +2 -0
- package/dist/dataset-transfer-download.d.ts.map +1 -0
- package/dist/dataset-transfer-download.js +66 -0
- package/dist/dataset-transfer-policy.d.ts +2 -0
- package/dist/dataset-transfer-policy.d.ts.map +1 -0
- package/dist/dataset-transfer-policy.js +8 -0
- package/dist/dataset-transfer-upload.d.ts +42 -0
- package/dist/dataset-transfer-upload.d.ts.map +1 -0
- package/dist/dataset-transfer-upload.js +110 -0
- package/dist/git-credential.d.ts.map +1 -1
- package/dist/git-credential.js +1 -1
- package/dist/git-recovery-environment.d.ts +1 -0
- package/dist/git-recovery-environment.d.ts.map +1 -1
- package/dist/git-recovery-environment.js +1 -1
- package/dist/help.d.ts.map +1 -1
- package/dist/help.js +44 -11
- package/dist/hosted-boot.d.ts +75 -2
- package/dist/hosted-boot.d.ts.map +1 -1
- package/dist/hosted-boot.js +585 -102
- package/dist/hosted-bootstrap.d.ts +2 -0
- package/dist/hosted-bootstrap.d.ts.map +1 -1
- package/dist/hosted-bootstrap.js +12 -3
- package/dist/hosted-harness-opencode.d.ts +8 -9
- package/dist/hosted-harness-opencode.d.ts.map +1 -1
- package/dist/hosted-harness-opencode.js +126 -24
- package/dist/hosted-harness.d.ts +3 -0
- package/dist/hosted-harness.d.ts.map +1 -1
- package/dist/hosted-harness.js +4 -1
- package/dist/hosted-harvest.d.ts +30 -9
- package/dist/hosted-harvest.d.ts.map +1 -1
- package/dist/hosted-harvest.js +222 -28
- package/dist/hosted-loop-lifecycle.d.ts +15 -3
- package/dist/hosted-loop-lifecycle.d.ts.map +1 -1
- package/dist/hosted-loop-lifecycle.js +6 -4
- package/dist/hosted-loop.d.ts +47 -7
- package/dist/hosted-loop.d.ts.map +1 -1
- package/dist/hosted-loop.js +310 -64
- package/dist/hosted-question-limits.d.ts +7 -0
- package/dist/hosted-question-limits.d.ts.map +1 -0
- package/dist/hosted-question-limits.js +6 -0
- package/dist/hosted-question.d.ts +27 -0
- package/dist/hosted-question.d.ts.map +1 -0
- package/dist/hosted-question.js +118 -0
- package/dist/hosted-run-event-sink.d.ts +10 -5
- package/dist/hosted-run-event-sink.d.ts.map +1 -1
- package/dist/hosted-run-event-sink.js +12 -8
- package/dist/hosted-runtime-assets.d.ts +16 -7
- package/dist/hosted-runtime-assets.d.ts.map +1 -1
- package/dist/hosted-runtime-assets.js +40 -12
- package/dist/hosted-session-cli.d.ts.map +1 -1
- package/dist/hosted-session-cli.js +10 -19
- package/dist/http.d.ts +1 -1
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +10 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +113 -92
- package/dist/instruction-set-gepa-launch.d.ts +1 -1
- package/dist/instruction-set-gepa-launch.d.ts.map +1 -1
- package/dist/instruction-set-gepa-launch.js +5 -3
- package/dist/instruction-set-loader.d.ts.map +1 -1
- package/dist/instruction-set-loader.js +63 -2
- package/dist/instruction-set-lock/index.d.ts +51 -0
- package/dist/instruction-set-lock/index.d.ts.map +1 -0
- package/dist/instruction-set-lock/index.js +459 -0
- package/dist/instruction-set-lock/schema.v1.d.ts +136 -0
- package/dist/instruction-set-lock/schema.v1.d.ts.map +1 -0
- package/dist/instruction-set-lock/schema.v1.js +155 -0
- package/dist/instruction-set-provenance.d.ts +26 -0
- package/dist/instruction-set-provenance.d.ts.map +1 -0
- package/dist/instruction-set-provenance.js +68 -0
- package/dist/instruction-set-sync/helpers.d.ts +22 -0
- package/dist/instruction-set-sync/helpers.d.ts.map +1 -0
- package/dist/instruction-set-sync/helpers.js +677 -0
- package/dist/instruction-set-sync/index.d.ts +60 -0
- package/dist/instruction-set-sync/index.d.ts.map +1 -0
- package/dist/instruction-set-sync/index.js +689 -0
- package/dist/instruction-set-update/index.d.ts +42 -0
- package/dist/instruction-set-update/index.d.ts.map +1 -0
- package/dist/instruction-set-update/index.js +445 -0
- package/dist/instruction-set-verify/index.d.ts +27 -0
- package/dist/instruction-set-verify/index.d.ts.map +1 -0
- package/dist/instruction-set-verify/index.js +865 -0
- package/dist/instruction-sets-cli.d.ts +1 -4
- package/dist/instruction-sets-cli.d.ts.map +1 -1
- package/dist/instruction-sets-cli.js +220 -109
- package/dist/model-config-fields.d.ts +35 -0
- package/dist/model-config-fields.d.ts.map +1 -0
- package/dist/model-config-fields.js +28 -0
- package/dist/optimizations-list-cli.d.ts.map +1 -1
- package/dist/optimizations-list-cli.js +7 -4
- package/dist/score-format.d.ts +2 -0
- package/dist/score-format.d.ts.map +1 -0
- package/dist/score-format.js +18 -0
- package/dist/workbench-repo-contract.d.ts +65 -0
- package/dist/workbench-repo-contract.d.ts.map +1 -0
- package/dist/workbench-repo-contract.js +250 -0
- package/dist/workspace-bootstrap-job.d.ts +45 -0
- package/dist/workspace-bootstrap-job.d.ts.map +1 -0
- package/dist/workspace-bootstrap-job.js +431 -0
- package/dist/workspace-bootstrap-seed.d.ts +74 -0
- package/dist/workspace-bootstrap-seed.d.ts.map +1 -0
- package/dist/workspace-bootstrap-seed.js +209 -0
- package/package.json +4 -3
- package/src/artifacts-git-runtime.ts +360 -0
- package/src/cloudflare-artifacts-git-remote.ts +24 -0
- package/src/dataset-transfer-download.ts +61 -0
- package/src/dataset-transfer-policy.ts +8 -0
- package/src/dataset-transfer-upload.ts +145 -0
- package/src/git-credential.ts +1 -2
- package/src/git-recovery-environment.ts +1 -1
- package/src/help.ts +44 -11
- package/src/hosted-boot.ts +644 -109
- package/src/hosted-bootstrap.ts +14 -3
- package/src/hosted-harness-opencode.ts +130 -28
- package/src/hosted-harness.ts +4 -1
- package/src/hosted-harvest.ts +258 -33
- package/src/hosted-loop-lifecycle.ts +19 -5
- package/src/hosted-loop.ts +340 -68
- package/src/hosted-question-limits.ts +6 -0
- package/src/hosted-question.ts +145 -0
- package/src/hosted-run-event-sink.ts +24 -12
- package/src/hosted-runtime-assets.ts +51 -11
- package/src/hosted-session-cli.ts +10 -24
- package/src/http.ts +10 -4
- package/src/index.ts +108 -134
- package/src/instruction-set-gepa-launch.ts +4 -4
- package/src/instruction-set-loader.ts +53 -2
- package/src/instruction-set-lock/index.ts +561 -0
- package/src/instruction-set-lock/schema.v1.json +141 -0
- package/src/instruction-set-lock/schema.v1.ts +155 -0
- package/src/instruction-set-provenance.ts +89 -0
- package/src/instruction-set-sync/helpers.ts +707 -0
- package/src/instruction-set-sync/index.ts +791 -0
- package/src/instruction-set-update/index.ts +488 -0
- package/src/instruction-set-verify/index.ts +1067 -0
- package/src/instruction-sets-cli.ts +226 -114
- package/src/model-config-fields.ts +31 -0
- package/src/optimizations-list-cli.ts +7 -4
- package/src/score-format.ts +16 -0
- package/src/workbench-repo-contract.ts +314 -0
- package/src/workspace-bootstrap-job.ts +611 -0
- package/src/workspace-bootstrap-seed.ts +350 -0
- package/vendor/orizu-gepa/src/orizu_gepa_connector/instruction_set_loader.py +46 -2
- package/vendor/skills/orizu/SKILL.md +4 -2
- package/vendor/skills/orizu/flows/promote.md +4 -0
- package/vendor/skills/orizu/references/assess-and-plan.md +1 -1
- package/vendor/skills/orizu/references/authority-map.md +1 -1
- package/vendor/skills/orizu/references/cli-reference.md +151 -35
- package/vendor/skills/orizu/references/instructions-after-prompts.md +3 -3
- package/vendor/skills/orizu/references/migrate-existing-gepa-setup.md +5 -6
- package/vendor/skills/orizu/references/migrate-hand-rolled-instruction-layout.md +252 -0
- package/vendor/skills/orizu/references/optimization-reports.md +5 -4
- package/vendor/skills/orizu/references/optimization-with-gepa.md +1 -1
- package/vendor/skills/orizu/references/orizu-in-your-codebase.md +195 -0
- package/vendor/skills/orizu/references/primer.md +4 -2
- package/vendor/skills/orizu/references/prompt-control-plane.md +33 -29
- package/vendor/skills/orizu/references/vocabulary.md +1 -1
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { HOSTED_QUESTION_LIMITS } from './hosted-question-limits.js';
|
|
3
|
+
import { redactSecrets } from './secret-redaction.js';
|
|
4
|
+
export { HOSTED_QUESTION_LIMITS } from './hosted-question-limits.js';
|
|
5
|
+
const QUESTION_MAX = HOSTED_QUESTION_LIMITS.questionMax;
|
|
6
|
+
const OPTION_LABEL_MAX = HOSTED_QUESTION_LIMITS.optionLabelMax;
|
|
7
|
+
const OPTION_DESCRIPTION_MAX = HOSTED_QUESTION_LIMITS.optionDescriptionMax;
|
|
8
|
+
const OPTION_COUNT_MAX = HOSTED_QUESTION_LIMITS.optionCountMax;
|
|
9
|
+
const UUID_V4 = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
|
|
10
|
+
const ARTIFACTS_LOCATOR = /https:\/\/[0-9a-f]{32}\.artifacts\.cloudflare\.net\/git\/[A-Za-z0-9._-]+\/[A-Za-z0-9._-]+\.git/g;
|
|
11
|
+
export const INVALID_HOSTED_QUESTION_REASON = 'expected_exactly_one_bounded_question';
|
|
12
|
+
export class InvalidHostedQuestionError extends Error {
|
|
13
|
+
reason = INVALID_HOSTED_QUESTION_REASON;
|
|
14
|
+
constructor() {
|
|
15
|
+
super(`invalid_agent_question: ${INVALID_HOSTED_QUESTION_REASON}`);
|
|
16
|
+
this.name = 'InvalidHostedQuestionError';
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function bounded(value, max) {
|
|
20
|
+
if (typeof value !== 'string' || value.trim().length === 0)
|
|
21
|
+
return null;
|
|
22
|
+
return redactSecrets(value.replace(ARTIFACTS_LOCATOR, '[redacted locator]')).slice(0, max);
|
|
23
|
+
}
|
|
24
|
+
function parseOption(value) {
|
|
25
|
+
if (typeof value === 'string') {
|
|
26
|
+
const label = bounded(value, OPTION_LABEL_MAX);
|
|
27
|
+
return label ? { label, description: null } : null;
|
|
28
|
+
}
|
|
29
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
30
|
+
return null;
|
|
31
|
+
const option = value;
|
|
32
|
+
const label = bounded(option.label, OPTION_LABEL_MAX);
|
|
33
|
+
if (!label)
|
|
34
|
+
return null;
|
|
35
|
+
return {
|
|
36
|
+
label,
|
|
37
|
+
description: bounded(option.description, OPTION_DESCRIPTION_MAX),
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
export function parseHostedQuestion(args, createQuestionId = randomUUID) {
|
|
41
|
+
if (!args || typeof args !== 'object' || Array.isArray(args))
|
|
42
|
+
throw new InvalidHostedQuestionError();
|
|
43
|
+
const record = args;
|
|
44
|
+
const questions = Array.isArray(record.questions) ? record.questions : [];
|
|
45
|
+
if (questions.length !== 1 || !questions[0] || typeof questions[0] !== 'object' || Array.isArray(questions[0])) {
|
|
46
|
+
throw new InvalidHostedQuestionError();
|
|
47
|
+
}
|
|
48
|
+
const input = questions[0];
|
|
49
|
+
const question = bounded(input.question, QUESTION_MAX);
|
|
50
|
+
const questionId = createQuestionId();
|
|
51
|
+
if (!question || !UUID_V4.test(questionId))
|
|
52
|
+
throw new InvalidHostedQuestionError();
|
|
53
|
+
const rawOptions = Array.isArray(input.options) ? input.options : [];
|
|
54
|
+
if (rawOptions.length > OPTION_COUNT_MAX)
|
|
55
|
+
throw new InvalidHostedQuestionError();
|
|
56
|
+
const options = rawOptions.map(parseOption);
|
|
57
|
+
if (options.some(option => option === null))
|
|
58
|
+
throw new InvalidHostedQuestionError();
|
|
59
|
+
return { questionId, question, options: options };
|
|
60
|
+
}
|
|
61
|
+
export async function* interceptHostedQuestions(source, options) {
|
|
62
|
+
let hasQuestionOutcome = false;
|
|
63
|
+
for await (const event of source) {
|
|
64
|
+
if (hasQuestionOutcome) {
|
|
65
|
+
if (event.kind === 'execution_complete' || event.kind === 'error')
|
|
66
|
+
yield event;
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
yield event;
|
|
70
|
+
if (event.kind !== 'tool_call' && event.kind !== 'tool_result')
|
|
71
|
+
continue;
|
|
72
|
+
if (event.payload.tool !== 'question')
|
|
73
|
+
continue;
|
|
74
|
+
let pending;
|
|
75
|
+
try {
|
|
76
|
+
pending = parseHostedQuestion(event.payload.args, options.createQuestionId);
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
if (!(error instanceof InvalidHostedQuestionError))
|
|
80
|
+
throw error;
|
|
81
|
+
hasQuestionOutcome = true;
|
|
82
|
+
options.onInvalid?.(error.reason);
|
|
83
|
+
yield {
|
|
84
|
+
kind: 'question_invalid',
|
|
85
|
+
messageId: event.messageId,
|
|
86
|
+
critical: true,
|
|
87
|
+
payload: { reason: error.reason },
|
|
88
|
+
};
|
|
89
|
+
await options.onInvalidPersisted?.(error.reason);
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
hasQuestionOutcome = true;
|
|
93
|
+
options.onDetected(pending);
|
|
94
|
+
yield {
|
|
95
|
+
kind: 'question_pending',
|
|
96
|
+
messageId: event.messageId,
|
|
97
|
+
critical: true,
|
|
98
|
+
payload: {
|
|
99
|
+
questionId: pending.questionId,
|
|
100
|
+
question: pending.question,
|
|
101
|
+
options: pending.options,
|
|
102
|
+
},
|
|
103
|
+
};
|
|
104
|
+
await options.onPersisted(pending);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
export function composeHostedAnswerPrompt(question, answerText) {
|
|
108
|
+
return [
|
|
109
|
+
`Answer to your pending question (${question.questionId}):`,
|
|
110
|
+
question.question,
|
|
111
|
+
'',
|
|
112
|
+
'--- HUMAN ANSWER (VERBATIM) ---',
|
|
113
|
+
answerText,
|
|
114
|
+
'--- END HUMAN ANSWER ---',
|
|
115
|
+
'',
|
|
116
|
+
'Continue the same task and conversation using this answer.',
|
|
117
|
+
].join('\n');
|
|
118
|
+
}
|
|
@@ -196,6 +196,10 @@ export interface ResumeRunEventSinkOptions extends Omit<CreateRunEventSinkOption
|
|
|
196
196
|
* (G6 / ALI-1007); it is deliberately not implemented in the sandbox client.
|
|
197
197
|
*/
|
|
198
198
|
export declare function resumeRunEventSink(options: ResumeRunEventSinkOptions): Promise<RunEventSink>;
|
|
199
|
+
export interface BeforeFinishResult {
|
|
200
|
+
/** Safe metadata merged into the terminal PATCH after the hook runs. */
|
|
201
|
+
summary?: Record<string, unknown>;
|
|
202
|
+
}
|
|
199
203
|
export interface DrainOptions {
|
|
200
204
|
/** Transcript captured by the caller, stored on the terminal transition. */
|
|
201
205
|
transcript?: string;
|
|
@@ -204,12 +208,13 @@ export interface DrainOptions {
|
|
|
204
208
|
/**
|
|
205
209
|
* Hook invoked AFTER the stream yields its terminal event but BEFORE `finish()`
|
|
206
210
|
* seals the sink, on EVERY terminal path (success, failure, abnormal end). Used
|
|
207
|
-
* by the loop's end-of-run auto-harvest (ALI-1036) so
|
|
208
|
-
*
|
|
209
|
-
* writable.
|
|
210
|
-
* hook itself is responsible for
|
|
211
|
+
* by the loop's end-of-run auto-harvest (ALI-1036) so persisted / none /
|
|
212
|
+
* not-inspected / failed outcomes can still be appended while the sink is
|
|
213
|
+
* writable. It may return safe terminal-summary metadata. Its own failure must
|
|
214
|
+
* never change the run's terminal status — the hook itself is responsible for
|
|
215
|
+
* swallowing errors.
|
|
211
216
|
*/
|
|
212
|
-
beforeFinish?: () => Promise<void>;
|
|
217
|
+
beforeFinish?: () => Promise<BeforeFinishResult | void>;
|
|
213
218
|
}
|
|
214
219
|
/**
|
|
215
220
|
* Consume a harness `runPrompt` stream into a sink: structural events are
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hosted-run-event-sink.d.ts","sourceRoot":"","sources":["../src/hosted-run-event-sink.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAIzE,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAUhF,eAAO,MAAM,yBAAyB,mBAAmB,CAAA;AACzD,eAAO,MAAM,yBAAyB,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"hosted-run-event-sink.d.ts","sourceRoot":"","sources":["../src/hosted-run-event-sink.ts"],"names":[],"mappings":"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"}
|
|
@@ -76,8 +76,11 @@ const EVENT_TYPE_BY_KIND = {
|
|
|
76
76
|
// question auto-handling record.
|
|
77
77
|
work_persisted: 'work_persisted',
|
|
78
78
|
work_none: 'work_none',
|
|
79
|
+
work_not_inspected: 'work_not_inspected',
|
|
79
80
|
work_persist_failed: 'work_persist_failed',
|
|
80
81
|
question_auto_answered: 'agent_question_auto_answered',
|
|
82
|
+
question_pending: 'agent_question_pending',
|
|
83
|
+
question_invalid: 'agent_question_invalid',
|
|
81
84
|
};
|
|
82
85
|
/** The RunAPI event type a harness kind maps to, or null if it is not appendable
|
|
83
86
|
* (terminal kinds route through the PATCH; deferred kinds have no mapping yet). */
|
|
@@ -541,12 +544,13 @@ export async function drainHarnessToSink(events, sink, opts = {}) {
|
|
|
541
544
|
// Run the pre-terminal hook (auto-harvest) at most once, right before the first
|
|
542
545
|
// finish() on any terminal path — while the sink is still writable.
|
|
543
546
|
let beforeFinishRan = false;
|
|
547
|
+
let beforeFinishResult;
|
|
544
548
|
const runBeforeFinish = async () => {
|
|
545
549
|
if (beforeFinishRan)
|
|
546
|
-
return;
|
|
550
|
+
return beforeFinishResult;
|
|
547
551
|
beforeFinishRan = true;
|
|
548
|
-
|
|
549
|
-
|
|
552
|
+
beforeFinishResult = await opts.beforeFinish?.();
|
|
553
|
+
return beforeFinishResult;
|
|
550
554
|
};
|
|
551
555
|
// ALI-1065 finding 3: the server now rejects appends to a terminal run with
|
|
552
556
|
// 410 (the run was cancelled/finished out from under this writer). The sink
|
|
@@ -571,11 +575,14 @@ export async function drainHarnessToSink(events, sink, opts = {}) {
|
|
|
571
575
|
// so without this check the drain would report the intended status as
|
|
572
576
|
// delivered when in fact the server terminated the run out from under us.
|
|
573
577
|
const finishAccepting = async (status, finishOpts) => {
|
|
574
|
-
await runBeforeFinish();
|
|
578
|
+
const hookResult = await runBeforeFinish();
|
|
575
579
|
if (sink.sealed)
|
|
576
580
|
return 'cancelled';
|
|
581
|
+
const mergedFinishOpts = hookResult?.summary
|
|
582
|
+
? { ...finishOpts, summary: { ...(finishOpts.summary ?? {}), ...hookResult.summary } }
|
|
583
|
+
: finishOpts;
|
|
577
584
|
try {
|
|
578
|
-
await sink.finish(status,
|
|
585
|
+
await sink.finish(status, mergedFinishOpts);
|
|
579
586
|
return status;
|
|
580
587
|
}
|
|
581
588
|
catch (error) {
|
|
@@ -622,9 +629,6 @@ export async function drainHarnessToSink(events, sink, opts = {}) {
|
|
|
622
629
|
}
|
|
623
630
|
// The harness contract guarantees a terminal event; reaching here means the
|
|
624
631
|
// stream ended abnormally. Fail closed so the run never dangles non-terminal.
|
|
625
|
-
await runBeforeFinish();
|
|
626
|
-
if (sink.sealed)
|
|
627
|
-
return 'cancelled';
|
|
628
632
|
return finishAccepting('failed', {
|
|
629
633
|
summary: { ...(opts.summary ?? {}), error: 'harness stream ended without a terminal event' },
|
|
630
634
|
transcript: opts.transcript,
|
|
@@ -43,15 +43,20 @@ export declare const AGENT_GIT_IDENTITY: {
|
|
|
43
43
|
readonly email: "agent@orizu.ai";
|
|
44
44
|
};
|
|
45
45
|
/**
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
46
|
+
* Origin-specific standing preambles wrap hosted task prompts. Web sessions get
|
|
47
|
+
* `HOSTED_TASK_PREAMBLE`, which directs the agent to use the question tool and
|
|
48
|
+
* wait for the human. CLI-origin sessions get `HOSTED_TASK_PREAMBLE_CLI`, where
|
|
49
|
+
* questions remain auto-answered for unattended operation. Undefined or unknown
|
|
50
|
+
* origins fail safely to the CLI preamble. Both variants tell the agent to
|
|
51
|
+
* commit as it goes; end-of-run auto-harvest (ALI-1036, `harvestWorkspace`)
|
|
52
|
+
* preserves anything left uncommitted.
|
|
53
53
|
*/
|
|
54
54
|
export declare const HOSTED_TASK_PREAMBLE: string;
|
|
55
|
+
/** Pre-ALI-1758 unattended behavior retained for CLI-originated sessions. */
|
|
56
|
+
export declare const HOSTED_TASK_PREAMBLE_CLI: string;
|
|
57
|
+
export type HostedSessionOrigin = 'hosted-web' | 'cli';
|
|
58
|
+
/** Fail safe: only the exact server-stamped web origin enables interactive custody. */
|
|
59
|
+
export declare function resolveHostedTaskPreamble(origin?: unknown): string;
|
|
55
60
|
/** Delimiter separating the standing preamble from the verbatim user task. */
|
|
56
61
|
export declare const HOSTED_TASK_DELIMITER = "--- YOUR TASK ---";
|
|
57
62
|
/**
|
|
@@ -68,6 +73,10 @@ export declare function composeHostedTaskPrompt(task: string, preamble?: string)
|
|
|
68
73
|
* otherwise fail under G5 default-deny egress).
|
|
69
74
|
*/
|
|
70
75
|
export declare const PREBAKED_MARKER_PATH = "/opt/orizu/prebaked.json";
|
|
76
|
+
/** Controlled runtime/test seam for locating the pre-baked image marker. The
|
|
77
|
+
* production default remains fixed; setting the override is an explicit opt-in
|
|
78
|
+
* that lets a production child process prove the real marker-gated paths. */
|
|
79
|
+
export declare function resolvePrebakedMarkerPath(env?: Readonly<Record<string, string | undefined>>): string;
|
|
71
80
|
/**
|
|
72
81
|
* The schema of `/opt/orizu/prebaked.json`. Records the exact versions baked into
|
|
73
82
|
* the image so a run (and audit) can tell WHICH runtime it booted on. `builtFor`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hosted-runtime-assets.d.ts","sourceRoot":"","sources":["../src/hosted-runtime-assets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;
|
|
1
|
+
{"version":3,"file":"hosted-runtime-assets.d.ts","sourceRoot":"","sources":["../src/hosted-runtime-assets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAOH,eAAO,MAAM,sBAAsB,oCAAoC,CAAA;AACvE,eAAO,MAAM,qBAAqB,cAAc,CAAA;AAChD,eAAO,MAAM,eAAe,WAAW,CAAA;AACvC,eAAO,MAAM,wBAAwB,mBAAmB,CAAA;AAExD,6EAA6E;AAC7E,eAAO,MAAM,+BAA+B,QAAgB,CAAA;AAE5D;8EAC8E;AAC9E,eAAO,MAAM,wBAAwB,oBAAoB,CAAA;AAEzD;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB;;;CAA4D,CAAA;AAI3F;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,QAM6C,CAAA;AAE9E,6EAA6E;AAC7E,eAAO,MAAM,wBAAwB,QAKyC,CAAA;AAE9E,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG,KAAK,CAAA;AAEtD,uFAAuF;AACvF,wBAAgB,yBAAyB,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAElE;AAED,8EAA8E;AAC9E,eAAO,MAAM,qBAAqB,sBAAsB,CAAA;AAExD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,GAAE,MAA6B,GAAG,MAAM,CAGrG;AAID;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,6BAA6B,CAAA;AAE9D;;6EAE6E;AAC7E,wBAAgB,yBAAyB,CACvC,GAAG,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAe,GAC9D,MAAM,CAGR;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,MAAM,CAAA;IACvB,gBAAgB,EAAE,MAAM,CAAA;IACxB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,QAAQ,EAAE,gBAAgB,CAAA;CAC3B;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAwBtE;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,2EAA2E;IAC3E,IAAI,EAAE,MAAM,CAAA;IACZ,+DAA+D;IAC/D,UAAU,EAAE,MAAM,CAAA;IAClB,yEAAyE;IACzE,SAAS,EAAE,MAAM,CAAA;IACjB;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB;;;;;;OAMG;IACH,aAAa,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;IACpD;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACrC,uEAAuE;IACvE,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,iBAAiB,GAAG,MAAM,CAEnE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,iCAAiC,4CACH,CAAA;AAE3C,eAAO,MAAM,0BAA0B,QAEtC,CAAA;AAED;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,IAAI,MAAM,CA+QrD"}
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
* - `<cache>` — the minted repo token, 0600, written by the script itself.
|
|
23
23
|
* git config holds only `credential.helper = !<runtime> <script> <boot.json>`.
|
|
24
24
|
*/
|
|
25
|
+
import { CLOUDFLARE_ARTIFACTS_GIT_PATH_PATTERN, CLOUDFLARE_ARTIFACTS_HOST_PATTERN, } from './cloudflare-artifacts-git-remote.js';
|
|
25
26
|
export const HELPER_SCRIPT_BASENAME = 'orizu-git-credential-helper.cjs';
|
|
26
27
|
export const BOOT_CONTEXT_BASENAME = 'boot.json';
|
|
27
28
|
export const BEARER_BASENAME = 'bearer';
|
|
@@ -41,19 +42,30 @@ export const SETUP_HOOK_RELATIVE_PATH = '.orizu/setup.sh';
|
|
|
41
42
|
export const AGENT_GIT_IDENTITY = { name: 'Orizu Agent', email: 'agent@orizu.ai' };
|
|
42
43
|
// -- Hosted task prompt scaffolding (ALI-1036) -------------------------------
|
|
43
44
|
/**
|
|
44
|
-
*
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
*
|
|
45
|
+
* Origin-specific standing preambles wrap hosted task prompts. Web sessions get
|
|
46
|
+
* `HOSTED_TASK_PREAMBLE`, which directs the agent to use the question tool and
|
|
47
|
+
* wait for the human. CLI-origin sessions get `HOSTED_TASK_PREAMBLE_CLI`, where
|
|
48
|
+
* questions remain auto-answered for unattended operation. Undefined or unknown
|
|
49
|
+
* origins fail safely to the CLI preamble. Both variants tell the agent to
|
|
50
|
+
* commit as it goes; end-of-run auto-harvest (ALI-1036, `harvestWorkspace`)
|
|
51
|
+
* preserves anything left uncommitted.
|
|
51
52
|
*/
|
|
52
|
-
export const HOSTED_TASK_PREAMBLE = 'You are
|
|
53
|
+
export const HOSTED_TASK_PREAMBLE = 'You are in a hosted sandbox. Work autonomously. When blocked on human input, call the built-in ' +
|
|
54
|
+
'question tool with exactly one clear question and at most eight bounded options, then wait for ' +
|
|
55
|
+
'the human. Never infer approval from silence or a recommended option. Commit your work to the current ' +
|
|
56
|
+
'branch in logical units as you go (an automatic ' +
|
|
57
|
+
'checkpoint will also save anything uncommitted at the end). Never switch branches. ' +
|
|
58
|
+
'Production/default pointers and run metadata live in Orizu, not this repo.';
|
|
59
|
+
/** Pre-ALI-1758 unattended behavior retained for CLI-originated sessions. */
|
|
60
|
+
export const HOSTED_TASK_PREAMBLE_CLI = 'You are running unattended in a hosted sandbox. Work autonomously: never ask the user ' +
|
|
53
61
|
'questions — when uncertain, choose the most reasonable/reversible option and note the ' +
|
|
54
62
|
'decision. Commit your work to the current branch in logical units as you go (an automatic ' +
|
|
55
63
|
'checkpoint will also save anything uncommitted at the end). Never switch branches. ' +
|
|
56
64
|
'Production/default pointers and run metadata live in Orizu, not this repo.';
|
|
65
|
+
/** Fail safe: only the exact server-stamped web origin enables interactive custody. */
|
|
66
|
+
export function resolveHostedTaskPreamble(origin) {
|
|
67
|
+
return origin === 'hosted-web' ? HOSTED_TASK_PREAMBLE : HOSTED_TASK_PREAMBLE_CLI;
|
|
68
|
+
}
|
|
57
69
|
/** Delimiter separating the standing preamble from the verbatim user task. */
|
|
58
70
|
export const HOSTED_TASK_DELIMITER = '--- YOUR TASK ---';
|
|
59
71
|
/**
|
|
@@ -75,6 +87,13 @@ export function composeHostedTaskPrompt(task, preamble = HOSTED_TASK_PREAMBLE) {
|
|
|
75
87
|
* otherwise fail under G5 default-deny egress).
|
|
76
88
|
*/
|
|
77
89
|
export const PREBAKED_MARKER_PATH = '/opt/orizu/prebaked.json';
|
|
90
|
+
/** Controlled runtime/test seam for locating the pre-baked image marker. The
|
|
91
|
+
* production default remains fixed; setting the override is an explicit opt-in
|
|
92
|
+
* that lets a production child process prove the real marker-gated paths. */
|
|
93
|
+
export function resolvePrebakedMarkerPath(env = process.env) {
|
|
94
|
+
const override = env.ORIZU_PREBAKED_MARKER_PATH?.trim();
|
|
95
|
+
return override || PREBAKED_MARKER_PATH;
|
|
96
|
+
}
|
|
78
97
|
/**
|
|
79
98
|
* Parse + validate a pre-baked marker file's contents. Returns the typed marker
|
|
80
99
|
* when the JSON is well-formed AND carries the expected `builtFor` guard with
|
|
@@ -199,6 +218,15 @@ function exactCredentialKey(input) {
|
|
|
199
218
|
if (parsed.username || parsed.password || parsed.search || parsed.hash) return null
|
|
200
219
|
if (parsed.hostname.toLowerCase() !== host.split(':')[0]) return null
|
|
201
220
|
if (parsed.origin + parsed.pathname !== protocol + '://' + host + path) return null
|
|
221
|
+
const lfsSuffix = '/info/lfs'
|
|
222
|
+
if (
|
|
223
|
+
/${CLOUDFLARE_ARTIFACTS_HOST_PATTERN.source}/.test(parsed.hostname) &&
|
|
224
|
+
parsed.pathname.endsWith('.git' + lfsSuffix)
|
|
225
|
+
) {
|
|
226
|
+
const repositoryPath = parsed.pathname.slice(0, -lfsSuffix.length)
|
|
227
|
+
if (!/${CLOUDFLARE_ARTIFACTS_GIT_PATH_PATTERN.source}/.test(repositoryPath)) return null
|
|
228
|
+
return parsed.origin + repositoryPath
|
|
229
|
+
}
|
|
202
230
|
return parsed.origin + parsed.pathname
|
|
203
231
|
} catch (_) {
|
|
204
232
|
return null
|
|
@@ -214,8 +242,8 @@ function credentialKeyForRemote(remote) {
|
|
|
214
242
|
parsed.password ||
|
|
215
243
|
parsed.search ||
|
|
216
244
|
parsed.hash ||
|
|
217
|
-
|
|
218
|
-
|
|
245
|
+
!/${CLOUDFLARE_ARTIFACTS_HOST_PATTERN.source}/.test(parsed.hostname) ||
|
|
246
|
+
!/${CLOUDFLARE_ARTIFACTS_GIT_PATH_PATTERN.source}/.test(parsed.pathname) ||
|
|
219
247
|
parsed.toString() !== remote
|
|
220
248
|
) return null
|
|
221
249
|
return parsed.origin + parsed.pathname
|
|
@@ -230,8 +258,8 @@ function isArtifactsCredentialKey(credentialKey) {
|
|
|
230
258
|
return (
|
|
231
259
|
parsed.protocol === 'https:' &&
|
|
232
260
|
!parsed.port &&
|
|
233
|
-
|
|
234
|
-
|
|
261
|
+
/${CLOUDFLARE_ARTIFACTS_HOST_PATTERN.source}/.test(parsed.hostname) &&
|
|
262
|
+
/${CLOUDFLARE_ARTIFACTS_GIT_PATH_PATTERN.source}/.test(parsed.pathname) &&
|
|
235
263
|
parsed.origin + parsed.pathname === credentialKey
|
|
236
264
|
)
|
|
237
265
|
} catch (_) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hosted-session-cli.d.ts","sourceRoot":"","sources":["../src/hosted-session-cli.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;
|
|
1
|
+
{"version":3,"file":"hosted-session-cli.d.ts","sourceRoot":"","sources":["../src/hosted-session-cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
* local-sim end-to-end test.
|
|
36
36
|
*/
|
|
37
37
|
import { readFileSync } from 'fs';
|
|
38
|
+
import { isValidCloudflareArtifactsGitRemote } from './cloudflare-artifacts-git-remote.js';
|
|
38
39
|
import { createLocalSimProvider, } from './sandbox-provider.js';
|
|
39
40
|
import { bootstrapHostedSandbox, createBootstrapRunEventSink, } from './hosted-bootstrap.js';
|
|
40
41
|
import { resumeRunEventSink } from './hosted-run-event-sink.js';
|
|
@@ -44,6 +45,7 @@ import { buildEgressPolicy, DEFAULT_EGRESS_CANARY_HOST } from './egress-policy.j
|
|
|
44
45
|
import { DEFAULT_HOSTED_MODEL, hostedLoopCommand } from './hosted-loop.js';
|
|
45
46
|
import { hostedBootCommand } from './hosted-boot.js';
|
|
46
47
|
import { mergeJobCommand } from './merge-job.js';
|
|
48
|
+
import { workspaceBootstrapJobCommand } from './workspace-bootstrap-job.js';
|
|
47
49
|
import { hostedOptimizationCommand } from './hosted-optimization.js';
|
|
48
50
|
import { writeChildStderr } from './child-output-tee.js';
|
|
49
51
|
import { skilledProposerBakeCommand } from './skilled-proposer-launch.js';
|
|
@@ -79,8 +81,6 @@ const GENERATED_HOSTED_UUID_PLACEHOLDER = '00000000-0000-4000-8000-000000000000'
|
|
|
79
81
|
/** Non-secret placeholder OpenCode uses to form requests; the firewall proxy
|
|
80
82
|
* overrides the real Anthropic header (model-key brokering). NEVER a real key. */
|
|
81
83
|
export const ANTHROPIC_DUMMY_KEY = 'sk-ant-orizu-proxy-broker-placeholder';
|
|
82
|
-
const CLOUDFLARE_ARTIFACTS_HOST = /^[0-9a-f]{32}\.artifacts\.cloudflare\.net$/;
|
|
83
|
-
const CLOUDFLARE_ARTIFACTS_GIT_PATH = /^\/git\/[A-Za-z0-9][A-Za-z0-9._-]{0,255}\/[A-Za-z0-9][A-Za-z0-9._-]{0,255}\.git$/;
|
|
84
84
|
/** The broker currently drains repository lifecycle work once per minute. A
|
|
85
85
|
* durable provider `waiting` response can therefore cost a full cron period;
|
|
86
86
|
* use the server-advertised cadence and retain a five-minute resume window. */
|
|
@@ -290,22 +290,7 @@ export function repositoryResolutionFromMint(minted) {
|
|
|
290
290
|
if (!artifactsRemote) {
|
|
291
291
|
throw new Error('repo-token response carried no Artifacts remote');
|
|
292
292
|
}
|
|
293
|
-
|
|
294
|
-
try {
|
|
295
|
-
parsed = new URL(artifactsRemote);
|
|
296
|
-
}
|
|
297
|
-
catch {
|
|
298
|
-
throw new Error('repo-token response carried an invalid Artifacts remote');
|
|
299
|
-
}
|
|
300
|
-
if (parsed.protocol !== 'https:' ||
|
|
301
|
-
parsed.username ||
|
|
302
|
-
parsed.password ||
|
|
303
|
-
parsed.port ||
|
|
304
|
-
parsed.search ||
|
|
305
|
-
parsed.hash ||
|
|
306
|
-
!CLOUDFLARE_ARTIFACTS_HOST.test(parsed.hostname) ||
|
|
307
|
-
!CLOUDFLARE_ARTIFACTS_GIT_PATH.test(parsed.pathname) ||
|
|
308
|
-
parsed.toString() !== artifactsRemote) {
|
|
293
|
+
if (!isValidCloudflareArtifactsGitRemote(artifactsRemote)) {
|
|
309
294
|
throw new Error('repo-token response carried an invalid Artifacts remote');
|
|
310
295
|
}
|
|
311
296
|
return {
|
|
@@ -571,6 +556,9 @@ export async function startHostedSession(opts) {
|
|
|
571
556
|
bearerFile: paths.bearerFileAbs,
|
|
572
557
|
taskFile: `${paths.runDirAbs}/task.txt`,
|
|
573
558
|
workspaceDir: paths.repoDirRel,
|
|
559
|
+
sessionBranch,
|
|
560
|
+
repositoryRemote: repo.cloneUrl,
|
|
561
|
+
repositoryCredentialHelper: bootstrap.credentialHelper,
|
|
574
562
|
model,
|
|
575
563
|
reasoningEffort: opts.reasoningEffort,
|
|
576
564
|
messageId: `${runId}:task`,
|
|
@@ -1188,6 +1176,9 @@ export async function hostedCommand(args, io, deps = {}) {
|
|
|
1188
1176
|
if (positional[1] === 'merge-job') {
|
|
1189
1177
|
return mergeJobCommand(io);
|
|
1190
1178
|
}
|
|
1179
|
+
if (positional[1] === 'workspace-bootstrap-job') {
|
|
1180
|
+
return workspaceBootstrapJobCommand(args, io);
|
|
1181
|
+
}
|
|
1191
1182
|
if (positional[1] === 'hosted-optimization') {
|
|
1192
1183
|
return hostedOptimizationCommand({ ...io, printErr: writeChildStderr });
|
|
1193
1184
|
}
|
|
@@ -1195,7 +1186,7 @@ export async function hostedCommand(args, io, deps = {}) {
|
|
|
1195
1186
|
return skilledProposerBakeCommand(io);
|
|
1196
1187
|
if (positional[1] === 'verify-skilled-proposer-bake')
|
|
1197
1188
|
return skilledProposerBakeCommand(io, true);
|
|
1198
|
-
io.printErr?.('Usage: orizu internal <hosted-loop --context <path> | hosted-boot | hosted-optimization | merge-job | bake-skilled-proposer-venv | verify-skilled-proposer-bake>');
|
|
1189
|
+
io.printErr?.('Usage: orizu internal <hosted-loop --context <path> | hosted-boot | hosted-optimization | merge-job | workspace-bootstrap-job | bake-skilled-proposer-venv | verify-skilled-proposer-bake>');
|
|
1199
1190
|
return 1;
|
|
1200
1191
|
}
|
|
1201
1192
|
const unknownOption = findUnknownOption(args, HOSTED_START_OPTIONS, HOSTED_START_VALUE_OPTIONS);
|
package/dist/http.d.ts
CHANGED
|
@@ -25,5 +25,5 @@ export interface LogoutResult {
|
|
|
25
25
|
export declare function captureAuthenticatedRequestContext(options?: {
|
|
26
26
|
allowRefresh?: boolean;
|
|
27
27
|
}): AuthenticatedRequestContext;
|
|
28
|
-
export declare function authedFetch(path: string, init?: RequestInit): Promise<Response>;
|
|
28
|
+
export declare function authedFetch(path: string, init?: RequestInit, onRequestStart?: () => void): Promise<Response>;
|
|
29
29
|
//# sourceMappingURL=http.d.ts.map
|
package/dist/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AASA,OAAO,EAAkB,WAAW,EAAoB,MAAM,mBAAmB,CAAA;AASjF,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,QAEhD;AAED,wBAAgB,cAAc,CAAC,KAAK,GAAE,WAA0B,GAAG,MAAM,CAiBxE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,GAAE,WAA0B,GAAG,MAAM,CAY7E;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAWD,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,QAmBzD;AAqFD,wBAAgB,+BAA+B,IAAI,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAE/E;AAkGD,MAAM,MAAM,0BAA0B,GAAG,aAAa,GAAG,kBAAkB,GAAG,QAAQ,CAAA;AAEtF,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAA;IAC3C,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC1D,MAAM,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;CAC3D;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,sBAAsB,EAAE,OAAO,CAAA;CAChC;AAED;;;;;GAKG;AACH,wBAAgB,kCAAkC,CAChD,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAO,GACvC,2BAA2B,CAgI7B;
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AASA,OAAO,EAAkB,WAAW,EAAoB,MAAM,mBAAmB,CAAA;AASjF,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,QAEhD;AAED,wBAAgB,cAAc,CAAC,KAAK,GAAE,WAA0B,GAAG,MAAM,CAiBxE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,GAAE,WAA0B,GAAG,MAAM,CAY7E;AAED,wBAAgB,UAAU,IAAI,MAAM,CAEnC;AAWD,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,QAmBzD;AAqFD,wBAAgB,+BAA+B,IAAI,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CAE/E;AAkGD,MAAM,MAAM,0BAA0B,GAAG,aAAa,GAAG,kBAAkB,GAAG,QAAQ,CAAA;AAEtF,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,0BAA0B,CAAA;IAC3C,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC1D,MAAM,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;CAC3D;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,sBAAsB,EAAE,OAAO,CAAA;CAChC;AAED;;;;;GAKG;AACH,wBAAgB,kCAAkC,CAChD,OAAO,GAAE;IAAE,YAAY,CAAC,EAAE,OAAO,CAAA;CAAO,GACvC,2BAA2B,CAgI7B;AAID,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,WAAgB,EAAE,cAAc,CAAC,EAAE,MAAM,IAAI,qBAqElG"}
|
package/dist/http.js
CHANGED
|
@@ -311,7 +311,13 @@ export function captureAuthenticatedRequestContext(options = {}) {
|
|
|
311
311
|
},
|
|
312
312
|
};
|
|
313
313
|
}
|
|
314
|
-
|
|
314
|
+
// The optional observer runs immediately before a resource fetch, after auth
|
|
315
|
+
// preflight. Authentication refresh requests do not mark the resource as sent.
|
|
316
|
+
export async function authedFetch(path, init = {}, onRequestStart) {
|
|
317
|
+
const fetchResource = (url, requestInit) => {
|
|
318
|
+
onRequestStart?.();
|
|
319
|
+
return fetch(url, requestInit);
|
|
320
|
+
};
|
|
315
321
|
const baseUrl = resolveBaseUrl();
|
|
316
322
|
assertSecureTokenTransport(baseUrl);
|
|
317
323
|
// In-sandbox pre-auth (ALI-1044): a bearer supplied via ORIZU_TOKEN /
|
|
@@ -321,7 +327,7 @@ export async function authedFetch(path, init = {}) {
|
|
|
321
327
|
// the file and the next request naturally picks up the new bearer.
|
|
322
328
|
const envBearer = resolveEnvBearerToken();
|
|
323
329
|
if (envBearer) {
|
|
324
|
-
return await
|
|
330
|
+
return await fetchResource(`${baseUrl}${path}`, {
|
|
325
331
|
...init,
|
|
326
332
|
headers: {
|
|
327
333
|
...(init.headers || {}),
|
|
@@ -336,7 +342,7 @@ export async function authedFetch(path, init = {}) {
|
|
|
336
342
|
}
|
|
337
343
|
const resolved = await refreshExpiredStoredCredentials(baseUrl, credentials, init.signal);
|
|
338
344
|
let activeCredentials = resolved.credentials;
|
|
339
|
-
let response = await
|
|
345
|
+
let response = await fetchResource(`${baseUrl}${path}`, {
|
|
340
346
|
...init,
|
|
341
347
|
headers: {
|
|
342
348
|
...(init.headers || {}),
|
|
@@ -352,7 +358,7 @@ export async function authedFetch(path, init = {}) {
|
|
|
352
358
|
throw new Error('ORIZU_AUTH_CONTEXT_CHANGED: stored credentials changed after this request began; the request was not replayed.');
|
|
353
359
|
}
|
|
354
360
|
activeCredentials = requireCurrentCredentials(baseUrl, refreshResult.credentials);
|
|
355
|
-
response = await
|
|
361
|
+
response = await fetchResource(`${baseUrl}${path}`, {
|
|
356
362
|
...init,
|
|
357
363
|
headers: {
|
|
358
364
|
...(init.headers || {}),
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAwHgF,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAwHgF,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAqChJ,eAAO,MAAM,wBAAwB,GAAI,iBAAiB,MAAM;;;EACJ,CAAA;AAE5D,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAuU5E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvD;AAUD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOnD;AAyBD,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE5D;AAsBD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,GAAG,CAqB5E;AA6BD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAgBtD;AA28JD,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,eAAO,MAAM,oBAAoB,aAgB/B,CAAA;AAEF,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,UAAU,CAaxH;AAmMD,wBAAsB,IAAI,CAAC,OAAO,WAAwB,iBA6gBzD"}
|