@patze/code-cli 0.10.5 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +41 -0
- package/VERSION +1 -1
- package/bin/patze.mjs +0 -0
- package/dist/backend/agent-trace.d.ts +14 -0
- package/dist/backend/agent-trace.d.ts.map +1 -0
- package/dist/backend/agent-trace.js +52 -0
- package/dist/backend/agent-trace.js.map +1 -0
- package/dist/backend/execute-client.d.ts +51 -0
- package/dist/backend/execute-client.d.ts.map +1 -0
- package/dist/backend/execute-client.js +140 -0
- package/dist/backend/execute-client.js.map +1 -0
- package/dist/backend/run-record.d.ts +16 -0
- package/dist/backend/run-record.d.ts.map +1 -0
- package/dist/backend/run-record.js +43 -0
- package/dist/backend/run-record.js.map +1 -0
- package/dist/backend/run-stream-client.d.ts +36 -0
- package/dist/backend/run-stream-client.d.ts.map +1 -0
- package/dist/backend/run-stream-client.js +109 -0
- package/dist/backend/run-stream-client.js.map +1 -0
- package/dist/backend/session-client.d.ts +17 -0
- package/dist/backend/session-client.d.ts.map +1 -0
- package/dist/backend/session-client.js +54 -0
- package/dist/backend/session-client.js.map +1 -0
- package/dist/backend/sse-parse.d.ts +14 -0
- package/dist/backend/sse-parse.d.ts.map +1 -0
- package/dist/backend/sse-parse.js +63 -0
- package/dist/backend/sse-parse.js.map +1 -0
- package/dist/cli/commands/status-format.d.ts.map +1 -1
- package/dist/cli/commands/status-format.js +11 -0
- package/dist/cli/commands/status-format.js.map +1 -1
- package/dist/cli/interactive/agent-execute-turn.d.ts +22 -0
- package/dist/cli/interactive/agent-execute-turn.d.ts.map +1 -0
- package/dist/cli/interactive/agent-execute-turn.js +114 -0
- package/dist/cli/interactive/agent-execute-turn.js.map +1 -0
- package/dist/cli/interactive/agent-stream-format.d.ts +16 -0
- package/dist/cli/interactive/agent-stream-format.d.ts.map +1 -0
- package/dist/cli/interactive/agent-stream-format.js +87 -0
- package/dist/cli/interactive/agent-stream-format.js.map +1 -0
- package/dist/cli/interactive/agent-turn-classify.d.ts +8 -0
- package/dist/cli/interactive/agent-turn-classify.d.ts.map +1 -0
- package/dist/cli/interactive/agent-turn-classify.js +32 -0
- package/dist/cli/interactive/agent-turn-classify.js.map +1 -0
- package/dist/cli/interactive/agent-turn-context.d.ts +11 -0
- package/dist/cli/interactive/agent-turn-context.d.ts.map +1 -0
- package/dist/cli/interactive/agent-turn-context.js +57 -0
- package/dist/cli/interactive/agent-turn-context.js.map +1 -0
- package/dist/cli/interactive/agent-turn-format.d.ts +11 -0
- package/dist/cli/interactive/agent-turn-format.d.ts.map +1 -1
- package/dist/cli/interactive/agent-turn-format.js +78 -56
- package/dist/cli/interactive/agent-turn-format.js.map +1 -1
- package/dist/cli/interactive/agent-turn.d.ts +4 -1
- package/dist/cli/interactive/agent-turn.d.ts.map +1 -1
- package/dist/cli/interactive/agent-turn.js +76 -5
- package/dist/cli/interactive/agent-turn.js.map +1 -1
- package/dist/cli/interactive/header.d.ts.map +1 -1
- package/dist/cli/interactive/header.js +4 -7
- package/dist/cli/interactive/header.js.map +1 -1
- package/dist/cli/interactive/line-editor.d.ts.map +1 -1
- package/dist/cli/interactive/line-editor.js +18 -9
- package/dist/cli/interactive/line-editor.js.map +1 -1
- package/dist/cli/interactive/session.d.ts +3 -0
- package/dist/cli/interactive/session.d.ts.map +1 -1
- package/dist/cli/interactive/session.js +8 -0
- package/dist/cli/interactive/session.js.map +1 -1
- package/dist/cli/interactive/shell.d.ts.map +1 -1
- package/dist/cli/interactive/shell.js +13 -5
- package/dist/cli/interactive/shell.js.map +1 -1
- package/dist/cli/interactive/slash-dispatch.d.ts +4 -1
- package/dist/cli/interactive/slash-dispatch.d.ts.map +1 -1
- package/dist/cli/interactive/slash-dispatch.js +22 -7
- package/dist/cli/interactive/slash-dispatch.js.map +1 -1
- package/dist/cli/interactive/transcript-format.d.ts +3 -0
- package/dist/cli/interactive/transcript-format.d.ts.map +1 -0
- package/dist/cli/interactive/transcript-format.js +29 -0
- package/dist/cli/interactive/transcript-format.js.map +1 -0
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +18 -4
- package/dist/config/config.js.map +1 -1
- package/docs/known-limitations.md +4 -3
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,46 @@ All notable changes to `@patze/code-cli` are documented here.
|
|
|
4
4
|
|
|
5
5
|
Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
6
6
|
|
|
7
|
+
## [0.11.0] - 2026-05-29
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **Real agent execute + SSE stream** for coding tasks when auth + preview succeed: `POST /internal/patze-code/user-task-execute` → `GET .../user-task-runs/{id}/stream`
|
|
12
|
+
- Live transcript rows during runs: `run` / `tool` / `agent` (trace + final output)
|
|
13
|
+
- Opt-out: `PATZE_CODE_CLI_EXECUTE=0` keeps preview-only behavior
|
|
14
|
+
|
|
15
|
+
### Unchanged
|
|
16
|
+
|
|
17
|
+
- Trust loop: **no auto-apply**; `/diff` → `/approve` → `/apply` still required for workspace writes
|
|
18
|
+
|
|
19
|
+
## [0.10.7] - 2026-05-29
|
|
20
|
+
|
|
21
|
+
### Changed
|
|
22
|
+
|
|
23
|
+
- **Contextual replies** — workspace/folder/auth questions answered from local inspect (real cwd/root paths, file counts) instead of generic deflection
|
|
24
|
+
- **Transcript layout** — cookbook-style `you` / `agent` rows; no repeated status footer on every turn
|
|
25
|
+
- **Bordered composer** — TTY input uses a framed prompt (closer to [Cursor coding-agent-cli](https://github.com/cursor/cookbook/tree/main/sdk/coding-agent-cli))
|
|
26
|
+
- **`/login`** — auto-resolves `user_id` from `GET /internal/patze-code/session` when omitted
|
|
27
|
+
- **`/status --check`** — reports session user mapping when `userId` is not in config
|
|
28
|
+
|
|
29
|
+
### Unchanged
|
|
30
|
+
|
|
31
|
+
- Trust loop: preview-first, no auto-apply, no SSE execute from CLI
|
|
32
|
+
|
|
33
|
+
## [0.10.6] - 2026-05-29
|
|
34
|
+
|
|
35
|
+
### Changed (composer + turn UX — no trust-loop behavior change)
|
|
36
|
+
|
|
37
|
+
- **Conversational turns** (e.g. “เห็นข้อความผมไหมครับ”, greetings, short questions) get a **short human reply** instead of running server preview or dumping Task/Thinking/Tools sections
|
|
38
|
+
- **Coding tasks** use a **compact one-screen summary** (`Task · …`, status line, digest shorthand, `Next · /diff · /context`) — full detail stays in `/context`
|
|
39
|
+
- Removed fake “Thinking” / verbose Safety walls from default output (less AI-slop)
|
|
40
|
+
- Composer placeholder: `Ask or type / for commands`
|
|
41
|
+
- Startup tips shortened; duplicate navigation hints removed
|
|
42
|
+
|
|
43
|
+
### Unchanged
|
|
44
|
+
|
|
45
|
+
- Trust loop, apply/verify gating, permission enforcement, server preview for real coding tasks when auth is ready
|
|
46
|
+
|
|
7
47
|
## [0.10.5] - 2026-05-29
|
|
8
48
|
|
|
9
49
|
### Added
|
|
@@ -155,6 +195,7 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
|
|
|
155
195
|
|
|
156
196
|
- `patze code inspect`, `patze code plan --preview`, local workspace boundaries
|
|
157
197
|
|
|
198
|
+
[0.10.6]: https://github.com/patzeagent/patzelife-plugin-agentdiscord/compare/patze-code-cli-v0.10.5...patze-code-cli-v0.10.6
|
|
158
199
|
[0.10.5]: https://github.com/patzeagent/patzelife-plugin-agentdiscord/compare/patze-code-cli-v0.10.4...patze-code-cli-v0.10.5
|
|
159
200
|
[0.10.4]: https://github.com/patzeagent/patzelife-plugin-agentdiscord/compare/patze-code-cli-v0.10.3...patze-code-cli-v0.10.4
|
|
160
201
|
[0.10.3]: https://github.com/patzeagent/patzelife-plugin-agentdiscord/compare/patze-code-cli-v0.10.2...patze-code-cli-v0.10.3
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.
|
|
1
|
+
0.11.0
|
package/bin/patze.mjs
CHANGED
|
File without changes
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type AgentTraceKind = "thinking" | "tool" | "text" | "status" | "task";
|
|
2
|
+
export type AgentTraceStatus = "running" | "done" | "error";
|
|
3
|
+
export type AgentTraceEvent = {
|
|
4
|
+
id: string;
|
|
5
|
+
kind: AgentTraceKind;
|
|
6
|
+
title: string;
|
|
7
|
+
detail?: string;
|
|
8
|
+
status?: AgentTraceStatus;
|
|
9
|
+
toolName?: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function parseAgentTraceItem(raw: unknown): AgentTraceEvent | null;
|
|
12
|
+
export declare function isIgnorableStatusTrace(event: AgentTraceEvent): boolean;
|
|
13
|
+
export declare function excerptTraceText(text: string, max?: number): string;
|
|
14
|
+
//# sourceMappingURL=agent-trace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-trace.d.ts","sourceRoot":"","sources":["../../src/backend/agent-trace.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAA;AAC7E,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,MAAM,GAAG,OAAO,CAAA;AAE3D,MAAM,MAAM,eAAe,GAAG;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,cAAc,CAAA;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,gBAAgB,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,GAAG,IAAI,CAyBxE;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAkBtE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAM,GAAG,MAAM,CAShE"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
export function parseAgentTraceItem(raw) {
|
|
2
|
+
if (!raw || typeof raw !== "object") {
|
|
3
|
+
return null;
|
|
4
|
+
}
|
|
5
|
+
const record = raw;
|
|
6
|
+
const kind = String(record.kind ?? "").trim();
|
|
7
|
+
if (!["thinking", "tool", "text", "status", "task"].includes(kind)) {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
const title = String(record.title ?? "").trim();
|
|
11
|
+
if (!title) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
const statusRaw = String(record.status ?? "done").trim();
|
|
15
|
+
const status = statusRaw === "running" || statusRaw === "error" ? statusRaw : "done";
|
|
16
|
+
return {
|
|
17
|
+
id: String(record.id ?? `trace-${Date.now()}`),
|
|
18
|
+
kind,
|
|
19
|
+
title,
|
|
20
|
+
detail: typeof record.detail === "string" ? record.detail : undefined,
|
|
21
|
+
status,
|
|
22
|
+
toolName: typeof record.toolName === "string" ? record.toolName : undefined,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
export function isIgnorableStatusTrace(event) {
|
|
26
|
+
if (event.kind !== "status") {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
const title = event.title.trim().toUpperCase();
|
|
30
|
+
const detail = (event.detail ?? "").trim().toUpperCase();
|
|
31
|
+
if (!title && !detail) {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
return (title === "RUNNING" ||
|
|
35
|
+
title === "STATUS" ||
|
|
36
|
+
title === "PENDING" ||
|
|
37
|
+
title === "QUEUED" ||
|
|
38
|
+
title.includes("RUNNING") ||
|
|
39
|
+
detail === "RUNNING" ||
|
|
40
|
+
detail === "PENDING");
|
|
41
|
+
}
|
|
42
|
+
export function excerptTraceText(text, max = 240) {
|
|
43
|
+
const normalized = text.replace(/\r\n/g, "\n").replace(/\s+/g, " ").trim();
|
|
44
|
+
if (!normalized) {
|
|
45
|
+
return "";
|
|
46
|
+
}
|
|
47
|
+
if (normalized.length <= max) {
|
|
48
|
+
return normalized;
|
|
49
|
+
}
|
|
50
|
+
return `${normalized.slice(0, max - 1)}…`;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=agent-trace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-trace.js","sourceRoot":"","sources":["../../src/backend/agent-trace.ts"],"names":[],"mappings":"AAYA,MAAM,UAAU,mBAAmB,CAAC,GAAY;IAC9C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,MAAM,GAAG,GAA8B,CAAA;IAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAoB,CAAA;IAC/D,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnE,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAC/C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,IAAI,EAAE,CAAA;IACxD,MAAM,MAAM,GACV,SAAS,KAAK,SAAS,IAAI,SAAS,KAAK,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAA;IAEvE,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,SAAS,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAC9C,IAAI;QACJ,KAAK;QACL,MAAM,EAAE,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;QACrE,MAAM;QACN,QAAQ,EAAE,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;KAC5E,CAAA;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAsB;IAC3D,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAC9C,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IACxD,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QACtB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,CACL,KAAK,KAAK,SAAS;QACnB,KAAK,KAAK,QAAQ;QAClB,KAAK,KAAK,SAAS;QACnB,KAAK,KAAK,QAAQ;QAClB,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC;QACzB,MAAM,KAAK,SAAS;QACpB,MAAM,KAAK,SAAS,CACrB,CAAA;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,GAAG,GAAG,GAAG;IACtD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;IAC1E,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,EAAE,CAAA;IACX,CAAC;IACD,IAAI,UAAU,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;QAC7B,OAAO,UAAU,CAAA;IACnB,CAAC;IACD,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAA;AAC3C,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { PreviewTaskPayload } from "./preview-payload.js";
|
|
2
|
+
import type { FetchLike } from "./preview-client.js";
|
|
3
|
+
export type ExecuteAcceptedResponse = {
|
|
4
|
+
status: string;
|
|
5
|
+
run_id: string;
|
|
6
|
+
phase: string;
|
|
7
|
+
};
|
|
8
|
+
export type ExecuteCompletedResponse = {
|
|
9
|
+
status: string;
|
|
10
|
+
error_code: string;
|
|
11
|
+
preview_artifact_digest: string;
|
|
12
|
+
pipeline_digest: string;
|
|
13
|
+
review_digest: string;
|
|
14
|
+
agent_output_digest: string;
|
|
15
|
+
agent_output_length: number;
|
|
16
|
+
agent_output_preview?: string;
|
|
17
|
+
outcome_summary?: string;
|
|
18
|
+
finding_codes: string[];
|
|
19
|
+
run_id: string;
|
|
20
|
+
digest: string;
|
|
21
|
+
phase?: string;
|
|
22
|
+
agent_model?: string;
|
|
23
|
+
progress_steps?: string[];
|
|
24
|
+
deliverable_paths?: string[];
|
|
25
|
+
agent_trace?: unknown[];
|
|
26
|
+
};
|
|
27
|
+
export type ExecuteClientResult = {
|
|
28
|
+
ok: true;
|
|
29
|
+
kind: "accepted";
|
|
30
|
+
response: ExecuteAcceptedResponse;
|
|
31
|
+
httpStatus: number;
|
|
32
|
+
} | {
|
|
33
|
+
ok: true;
|
|
34
|
+
kind: "completed";
|
|
35
|
+
response: ExecuteCompletedResponse;
|
|
36
|
+
httpStatus: number;
|
|
37
|
+
} | {
|
|
38
|
+
ok: false;
|
|
39
|
+
kind: "auth" | "network" | "server";
|
|
40
|
+
message: string;
|
|
41
|
+
httpStatus: number | null;
|
|
42
|
+
};
|
|
43
|
+
export declare function postUserTaskExecute(input: {
|
|
44
|
+
apiBase: string;
|
|
45
|
+
headers: Record<string, string>;
|
|
46
|
+
payload: PreviewTaskPayload;
|
|
47
|
+
previewArtifactDigest: string;
|
|
48
|
+
fetchImpl?: FetchLike;
|
|
49
|
+
timeoutMs?: number;
|
|
50
|
+
}): Promise<ExecuteClientResult>;
|
|
51
|
+
//# sourceMappingURL=execute-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute-client.d.ts","sourceRoot":"","sources":["../../src/backend/execute-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAEpD,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,uBAAuB,EAAE,MAAM,CAAA;IAC/B,eAAe,EAAE,MAAM,CAAA;IACvB,aAAa,EAAE,MAAM,CAAA;IACrB,mBAAmB,EAAE,MAAM,CAAA;IAC3B,mBAAmB,EAAE,MAAM,CAAA;IAC3B,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;IACzB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;IAC5B,WAAW,CAAC,EAAE,OAAO,EAAE,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,mBAAmB,GAC3B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,uBAAuB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACrF;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,wBAAwB,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACvF;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAA;AAElG,wBAAsB,mBAAmB,CAAC,KAAK,EAAE;IAC/C,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,OAAO,EAAE,kBAAkB,CAAA;IAC3B,qBAAqB,EAAE,MAAM,CAAA;IAC7B,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA4E/B"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
export async function postUserTaskExecute(input) {
|
|
2
|
+
const fetchImpl = input.fetchImpl ?? fetch;
|
|
3
|
+
const url = new URL("/internal/patze-code/user-task-execute", input.apiBase);
|
|
4
|
+
const controller = new AbortController();
|
|
5
|
+
const timer = setTimeout(() => controller.abort(), input.timeoutMs ?? 180_000);
|
|
6
|
+
try {
|
|
7
|
+
const response = await fetchImpl(url, {
|
|
8
|
+
method: "POST",
|
|
9
|
+
headers: input.headers,
|
|
10
|
+
body: JSON.stringify({
|
|
11
|
+
...input.payload,
|
|
12
|
+
preview_artifact_digest: input.previewArtifactDigest,
|
|
13
|
+
}),
|
|
14
|
+
signal: controller.signal,
|
|
15
|
+
});
|
|
16
|
+
let body;
|
|
17
|
+
try {
|
|
18
|
+
body = await response.json();
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return {
|
|
22
|
+
ok: false,
|
|
23
|
+
kind: "server",
|
|
24
|
+
message: `execute returned non-JSON (${response.status})`,
|
|
25
|
+
httpStatus: response.status,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
if (response.status === 401 || response.status === 403) {
|
|
29
|
+
return {
|
|
30
|
+
ok: false,
|
|
31
|
+
kind: "auth",
|
|
32
|
+
message: extractDetail(body) ?? `execute auth failed (${response.status})`,
|
|
33
|
+
httpStatus: response.status,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
if (response.status === 202) {
|
|
37
|
+
const normalized = normalizeAccepted(body);
|
|
38
|
+
if (!normalized) {
|
|
39
|
+
return {
|
|
40
|
+
ok: false,
|
|
41
|
+
kind: "server",
|
|
42
|
+
message: "execute accepted with unexpected shape",
|
|
43
|
+
httpStatus: response.status,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
return { ok: true, kind: "accepted", response: normalized, httpStatus: response.status };
|
|
47
|
+
}
|
|
48
|
+
if (response.status === 200 || response.status === 409) {
|
|
49
|
+
const normalized = normalizeCompleted(body);
|
|
50
|
+
if (!normalized) {
|
|
51
|
+
return {
|
|
52
|
+
ok: false,
|
|
53
|
+
kind: "server",
|
|
54
|
+
message: "execute returned unexpected shape",
|
|
55
|
+
httpStatus: response.status,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
return { ok: true, kind: "completed", response: normalized, httpStatus: response.status };
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
ok: false,
|
|
62
|
+
kind: "server",
|
|
63
|
+
message: extractDetail(body) ?? `execute failed (${response.status})`,
|
|
64
|
+
httpStatus: response.status,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
const message = error instanceof Error ? error.message : "execute request failed";
|
|
69
|
+
return { ok: false, kind: "network", message, httpStatus: null };
|
|
70
|
+
}
|
|
71
|
+
finally {
|
|
72
|
+
clearTimeout(timer);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function extractDetail(body) {
|
|
76
|
+
if (!body || typeof body !== "object") {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
const detail = body.detail;
|
|
80
|
+
if (typeof detail === "string" && detail.trim()) {
|
|
81
|
+
return detail.trim();
|
|
82
|
+
}
|
|
83
|
+
const errorCode = body.error_code;
|
|
84
|
+
if (typeof errorCode === "string" && errorCode.trim()) {
|
|
85
|
+
return errorCode.trim();
|
|
86
|
+
}
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
function normalizeAccepted(body) {
|
|
90
|
+
if (!body || typeof body !== "object") {
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
const record = body;
|
|
94
|
+
const runId = String(record.run_id ?? "").trim();
|
|
95
|
+
if (!runId) {
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
return {
|
|
99
|
+
status: String(record.status ?? "accepted"),
|
|
100
|
+
run_id: runId,
|
|
101
|
+
phase: String(record.phase ?? "queued"),
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
function normalizeCompleted(body) {
|
|
105
|
+
if (!body || typeof body !== "object") {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
const record = body;
|
|
109
|
+
const runId = String(record.run_id ?? "").trim();
|
|
110
|
+
if (!runId) {
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
const findingCodes = Array.isArray(record.finding_codes)
|
|
114
|
+
? record.finding_codes.filter((item) => typeof item === "string")
|
|
115
|
+
: [];
|
|
116
|
+
return {
|
|
117
|
+
status: String(record.status ?? ""),
|
|
118
|
+
error_code: String(record.error_code ?? ""),
|
|
119
|
+
preview_artifact_digest: String(record.preview_artifact_digest ?? ""),
|
|
120
|
+
pipeline_digest: String(record.pipeline_digest ?? ""),
|
|
121
|
+
review_digest: String(record.review_digest ?? ""),
|
|
122
|
+
agent_output_digest: String(record.agent_output_digest ?? ""),
|
|
123
|
+
agent_output_length: Number(record.agent_output_length ?? 0),
|
|
124
|
+
agent_output_preview: typeof record.agent_output_preview === "string" ? record.agent_output_preview : undefined,
|
|
125
|
+
outcome_summary: typeof record.outcome_summary === "string" ? record.outcome_summary : undefined,
|
|
126
|
+
finding_codes: findingCodes,
|
|
127
|
+
run_id: runId,
|
|
128
|
+
digest: String(record.digest ?? ""),
|
|
129
|
+
phase: typeof record.phase === "string" ? record.phase : undefined,
|
|
130
|
+
agent_model: typeof record.agent_model === "string" ? record.agent_model : undefined,
|
|
131
|
+
progress_steps: Array.isArray(record.progress_steps)
|
|
132
|
+
? record.progress_steps.filter((item) => typeof item === "string")
|
|
133
|
+
: undefined,
|
|
134
|
+
deliverable_paths: Array.isArray(record.deliverable_paths)
|
|
135
|
+
? record.deliverable_paths.filter((item) => typeof item === "string")
|
|
136
|
+
: undefined,
|
|
137
|
+
agent_trace: Array.isArray(record.agent_trace) ? record.agent_trace : undefined,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=execute-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execute-client.js","sourceRoot":"","sources":["../../src/backend/execute-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type PatzeCodeRunRecord = {
|
|
2
|
+
run_id: string;
|
|
3
|
+
status: string;
|
|
4
|
+
phase: string;
|
|
5
|
+
error_code: string;
|
|
6
|
+
agent_output_preview: string;
|
|
7
|
+
outcome_summary: string;
|
|
8
|
+
agent_model: string;
|
|
9
|
+
finding_codes: string[];
|
|
10
|
+
deliverable_paths: string[];
|
|
11
|
+
agent_trace: unknown[];
|
|
12
|
+
};
|
|
13
|
+
export declare function normalizePatzeCodeRunRecord(raw: unknown): PatzeCodeRunRecord | null;
|
|
14
|
+
export declare function isTerminalRunPhase(phase: string): boolean;
|
|
15
|
+
export declare function pickRunReplyText(run: PatzeCodeRunRecord): string;
|
|
16
|
+
//# sourceMappingURL=run-record.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-record.d.ts","sourceRoot":"","sources":["../../src/backend/run-record.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,oBAAoB,EAAE,MAAM,CAAA;IAC5B,eAAe,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,iBAAiB,EAAE,MAAM,EAAE,CAAA;IAC3B,WAAW,EAAE,OAAO,EAAE,CAAA;CACvB,CAAA;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,OAAO,GAAG,kBAAkB,GAAG,IAAI,CAwBnF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,kBAAkB,GAAG,MAAM,CAahE"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export function normalizePatzeCodeRunRecord(raw) {
|
|
2
|
+
if (!raw || typeof raw !== "object") {
|
|
3
|
+
return null;
|
|
4
|
+
}
|
|
5
|
+
const row = raw;
|
|
6
|
+
const runId = String(row.run_id ?? "").trim();
|
|
7
|
+
if (!runId) {
|
|
8
|
+
return null;
|
|
9
|
+
}
|
|
10
|
+
const findings = row.finding_codes;
|
|
11
|
+
return {
|
|
12
|
+
run_id: runId,
|
|
13
|
+
status: String(row.status ?? ""),
|
|
14
|
+
phase: String(row.phase ?? ""),
|
|
15
|
+
error_code: String(row.error_code ?? ""),
|
|
16
|
+
agent_output_preview: String(row.agent_output_preview ?? ""),
|
|
17
|
+
outcome_summary: String(row.outcome_summary ?? ""),
|
|
18
|
+
agent_model: String(row.agent_model ?? ""),
|
|
19
|
+
finding_codes: Array.isArray(findings) ? findings.map((item) => String(item)) : [],
|
|
20
|
+
deliverable_paths: Array.isArray(row.deliverable_paths)
|
|
21
|
+
? row.deliverable_paths.map((item) => String(item))
|
|
22
|
+
: [],
|
|
23
|
+
agent_trace: Array.isArray(row.agent_trace) ? row.agent_trace : [],
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export function isTerminalRunPhase(phase) {
|
|
27
|
+
return phase === "completed" || phase === "blocked" || phase === "failed";
|
|
28
|
+
}
|
|
29
|
+
export function pickRunReplyText(run) {
|
|
30
|
+
const preview = run.agent_output_preview.trim();
|
|
31
|
+
if (preview) {
|
|
32
|
+
return preview;
|
|
33
|
+
}
|
|
34
|
+
const summary = run.outcome_summary.trim();
|
|
35
|
+
if (summary) {
|
|
36
|
+
return summary;
|
|
37
|
+
}
|
|
38
|
+
if (run.error_code) {
|
|
39
|
+
return `Run ${run.phase}: ${run.error_code}`;
|
|
40
|
+
}
|
|
41
|
+
return `Run ${run.phase || run.status || "finished"}.`;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=run-record.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-record.js","sourceRoot":"","sources":["../../src/backend/run-record.ts"],"names":[],"mappings":"AAaA,MAAM,UAAU,2BAA2B,CAAC,GAAY;IACtD,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QACpC,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,GAAG,GAAG,GAA8B,CAAA;IAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,QAAQ,GAAG,GAAG,CAAC,aAAa,CAAA;IAClC,OAAO;QACL,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;QAChC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC;QAC9B,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC;QACxC,oBAAoB,EAAE,MAAM,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAC;QAC5D,eAAe,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,IAAI,EAAE,CAAC;QAClD,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;QAC1C,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;QAClF,iBAAiB,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;YACrD,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACnD,CAAC,CAAC,EAAE;QACN,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;KACnE,CAAA;AACH,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,OAAO,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,QAAQ,CAAA;AAC3E,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAuB;IACtD,MAAM,OAAO,GAAG,GAAG,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAA;IAC/C,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,CAAA;IAChB,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAA;IAC1C,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,CAAA;IAChB,CAAC;IACD,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;QACnB,OAAO,OAAO,GAAG,CAAC,KAAK,KAAK,GAAG,CAAC,UAAU,EAAE,CAAA;IAC9C,CAAC;IACD,OAAO,OAAO,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,IAAI,UAAU,GAAG,CAAA;AACxD,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { FetchLike } from "./preview-client.js";
|
|
2
|
+
import { isTerminalRunPhase, type PatzeCodeRunRecord } from "./run-record.js";
|
|
3
|
+
export type RunStatusEvent = {
|
|
4
|
+
run_id: string;
|
|
5
|
+
phase: string;
|
|
6
|
+
status: string;
|
|
7
|
+
error_code: string;
|
|
8
|
+
terminal: boolean;
|
|
9
|
+
};
|
|
10
|
+
export type RunTraceEvent = {
|
|
11
|
+
run_id: string;
|
|
12
|
+
item: unknown;
|
|
13
|
+
};
|
|
14
|
+
export type RunStreamHandlers = {
|
|
15
|
+
onStatus: (event: RunStatusEvent) => void;
|
|
16
|
+
onTrace?: (event: RunTraceEvent) => void;
|
|
17
|
+
onComplete: (run: PatzeCodeRunRecord | null) => void;
|
|
18
|
+
onError?: (message: string) => void;
|
|
19
|
+
};
|
|
20
|
+
export declare function streamPatzeCodeRun(input: {
|
|
21
|
+
apiBase: string;
|
|
22
|
+
headers: Record<string, string>;
|
|
23
|
+
runId: string;
|
|
24
|
+
fetchImpl?: FetchLike;
|
|
25
|
+
handlers: RunStreamHandlers;
|
|
26
|
+
timeoutMs?: number;
|
|
27
|
+
}): Promise<void>;
|
|
28
|
+
export declare function fetchPatzeCodeRun(input: {
|
|
29
|
+
apiBase: string;
|
|
30
|
+
headers: Record<string, string>;
|
|
31
|
+
runId: string;
|
|
32
|
+
fetchImpl?: FetchLike;
|
|
33
|
+
}): Promise<PatzeCodeRunRecord | null>;
|
|
34
|
+
export declare function parseTraceItem(raw: unknown): import("./agent-trace.js").AgentTraceEvent | null;
|
|
35
|
+
export { isTerminalRunPhase };
|
|
36
|
+
//# sourceMappingURL=run-stream-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-stream-client.d.ts","sourceRoot":"","sources":["../../src/backend/run-stream-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAEpD,OAAO,EACL,kBAAkB,EAElB,KAAK,kBAAkB,EACxB,MAAM,iBAAiB,CAAA;AAExB,MAAM,MAAM,cAAc,GAAG;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,OAAO,CAAA;CAClB,CAAA;AAED,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,OAAO,CAAA;CACd,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,KAAK,IAAI,CAAA;IACzC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAA;IACxC,UAAU,EAAE,CAAC,GAAG,EAAE,kBAAkB,GAAG,IAAI,KAAK,IAAI,CAAA;IACpD,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CACpC,CAAA;AAED,wBAAsB,kBAAkB,CAAC,KAAK,EAAE;IAC9C,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwFhB;AAED,wBAAsB,iBAAiB,CAAC,KAAK,EAAE;IAC7C,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAmBrC;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,qDAE1C;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAA"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { parseAgentTraceItem } from "./agent-trace.js";
|
|
2
|
+
import { consumeSseResponse } from "./sse-parse.js";
|
|
3
|
+
import { isTerminalRunPhase, normalizePatzeCodeRunRecord, } from "./run-record.js";
|
|
4
|
+
export async function streamPatzeCodeRun(input) {
|
|
5
|
+
const fetchImpl = input.fetchImpl ?? fetch;
|
|
6
|
+
const url = new URL(`/internal/patze-code/user-task-runs/${encodeURIComponent(input.runId)}/stream`, input.apiBase);
|
|
7
|
+
const controller = new AbortController();
|
|
8
|
+
const timer = setTimeout(() => controller.abort(), input.timeoutMs ?? 180_000);
|
|
9
|
+
try {
|
|
10
|
+
const response = await fetchImpl(url, {
|
|
11
|
+
method: "GET",
|
|
12
|
+
headers: {
|
|
13
|
+
...input.headers,
|
|
14
|
+
Accept: "text/event-stream",
|
|
15
|
+
},
|
|
16
|
+
signal: controller.signal,
|
|
17
|
+
});
|
|
18
|
+
if (!response.ok) {
|
|
19
|
+
input.handlers.onError?.(`run stream failed (${response.status})`);
|
|
20
|
+
const run = await fetchPatzeCodeRun({
|
|
21
|
+
apiBase: input.apiBase,
|
|
22
|
+
headers: input.headers,
|
|
23
|
+
runId: input.runId,
|
|
24
|
+
fetchImpl,
|
|
25
|
+
});
|
|
26
|
+
input.handlers.onComplete(run);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
let completed = false;
|
|
30
|
+
await consumeSseResponse(response, {
|
|
31
|
+
onEvent: (event) => {
|
|
32
|
+
if (completed) {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
const payload = JSON.parse(event.data);
|
|
37
|
+
if (event.event === "status") {
|
|
38
|
+
input.handlers.onStatus({
|
|
39
|
+
run_id: String(payload.run_id ?? input.runId),
|
|
40
|
+
phase: String(payload.phase ?? ""),
|
|
41
|
+
status: String(payload.status ?? ""),
|
|
42
|
+
error_code: String(payload.error_code ?? ""),
|
|
43
|
+
terminal: payload.terminal === true,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
else if (event.event === "trace") {
|
|
47
|
+
input.handlers.onTrace?.({
|
|
48
|
+
run_id: String(payload.run_id ?? input.runId),
|
|
49
|
+
item: payload.item,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
else if (event.event === "complete") {
|
|
53
|
+
completed = true;
|
|
54
|
+
input.handlers.onComplete(normalizePatzeCodeRunRecord(payload.run));
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
input.handlers.onError?.("invalid stream event");
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
}, { signal: controller.signal });
|
|
62
|
+
if (!completed) {
|
|
63
|
+
const run = await fetchPatzeCodeRun({
|
|
64
|
+
apiBase: input.apiBase,
|
|
65
|
+
headers: input.headers,
|
|
66
|
+
runId: input.runId,
|
|
67
|
+
fetchImpl,
|
|
68
|
+
});
|
|
69
|
+
input.handlers.onComplete(run);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
const message = error instanceof Error ? error.message : "run stream failed";
|
|
74
|
+
input.handlers.onError?.(message);
|
|
75
|
+
const run = await fetchPatzeCodeRun({
|
|
76
|
+
apiBase: input.apiBase,
|
|
77
|
+
headers: input.headers,
|
|
78
|
+
runId: input.runId,
|
|
79
|
+
fetchImpl,
|
|
80
|
+
});
|
|
81
|
+
input.handlers.onComplete(run);
|
|
82
|
+
}
|
|
83
|
+
finally {
|
|
84
|
+
clearTimeout(timer);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
export async function fetchPatzeCodeRun(input) {
|
|
88
|
+
const fetchImpl = input.fetchImpl ?? fetch;
|
|
89
|
+
const url = new URL(`/internal/patze-code/user-task-runs/${encodeURIComponent(input.runId)}`, input.apiBase);
|
|
90
|
+
try {
|
|
91
|
+
const response = await fetchImpl(url, {
|
|
92
|
+
method: "GET",
|
|
93
|
+
headers: { ...input.headers, Accept: "application/json" },
|
|
94
|
+
});
|
|
95
|
+
if (!response.ok) {
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
const body = (await response.json());
|
|
99
|
+
return normalizePatzeCodeRunRecord(body.run);
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
export function parseTraceItem(raw) {
|
|
106
|
+
return parseAgentTraceItem(raw);
|
|
107
|
+
}
|
|
108
|
+
export { isTerminalRunPhase };
|
|
109
|
+
//# sourceMappingURL=run-stream-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-stream-client.js","sourceRoot":"","sources":["../../src/backend/run-stream-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ResolvedConfig } from "../config/config.js";
|
|
2
|
+
import type { FetchLike } from "./preview-client.js";
|
|
3
|
+
export type SessionResolveResult = {
|
|
4
|
+
ok: true;
|
|
5
|
+
userId: string;
|
|
6
|
+
keyLabel?: string;
|
|
7
|
+
} | {
|
|
8
|
+
ok: false;
|
|
9
|
+
message: string;
|
|
10
|
+
httpStatus: number | null;
|
|
11
|
+
};
|
|
12
|
+
export declare function resolvePatzeCodeSessionUser(input: {
|
|
13
|
+
config: ResolvedConfig;
|
|
14
|
+
fetchImpl?: FetchLike;
|
|
15
|
+
timeoutMs?: number;
|
|
16
|
+
}): Promise<SessionResolveResult>;
|
|
17
|
+
//# sourceMappingURL=session-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-client.d.ts","sourceRoot":"","sources":["../../src/backend/session-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAEpD,MAAM,MAAM,oBAAoB,GAC5B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAA;AAE7D,wBAAsB,2BAA2B,CAAC,KAAK,EAAE;IACvD,MAAM,EAAE,cAAc,CAAA;IACtB,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA2DhC"}
|