@patze/code-cli 0.10.6 → 0.15.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 +86 -0
- package/VERSION +1 -1
- package/bin/patze.mjs +0 -0
- package/dist/backend/agent-trace.d.ts +15 -0
- package/dist/backend/agent-trace.d.ts.map +1 -0
- package/dist/backend/agent-trace.js +53 -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/preview-payload.d.ts +15 -3
- package/dist/backend/preview-payload.d.ts.map +1 -1
- package/dist/backend/preview-payload.js +38 -10
- package/dist/backend/preview-payload.js.map +1 -1
- 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/runs-client.d.ts +35 -0
- package/dist/backend/runs-client.d.ts.map +1 -0
- package/dist/backend/runs-client.js +87 -0
- package/dist/backend/runs-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/agent.d.ts +8 -0
- package/dist/cli/commands/agent.d.ts.map +1 -0
- package/dist/cli/commands/agent.js +72 -0
- package/dist/cli/commands/agent.js.map +1 -0
- package/dist/cli/commands/plan.d.ts +3 -0
- package/dist/cli/commands/plan.d.ts.map +1 -1
- package/dist/cli/commands/plan.js +3 -0
- package/dist/cli/commands/plan.js.map +1 -1
- package/dist/cli/commands/runs-format.d.ts +4 -0
- package/dist/cli/commands/runs-format.d.ts.map +1 -0
- package/dist/cli/commands/runs-format.js +50 -0
- package/dist/cli/commands/runs-format.js.map +1 -0
- package/dist/cli/commands/runs.d.ts.map +1 -1
- package/dist/cli/commands/runs.js +78 -8
- package/dist/cli/commands/runs.js.map +1 -1
- 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/help.d.ts.map +1 -1
- package/dist/cli/help.js +7 -3
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/interactive/agent-execute-turn.d.ts +26 -0
- package/dist/cli/interactive/agent-execute-turn.d.ts.map +1 -0
- package/dist/cli/interactive/agent-execute-turn.js +127 -0
- package/dist/cli/interactive/agent-execute-turn.js.map +1 -0
- package/dist/cli/interactive/agent-stream-format.d.ts +24 -0
- package/dist/cli/interactive/agent-stream-format.d.ts.map +1 -0
- package/dist/cli/interactive/agent-stream-format.js +170 -0
- package/dist/cli/interactive/agent-stream-format.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 +4 -3
- package/dist/cli/interactive/agent-turn-format.d.ts.map +1 -1
- package/dist/cli/interactive/agent-turn-format.js +38 -39
- package/dist/cli/interactive/agent-turn-format.js.map +1 -1
- package/dist/cli/interactive/agent-turn.d.ts +5 -1
- package/dist/cli/interactive/agent-turn.d.ts.map +1 -1
- package/dist/cli/interactive/agent-turn.js +84 -7
- package/dist/cli/interactive/agent-turn.js.map +1 -1
- package/dist/cli/interactive/cloud-git.d.ts +13 -0
- package/dist/cli/interactive/cloud-git.d.ts.map +1 -0
- package/dist/cli/interactive/cloud-git.js +43 -0
- package/dist/cli/interactive/cloud-git.js.map +1 -0
- package/dist/cli/interactive/header.d.ts +2 -1
- package/dist/cli/interactive/header.d.ts.map +1 -1
- package/dist/cli/interactive/header.js +9 -1
- package/dist/cli/interactive/header.js.map +1 -1
- package/dist/cli/interactive/launcher.d.ts +3 -0
- package/dist/cli/interactive/launcher.d.ts.map +1 -0
- package/dist/cli/interactive/launcher.js +43 -0
- package/dist/cli/interactive/launcher.js.map +1 -0
- package/dist/cli/interactive/line-editor.d.ts.map +1 -1
- package/dist/cli/interactive/line-editor.js +19 -8
- package/dist/cli/interactive/line-editor.js.map +1 -1
- package/dist/cli/interactive/model-command.d.ts +6 -0
- package/dist/cli/interactive/model-command.d.ts.map +1 -0
- package/dist/cli/interactive/model-command.js +40 -0
- package/dist/cli/interactive/model-command.js.map +1 -0
- package/dist/cli/interactive/run-replay.d.ts +17 -0
- package/dist/cli/interactive/run-replay.d.ts.map +1 -0
- package/dist/cli/interactive/run-replay.js +114 -0
- package/dist/cli/interactive/run-replay.js.map +1 -0
- package/dist/cli/interactive/session-controller.d.ts +22 -0
- package/dist/cli/interactive/session-controller.d.ts.map +1 -0
- package/dist/cli/interactive/session-controller.js +103 -0
- package/dist/cli/interactive/session-controller.js.map +1 -0
- package/dist/cli/interactive/session-store.d.ts +20 -0
- package/dist/cli/interactive/session-store.d.ts.map +1 -0
- package/dist/cli/interactive/session-store.js +88 -0
- package/dist/cli/interactive/session-store.js.map +1 -0
- package/dist/cli/interactive/session.d.ts +30 -0
- package/dist/cli/interactive/session.d.ts.map +1 -1
- package/dist/cli/interactive/session.js +69 -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 +14 -43
- package/dist/cli/interactive/shell.js.map +1 -1
- package/dist/cli/interactive/slash-dispatch.d.ts +7 -1
- package/dist/cli/interactive/slash-dispatch.d.ts.map +1 -1
- package/dist/cli/interactive/slash-dispatch.js +116 -8
- package/dist/cli/interactive/slash-dispatch.js.map +1 -1
- package/dist/cli/interactive/slash-registry.d.ts.map +1 -1
- package/dist/cli/interactive/slash-registry.js +6 -0
- package/dist/cli/interactive/slash-registry.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/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +35 -3
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/one-shot-args.d.ts +9 -0
- package/dist/cli/one-shot-args.d.ts.map +1 -0
- package/dist/cli/one-shot-args.js +35 -0
- package/dist/cli/one-shot-args.js.map +1 -0
- package/dist/cli/read-stdin.d.ts +2 -0
- package/dist/cli/read-stdin.d.ts.map +1 -0
- package/dist/cli/read-stdin.js +12 -0
- package/dist/cli/read-stdin.js.map +1 -0
- package/dist/config/config.d.ts +2 -0
- package/dist/config/config.d.ts.map +1 -1
- package/dist/config/config.js +8 -0
- package/dist/config/config.js.map +1 -1
- package/dist/config/models.d.ts +11 -0
- package/dist/config/models.d.ts.map +1 -0
- package/dist/config/models.js +51 -0
- package/dist/config/models.js.map +1 -0
- package/docs/known-limitations.md +12 -6
- package/package.json +4 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,92 @@ 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.15.0] - 2026-05-29
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **`npm run e2e:cloud`** / **`e2e:cloud:interactive`** / **`e2e:cloud:all`** — dev-server cloud E2E (API + interactive `/cloud` flow).
|
|
12
|
+
- **Cloud execute (opt-in)** — `run-cloud.mjs` + server `FEATURE_PATZE_CODE_CLI_CLOUD_EXECUTE`; `/cloud` validates GitHub `origin`.
|
|
13
|
+
- **OpenTUI shell (optional)** — `PATZE_USE_OPENTUI=1` + Bun; falls back to Node readline shell.
|
|
14
|
+
- **`session-controller`** — shared interactive turn loop for Node shell and OpenTUI.
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
|
|
18
|
+
- Preview payload sends `metadata.execution_mode`, `cloud_repo_url`, `cloud_repo_ref`.
|
|
19
|
+
- Cloud no longer hard-blocked at CLI when server flag enables it.
|
|
20
|
+
|
|
21
|
+
## [0.14.0] - 2026-05-29
|
|
22
|
+
|
|
23
|
+
### Added
|
|
24
|
+
|
|
25
|
+
- **`patze runs list|open [--stream]`** — read-only sync with server run history.
|
|
26
|
+
- **Session persistence** — `~/.patze/sessions/<cwd-hash>.json` restores transcript, model, last run, execution mode.
|
|
27
|
+
- **Multi-turn context** — prior CLI turns forwarded as `metadata.conversation_context` to SDK prompt.
|
|
28
|
+
- **`/local`**, **`/cloud`**, **`/runs`** slash commands (cloud execute blocked honestly in beta).
|
|
29
|
+
|
|
30
|
+
### Changed
|
|
31
|
+
|
|
32
|
+
- **`patze config`** shows resolved config paths (read-only).
|
|
33
|
+
- **`/reset`** starts a fresh conversation epoch without clearing model override.
|
|
34
|
+
|
|
35
|
+
## [0.13.0] - 2026-05-29
|
|
36
|
+
|
|
37
|
+
### Added
|
|
38
|
+
|
|
39
|
+
- **Cookbook one-shot mode:** `patze "task"`, `patze agent "task"`, piped stdin; flags `--model`, `--cwd`, `--dry-run`.
|
|
40
|
+
- **`/model`** session model picker + `metadata.model_hint` wired to server SDK execute.
|
|
41
|
+
- **`/run`** SSE replay (or stored trace fallback) and **`/last`** run summary.
|
|
42
|
+
- **Live tool/thinking upsert** during stream (`[~]`/`[x]`/`[…]` prefixes).
|
|
43
|
+
|
|
44
|
+
### Changed
|
|
45
|
+
|
|
46
|
+
- Interactive header shows current model.
|
|
47
|
+
|
|
48
|
+
## [0.12.0] - 2026-05-29
|
|
49
|
+
|
|
50
|
+
### Added
|
|
51
|
+
|
|
52
|
+
- **Cookbook execute parity (local):** CLI pins `metadata.workspace_cwd` + `cookbook_cli_task` workflow; server runs Cursor SDK against the user's directory (not monorepo root).
|
|
53
|
+
- **Live assistant deltas** during SSE execute (`stream_delta` / partial transcript on TTY).
|
|
54
|
+
- **Streaming subprocess timeout** enforced while PATZE_TRACE lines are still arriving.
|
|
55
|
+
|
|
56
|
+
### Changed
|
|
57
|
+
|
|
58
|
+
- Default SDK execute budget: **600s** (`PATZE_CODE_SDK_EXECUTE_TIMEOUT_SECONDS`).
|
|
59
|
+
- Run stream client default timeout: **600s**.
|
|
60
|
+
|
|
61
|
+
## [0.11.1] - 2026-05-29
|
|
62
|
+
|
|
63
|
+
### Fixed
|
|
64
|
+
|
|
65
|
+
- **Composer cursor** — TTY bordered input placed the cursor one line too high (on the top border). Cursor now aligns inside the input row.
|
|
66
|
+
|
|
67
|
+
## [0.11.0] - 2026-05-29
|
|
68
|
+
|
|
69
|
+
### Added
|
|
70
|
+
|
|
71
|
+
- **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`
|
|
72
|
+
- Live transcript rows during runs: `run` / `tool` / `agent` (trace + final output)
|
|
73
|
+
- Opt-out: `PATZE_CODE_CLI_EXECUTE=0` keeps preview-only behavior
|
|
74
|
+
|
|
75
|
+
### Unchanged
|
|
76
|
+
|
|
77
|
+
- Trust loop: **no auto-apply**; `/diff` → `/approve` → `/apply` still required for workspace writes
|
|
78
|
+
|
|
79
|
+
## [0.10.7] - 2026-05-29
|
|
80
|
+
|
|
81
|
+
### Changed
|
|
82
|
+
|
|
83
|
+
- **Contextual replies** — workspace/folder/auth questions answered from local inspect (real cwd/root paths, file counts) instead of generic deflection
|
|
84
|
+
- **Transcript layout** — cookbook-style `you` / `agent` rows; no repeated status footer on every turn
|
|
85
|
+
- **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))
|
|
86
|
+
- **`/login`** — auto-resolves `user_id` from `GET /internal/patze-code/session` when omitted
|
|
87
|
+
- **`/status --check`** — reports session user mapping when `userId` is not in config
|
|
88
|
+
|
|
89
|
+
### Unchanged
|
|
90
|
+
|
|
91
|
+
- Trust loop: preview-first, no auto-apply, no SSE execute from CLI
|
|
92
|
+
|
|
7
93
|
## [0.10.6] - 2026-05-29
|
|
8
94
|
|
|
9
95
|
### Changed (composer + turn UX — no trust-loop behavior change)
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.
|
|
1
|
+
0.15.0
|
package/bin/patze.mjs
CHANGED
|
File without changes
|
|
@@ -0,0 +1,15 @@
|
|
|
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
|
+
streamDelta?: boolean;
|
|
11
|
+
};
|
|
12
|
+
export declare function parseAgentTraceItem(raw: unknown): AgentTraceEvent | null;
|
|
13
|
+
export declare function isIgnorableStatusTrace(event: AgentTraceEvent): boolean;
|
|
14
|
+
export declare function excerptTraceText(text: string, max?: number): string;
|
|
15
|
+
//# 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;IACjB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB,CAAA;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,GAAG,IAAI,CA0BxE;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,53 @@
|
|
|
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
|
+
streamDelta: record.stream_delta === true,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export function isIgnorableStatusTrace(event) {
|
|
27
|
+
if (event.kind !== "status") {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
const title = event.title.trim().toUpperCase();
|
|
31
|
+
const detail = (event.detail ?? "").trim().toUpperCase();
|
|
32
|
+
if (!title && !detail) {
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
return (title === "RUNNING" ||
|
|
36
|
+
title === "STATUS" ||
|
|
37
|
+
title === "PENDING" ||
|
|
38
|
+
title === "QUEUED" ||
|
|
39
|
+
title.includes("RUNNING") ||
|
|
40
|
+
detail === "RUNNING" ||
|
|
41
|
+
detail === "PENDING");
|
|
42
|
+
}
|
|
43
|
+
export function excerptTraceText(text, max = 240) {
|
|
44
|
+
const normalized = text.replace(/\r\n/g, "\n").replace(/\s+/g, " ").trim();
|
|
45
|
+
if (!normalized) {
|
|
46
|
+
return "";
|
|
47
|
+
}
|
|
48
|
+
if (normalized.length <= max) {
|
|
49
|
+
return normalized;
|
|
50
|
+
}
|
|
51
|
+
return `${normalized.slice(0, max - 1)}…`;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=agent-trace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-trace.js","sourceRoot":"","sources":["../../src/backend/agent-trace.ts"],"names":[],"mappings":"AAaA,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;QAC3E,WAAW,EAAE,MAAM,CAAC,YAAY,KAAK,IAAI;KAC1C,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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"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { ResolvedConfig } from "../config/config.js";
|
|
2
|
+
export declare const CLI_PINNED_WORKSPACE_SCOPE = "cli-local";
|
|
3
|
+
export declare const CLI_WORKFLOW_MODE = "cookbook_cli_task";
|
|
2
4
|
export type PreviewTaskPayload = {
|
|
3
5
|
owner_user_id: string;
|
|
4
6
|
task_input: {
|
|
@@ -23,6 +25,12 @@ export type PreviewTaskPayload = {
|
|
|
23
25
|
canary_requested: false;
|
|
24
26
|
metadata: {
|
|
25
27
|
source: string;
|
|
28
|
+
workspace_cwd?: string;
|
|
29
|
+
model_hint?: string;
|
|
30
|
+
conversation_context?: string;
|
|
31
|
+
execution_mode?: "local" | "cloud";
|
|
32
|
+
cloud_repo_url?: string;
|
|
33
|
+
cloud_repo_ref?: string;
|
|
26
34
|
};
|
|
27
35
|
repo_metadata: {
|
|
28
36
|
repo: string;
|
|
@@ -33,7 +41,7 @@ export type PreviewTaskPayload = {
|
|
|
33
41
|
repo_allowlist: string[];
|
|
34
42
|
no_auto_apply: true;
|
|
35
43
|
auto_apply_requested: false;
|
|
36
|
-
cloud_requested:
|
|
44
|
+
cloud_requested: boolean;
|
|
37
45
|
pr_requested: false;
|
|
38
46
|
public_route_requested: false;
|
|
39
47
|
ui_requested: false;
|
|
@@ -42,9 +50,13 @@ export type PreviewTaskPayload = {
|
|
|
42
50
|
require_review_artifact_for_canary: true;
|
|
43
51
|
};
|
|
44
52
|
};
|
|
45
|
-
export
|
|
53
|
+
export type PreviewBuildOptions = {
|
|
46
54
|
objective: string;
|
|
47
55
|
cwd: string;
|
|
48
56
|
config: ResolvedConfig;
|
|
49
|
-
|
|
57
|
+
modelHint?: string | null;
|
|
58
|
+
conversationContext?: string | null;
|
|
59
|
+
executionMode?: "local" | "cloud";
|
|
60
|
+
};
|
|
61
|
+
export declare function buildPreviewPayload(input: PreviewBuildOptions): PreviewTaskPayload;
|
|
50
62
|
//# sourceMappingURL=preview-payload.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preview-payload.d.ts","sourceRoot":"","sources":["../../src/backend/preview-payload.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"preview-payload.d.ts","sourceRoot":"","sources":["../../src/backend/preview-payload.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAIzD,eAAO,MAAM,0BAA0B,cAAc,CAAA;AACrD,eAAO,MAAM,iBAAiB,sBAAsB,CAAA;AAEpD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE;QACV,SAAS,EAAE,MAAM,CAAA;QACjB,aAAa,EAAE,MAAM,CAAA;QACrB,OAAO,EAAE,MAAM,CAAA;QACf,eAAe,EAAE,MAAM,CAAA;QACvB,aAAa,EAAE,MAAM,EAAE,CAAA;QACvB,YAAY,EAAE,MAAM,EAAE,CAAA;QACtB,OAAO,EAAE;YACP,MAAM,EAAE,SAAS,CAAA;YACjB,cAAc,EAAE,MAAM,CAAA;YACtB,iBAAiB,EAAE,MAAM,CAAA;SAC1B,CAAA;QACD,oBAAoB,EAAE;YACpB,QAAQ,EAAE,IAAI,CAAA;YACd,MAAM,EAAE,MAAM,CAAA;YACd,sBAAsB,EAAE,MAAM,CAAA;SAC/B,CAAA;QACD,kBAAkB,EAAE,MAAM,EAAE,CAAA;QAC5B,cAAc,EAAE,MAAM,EAAE,CAAA;QACxB,gBAAgB,EAAE,KAAK,CAAA;QACvB,QAAQ,EAAE;YACR,MAAM,EAAE,MAAM,CAAA;YACd,aAAa,CAAC,EAAE,MAAM,CAAA;YACtB,UAAU,CAAC,EAAE,MAAM,CAAA;YACnB,oBAAoB,CAAC,EAAE,MAAM,CAAA;YAC7B,cAAc,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;YAClC,cAAc,CAAC,EAAE,MAAM,CAAA;YACvB,cAAc,CAAC,EAAE,MAAM,CAAA;SACxB,CAAA;QACD,aAAa,EAAE;YAAE,IAAI,EAAE,MAAM,CAAA;SAAE,CAAA;KAChC,CAAA;IACD,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAA;QACf,cAAc,EAAE,MAAM,EAAE,CAAA;QACxB,aAAa,EAAE,IAAI,CAAA;QACnB,oBAAoB,EAAE,KAAK,CAAA;QAC3B,eAAe,EAAE,OAAO,CAAA;QACxB,YAAY,EAAE,KAAK,CAAA;QACnB,sBAAsB,EAAE,KAAK,CAAA;QAC7B,YAAY,EAAE,KAAK,CAAA;QACnB,uBAAuB,EAAE,KAAK,CAAA;QAC9B,gCAAgC,EAAE,KAAK,CAAA;QACvC,kCAAkC,EAAE,IAAI,CAAA;KACzC,CAAA;CACF,CAAA;AAED,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,cAAc,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,aAAa,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;CAClC,CAAA;AA6CD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,GAAG,kBAAkB,CA4ElF"}
|
|
@@ -2,6 +2,9 @@ import { createHash } from "node:crypto";
|
|
|
2
2
|
import { existsSync, readFileSync } from "node:fs";
|
|
3
3
|
import { basename, relative, resolve } from "node:path";
|
|
4
4
|
import { guessWorkspaceRoot } from "../runtime/workspace.js";
|
|
5
|
+
import { detectCloudRepository } from "../cli/interactive/cloud-git.js";
|
|
6
|
+
export const CLI_PINNED_WORKSPACE_SCOPE = "cli-local";
|
|
7
|
+
export const CLI_WORKFLOW_MODE = "cookbook_cli_task";
|
|
5
8
|
const BROAD_SCOPES = new Set(["", ".", "./", "/", "**", "*", "repo", "workspace", "all"]);
|
|
6
9
|
function sha256Hex(value) {
|
|
7
10
|
return createHash("sha256").update(value, "utf8").digest("hex");
|
|
@@ -39,23 +42,48 @@ function resolveAllowedPaths(config, scope) {
|
|
|
39
42
|
if (!isBroadScope(scope)) {
|
|
40
43
|
return [scope];
|
|
41
44
|
}
|
|
42
|
-
return ["
|
|
45
|
+
return ["."];
|
|
43
46
|
}
|
|
44
47
|
export function buildPreviewPayload(input) {
|
|
45
|
-
const
|
|
46
|
-
const
|
|
47
|
-
const
|
|
48
|
+
const absoluteCwd = resolve(input.cwd);
|
|
49
|
+
const root = guessWorkspaceRoot(absoluteCwd);
|
|
50
|
+
const scopeRaw = relative(root, absoluteCwd).replace(/\\/g, "/") || ".";
|
|
51
|
+
const pinnedWorkspace = isBroadScope(scopeRaw);
|
|
52
|
+
const workspaceScope = pinnedWorkspace ? CLI_PINNED_WORKSPACE_SCOPE : scopeRaw;
|
|
48
53
|
const repoId = resolveRepoId(root);
|
|
49
|
-
const allowedPaths = resolveAllowedPaths(input.config,
|
|
54
|
+
const allowedPaths = pinnedWorkspace ? ["."] : resolveAllowedPaths(input.config, workspaceScope);
|
|
50
55
|
const deniedPaths = input.config.defaultDeny.map((pattern) => pattern.replace(/^\*\*\//, "").replace(/\/\*\*$/, ""));
|
|
51
56
|
const userDigest = sha256Hex(`patze-code-cli:user:${input.config.userId ?? "anonymous"}`);
|
|
57
|
+
const modelHint = input.modelHint?.trim();
|
|
58
|
+
const conversationContext = input.conversationContext?.trim() ?? "";
|
|
59
|
+
const executionMode = input.executionMode ?? "local";
|
|
60
|
+
const metadata = {
|
|
61
|
+
source: "patze_code_cli",
|
|
62
|
+
workspace_cwd: absoluteCwd,
|
|
63
|
+
};
|
|
64
|
+
if (modelHint) {
|
|
65
|
+
metadata.model_hint = modelHint;
|
|
66
|
+
}
|
|
67
|
+
if (conversationContext) {
|
|
68
|
+
metadata.conversation_context = conversationContext.slice(0, 4000);
|
|
69
|
+
}
|
|
70
|
+
metadata.execution_mode = executionMode;
|
|
71
|
+
if (executionMode === "cloud") {
|
|
72
|
+
const cloud = detectCloudRepository(absoluteCwd);
|
|
73
|
+
if (cloud.ok) {
|
|
74
|
+
metadata.cloud_repo_url = cloud.url;
|
|
75
|
+
if (cloud.startingRef) {
|
|
76
|
+
metadata.cloud_repo_ref = cloud.startingRef;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
52
80
|
return {
|
|
53
81
|
owner_user_id: input.config.userId ?? "",
|
|
54
82
|
task_input: {
|
|
55
83
|
objective: input.objective,
|
|
56
|
-
workflow_mode:
|
|
84
|
+
workflow_mode: CLI_WORKFLOW_MODE,
|
|
57
85
|
repo_id: repoId,
|
|
58
|
-
workspace_scope:
|
|
86
|
+
workspace_scope: workspaceScope,
|
|
59
87
|
allowed_paths: allowedPaths,
|
|
60
88
|
denied_paths: deniedPaths.length ? deniedPaths : [".env", "node_modules", ".git"],
|
|
61
89
|
consent: {
|
|
@@ -69,9 +97,9 @@ export function buildPreviewPayload(input) {
|
|
|
69
97
|
review_artifact_digest: "",
|
|
70
98
|
},
|
|
71
99
|
expected_artifacts: ["preview"],
|
|
72
|
-
rollback_notes: ["Patze CLI preview
|
|
100
|
+
rollback_notes: ["Patze CLI preview + execute — no auto-apply."],
|
|
73
101
|
canary_requested: false,
|
|
74
|
-
metadata
|
|
102
|
+
metadata,
|
|
75
103
|
repo_metadata: { repo: repoId },
|
|
76
104
|
},
|
|
77
105
|
policy: {
|
|
@@ -79,7 +107,7 @@ export function buildPreviewPayload(input) {
|
|
|
79
107
|
repo_allowlist: [repoId],
|
|
80
108
|
no_auto_apply: true,
|
|
81
109
|
auto_apply_requested: false,
|
|
82
|
-
cloud_requested:
|
|
110
|
+
cloud_requested: executionMode === "cloud",
|
|
83
111
|
pr_requested: false,
|
|
84
112
|
public_route_requested: false,
|
|
85
113
|
ui_requested: false,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preview-payload.js","sourceRoot":"","sources":["../../src/backend/preview-payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;
|
|
1
|
+
{"version":3,"file":"preview-payload.js","sourceRoot":"","sources":["../../src/backend/preview-payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAGvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAA;AAEvE,MAAM,CAAC,MAAM,0BAA0B,GAAG,WAAW,CAAA;AACrD,MAAM,CAAC,MAAM,iBAAiB,GAAG,mBAAmB,CAAA;AA2DpD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,CAAA;AAEzF,SAAS,SAAS,CAAC,KAAa;IAC9B,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AACjE,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAA;IAC/B,IAAI,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1F,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,CAAC,CAAA;AAC7F,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;IAC7C,IAAI,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAuB,CAAA;YAC9E,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC1D,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;YACjE,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAA;AACvB,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAsB,EAAE,KAAa;IAChE,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAA;IAC5E,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;QACtB,OAAO,UAAU,CAAA;IACnB,CAAC;IACD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,KAAK,CAAC,CAAA;IAChB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,CAAA;AACd,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAA0B;IAC5D,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACtC,MAAM,IAAI,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAA;IAC5C,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,GAAG,CAAA;IACvE,MAAM,eAAe,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAA;IAC9C,MAAM,cAAc,GAAG,eAAe,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,QAAQ,CAAA;IAC9E,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,CAAA;IAClC,MAAM,YAAY,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IAChG,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAC3D,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CACtD,CAAA;IAED,MAAM,UAAU,GAAG,SAAS,CAAC,uBAAuB,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,WAAW,EAAE,CAAC,CAAA;IACzF,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,CAAA;IACzC,MAAM,mBAAmB,GAAG,KAAK,CAAC,mBAAmB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;IACnE,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,IAAI,OAAO,CAAA;IACpD,MAAM,QAAQ,GAAiD;QAC7D,MAAM,EAAE,gBAAgB;QACxB,aAAa,EAAE,WAAW;KAC3B,CAAA;IACD,IAAI,SAAS,EAAE,CAAC;QACd,QAAQ,CAAC,UAAU,GAAG,SAAS,CAAA;IACjC,CAAC;IACD,IAAI,mBAAmB,EAAE,CAAC;QACxB,QAAQ,CAAC,oBAAoB,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;IACpE,CAAC;IACD,QAAQ,CAAC,cAAc,GAAG,aAAa,CAAA;IACvC,IAAI,aAAa,KAAK,OAAO,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAA;QAChD,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;YACb,QAAQ,CAAC,cAAc,GAAG,KAAK,CAAC,GAAG,CAAA;YACnC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;gBACtB,QAAQ,CAAC,cAAc,GAAG,KAAK,CAAC,WAAW,CAAA;YAC7C,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE;QACxC,UAAU,EAAE;YACV,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,aAAa,EAAE,iBAAiB;YAChC,OAAO,EAAE,MAAM;YACf,eAAe,EAAE,cAAc;YAC/B,aAAa,EAAE,YAAY;YAC3B,YAAY,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC;YACjF,OAAO,EAAE;gBACP,MAAM,EAAE,SAAS;gBACjB,cAAc,EAAE,SAAS,CAAC,mCAAmC,CAAC;gBAC9D,iBAAiB,EAAE,UAAU;aAC9B;YACD,oBAAoB,EAAE;gBACpB,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,uBAAuB;gBAC/B,sBAAsB,EAAE,EAAE;aAC3B;YACD,kBAAkB,EAAE,CAAC,SAAS,CAAC;YAC/B,cAAc,EAAE,CAAC,8CAA8C,CAAC;YAChE,gBAAgB,EAAE,KAAK;YACvB,QAAQ;YACR,aAAa,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;SAChC;QACD,MAAM,EAAE;YACN,OAAO,EAAE,MAAM;YACf,cAAc,EAAE,CAAC,MAAM,CAAC;YACxB,aAAa,EAAE,IAAI;YACnB,oBAAoB,EAAE,KAAK;YAC3B,eAAe,EAAE,aAAa,KAAK,OAAO;YAC1C,YAAY,EAAE,KAAK;YACnB,sBAAsB,EAAE,KAAK;YAC7B,YAAY,EAAE,KAAK;YACnB,uBAAuB,EAAE,KAAK;YAC9B,gCAAgC,EAAE,KAAK;YACvC,kCAAkC,EAAE,IAAI;SACzC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -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"}
|