@patze/code-cli 0.10.3 → 0.10.5

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.
Files changed (48) hide show
  1. package/CHANGELOG.md +46 -4
  2. package/README.md +27 -8
  3. package/VERSION +1 -1
  4. package/dist/backend/auth.d.ts.map +1 -1
  5. package/dist/backend/auth.js +3 -1
  6. package/dist/backend/auth.js.map +1 -1
  7. package/dist/cli/commands/login.d.ts +21 -0
  8. package/dist/cli/commands/login.d.ts.map +1 -1
  9. package/dist/cli/commands/login.js +54 -7
  10. package/dist/cli/commands/login.js.map +1 -1
  11. package/dist/cli/commands/plan.d.ts.map +1 -1
  12. package/dist/cli/commands/plan.js +0 -2
  13. package/dist/cli/commands/plan.js.map +1 -1
  14. package/dist/cli/help.d.ts.map +1 -1
  15. package/dist/cli/help.js +5 -4
  16. package/dist/cli/help.js.map +1 -1
  17. package/dist/cli/interactive/header.d.ts.map +1 -1
  18. package/dist/cli/interactive/header.js +5 -2
  19. package/dist/cli/interactive/header.js.map +1 -1
  20. package/dist/cli/interactive/line-editor.d.ts +46 -0
  21. package/dist/cli/interactive/line-editor.d.ts.map +1 -0
  22. package/dist/cli/interactive/line-editor.js +288 -0
  23. package/dist/cli/interactive/line-editor.js.map +1 -0
  24. package/dist/cli/interactive/redact-input.d.ts +10 -0
  25. package/dist/cli/interactive/redact-input.d.ts.map +1 -0
  26. package/dist/cli/interactive/redact-input.js +18 -0
  27. package/dist/cli/interactive/redact-input.js.map +1 -0
  28. package/dist/cli/interactive/shell.d.ts.map +1 -1
  29. package/dist/cli/interactive/shell.js +15 -24
  30. package/dist/cli/interactive/shell.js.map +1 -1
  31. package/dist/cli/interactive/slash-dispatch.d.ts.map +1 -1
  32. package/dist/cli/interactive/slash-dispatch.js +74 -2
  33. package/dist/cli/interactive/slash-dispatch.js.map +1 -1
  34. package/dist/cli/interactive/slash-menu.d.ts +31 -0
  35. package/dist/cli/interactive/slash-menu.d.ts.map +1 -0
  36. package/dist/cli/interactive/slash-menu.js +117 -0
  37. package/dist/cli/interactive/slash-menu.js.map +1 -0
  38. package/dist/cli/interactive/slash-registry.d.ts.map +1 -1
  39. package/dist/cli/interactive/slash-registry.js +2 -0
  40. package/dist/cli/interactive/slash-registry.js.map +1 -1
  41. package/dist/config/config.d.ts.map +1 -1
  42. package/dist/config/config.js +3 -3
  43. package/dist/config/config.js.map +1 -1
  44. package/package.json +1 -1
  45. package/dist/cli/interactive/completer.d.ts +0 -8
  46. package/dist/cli/interactive/completer.d.ts.map +0 -1
  47. package/dist/cli/interactive/completer.js +0 -20
  48. package/dist/cli/interactive/completer.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -4,6 +4,41 @@ 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.10.5] - 2026-05-29
8
+
9
+ ### Added
10
+
11
+ - `/login` and `/logout` slash commands in the interactive shell
12
+ - `/login` with no args shows auth status + setup guidance
13
+ - `/login <api-url> <token> [user-id]` saves credentials locally (token masked in output)
14
+ - `/logout` clears saved credentials (env vars untouched; other settings kept)
15
+ - Secret-bearing `/login` input is redacted from transcript and excluded from ↑↓ recall history
16
+ - Empty-composer placeholder: `Type / for commands, or describe a task` (color TTY only)
17
+ - Stage notice under startup card and in `patze --help`: `Beta · Dev demo — for internal testing only`
18
+
19
+ ### Changed
20
+
21
+ - Auth is **ready** with `api + token` only — `user-id` is optional everywhere (`isAuthConfigured`, `patze login`, `/login`, plan preview)
22
+ - `globalConfigPath()` resolves `homedir()` at call time (test isolation; no behavior change in normal use)
23
+
24
+ ### Unchanged
25
+
26
+ - Trust loop, apply/verify gating, permission enforcement, network/backend contracts
27
+
28
+ ## [0.10.4] - 2026-05-29
29
+
30
+ ### Changed (live command palette — no behavior change)
31
+
32
+ - Interactive composer uses a raw-mode line editor with a live `/` command palette (filter as you type, ↑↓ navigate, Tab/Enter complete)
33
+ - Commands with required args (e.g. `/goal <task>`) complete to `/name ` and wait for input
34
+ - In-session history via ↑↓ when palette is closed; cursor editing and Ctrl+C clear/exit
35
+ - Removed legacy readline Tab completer (superseded by live menu)
36
+ - Startup hint: `Type / for commands · ↑↓ to navigate · Tab/Enter to select`
37
+
38
+ ### Unchanged
39
+
40
+ - Trust loop, apply/verify gating, permission enforcement, network/backend contracts — identical to 0.10.3
41
+
7
42
  ## [0.10.3] - 2026-05-29
8
43
 
9
44
  ### Changed (interactive UI polish — no behavior change)
@@ -17,16 +52,21 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
17
52
 
18
53
  ### Changed (composer UX — no behavior change)
19
54
 
20
- - Tab autocompletes `/commands` in the interactive composer (TTY only; piped/scripted mode untouched)
21
- - Startup shortcuts hint: `Tab completes /commands · ↑/↓ recalls history · Ctrl+C cancels`
55
+ - Live `/command` palette in the interactive composer: type `/` to see a filtered, scrollable menu (prefix-first), navigate with ↑↓, complete with Tab, run with Enter
56
+ - Commands needing an argument (e.g. `/goal <task>`) complete to `/name ` and wait for input instead of submitting
57
+ - In-session history with ↑↓ when the menu is closed; left/right/Home/End cursor editing; Ctrl+C clears (or exits when empty)
22
58
  - `Did you mean` for unknown commands now lists each suggestion with its description
59
+ - Startup hint: `Type / for commands · ↑↓ to navigate · Tab/Enter to select`
60
+ - Composer is TTY-only; piped / scripted input still uses readline and stays deterministic
23
61
 
24
62
  ### Added
25
63
 
26
64
  - `src/cli/ui/box.ts` — reusable bordered card renderer
27
- - `src/cli/interactive/completer.ts` — slash-only readline completer
65
+ - `src/cli/interactive/slash-menu.ts` — pure live-menu state (filter, selection, render)
66
+ - `src/cli/interactive/line-editor.ts` — raw-mode composer with the live `/` palette
28
67
  - `tests/header.test.mjs` — startup snapshot, auth warning, permission label, narrow fallback
29
- - `tests/completer.test.mjs` — Tab completion (prefix, bare slash, free-text, args, unknown)
68
+ - `tests/slash-menu.test.mjs` — menu filtering, selection wrap, arg detection, render
69
+ - `tests/line-editor.test.mjs` — keypress-driven submit / complete / history / editing
30
70
 
31
71
  ### Unchanged
32
72
 
@@ -115,6 +155,8 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
115
155
 
116
156
  - `patze code inspect`, `patze code plan --preview`, local workspace boundaries
117
157
 
158
+ [0.10.5]: https://github.com/patzeagent/patzelife-plugin-agentdiscord/compare/patze-code-cli-v0.10.4...patze-code-cli-v0.10.5
159
+ [0.10.4]: https://github.com/patzeagent/patzelife-plugin-agentdiscord/compare/patze-code-cli-v0.10.3...patze-code-cli-v0.10.4
118
160
  [0.10.3]: https://github.com/patzeagent/patzelife-plugin-agentdiscord/compare/patze-code-cli-v0.10.2...patze-code-cli-v0.10.3
119
161
  [0.10.2]: https://github.com/patzeagent/patzelife-plugin-agentdiscord/compare/patze-code-cli-v0.10.1...patze-code-cli-v0.10.2
120
162
  [0.10.1]: https://github.com/patzeagent/patzelife-plugin-agentdiscord/compare/patze-code-cli-v0.10.0...patze-code-cli-v0.10.1
package/README.md CHANGED
@@ -28,7 +28,7 @@ Registry:
28
28
 
29
29
  ```bash
30
30
  npm install -g @patze/code-cli@beta
31
- # or pinned: @patze/code-cli@0.10.3
31
+ # or pinned: @patze/code-cli@0.10.5
32
32
  patze --version
33
33
  ```
34
34
 
@@ -44,7 +44,7 @@ git init
44
44
  # 2. Optional — server preview auth (use env, never commit secrets)
45
45
  export PATZE_CODE_API=https://api.example.com
46
46
  export PATZE_CODE_TOKEN=<internal-api-key>
47
- export PATZE_CODE_USER_ID=<user-uuid>
47
+ export PATZE_CODE_USER_ID=<user-uuid> # optional
48
48
 
49
49
  # 3. Read-only checks
50
50
  patze status
@@ -59,12 +59,13 @@ patze
59
59
  Running `patze` shows a status card and tips:
60
60
 
61
61
  ```text
62
- ╭─ Patze Code · v0.10.3 ────────────────────────────────────╮
62
+ ╭─ Patze Code · v0.10.5 ────────────────────────────────────╮
63
63
  │ workspace /mnt/d/pat-test │
64
64
  │ auth incomplete │
65
65
  │ permission Read-only │
66
66
  │ safety preview-first · read-only │
67
67
  ╰───────────────────────────────────────────────────────────╯
68
+ Beta · Dev demo — for internal testing only
68
69
 
69
70
  ! auth incomplete — run `patze login` or set PATZE_CODE_* env
70
71
 
@@ -73,13 +74,31 @@ Tips
73
74
  • /inspect scans the workspace (read-only)
74
75
  • /plan then /diff previews changes before any write
75
76
  • /apply needs typed approval — it never auto-applies
76
- Tab completes /commands · ↑/↓ recalls history · Ctrl+C cancels
77
+ Type / for commands · ↑↓ to navigate · Tab/Enter to select
77
78
 
78
79
 
79
80
  ```
80
81
 
81
- The composer supports Tab autocompletion for `/commands` (TTY only) and
82
- arrow-key history. Piped/scripted input is unaffected and stays deterministic.
82
+ Type `/` to open a live command palette that filters as you type:
83
+
84
+ ```text
85
+ › /p
86
+ /plan Server preview only (no apply)
87
+ ❯ /permissions Open permission mode selector
88
+ /help Show slash commands
89
+
90
+ ```
91
+
92
+ Navigate with ↑↓, complete with Tab, run with Enter. Commands that need an
93
+ argument (e.g. `/goal <task>`) complete to `/goal ` and wait for your input.
94
+ When the palette is closed, ↑↓ recalls in-session history. The composer is
95
+ TTY-only; piped / scripted input stays on readline and remains deterministic.
96
+
97
+ Authenticate from inside the shell with `/login` (or `/login <api-url> <token>`
98
+ to save directly — `user-id` is optional; the token is masked in output and
99
+ never kept in transcript or recall history). `/logout` clears saved credentials.
100
+ Environment variables `PATZE_CODE_API` / `PATZE_CODE_TOKEN` also work
101
+ (`PATZE_CODE_USER_ID` is optional).
83
102
 
84
103
  Inside `patze`:
85
104
 
@@ -104,7 +123,7 @@ prompt → inspect → plan → diff → permissions → approve → apply → v
104
123
 
105
124
  Docs: [`docs/trust-loop.md`](docs/trust-loop.md) · [`docs/safety-model.md`](docs/safety-model.md)
106
125
 
107
- ## Command status (0.10.3)
126
+ ## Command status (0.10.5)
108
127
 
109
128
  ### Interactive (`patze` shell)
110
129
 
@@ -136,7 +155,7 @@ Docs: [`docs/trust-loop.md`](docs/trust-loop.md) · [`docs/safety-model.md`](doc
136
155
  | `patze --version` | ✅ | |
137
156
  | `patze status [--check]` | ✅ | |
138
157
  | `patze doctor [--check]` | ✅ | Read-only; network only with `--check` |
139
- | `patze login <api> <token> <id>` | ✅ | Writes local config |
158
+ | `patze login <api> <token> [id]` | ✅ | Writes local config (user-id optional) |
140
159
  | `patze goal "<task>" --dry-run` | ✅ | Non-interactive plan |
141
160
  | `patze code inspect` | ✅ | |
142
161
  | `patze code plan --preview` | ✅ | Needs auth |
package/VERSION CHANGED
@@ -1 +1 @@
1
- 0.10.3
1
+ 0.10.5
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/backend/auth.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG;IACtB,UAAU,EAAE,OAAO,CAAA;IACnB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,YAAY,EAAE,OAAO,CAAA;CACtB,CAAA;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,EAAE,CAOvD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB,GAAG,OAAO,CAEV"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/backend/auth.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG;IACtB,UAAU,EAAE,OAAO,CAAA;IACnB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,YAAY,EAAE,OAAO,CAAA;CACtB,CAAA;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,EAAE,CAOvD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IACtC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB,GAAG,OAAO,CAIV"}
@@ -7,6 +7,8 @@ export function describeAuth(state) {
7
7
  return lines;
8
8
  }
9
9
  export function isAuthConfigured(input) {
10
- return Boolean(input.api && input.token && input.userId);
10
+ // user id is optional: the backend authenticates with the token
11
+ // (X-Internal-API-Key); X-Internal-User-Id is sent only when present.
12
+ return Boolean(input.api && input.token);
11
13
  }
12
14
  //# sourceMappingURL=auth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/backend/auth.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,YAAY,CAAC,KAAgB;IAC3C,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC,CAAA;IAC5C,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC,CAAA;IAChD,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAA;IACrE,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IACvD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAIhC;IACC,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,CAAA;AAC1D,CAAC"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/backend/auth.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,YAAY,CAAC,KAAgB;IAC3C,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,GAAG,IAAI,SAAS,EAAE,CAAC,CAAA;IAC5C,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC,CAAA;IAChD,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAA;IACrE,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IACvD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAIhC;IACC,gEAAgE;IAChE,sEAAsE;IACtE,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAA;AAC1C,CAAC"}
@@ -1,4 +1,25 @@
1
1
  import type { Printer } from "../ui/printer.js";
2
2
  import type { ParsedArgv } from "../argv.js";
3
+ export type LoginCredentials = {
4
+ api: string;
5
+ token: string;
6
+ userId?: string;
7
+ };
8
+ export type LogoutResult = {
9
+ path: string;
10
+ existed: boolean;
11
+ removedFile: boolean;
12
+ };
13
+ /**
14
+ * Persist credentials to the global config file, preserving any other
15
+ * settings (approval/sandbox/allow/deny) already present. Returns the
16
+ * path written. File mode 0o600 keeps the token owner-only.
17
+ */
18
+ export declare function saveCredentials(creds: LoginCredentials): string;
19
+ /**
20
+ * Remove credential fields from the global config. Other settings are
21
+ * kept; if nothing else remains, the file is deleted.
22
+ */
23
+ export declare function clearCredentials(): LogoutResult;
3
24
  export declare function runLogin(argv: ParsedArgv, printer: Printer): Promise<number>;
4
25
  //# sourceMappingURL=login.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/login.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAG5C,wBAAsB,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAsBlF"}
1
+ {"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/login.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAG5C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,OAAO,CAAA;IAChB,WAAW,EAAE,OAAO,CAAA;CACrB,CAAA;AAcD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAW/D;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,YAAY,CAe/C;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAgBlF"}
@@ -1,19 +1,66 @@
1
- import { writeFileSync, mkdirSync } from "node:fs";
1
+ import { writeFileSync, mkdirSync, readFileSync, existsSync, rmSync } from "node:fs";
2
2
  import { dirname } from "node:path";
3
3
  import { globalConfigPath } from "../../config/config.js";
4
4
  import { flagString } from "../argv.js";
5
+ function readGlobalConfigRaw(path) {
6
+ try {
7
+ const parsed = JSON.parse(readFileSync(path, "utf8"));
8
+ if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
9
+ return parsed;
10
+ }
11
+ }
12
+ catch {
13
+ // ignore malformed/missing file
14
+ }
15
+ return {};
16
+ }
17
+ /**
18
+ * Persist credentials to the global config file, preserving any other
19
+ * settings (approval/sandbox/allow/deny) already present. Returns the
20
+ * path written. File mode 0o600 keeps the token owner-only.
21
+ */
22
+ export function saveCredentials(creds) {
23
+ const path = globalConfigPath();
24
+ mkdirSync(dirname(path), { recursive: true });
25
+ const existing = readGlobalConfigRaw(path);
26
+ const next = { ...existing, api: creds.api, token: creds.token };
27
+ // user id is optional; keep any previously saved value when omitted.
28
+ if (creds.userId) {
29
+ next.userId = creds.userId;
30
+ }
31
+ writeFileSync(path, `${JSON.stringify(next, null, 2)}\n`, { mode: 0o600 });
32
+ return path;
33
+ }
34
+ /**
35
+ * Remove credential fields from the global config. Other settings are
36
+ * kept; if nothing else remains, the file is deleted.
37
+ */
38
+ export function clearCredentials() {
39
+ const path = globalConfigPath();
40
+ if (!existsSync(path)) {
41
+ return { path, existed: false, removedFile: false };
42
+ }
43
+ const next = { ...readGlobalConfigRaw(path) };
44
+ delete next.api;
45
+ delete next.token;
46
+ delete next.userId;
47
+ if (Object.keys(next).length === 0) {
48
+ rmSync(path, { force: true });
49
+ return { path, existed: true, removedFile: true };
50
+ }
51
+ writeFileSync(path, `${JSON.stringify(next, null, 2)}\n`, { mode: 0o600 });
52
+ return { path, existed: true, removedFile: false };
53
+ }
5
54
  export async function runLogin(argv, printer) {
6
55
  const api = flagString(argv.flags, "api") ?? argv.positional[0] ?? null;
7
56
  const token = flagString(argv.flags, "token") ?? argv.positional[1] ?? null;
8
57
  const userId = flagString(argv.flags, "user-id") ?? flagString(argv.flags, "user") ?? argv.positional[2] ?? null;
9
- if (!api || !token || !userId) {
10
- printer.error("Usage: patze login <api-url> <token> <user-id>");
11
- printer.error(" patze login --api <url> --token <token> --user-id <uuid>");
58
+ if (!api || !token) {
59
+ printer.error("Usage: patze login <api-url> <token> [user-id]");
60
+ printer.error(" patze login --api <url> --token <token> [--user-id <uuid>]");
12
61
  return 2;
13
62
  }
14
- const path = globalConfigPath();
15
- mkdirSync(dirname(path), { recursive: true });
16
- writeFileSync(path, `${JSON.stringify({ api, token, userId }, null, 2)}\n`, { mode: 0o600 });
63
+ const path = saveCredentials({ api, token, userId: userId ?? undefined });
17
64
  printer.info(`Saved credentials to ${path}`);
18
65
  printer.line("Run `patze status` to verify connectivity.");
19
66
  return 0;
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/cli/commands/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAGzD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAEvC,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAgB,EAAE,OAAgB;IAC/D,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;IACvE,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;IAC3E,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;IAEhH,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QAC9B,OAAO,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAA;QAC/D,OAAO,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAA;QAChF,OAAO,CAAC,CAAA;IACV,CAAC;IAED,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAA;IAC/B,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC7C,aAAa,CACX,IAAI,EACJ,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EACtD,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB,CAAA;IAED,OAAO,CAAC,IAAI,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAA;IAC5C,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAA;IAC1D,OAAO,CAAC,CAAA;AACV,CAAC"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/cli/commands/login.ts"],"names":[],"mappings":"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"}
@@ -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;CACtB,CAAA;AAUD,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAsD5B"}
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;CACtB,CAAA;AASD,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAsD5B"}
@@ -10,8 +10,6 @@ function missingAuthMessage(config) {
10
10
  missing.push("api");
11
11
  if (!config.token)
12
12
  missing.push("token");
13
- if (!config.userId)
14
- missing.push("userId");
15
13
  return `Auth incomplete (missing: ${missing.join(", ")}). Run \`patze login\` or set PATZE_CODE_* env vars.`;
16
14
  }
17
15
  export async function runPlanPreview(objective, options = {}) {
@@ -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;AAc1D,SAAS,kBAAkB,CAAC,MAAsB;IAChD,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,IAAI,CAAC,MAAM,CAAC,GAAG;QAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACpC,IAAI,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACxC,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC1C,OAAO,6BAA6B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,sDAAsD,CAAA;AAC9G,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,SAAiB,EACjB,UAA8B,EAAE;IAEhC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;IACxC,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;IAE9B,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QACtB,OAAO;YACL,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE;gBACN,6CAA6C;gBAC7C,qBAAqB;gBACrB,qDAAqD;aACtD,CAAC,IAAI,CAAC,IAAI,CAAC;YACZ,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,KAAK;SACnB,CAAA;IACH,CAAC;IAED,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,OAAO;YACL,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC;YAClC,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,KAAK;SACnB,CAAA;IACH,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAC7C,MAAM,OAAO,GAAG,mBAAmB,CAAC;QAClC,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE;QAC3B,GAAG;QACH,MAAM;KACP,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC;QACvC,OAAO,EAAE,MAAM,CAAC,OAAQ;QACxB,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE;QAC9B,OAAO;QACP,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,uBAAuB,CAAC;QACrC,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE;QAC3B,MAAM;KACP,CAAC,CAAA;IAEF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;IACpE,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACzC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;IACpE,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;AACpE,CAAC"}
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;AAc1D,SAAS,kBAAkB,CAAC,MAAsB;IAChD,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,IAAI,CAAC,MAAM,CAAC,GAAG;QAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACpC,IAAI,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACxC,OAAO,6BAA6B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,sDAAsD,CAAA;AAC9G,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,SAAiB,EACjB,UAA8B,EAAE;IAEhC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;IACxC,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;IAE9B,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;QACtB,OAAO;YACL,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE;gBACN,6CAA6C;gBAC7C,qBAAqB;gBACrB,qDAAqD;aACtD,CAAC,IAAI,CAAC,IAAI,CAAC;YACZ,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,KAAK;SACnB,CAAA;IACH,CAAC;IAED,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,OAAO;YACL,QAAQ,EAAE,CAAC;YACX,MAAM,EAAE,kBAAkB,CAAC,MAAM,CAAC;YAClC,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,KAAK;SACnB,CAAA;IACH,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAA;IAC7C,MAAM,OAAO,GAAG,mBAAmB,CAAC;QAClC,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE;QAC3B,GAAG;QACH,MAAM;KACP,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC;QACvC,OAAO,EAAE,MAAM,CAAC,OAAQ;QACxB,OAAO,EAAE,MAAM,CAAC,YAAY,EAAE;QAC9B,OAAO;QACP,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC,CAAA;IAEF,MAAM,MAAM,GAAG,uBAAuB,CAAC;QACrC,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE;QAC3B,MAAM;KACP,CAAC,CAAA;IAEF,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;IACpE,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QACzC,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;IACpE,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA;AACpE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAG9C,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAkChD"}
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAA;AAG9C,wBAAgB,SAAS,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmChD"}
package/dist/cli/help.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { CLI_VERSION } from "../version.js";
2
2
  export function printHelp(printer) {
3
- printer.line(`Patze Code · v${CLI_VERSION} — local terminal coding agent (internal beta)`);
3
+ printer.line(`Patze Code · v${CLI_VERSION} — local terminal coding agent`);
4
+ printer.line("Beta · Dev demo — for internal testing only");
4
5
  printer.line("");
5
6
  printer.line("Usage:");
6
7
  printer.line(" patze Interactive shell (trust loop)");
@@ -8,7 +9,7 @@ export function printHelp(printer) {
8
9
  printer.line(" patze --version Show version");
9
10
  printer.line(" patze status [--check] Local posture + trust-loop snapshot");
10
11
  printer.line(" patze doctor [--check] Read-only diagnostics (no network by default)");
11
- printer.line(" patze login <api> <token> <id> Save credentials locally");
12
+ printer.line(" patze login <api> <token> [id] Save credentials locally");
12
13
  printer.line(' patze goal "<task>" --dry-run Plan without mutation');
13
14
  printer.line(" patze code inspect|plan|diff Read-only / preview commands");
14
15
  printer.line(" patze code apply|verify Disabled or help-only — use /apply /verify in shell");
@@ -19,8 +20,8 @@ export function printHelp(printer) {
19
20
  printer.line(" prompt → inspect → plan → diff → permissions → approve → apply → verify");
20
21
  printer.line("");
21
22
  printer.line("Slash commands (inside patze):");
22
- printer.line(" /help /status /context /goal /inspect /plan /permissions /tools");
23
- printer.line(" /diff /approve /apply /verify /reject /reset /clear /exit");
23
+ printer.line(" /help /status /login /logout /context /goal /inspect /plan");
24
+ printer.line(" /permissions /tools /diff /approve /apply /verify /reject /reset /clear /exit");
24
25
  printer.line("");
25
26
  printer.line("Safety:");
26
27
  printer.line(" • No auto-apply · no --yes · no shell verify");
@@ -1 +1 @@
1
- {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,MAAM,UAAU,SAAS,CAAC,OAAgB;IACxC,OAAO,CAAC,IAAI,CAAC,iBAAiB,WAAW,gDAAgD,CAAC,CAAA;IAC1F,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACtB,OAAO,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAA;IAC/E,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAA;IAC1D,OAAO,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAA;IAC7D,OAAO,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAA;IACpF,OAAO,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAA;IAC9F,OAAO,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAA;IACzE,OAAO,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAA;IACtE,OAAO,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAA;IAC7E,OAAO,CAAC,IAAI,CAAC,sFAAsF,CAAC,CAAA;IACpG,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAA;IAC1D,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAA;IAC1D,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA;IACvC,OAAO,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAA;IACzF,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAA;IAC9C,OAAO,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAA;IACjF,OAAO,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAA;IAC3E,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACvB,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAA;IAC9D,OAAO,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAA;IACrE,OAAO,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAA;IACrD,OAAO,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAA;IACxD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IAC5B,OAAO,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAA;IACtE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,OAAO,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAA;IACvF,OAAO,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAA;AACtF,CAAC"}
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/cli/help.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAE3C,MAAM,UAAU,SAAS,CAAC,OAAgB;IACxC,OAAO,CAAC,IAAI,CAAC,iBAAiB,WAAW,gCAAgC,CAAC,CAAA;IAC1E,OAAO,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAA;IAC3D,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACtB,OAAO,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAA;IAC/E,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAA;IAC1D,OAAO,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAA;IAC7D,OAAO,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAA;IACpF,OAAO,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAA;IAC9F,OAAO,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAA;IACzE,OAAO,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAA;IACtE,OAAO,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAA;IAC7E,OAAO,CAAC,IAAI,CAAC,sFAAsF,CAAC,CAAA;IACpG,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAA;IAC1D,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAA;IAC1D,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA;IACvC,OAAO,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAA;IACzF,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,OAAO,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAA;IAC9C,OAAO,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAA;IAC5E,OAAO,CAAC,IAAI,CAAC,iFAAiF,CAAC,CAAA;IAC/F,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IACvB,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAA;IAC9D,OAAO,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAA;IACrE,OAAO,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAA;IACrD,OAAO,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAA;IACxD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IAC5B,OAAO,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAA;IACtE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,OAAO,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAA;IACvF,OAAO,CAAC,IAAI,CAAC,sEAAsE,CAAC,CAAA;AACtF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/header.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAclE,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAUD,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,cAAc,CAAC,EAAE,cAAc,EAC/B,OAAO,GAAE,aAAkB,GAC1B,MAAM,EAAE,CA0CV;AAQD,eAAO,MAAM,kBAAkB,YAAO,CAAA"}
1
+ {"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/header.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAA;AAclE,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAUD,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,cAAc,CAAC,EAAE,cAAc,EAC/B,OAAO,GAAE,aAAkB,GAC1B,MAAM,EAAE,CA4CV;AAUD,eAAO,MAAM,kBAAkB,YAAO,CAAA"}
@@ -37,7 +37,9 @@ export function renderInteractiveHeader(cwd, permissionMode, options = {}) {
37
37
  color,
38
38
  minInnerWidth: 40,
39
39
  });
40
- const lines = [...card, ""];
40
+ const lines = [...card];
41
+ lines.push(color ? `${DIM}${STAGE_NOTICE}${RESET}` : STAGE_NOTICE);
42
+ lines.push("");
41
43
  if (!authReady) {
42
44
  const warn = "! auth incomplete — run `patze login` or set PATZE_CODE_* env";
43
45
  lines.push(color ? `${YELLOW}${warn}${RESET}` : warn);
@@ -48,10 +50,11 @@ export function renderInteractiveHeader(cwd, permissionMode, options = {}) {
48
50
  for (const tip of HEADER_TIPS) {
49
51
  lines.push(` • ${tip}`);
50
52
  }
51
- const shortcuts = "Tab completes /commands · ↑/↓ recalls history · Ctrl+C cancels";
53
+ const shortcuts = "Type / for commands · ↑↓ to navigate · Tab/Enter to select";
52
54
  lines.push(color ? `${DIM}${shortcuts}${RESET}` : shortcuts);
53
55
  return lines;
54
56
  }
57
+ const STAGE_NOTICE = "Beta · Dev demo — for internal testing only";
55
58
  const HEADER_TIPS = [
56
59
  "/inspect scans the workspace (read-only)",
57
60
  "/plan then /diff previews changes before any write",
@@ -1 +1 @@
1
- {"version":3,"file":"header.js","sourceRoot":"","sources":["../../../src/cli/interactive/header.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACnE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAEzC,MAAM,MAAM,GAAG,UAAU,CAAA;AACzB,MAAM,GAAG,GAAG,SAAS,CAAA;AACrB,MAAM,KAAK,GAAG,SAAS,CAAA;AAOvB,SAAS,WAAW;IAClB,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAA;AAC/D,CAAC;AAED,SAAS,WAAW;IAClB,OAAO,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;AAChF,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,GAAW,EACX,cAA+B,EAC/B,UAAyB,EAAE;IAE3B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,WAAW,EAAE,CAAA;IAC5C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,WAAW,EAAE,CAAA;IAE5C,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;IAC9B,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAA;IAC1C,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IACrD,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;IAClD,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAA;IACzC,MAAM,IAAI,GAAG,cAAc,IAAI,WAAW,CAAA;IAC1C,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC,KAAK,CAAA;IAEnD,MAAM,IAAI,GAAG,UAAU,CAAC;QACtB,KAAK,EAAE,iBAAiB,WAAW,EAAE;QACrC,IAAI,EAAE;YACJ,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE;YACxC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,EAAE;YAC5D,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE;YAC1C,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAC,IAAI,MAAM,OAAO,CAAC,IAAI,EAAE,EAAE;SACjE;QACD,KAAK;QACL,KAAK;QACL,aAAa,EAAE,EAAE;KAClB,CAAC,CAAA;IAEF,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,CAAA;IAE3B,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,+DAA+D,CAAA;QAC5E,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QACrD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAChB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAA;IACjD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;IACjD,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,CAAA;IAC1B,CAAC;IACD,MAAM,SAAS,GAAG,gEAAgE,CAAA;IAClF,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,SAAS,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;IAE5D,OAAO,KAAK,CAAA;AACd,CAAC;AAED,MAAM,WAAW,GAAsB;IACrC,0CAA0C;IAC1C,oDAAoD;IACpD,qDAAqD;CACtD,CAAA;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,IAAI,CAAA"}
1
+ {"version":3,"file":"header.js","sourceRoot":"","sources":["../../../src/cli/interactive/header.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ export type LineEditorOptions = {
2
+ prompt: string;
3
+ color: boolean;
4
+ input?: NodeJS.ReadStream;
5
+ output?: NodeJS.WriteStream;
6
+ };
7
+ export type SubmitResult = {
8
+ type: "line";
9
+ value: string;
10
+ } | {
11
+ type: "eof";
12
+ };
13
+ /**
14
+ * A minimal raw-mode line editor with a live slash-command menu.
15
+ * TTY-only; the piped / scripted path keeps using readline elsewhere,
16
+ * so deterministic test output is unaffected. The editor only edits the
17
+ * input buffer and offers command completion — it never executes
18
+ * anything or changes trust-loop behavior.
19
+ */
20
+ export declare class SlashLineEditor {
21
+ private readonly input;
22
+ private readonly output;
23
+ private readonly prompt;
24
+ private readonly color;
25
+ private readonly history;
26
+ private buffer;
27
+ private cursor;
28
+ private selectedIndex;
29
+ private menuDismissed;
30
+ private historyIndex;
31
+ private stashedBuffer;
32
+ private renderedMenuRows;
33
+ constructor(options: LineEditorOptions);
34
+ readLine(): Promise<SubmitResult>;
35
+ private handleKey;
36
+ private currentMenu;
37
+ private afterEdit;
38
+ private resetBuffer;
39
+ private setBuffer;
40
+ private historyPrev;
41
+ private historyNext;
42
+ private pushHistory;
43
+ private render;
44
+ private commitLine;
45
+ }
46
+ //# sourceMappingURL=line-editor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"line-editor.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/line-editor.ts"],"names":[],"mappings":"AAeA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC,WAAW,CAAA;CAC5B,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,CAAA;AAU5E;;;;;;GAMG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmB;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IAEvC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,aAAa,CAAI;IACzB,OAAO,CAAC,aAAa,CAAQ;IAC7B,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,gBAAgB,CAAI;gBAEhB,OAAO,EAAE,iBAAiB;IAOhC,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC;IAkDvC,OAAO,CAAC,SAAS;IA2GjB,OAAO,CAAC,WAAW;IAQnB,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,WAAW;IAcnB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,MAAM;IAmCd,OAAO,CAAC,UAAU;CAKnB"}