@patze/code-cli 0.11.0 → 0.16.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 +78 -0
- package/VERSION +1 -1
- package/dist/backend/agent-trace.d.ts +1 -0
- package/dist/backend/agent-trace.d.ts.map +1 -1
- package/dist/backend/agent-trace.js +1 -0
- package/dist/backend/agent-trace.js.map +1 -1
- 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-stream-client.js +1 -1
- 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/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/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 +4 -0
- package/dist/cli/interactive/agent-execute-turn.d.ts.map +1 -1
- package/dist/cli/interactive/agent-execute-turn.js +14 -1
- package/dist/cli/interactive/agent-execute-turn.js.map +1 -1
- package/dist/cli/interactive/agent-stream-format.d.ts +8 -0
- package/dist/cli/interactive/agent-stream-format.d.ts.map +1 -1
- package/dist/cli/interactive/agent-stream-format.js +88 -5
- package/dist/cli/interactive/agent-stream-format.js.map +1 -1
- package/dist/cli/interactive/agent-turn.d.ts +1 -0
- package/dist/cli/interactive/agent-turn.d.ts.map +1 -1
- package/dist/cli/interactive/agent-turn.js +18 -1
- 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 +53 -0
- package/dist/cli/interactive/launcher.js.map +1 -0
- package/dist/cli/interactive/line-editor.d.ts +2 -1
- package/dist/cli/interactive/line-editor.d.ts.map +1 -1
- package/dist/cli/interactive/line-editor.js +22 -9
- 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 +27 -0
- package/dist/cli/interactive/session.d.ts.map +1 -1
- package/dist/cli/interactive/session.js +61 -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 -51
- package/dist/cli/interactive/shell.js.map +1 -1
- package/dist/cli/interactive/slash-dispatch.d.ts +3 -0
- package/dist/cli/interactive/slash-dispatch.d.ts.map +1 -1
- package/dist/cli/interactive/slash-dispatch.js +94 -1
- 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/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 -7
- package/package.json +4 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,84 @@ 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.16.0] - 2026-05-29
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **Cookbook-style OpenTUI (default)** — transcript scroll, slash command picker, model picker, markdown assistant rendering; uses Patze `session-controller` + trust loop.
|
|
12
|
+
- **`opentui/src/App.tsx`** — port of Cursor cookbook TUI layout wired to Patze server preview/execute path.
|
|
13
|
+
- **`tests/opentui-cookbook.test.mjs`** — line parse + transcript render smoke.
|
|
14
|
+
|
|
15
|
+
### Changed
|
|
16
|
+
|
|
17
|
+
- **`patze` (no args)** defaults to OpenTUI when Bun + opentui deps are installed; opt out with `PATZE_USE_JS=1` or `PATZE_USE_OPENTUI=0`.
|
|
18
|
+
|
|
19
|
+
## [0.15.1] - 2026-05-29
|
|
20
|
+
|
|
21
|
+
### Fixed
|
|
22
|
+
|
|
23
|
+
- **Composer redraw** — TTY bordered input no longer stacks ghost boxes on each keystroke (full-frame erase before redraw).
|
|
24
|
+
|
|
25
|
+
## [0.15.0] - 2026-05-29
|
|
26
|
+
|
|
27
|
+
### Added
|
|
28
|
+
|
|
29
|
+
- **`npm run e2e:cloud`** / **`e2e:cloud:interactive`** / **`e2e:cloud:all`** — dev-server cloud E2E (API + interactive `/cloud` flow).
|
|
30
|
+
- **Cloud execute (opt-in)** — `run-cloud.mjs` + server `FEATURE_PATZE_CODE_CLI_CLOUD_EXECUTE`; `/cloud` validates GitHub `origin`.
|
|
31
|
+
- **OpenTUI shell (optional)** — `PATZE_USE_OPENTUI=1` + Bun; falls back to Node readline shell.
|
|
32
|
+
- **`session-controller`** — shared interactive turn loop for Node shell and OpenTUI.
|
|
33
|
+
|
|
34
|
+
### Changed
|
|
35
|
+
|
|
36
|
+
- Preview payload sends `metadata.execution_mode`, `cloud_repo_url`, `cloud_repo_ref`.
|
|
37
|
+
- Cloud no longer hard-blocked at CLI when server flag enables it.
|
|
38
|
+
|
|
39
|
+
## [0.14.0] - 2026-05-29
|
|
40
|
+
|
|
41
|
+
### Added
|
|
42
|
+
|
|
43
|
+
- **`patze runs list|open [--stream]`** — read-only sync with server run history.
|
|
44
|
+
- **Session persistence** — `~/.patze/sessions/<cwd-hash>.json` restores transcript, model, last run, execution mode.
|
|
45
|
+
- **Multi-turn context** — prior CLI turns forwarded as `metadata.conversation_context` to SDK prompt.
|
|
46
|
+
- **`/local`**, **`/cloud`**, **`/runs`** slash commands (cloud execute blocked honestly in beta).
|
|
47
|
+
|
|
48
|
+
### Changed
|
|
49
|
+
|
|
50
|
+
- **`patze config`** shows resolved config paths (read-only).
|
|
51
|
+
- **`/reset`** starts a fresh conversation epoch without clearing model override.
|
|
52
|
+
|
|
53
|
+
## [0.13.0] - 2026-05-29
|
|
54
|
+
|
|
55
|
+
### Added
|
|
56
|
+
|
|
57
|
+
- **Cookbook one-shot mode:** `patze "task"`, `patze agent "task"`, piped stdin; flags `--model`, `--cwd`, `--dry-run`.
|
|
58
|
+
- **`/model`** session model picker + `metadata.model_hint` wired to server SDK execute.
|
|
59
|
+
- **`/run`** SSE replay (or stored trace fallback) and **`/last`** run summary.
|
|
60
|
+
- **Live tool/thinking upsert** during stream (`[~]`/`[x]`/`[…]` prefixes).
|
|
61
|
+
|
|
62
|
+
### Changed
|
|
63
|
+
|
|
64
|
+
- Interactive header shows current model.
|
|
65
|
+
|
|
66
|
+
## [0.12.0] - 2026-05-29
|
|
67
|
+
|
|
68
|
+
### Added
|
|
69
|
+
|
|
70
|
+
- **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).
|
|
71
|
+
- **Live assistant deltas** during SSE execute (`stream_delta` / partial transcript on TTY).
|
|
72
|
+
- **Streaming subprocess timeout** enforced while PATZE_TRACE lines are still arriving.
|
|
73
|
+
|
|
74
|
+
### Changed
|
|
75
|
+
|
|
76
|
+
- Default SDK execute budget: **600s** (`PATZE_CODE_SDK_EXECUTE_TIMEOUT_SECONDS`).
|
|
77
|
+
- Run stream client default timeout: **600s**.
|
|
78
|
+
|
|
79
|
+
## [0.11.1] - 2026-05-29
|
|
80
|
+
|
|
81
|
+
### Fixed
|
|
82
|
+
|
|
83
|
+
- **Composer cursor** — TTY bordered input placed the cursor one line too high (on the top border). Cursor now aligns inside the input row.
|
|
84
|
+
|
|
7
85
|
## [0.11.0] - 2026-05-29
|
|
8
86
|
|
|
9
87
|
### Added
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.
|
|
1
|
+
0.16.0
|
|
@@ -7,6 +7,7 @@ export type AgentTraceEvent = {
|
|
|
7
7
|
detail?: string;
|
|
8
8
|
status?: AgentTraceStatus;
|
|
9
9
|
toolName?: string;
|
|
10
|
+
streamDelta?: boolean;
|
|
10
11
|
};
|
|
11
12
|
export declare function parseAgentTraceItem(raw: unknown): AgentTraceEvent | null;
|
|
12
13
|
export declare function isIgnorableStatusTrace(event: AgentTraceEvent): boolean;
|
|
@@ -1 +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;
|
|
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"}
|
|
@@ -20,6 +20,7 @@ export function parseAgentTraceItem(raw) {
|
|
|
20
20
|
detail: typeof record.detail === "string" ? record.detail : undefined,
|
|
21
21
|
status,
|
|
22
22
|
toolName: typeof record.toolName === "string" ? record.toolName : undefined,
|
|
23
|
+
streamDelta: record.stream_delta === true,
|
|
23
24
|
};
|
|
24
25
|
}
|
|
25
26
|
export function isIgnorableStatusTrace(event) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-trace.js","sourceRoot":"","sources":["../../src/backend/agent-trace.ts"],"names":[],"mappings":"
|
|
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"}
|
|
@@ -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"}
|
|
@@ -5,7 +5,7 @@ export async function streamPatzeCodeRun(input) {
|
|
|
5
5
|
const fetchImpl = input.fetchImpl ?? fetch;
|
|
6
6
|
const url = new URL(`/internal/patze-code/user-task-runs/${encodeURIComponent(input.runId)}/stream`, input.apiBase);
|
|
7
7
|
const controller = new AbortController();
|
|
8
|
-
const timer = setTimeout(() => controller.abort(), input.timeoutMs ??
|
|
8
|
+
const timer = setTimeout(() => controller.abort(), input.timeoutMs ?? 600_000);
|
|
9
9
|
try {
|
|
10
10
|
const response = await fetchImpl(url, {
|
|
11
11
|
method: "GET",
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { ResolvedConfig } from "../config/config.js";
|
|
2
|
+
import type { FetchLike } from "./preview-client.js";
|
|
3
|
+
import { type PatzeCodeRunRecord } from "./run-record.js";
|
|
4
|
+
export type PatzeCodeRunListItem = PatzeCodeRunRecord & {
|
|
5
|
+
created_at: string;
|
|
6
|
+
updated_at: string;
|
|
7
|
+
workflow_mode: string;
|
|
8
|
+
outcome_summary: string;
|
|
9
|
+
};
|
|
10
|
+
export type ListRunsResult = {
|
|
11
|
+
ok: true;
|
|
12
|
+
runs: PatzeCodeRunListItem[];
|
|
13
|
+
} | {
|
|
14
|
+
ok: false;
|
|
15
|
+
kind: "auth" | "network" | "blocked";
|
|
16
|
+
message: string;
|
|
17
|
+
};
|
|
18
|
+
export declare function fetchPatzeCodeRuns(input: {
|
|
19
|
+
apiBase: string;
|
|
20
|
+
headers: Record<string, string>;
|
|
21
|
+
limit?: number;
|
|
22
|
+
fetchImpl?: FetchLike;
|
|
23
|
+
}): Promise<ListRunsResult>;
|
|
24
|
+
export declare function fetchPatzeCodeRunDetail(input: {
|
|
25
|
+
apiBase: string;
|
|
26
|
+
headers: Record<string, string>;
|
|
27
|
+
runId: string;
|
|
28
|
+
fetchImpl?: FetchLike;
|
|
29
|
+
}): Promise<PatzeCodeRunListItem | null>;
|
|
30
|
+
export declare function listPatzeCodeRunsForConfig(input: {
|
|
31
|
+
config: ResolvedConfig;
|
|
32
|
+
limit?: number;
|
|
33
|
+
fetchImpl?: FetchLike;
|
|
34
|
+
}): Promise<ListRunsResult>;
|
|
35
|
+
//# sourceMappingURL=runs-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runs-client.d.ts","sourceRoot":"","sources":["../../src/backend/runs-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAEpD,OAAO,EAEL,KAAK,kBAAkB,EACxB,MAAM,iBAAiB,CAAA;AAExB,MAAM,MAAM,oBAAoB,GAAG,kBAAkB,GAAG;IACtD,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,MAAM,CAAA;IACrB,eAAe,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,oBAAoB,EAAE,CAAA;CAAE,GAC1C;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AAiBxE,wBAAsB,kBAAkB,CAAC,KAAK,EAAE;IAC9C,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB,GAAG,OAAO,CAAC,cAAc,CAAC,CAyC1B;AAED,wBAAsB,uBAAuB,CAAC,KAAK,EAAE;IACnD,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,oBAAoB,GAAG,IAAI,CAAC,CAmBvC;AAED,wBAAsB,0BAA0B,CAAC,KAAK,EAAE;IACtD,MAAM,EAAE,cAAc,CAAA;IACtB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB,GAAG,OAAO,CAAC,cAAc,CAAC,CAY1B"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { PatzeBackendClient } from "./client.js";
|
|
2
|
+
import { normalizePatzeCodeRunRecord, } from "./run-record.js";
|
|
3
|
+
function normalizeRunListItem(raw) {
|
|
4
|
+
const base = normalizePatzeCodeRunRecord(raw);
|
|
5
|
+
if (!base) {
|
|
6
|
+
return null;
|
|
7
|
+
}
|
|
8
|
+
const row = raw;
|
|
9
|
+
return {
|
|
10
|
+
...base,
|
|
11
|
+
created_at: String(row.created_at ?? ""),
|
|
12
|
+
updated_at: String(row.updated_at ?? ""),
|
|
13
|
+
workflow_mode: String(row.workflow_mode ?? ""),
|
|
14
|
+
outcome_summary: String(row.outcome_summary ?? base.outcome_summary ?? ""),
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export async function fetchPatzeCodeRuns(input) {
|
|
18
|
+
const fetchImpl = input.fetchImpl ?? fetch;
|
|
19
|
+
const url = new URL("/internal/patze-code/user-task-runs", input.apiBase);
|
|
20
|
+
if (input.limit) {
|
|
21
|
+
url.searchParams.set("limit", String(input.limit));
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
const response = await fetchImpl(url, {
|
|
25
|
+
method: "GET",
|
|
26
|
+
headers: { ...input.headers, Accept: "application/json" },
|
|
27
|
+
});
|
|
28
|
+
const body = (await response.json().catch(() => ({})));
|
|
29
|
+
if (response.status === 401 || response.status === 403) {
|
|
30
|
+
return {
|
|
31
|
+
ok: false,
|
|
32
|
+
kind: response.status === 401 ? "auth" : "blocked",
|
|
33
|
+
message: String(body.error_code ?? body.detail ?? `runs list failed (${response.status})`),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
if (!response.ok) {
|
|
37
|
+
return {
|
|
38
|
+
ok: false,
|
|
39
|
+
kind: "network",
|
|
40
|
+
message: `runs list failed (${response.status})`,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
const runsRaw = body.runs;
|
|
44
|
+
const runs = Array.isArray(runsRaw)
|
|
45
|
+
? runsRaw
|
|
46
|
+
.map((row) => normalizeRunListItem(row))
|
|
47
|
+
.filter((row) => row !== null)
|
|
48
|
+
: [];
|
|
49
|
+
return { ok: true, runs };
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
const message = error instanceof Error ? error.message : "runs list failed";
|
|
53
|
+
return { ok: false, kind: "network", message };
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export async function fetchPatzeCodeRunDetail(input) {
|
|
57
|
+
const fetchImpl = input.fetchImpl ?? fetch;
|
|
58
|
+
const url = new URL(`/internal/patze-code/user-task-runs/${encodeURIComponent(input.runId)}`, input.apiBase);
|
|
59
|
+
try {
|
|
60
|
+
const response = await fetchImpl(url, {
|
|
61
|
+
method: "GET",
|
|
62
|
+
headers: { ...input.headers, Accept: "application/json" },
|
|
63
|
+
});
|
|
64
|
+
if (!response.ok) {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
const body = (await response.json());
|
|
68
|
+
return normalizeRunListItem(body.run);
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
export async function listPatzeCodeRunsForConfig(input) {
|
|
75
|
+
const config = input.config;
|
|
76
|
+
if (!config.api || !config.token || !config.userId) {
|
|
77
|
+
return { ok: false, kind: "auth", message: "Auth incomplete — run patze login first." };
|
|
78
|
+
}
|
|
79
|
+
const client = new PatzeBackendClient(config);
|
|
80
|
+
return fetchPatzeCodeRuns({
|
|
81
|
+
apiBase: client.baseUrl,
|
|
82
|
+
headers: client.buildHeaders(),
|
|
83
|
+
limit: input.limit,
|
|
84
|
+
fetchImpl: input.fetchImpl,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=runs-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runs-client.js","sourceRoot":"","sources":["../../src/backend/runs-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { FetchLike } from "../../backend/preview-client.js";
|
|
2
|
+
import type { OneShotAgentOptions } from "../one-shot-args.js";
|
|
3
|
+
import type { Printer } from "../ui/printer.js";
|
|
4
|
+
import type { ParsedArgv } from "../argv.js";
|
|
5
|
+
export declare function runOneShotAgent(options: OneShotAgentOptions, printer: Printer, fetchImpl?: FetchLike): Promise<number>;
|
|
6
|
+
export declare function resolveOneShotPrompt(options: OneShotAgentOptions | null, argv: ParsedArgv): Promise<OneShotAgentOptions | null>;
|
|
7
|
+
export declare function formatOneShotModelLine(cwd: string): string;
|
|
8
|
+
//# sourceMappingURL=agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAA;AAIhE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAC9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAI/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAG5C,wBAAsB,eAAe,CACnC,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,OAAO,EAChB,SAAS,CAAC,EAAE,SAAS,GACpB,OAAO,CAAC,MAAM,CAAC,CA4CjB;AAED,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,mBAAmB,GAAG,IAAI,EACnC,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAsBrC;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI1D"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { loadConfig } from "../../config/config.js";
|
|
2
|
+
import { resolveEffectiveModel } from "../../config/models.js";
|
|
3
|
+
import { readStdinPrompt } from "../read-stdin.js";
|
|
4
|
+
import { InteractiveSession } from "../interactive/session.js";
|
|
5
|
+
import { runAgentTurn } from "../interactive/agent-turn.js";
|
|
6
|
+
import { runGoal } from "./goal.js";
|
|
7
|
+
import { flagBoolean } from "../argv.js";
|
|
8
|
+
export async function runOneShotAgent(options, printer, fetchImpl) {
|
|
9
|
+
const session = new InteractiveSession(options.cwd);
|
|
10
|
+
if (options.model) {
|
|
11
|
+
session.setModelOverride(options.model);
|
|
12
|
+
}
|
|
13
|
+
if (options.dryRun) {
|
|
14
|
+
const parsed = {
|
|
15
|
+
command: ["goal"],
|
|
16
|
+
positional: [options.prompt],
|
|
17
|
+
flags: new Map([["dry-run", true]]),
|
|
18
|
+
raw: [],
|
|
19
|
+
};
|
|
20
|
+
return runGoal(parsed, printer);
|
|
21
|
+
}
|
|
22
|
+
let partialActive = false;
|
|
23
|
+
const canStreamPartials = Boolean(process.stdout.isTTY);
|
|
24
|
+
const result = await runAgentTurn(session, options.prompt, {
|
|
25
|
+
cwd: options.cwd,
|
|
26
|
+
fetchImpl,
|
|
27
|
+
onTranscriptLine: (line) => {
|
|
28
|
+
printer.line(line);
|
|
29
|
+
},
|
|
30
|
+
onTranscriptPartial: canStreamPartials
|
|
31
|
+
? (chunk) => {
|
|
32
|
+
partialActive = true;
|
|
33
|
+
process.stdout.write(chunk);
|
|
34
|
+
}
|
|
35
|
+
: undefined,
|
|
36
|
+
});
|
|
37
|
+
if (partialActive) {
|
|
38
|
+
process.stdout.write("\n");
|
|
39
|
+
}
|
|
40
|
+
if (!result.streamed) {
|
|
41
|
+
for (const line of result.lines) {
|
|
42
|
+
printer.line(line);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return result.exitCode;
|
|
46
|
+
}
|
|
47
|
+
export async function resolveOneShotPrompt(options, argv) {
|
|
48
|
+
if (options?.prompt) {
|
|
49
|
+
return options;
|
|
50
|
+
}
|
|
51
|
+
if (argv.command.length > 0) {
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
const stdinPrompt = await readStdinPrompt();
|
|
55
|
+
if (!stdinPrompt) {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
const cwdFlag = argv.flags.get("cwd") ?? argv.flags.get("C");
|
|
59
|
+
const modelFlag = argv.flags.get("model") ?? argv.flags.get("m");
|
|
60
|
+
return {
|
|
61
|
+
prompt: stdinPrompt,
|
|
62
|
+
cwd: typeof cwdFlag === "string" ? cwdFlag : process.cwd(),
|
|
63
|
+
model: typeof modelFlag === "string" ? modelFlag : null,
|
|
64
|
+
dryRun: flagBoolean(argv.flags, "dry-run"),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
export function formatOneShotModelLine(cwd) {
|
|
68
|
+
const config = loadConfig(cwd);
|
|
69
|
+
const model = resolveEffectiveModel({ configModel: config.model ?? null });
|
|
70
|
+
return `model · ${model}`;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/cli/commands/agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,9 @@ export type PlanPreviewResult = {
|
|
|
8
8
|
export type PlanPreviewOptions = {
|
|
9
9
|
cwd?: string;
|
|
10
10
|
fetchImpl?: FetchLike;
|
|
11
|
+
modelHint?: string | null;
|
|
12
|
+
conversationContext?: string | null;
|
|
13
|
+
executionMode?: "local" | "cloud";
|
|
11
14
|
};
|
|
12
15
|
export declare function runPlanPreview(objective: string, options?: PlanPreviewOptions): Promise<PlanPreviewResult>;
|
|
13
16
|
//# sourceMappingURL=plan.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/plan.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,mBAAmB,EACzB,MAAM,iCAAiC,CAAA;AAKxC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAAA;IACnC,WAAW,EAAE,OAAO,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/plan.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,mBAAmB,EACzB,MAAM,iCAAiC,CAAA;AAKxC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAAA;IACnC,WAAW,EAAE,OAAO,CAAA;CACrB,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB,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;AASD,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAyD5B"}
|
|
@@ -40,6 +40,9 @@ export async function runPlanPreview(objective, options = {}) {
|
|
|
40
40
|
objective: objective.trim(),
|
|
41
41
|
cwd,
|
|
42
42
|
config,
|
|
43
|
+
modelHint: options.modelHint,
|
|
44
|
+
conversationContext: options.conversationContext,
|
|
45
|
+
executionMode: options.executionMode,
|
|
43
46
|
});
|
|
44
47
|
const result = await postUserTaskPreview({
|
|
45
48
|
apiBase: client.baseUrl,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/cli/commands/plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,EACL,mBAAmB,GAGpB,MAAM,iCAAiC,CAAA;AACxC,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAuB,MAAM,wBAAwB,CAAA;AACxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/cli/commands/plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { PatzeCodeRunListItem } from "../../backend/runs-client.js";
|
|
2
|
+
export declare function formatRunsListLines(runs: PatzeCodeRunListItem[]): string[];
|
|
3
|
+
export declare function formatRunOpenLines(run: PatzeCodeRunListItem): string[];
|
|
4
|
+
//# sourceMappingURL=runs-format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runs-format.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/runs-format.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAcxE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,EAAE,GAAG,MAAM,EAAE,CAkB1E;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,oBAAoB,GAAG,MAAM,EAAE,CAyBtE"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { pickRunReplyText } from "../../backend/run-record.js";
|
|
2
|
+
function formatTimestamp(value) {
|
|
3
|
+
if (!value) {
|
|
4
|
+
return "—";
|
|
5
|
+
}
|
|
6
|
+
const parsed = Date.parse(value);
|
|
7
|
+
if (Number.isNaN(parsed)) {
|
|
8
|
+
return value.slice(0, 19);
|
|
9
|
+
}
|
|
10
|
+
return new Date(parsed).toISOString().replace("T", " ").slice(0, 19);
|
|
11
|
+
}
|
|
12
|
+
export function formatRunsListLines(runs) {
|
|
13
|
+
if (!runs.length) {
|
|
14
|
+
return ["No runs yet.", "Complete a coding task to populate run history."];
|
|
15
|
+
}
|
|
16
|
+
const lines = [`Runs (${runs.length}):`, ""];
|
|
17
|
+
for (const run of runs) {
|
|
18
|
+
const summary = pickRunReplyText(run).replace(/\s+/g, " ").slice(0, 72);
|
|
19
|
+
lines.push(` ${run.run_id} ${run.phase || run.status} ${formatTimestamp(run.created_at)} ${run.agent_model || "model?"}`);
|
|
20
|
+
if (summary) {
|
|
21
|
+
lines.push(` ${summary}${summary.length >= 72 ? "…" : ""}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
lines.push("");
|
|
25
|
+
lines.push("Open details: patze runs open <id> · Replay: /run <id>");
|
|
26
|
+
return lines;
|
|
27
|
+
}
|
|
28
|
+
export function formatRunOpenLines(run) {
|
|
29
|
+
const lines = [
|
|
30
|
+
`Run ${run.run_id}`,
|
|
31
|
+
` phase: ${run.phase || run.status}`,
|
|
32
|
+
` model: ${run.agent_model || "unknown"}`,
|
|
33
|
+
` workflow: ${run.workflow_mode || "—"}`,
|
|
34
|
+
` created: ${formatTimestamp(run.created_at)}`,
|
|
35
|
+
];
|
|
36
|
+
const summary = run.outcome_summary.trim() || pickRunReplyText(run);
|
|
37
|
+
if (summary) {
|
|
38
|
+
lines.push(` summary: ${summary.replace(/\s+/g, " ").slice(0, 240)}`);
|
|
39
|
+
}
|
|
40
|
+
if (run.deliverable_paths.length) {
|
|
41
|
+
lines.push(` deliverables: ${run.deliverable_paths.slice(0, 5).join(", ")}`);
|
|
42
|
+
}
|
|
43
|
+
if (run.error_code) {
|
|
44
|
+
lines.push(` error: ${run.error_code}`);
|
|
45
|
+
}
|
|
46
|
+
lines.push("");
|
|
47
|
+
lines.push("Replay trace: patze runs open --stream <id> or /run " + run.run_id);
|
|
48
|
+
return lines;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=runs-format.js.map
|