pi-usereq 0.12.0 → 0.13.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 +11 -0
- package/README.md +1 -1
- package/package.json +1 -1
- package/pi-usereq/docs/REFERENCES.md +509 -335
- package/pi-usereq/docs/REQUIREMENTS.md +53 -40
- package/pi-usereq/docs/WORKFLOW.md +67 -36
- package/src/core/config.ts +541 -180
- package/src/core/extension-status.ts +2 -2
- package/src/core/path-context.ts +19 -4
- package/src/index.ts +82 -35
- package/tests/attended-results-scenarios.ts +10 -4
- package/tests/cli-command-option-parity.test.ts +28 -10
- package/tests/debug-extension-harness.test.ts +7 -9
- package/tests/extension-registration.test.ts +170 -118
- package/tests/helpers.ts +29 -6
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "PI-useReq Requirements"
|
|
3
3
|
description: Software requirements specification
|
|
4
|
-
version: "0.0.
|
|
5
|
-
date: "2026-04-
|
|
4
|
+
version: "0.0.66"
|
|
5
|
+
date: "2026-04-27"
|
|
6
6
|
author: "OpenAI Codex"
|
|
7
7
|
scope:
|
|
8
8
|
paths:
|
|
@@ -51,7 +51,8 @@ PI-useReq is a TypeScript pi extension plus companion Node CLI and standalone ex
|
|
|
51
51
|
- **PRJ-008**: MUST expose a dedicated `req-reset` slash command for non-agentic prompt-orchestration recovery, base-path session restoration, and force cleanup of generated worktrees plus branches.
|
|
52
52
|
|
|
53
53
|
### 2.2 Project Constraints
|
|
54
|
-
- **CTN-001**: MUST persist project configuration only at `<base-path>/.pi-usereq.json` with default `docs-dir=pi-usereq/docs`, `tests-dir=tests`, `src-dir=["src"]
|
|
54
|
+
- **CTN-001**: MUST persist local project configuration only at `<base-path>/.pi-usereq.json` with default `docs-dir=pi-usereq/docs`, `tests-dir=tests`, and `src-dir=["src"]`.
|
|
55
|
+
- **CTN-018**: MUST persist global configuration only at `~/.config/pi-usereq/config.json` with default `AUTO_GIT_COMMIT=enable`, `GIT_WORKTREE_ENABLED=enable`, and `GIT_WORKTREE_PREFIX=PI-useReq-`.
|
|
55
56
|
- **CTN-002**: MUST collect project-wide source files through `git ls-files --cached --others --exclude-standard`; non-git project scans therefore fail instead of falling back to directory walking.
|
|
56
57
|
- **CTN-003**: MUST limit project-wide source discovery to extensions listed in `STATIC_CHECK_EXT_TO_LANG`; analyzer-only aliases such as `.cc`, `.cxx`, `.hpp`, and `.exs` remain undiscoverable.
|
|
57
58
|
- **CTN-004**: MUST exclude `tests/fixtures` and `<tests-dir>/fixtures` from project-wide static-check execution.
|
|
@@ -62,8 +63,8 @@ PI-useReq is a TypeScript pi extension plus companion Node CLI and standalone ex
|
|
|
62
63
|
- **CTN-009**: MUST implement extension debugging outside `src/index.ts` business logic and drive extension behavior only through the default extension export, registered commands, registered tools, and registered events.
|
|
63
64
|
- **CTN-010**: MUST execute offline harness flows without requiring pi.dev services or `docs/pi.dev/agent-document-manifest.json`.
|
|
64
65
|
- **CTN-011**: MUST store bundled prompt, instruction, template, and guideline resources under `src/resources/{prompts,instructions,templates,guidelines}` and install them under `<installation-path>/resources/{prompts,instructions,templates,guidelines}`.
|
|
65
|
-
- **CTN-012**: MUST NOT persist derived `base-path`, `git-path`, `parent-path`, `base-dir`, `context-path`, `worktree-dir`, or `worktree-path` in
|
|
66
|
-
- **CTN-013**: MUST default `DEBUG_ENABLED=disable`, `DEBUG_LOG_FILE=/tmp/PI-useReq.json`, `DEBUG_STATUS_CHANGES=disable`, `DEBUG_WORKFLOW_EVENTS=disable`, `DEBUG_LOG_ON_STATUS=running`, `DEBUG_ENABLED_TOOLS=[]`, and `DEBUG_ENABLED_PROMPTS=[]` in persisted
|
|
66
|
+
- **CTN-012**: MUST NOT persist derived `base-path`, `git-path`, `parent-path`, `base-dir`, `context-path`, `worktree-dir`, or `worktree-path` in local or global configuration files.
|
|
67
|
+
- **CTN-013**: MUST default `DEBUG_ENABLED=disable`, `DEBUG_LOG_FILE=/tmp/PI-useReq.json`, `DEBUG_STATUS_CHANGES=disable`, `DEBUG_WORKFLOW_EVENTS=disable`, `DEBUG_LOG_ON_STATUS=running`, `DEBUG_ENABLED_TOOLS=[]`, and `DEBUG_ENABLED_PROMPTS=[]` in persisted local configuration.
|
|
67
68
|
- **CTN-014**: MUST serialize every configured or derived path without a trailing `/`.
|
|
68
69
|
- **CTN-015**: MUST reserve `*-path` names for absolute paths and `*-dir` names for relative paths.
|
|
69
70
|
- **CTN-016**: MUST NOT modify any path under `docs/` during analysis, implementation, verification, or bug fixing.
|
|
@@ -122,7 +123,8 @@ PI-useReq is a TypeScript pi extension plus companion Node CLI and standalone ex
|
|
|
122
123
|
- **REQ-061**: MUST make `scripts/pi-usereq-debug.sh` expose `inspect`, `session`, `command`, `prompt`, `tool`, `sdk`, `raw`, and `help` subcommands.
|
|
123
124
|
- **REQ-062**: MUST make `scripts/pi-usereq-debug.sh` default to `src/index.ts` plus caller cwd, permit later `--cwd` and `--extension` overrides, auto-prefix bare prompt names with `req-`, and map `session`/`sdk` to `session-start`/`sdk-smoke`.
|
|
124
125
|
- **REQ-065**: MUST make `scripts/pi-usereq-debug.sh tool` accept `--args <text>` by forwarding a JSON object through `--params`, while preserving direct `--params <json>` passthrough.
|
|
125
|
-
- **REQ-006**: MUST provide a `pi-usereq` menu that edits project directories, git automation, static-check settings, tools, notifications, and debug settings,
|
|
126
|
+
- **REQ-006**: MUST provide a `pi-usereq` menu that edits project directories, git automation, static-check settings, tools, notifications, and debug settings, and saves every change immediately.
|
|
127
|
+
- **REQ-314**: MUST expose `Show local configuration` and `Show global configuration` in the `pi-usereq` menu.
|
|
126
128
|
- **REQ-236**: MUST persist `DEBUG_ENABLED` with allowed values `enable` and `disable`, defaulting to `disable`.
|
|
127
129
|
- **REQ-237**: MUST persist `DEBUG_LOG_FILE` as a non-empty string defaulting to `/tmp/PI-useReq.json`, and resolve relative paths against the original project base when writing logs.
|
|
128
130
|
- **REQ-238**: MUST persist `DEBUG_LOG_ON_STATUS` with allowed values `any`, `idle`, `checking`, `running`, `merging`, and `error`, defaulting to `running`.
|
|
@@ -144,22 +146,24 @@ PI-useReq is a TypeScript pi extension plus companion Node CLI and standalone ex
|
|
|
144
146
|
- **REQ-282**: MUST finalize successful worktree-backed closure from restored `base-path` using persisted execution-session header metadata and verified worktree artifacts even when pi CLI end-of-session processing has already moved the live runtime away from `worktree-path` before prompt-end handling.
|
|
145
147
|
- **REQ-246**: MUST suppress all debug logging whenever `DEBUG_ENABLED=disable`.
|
|
146
148
|
- **REQ-247**: MUST log selected debug entries only when `DEBUG_LOG_ON_STATUS` equals the current workflow state, or when `DEBUG_LOG_ON_STATUS=any`.
|
|
147
|
-
- **REQ-007**: MUST provide an `Enable tools` submenu with
|
|
149
|
+
- **REQ-007**: MUST provide an `Enable tools` submenu with enable-all, disable-all, reset-defaults, and grouped per-tool toggles ordered as custom tools first and embedded pi CLI tools second.
|
|
150
|
+
- **REQ-315**: MUST persist every `Enable tools` menu flag only in global configuration.
|
|
148
151
|
- **REQ-231**: MUST order non-`files-*` custom-tool toggles alphabetically, append `files-*` custom-tool toggles alphabetically, and place default-disabled custom-tool toggles after default-enabled custom-tool toggles inside each custom subgroup.
|
|
149
152
|
- **REQ-232**: MUST order embedded-tool toggles alphabetically and place default-disabled embedded-tool toggles after default-enabled embedded-tool toggles.
|
|
150
153
|
- **REQ-063**: MUST derive configurable embedded pi CLI tools from runtime builtin tools named `read`, `bash`, `edit`, `write`, `find`, `grep`, and `ls`.
|
|
151
154
|
- **REQ-064**: MUST default `files-tokens`, `files-summarize`, `files-compress`, `files-search`, `summarize`, `references`, `compress`, `search`, `tokens`, `files-static-check`, `static-check`, plus embedded `read`, `bash`, `edit`, and `write` to enabled.
|
|
152
|
-
- **REQ-066**: MUST omit `reset-context` and `context-reset` fields from persisted
|
|
155
|
+
- **REQ-066**: MUST omit `reset-context` and `context-reset` fields from persisted local and global configuration.
|
|
153
156
|
- **REQ-067**: MUST send every bundled prompt-backed `req-<prompt>` payload into the current active session.
|
|
154
157
|
- **REQ-068**: MUST use one prompt-delivery path that sends bundled prompt-backed `req-<prompt>` payloads through the forked execution session by using only the replacement-session context for post-switch session-bound operations.
|
|
155
|
-
- **REQ-008**: MUST provide a `Language static code checkers` submenu that adds Command entries by guided language flow, removes configured
|
|
158
|
+
- **REQ-008**: MUST provide a `Language static code checkers` submenu that adds global Command entries by guided language flow, removes configured global checker entries, toggles local per-language enablement, and resets static-check configuration.
|
|
156
159
|
- **REQ-160**: MUST hardcode `Command` as the only user-configurable static-check module and omit module-selection UI from static-check configuration menus.
|
|
157
160
|
- **REQ-161**: MUST hide `Dummy` from user-configurable static-check menus while preserving existing-config parsing and debug-driver support for `Dummy` entries.
|
|
158
|
-
- **REQ-248**: MUST render 20 per-language static-check toggle rows between `Remove static code checker` and `Reset defaults`, with right-aligned `on|off` values derived from persisted enablement.
|
|
159
|
-
- **REQ-249**: MUST persist
|
|
160
|
-
- **REQ-250**: MUST default `static-check.C` and `static-check.C++`
|
|
161
|
-
- **REQ-251**: MUST default `static-check.Python`, `JavaScript`, and `TypeScript`
|
|
162
|
-
- **REQ-252**: MUST default every other
|
|
161
|
+
- **REQ-248**: MUST render 20 per-language static-check toggle rows between `Remove static code checker` and `Reset defaults`, with right-aligned `on|off` values derived from persisted local enablement.
|
|
162
|
+
- **REQ-249**: MUST persist local `static-check.<language>.enabled` with allowed values `enable|disable` and global `static-check.<language>.checkers` as ordered arrays.
|
|
163
|
+
- **REQ-250**: MUST default global `static-check.C` and `static-check.C++` checker arrays to documented `cppcheck` and `clang-format` Command entries.
|
|
164
|
+
- **REQ-251**: MUST default global `static-check.Python`, `JavaScript`, and `TypeScript` checker arrays to their documented Command entries.
|
|
165
|
+
- **REQ-252**: MUST default every other global `static-check.<language>.checkers` array to `[]`.
|
|
166
|
+
- **REQ-316**: MUST default local `static-check.<language>.enabled` to `enable` when global `checkers` is non-empty, otherwise `disable`.
|
|
163
167
|
- **REQ-009**: MUST refresh shared runtime path context, apply configured startup tools, reset workflow state to `idle` for `session_start` reasons `startup|new|reload`, and publish single-line `pi-usereq` status text.
|
|
164
168
|
- **REQ-109**: MUST omit `current-path`, `base`, `docs`, `src`, and `tests` path fields from the single-line status bar.
|
|
165
169
|
- **REQ-111**: MUST omit prompt-delivery mode fields from the single-line status bar.
|
|
@@ -189,8 +193,8 @@ PI-useReq is a TypeScript pi extension plus companion Node CLI and standalone ex
|
|
|
189
193
|
- **REQ-134**: MUST persist a configurable sound-level toggle shortcut, defaulting to `alt+s`.
|
|
190
194
|
- **REQ-285**: MUST load the active runtime sound level from persisted `notify-sound` during `session_start`.
|
|
191
195
|
- **REQ-286**: MUST cycle only the active runtime sound level when the configured shortcut fires.
|
|
192
|
-
- **REQ-287**: MUST NOT update
|
|
193
|
-
- **REQ-137**: MUST make the `Notifications` menu render contiguous command-notify, sound, and Pushover configuration blocks in that order.
|
|
196
|
+
- **REQ-287**: MUST NOT update local or global configuration when the configured shortcut fires.
|
|
197
|
+
- **REQ-137**: MUST make the `Notifications` menu render contiguous command-notify, sound, and Pushover configuration blocks in that order and persist all descendant settings only in global configuration.
|
|
194
198
|
- **REQ-163**: MUST persist a global Pushover enable flag defaulting to disabled.
|
|
195
199
|
- **REQ-164**: MUST expose a `Pushover events` submenu and MUST keep non-event Pushover settings directly in `Notifications`.
|
|
196
200
|
- **REQ-165**: MUST order Pushover rows as `Enable pushover`, `Pushover events`, `Pushover priority`, `Pushover title`, `Pushover text`, `Pushover User Key/Delivery Group Key`, and `Pushover Token/API Token Key`.
|
|
@@ -209,15 +213,16 @@ PI-useReq is a TypeScript pi extension plus companion Node CLI and standalone ex
|
|
|
209
213
|
- **REQ-180**: MUST render `sound` immediately after `elapsed`, showing the active runtime sound level as `none`, `low`, `mid`, or `high`.
|
|
210
214
|
- **REQ-181**: MUST make the `Notifications` menu expose `Enable notification`, `Notification events`, and `Notify command` before sound rows.
|
|
211
215
|
- **REQ-183**: MUST make the `Notifications` menu expose `Sound events` immediately after `Enable sound (boot value)` and before sound hotkey plus command rows.
|
|
212
|
-
- **REQ-288**: MUST persist menu-selected `notify-sound` changes to
|
|
216
|
+
- **REQ-288**: MUST persist menu-selected `notify-sound` changes to global configuration without changing the active runtime sound level.
|
|
213
217
|
- **REQ-289**: MUST render configuration-menu sound values from persisted `notify-sound`, even when the active runtime sound level differs.
|
|
214
218
|
- **REQ-184**: MUST persist Pushover event toggles in keys `notify-pushover-on-completed`, `notify-pushover-on-interrupted`, and `notify-pushover-on-failed`, defaulting to completed enabled and interrupted plus failed disabled.
|
|
215
219
|
- **REQ-185**: MUST persist `Pushover title` defaulting to `%%PROMT%% @ %%BASE%% [%%TIME%%]` and `Pushover text` defaulting to `%%RESULT%%\n%%ARGS%%`.
|
|
216
220
|
- **REQ-186**: MUST substitute `%%PROMT%%`, `%%BASE%%`, `%%TIME%%`, `%%ARGS%%`, and `%%RESULT%%` at runtime inside `Pushover title` and `Pushover text`.
|
|
217
221
|
- **REQ-187**: MUST render `%%BASE%%` as static `base-path` relative to user home using `~/...` form and `%%TIME%%` as final elapsed `M:SS`.
|
|
218
222
|
- **REQ-188**: MUST label notification-event rows as `Prompt completed`, `Prompt interrupted`, and `Prompt failed`.
|
|
219
|
-
- **REQ-190**: MUST label top-level rows as `Document directory`, `Source-code directories`, `Unit tests directory`, `Auto git commit`, `Git worktree`, `Worktree prefix`, `Language static code checkers`, `Enable tools`, `Notifications`, `Debug`, and `Show configuration`.
|
|
220
|
-
- **REQ-191**: MUST order top-level rows as `Document directory`, `Source-code directories`, `Unit tests directory`, `Auto git commit`, `Git worktree`, `Worktree prefix`, `Language static code checkers`, `Enable tools`, `Notifications`,
|
|
223
|
+
- **REQ-190**: MUST label top-level rows as `Document directory`, `Source-code directories`, `Unit tests directory`, `Auto git commit`, `Git worktree`, `Worktree prefix`, `Language static code checkers`, `Enable tools`, `Notifications`, `Debug`, `Show local configuration`, and `Show global configuration`.
|
|
224
|
+
- **REQ-191**: MUST order top-level rows as `Document directory`, `Source-code directories`, `Unit tests directory`, `Auto git commit`, `Git worktree`, `Worktree prefix`, `Language static code checkers`, `Enable tools`, `Notifications`, and `Debug`.
|
|
225
|
+
- **REQ-320**: MUST order `Show local configuration` after `Debug`, `Show global configuration` after `Show local configuration`, and `Reset defaults` last.
|
|
221
226
|
- **REQ-192**: MUST preserve the selected settings-menu row after toggling or editing a setting value.
|
|
222
227
|
- **REQ-193**: MUST append `Reset defaults` as a final row without right-aligned value text in every configuration menu and descendant selector menu, and MUST NOT render `Save and close`.
|
|
223
228
|
- **REQ-194**: MUST make top-level `Reset defaults` show changed values with previous and next values, require explicit confirmation, restore full-tree defaults, and save immediately.
|
|
@@ -230,9 +235,9 @@ PI-useReq is a TypeScript pi extension plus companion Node CLI and standalone ex
|
|
|
230
235
|
- **REQ-201**: MUST require `REQUIREMENTS.md`, `WORKFLOW.md`, and `REFERENCES.md` before `analyze`, `change`, `check`, `cover`, `fix`, `flowchart`, `new`, `readme`, `recreate`, `refactor`, and `renumber`.
|
|
231
236
|
- **REQ-202**: MUST require `REQUIREMENTS.md` before `implement`, and MUST skip required-doc prechecks for `create`, `references`, `workflow`, and `write`.
|
|
232
237
|
- **REQ-203**: MUST abort a bundled prompt-backed `req-<prompt>` command before worktree creation and prompt dispatch when any prompt-required doc is missing, surfacing the missing canonical path plus remediation prompt command.
|
|
233
|
-
- **REQ-212**: MUST persist `AUTO_GIT_COMMIT` with allowed values `enable` and `disable`, defaulting to `enable`.
|
|
234
|
-
- **REQ-204**: MUST persist `GIT_WORKTREE_ENABLED` with allowed values `enable` and `disable`, defaulting to `enable`.
|
|
235
|
-
- **REQ-205**: MUST persist `GIT_WORKTREE_PREFIX` as the configurable prefix used by `worktree-dir` generation, defaulting to `PI-useReq-`.
|
|
238
|
+
- **REQ-212**: MUST persist global `AUTO_GIT_COMMIT` with allowed values `enable` and `disable`, defaulting to `enable`.
|
|
239
|
+
- **REQ-204**: MUST persist global `GIT_WORKTREE_ENABLED` with allowed values `enable` and `disable`, defaulting to `enable`.
|
|
240
|
+
- **REQ-205**: MUST persist global `GIT_WORKTREE_PREFIX` as the configurable prefix used by `worktree-dir` generation, defaulting to `PI-useReq-`.
|
|
236
241
|
- **REQ-215**: MUST force the effective `GIT_WORKTREE_ENABLED` value to `disable` whenever `AUTO_GIT_COMMIT=disable`.
|
|
237
242
|
- **REQ-216**: MUST render `Git worktree` and `Worktree prefix` as dimmed non-editable rows whenever `AUTO_GIT_COMMIT=disable`.
|
|
238
243
|
- **REQ-206**: MUST derive `worktree-dir` as `<prefix><project>-<sanitized-branch>-<YYYYMMDDHHMMSS>` and `worktree-path` as `<parent-path>/<worktree-dir>/<base-dir>` when worktrees are enabled.
|
|
@@ -326,17 +331,20 @@ PI-useReq is a TypeScript pi extension plus companion Node CLI and standalone ex
|
|
|
326
331
|
- **REQ-021**: MUST reject user `--enable-static-check` specs with missing `=`, missing `Command`, missing `cmd`, unknown language, or any module other than `Command`.
|
|
327
332
|
- **REQ-022**: MUST preserve persisted `Dummy` static-check entries during config loading and execute them only when present in configuration or `--test-static-check dummy` input.
|
|
328
333
|
- **REQ-023**: MUST require `Command`-module executables to exist on `PATH` before static-check execution.
|
|
329
|
-
- **REQ-030**: MUST set static `base-path` from the bootstrap cwd and static `config-path` to `<base-path>/.pi-usereq.json`.
|
|
334
|
+
- **REQ-030**: MUST set static `base-path` from the bootstrap cwd and static `local-config-path` to `<base-path>/.pi-usereq.json`.
|
|
335
|
+
- **REQ-317**: MUST set static `global-config-path` to `~/.config/pi-usereq/config.json`.
|
|
330
336
|
- **REQ-259**: MUST set dynamic `context-path` from the bootstrap cwd and keep it aligned with `ctx.cwd`.
|
|
331
337
|
- **REQ-103**: MUST resolve static `install-path` from the executing extension entry module.
|
|
332
338
|
- **REQ-269**: MUST derive static `template-path` and `guidelines-path` as `<install-path>/resources/{templates,guidelines}`.
|
|
333
|
-
- **REQ-104**: MUST persist `docs-dir`, `tests-dir`, and every `src-dir` entry as trailing-slash-free relative paths.
|
|
339
|
+
- **REQ-104**: MUST persist `docs-dir`, `tests-dir`, and every `src-dir` entry as trailing-slash-free relative paths in local configuration.
|
|
334
340
|
- **REQ-105**: MUST derive static `git-path` from `base-path` only when it equals `base-path` or ancestors it.
|
|
335
341
|
- **REQ-270**: MUST derive static `parent-path` as the parent of `git-path` and static `base-dir` as `base-path` relative to `git-path`.
|
|
336
342
|
- **REQ-106**: MUST make prompt `%%GUIDELINES_FILES%%`, `%%GUIDELINES_PATH%%`, and `%%TEMPLATE_PATH%%` resolve from static installation resources.
|
|
337
343
|
- **REQ-107**: MUST express prompt-visible absolute paths under user home with `~` and without trailing `/`.
|
|
338
|
-
- **REQ-031**: MUST make the `pi-usereq` menu expose
|
|
339
|
-
- **REQ-
|
|
344
|
+
- **REQ-031**: MUST make the `pi-usereq` menu expose `Show local configuration`, save pending local and global config, close the active menu tree, and then write persisted `<base-path>/.pi-usereq.json` text to the editor.
|
|
345
|
+
- **REQ-318**: MUST make the `pi-usereq` menu expose `Show global configuration`, save pending local and global config, close the active menu tree, and then write persisted `~/.config/pi-usereq/config.json` text to the editor.
|
|
346
|
+
- **REQ-162**: MUST render the `show-local-config` current value as the `~`-relative local config path using the settings-list `dim` value style.
|
|
347
|
+
- **REQ-319**: MUST render the `show-global-config` current value as the `~`-relative global config path using the settings-list `dim` value style.
|
|
340
348
|
- **REQ-032**: MUST inject a pi.dev governance block into rendered prompts when `docs/pi.dev/agent-document-manifest.json` exists under the project base.
|
|
341
349
|
- **REQ-033**: MUST make that block require manifest-guided document review before implementing or changing extension code that interfaces with the pi.dev CLI.
|
|
342
350
|
- **REQ-034**: MUST make that block require manifest-guided document review before analyzing, verifying, or fixing extension code that interfaces with the pi.dev CLI.
|
|
@@ -344,10 +352,10 @@ PI-useReq is a TypeScript pi extension plus companion Node CLI and standalone ex
|
|
|
344
352
|
- **REQ-273**: MUST make that block declare every path under `docs/` and `pi.dev-src/` read-only for analysis, implementation, verification, and bug fixing.
|
|
345
353
|
- **REQ-274**: MUST make that block require validation against `pi.dev-src/pi-mono` when manifest or `docs/pi.dev/coding-agent-docs/` guidance is ambiguous for extension-to-pi-client interface behavior.
|
|
346
354
|
- **REQ-275**: MUST make that block require validation against `pi.dev-src/pi-mono` for bug fixes or problem resolution influenced by extension-to-pi-client interface implementations.
|
|
347
|
-
- **REQ-035**: MUST parse repeatable `--enable-static-check LANG=Command,CMD[,PARAM...]` CLI options before command dispatch and merge resulting entries into persisted
|
|
355
|
+
- **REQ-035**: MUST parse repeatable `--enable-static-check LANG=Command,CMD[,PARAM...]` CLI options before command dispatch and merge resulting entries into persisted global checker lists.
|
|
348
356
|
- **REQ-253**: MUST set `static-check.<language>.enabled=enable` whenever guided or CLI `--enable-static-check` entry creation targets that language.
|
|
349
|
-
- **REQ-036**: MUST preserve existing `static-check` entries, append non-duplicate `--enable-static-check` entries in argument order, and treat canonical language, module, cmd, and params as the duplicate identity.
|
|
350
|
-
- **REQ-037**: MUST reject `--enable-static-check` `Command` entries whose executable is unavailable on `PATH` and MUST NOT modify persisted
|
|
357
|
+
- **REQ-036**: MUST preserve existing global `static-check` checker entries, append non-duplicate `--enable-static-check` entries in argument order, and treat canonical language, module, cmd, and params as the duplicate identity.
|
|
358
|
+
- **REQ-037**: MUST reject `--enable-static-check` `Command` entries whose executable is unavailable on `PATH` and MUST NOT modify persisted local or global configuration when validation fails.
|
|
351
359
|
- **REQ-038**: MUST honor `--verbose` only for `files-summarize`, `files-compress`, `files-find`, `summarize`, `compress`, and `find`, emitting command progress to stderr while leaving stdout payload format unchanged.
|
|
352
360
|
- **REQ-039**: MUST support `--enable-line-numbers` only for `files-compress`, `compress`, `files-find`, and `find`, and MUST leave corresponding outputs unnumbered when the flag is absent.
|
|
353
361
|
- **REQ-040**: MUST store canonical expected CLI result fixtures as UTF-8 text files under `tests/fixtures_attended_results/`, preserving normalized exit code, stdout, and stderr for each archived scenario.
|
|
@@ -365,7 +373,7 @@ PI-useReq is a TypeScript pi extension plus companion Node CLI and standalone ex
|
|
|
365
373
|
- **REQ-143**: MUST default `PI_NOTIFY_SOUND_MID_CMD` to `paplay --volume=43690 %%INSTALLATION_PATH%%/resources/sounds/Soft-high-tech-notification-sound-effect.mp3`.
|
|
366
374
|
- **REQ-144**: MUST default `PI_NOTIFY_SOUND_HIGH_CMD` to `paplay --volume=65535 %%INSTALLATION_PATH%%/resources/sounds/Soft-high-tech-notification-sound-effect.mp3`.
|
|
367
375
|
- **REQ-145**: MUST derive static `git-path` during bootstrap from `base-path` and repository ancestry rules, ignoring project-configuration JSON values.
|
|
368
|
-
- **REQ-146**: MUST NOT read or persist `base-path` or `git-path` in
|
|
376
|
+
- **REQ-146**: MUST NOT read or persist `base-path` or `git-path` in local or global configuration JSON.
|
|
369
377
|
- **REQ-149**: MUST label notification settings actions as `Notify command`, `Enable sound (boot value)`, `Sound toggle hotkey bind`, `Sound command (low|mid|high vol.)`, `Pushover User Key/Delivery Group Key`, and `Pushover Token/API Token Key`.
|
|
370
378
|
- **REQ-150**: MUST omit overview rows and reference-only actions from the main, notification, startup-tool, and static-check configuration menus.
|
|
371
379
|
- **REQ-151**: MUST render `pi-usereq`, notification, static-check, and startup-tool menus with left-aligned labels and right-aligned current values using the active CLI settings-list theme semantics.
|
|
@@ -380,27 +388,31 @@ PI-useReq is a TypeScript pi extension plus companion Node CLI and standalone ex
|
|
|
380
388
|
- **TST-060**: MUST verify prompt rendering replaces `%%PROMPT%%` and expands `%%COMMIT%%` from rendered `git_commit.md` or `git_read-only.md` according to `AUTO_GIT_COMMIT`.
|
|
381
389
|
- **TST-003**: MUST verify standalone `files-tokens` outputs match the Python oracle, `--test-static-check` dummy or command outputs match archived fixtures, and `files-summarize`, `files-compress`, plus `files-find` preserve leading source tabs.
|
|
382
390
|
- **TST-004**: MUST verify project `tokens` outputs match the Python oracle, verify `files-static-check` plus `static-check` against archived fixtures, and verify `summarize`, `compress`, plus `find` preserve leading source tabs.
|
|
383
|
-
- **TST-005**: MUST verify the configuration menu saves `docs-dir
|
|
384
|
-
- **TST-084**: MUST verify configuration persistence trims trailing `/` and keeps `docs-dir`, `tests-dir`, and `src-dir` relative.
|
|
391
|
+
- **TST-005**: MUST verify the configuration menu saves `docs-dir` locally and `AUTO_GIT_COMMIT`, `GIT_WORKTREE_ENABLED`, plus `GIT_WORKTREE_PREFIX` globally immediately after each change.
|
|
392
|
+
- **TST-084**: MUST verify local configuration persistence trims trailing `/` and keeps `docs-dir`, `tests-dir`, and `src-dir` relative.
|
|
385
393
|
- **TST-046**: MUST verify `Language static code checkers` omits module selection, raw-spec actions, supported-language reference actions, and hides `Dummy`, `Pylance`, and `Ruff` from user-configurable actions.
|
|
386
|
-
- **TST-077**: MUST verify `Language static code checkers` renders 20 per-language `on|off` toggle rows between `Remove static code checker` and `Reset defaults`, and persists toggle changes.
|
|
387
|
-
- **TST-078**: MUST verify default configuration
|
|
394
|
+
- **TST-077**: MUST verify `Language static code checkers` renders 20 per-language `on|off` toggle rows between `Remove static code checker` and `Reset defaults`, and persists toggle changes only in local configuration.
|
|
395
|
+
- **TST-078**: MUST verify default configuration stores documented per-language `enabled` flags locally and checker lists globally for `C`, `C++`, `Python`, `JavaScript`, and `TypeScript`.
|
|
396
|
+
- **TST-108**: MUST verify guided static-check entry addition updates global checker lists and sets the targeted local enable flag to `enable`, and guided removal updates global checker lists.
|
|
397
|
+
- **TST-112**: MUST verify `--enable-static-check` stores checker commands in global configuration and preserves local enablement according to the documented defaulting rules.
|
|
388
398
|
- **TST-079**: MUST verify `files-static-check` and `static-check` execute zero checkers and expose empty configured-checker lists when the target language `enabled=disable`.
|
|
389
399
|
- **TST-006**: MUST verify `session_start` activates configured startup tools, resets workflow state to `idle` for `startup|new|reload`, and updates the single-line `pi-usereq` status bar.
|
|
390
400
|
- **TST-031**: MUST verify the status bar renders `status` before `branch`, omits `current-path`, `base`, `docs`, `src`, `tests`, `git`, and `tools`, and preserves documented field-value theme separation.
|
|
391
401
|
- **TST-032**: MUST verify extension registration installs wrappers for all documented lifecycle hooks and routes replayed hook payloads through `updateExtensionStatus`.
|
|
392
402
|
- **TST-033**: MUST verify the status bar renders ordered `status`, `branch`, `context`, `elapsed`, and `sound` fields plus the documented icon-based `context` gauge thresholds.
|
|
393
|
-
- **TST-037**: MUST verify the `Notifications` menu persists notification and boot-sound settings through `Notification events` and `Sound events` submenus using the documented labels
|
|
394
|
-
- **TST-038**: MUST verify the sound-toggle shortcut cycles only the active runtime sound level, leaves
|
|
403
|
+
- **TST-037**: MUST verify the `Notifications` menu persists notification and boot-sound settings only in global configuration through `Notification events` and `Sound events` submenus using the documented labels and order.
|
|
404
|
+
- **TST-038**: MUST verify the sound-toggle shortcut cycles only the active runtime sound level, leaves local and global configuration unchanged, and refreshes the status bar with the updated `sound` field.
|
|
395
405
|
- **TST-097**: MUST verify `session_start` loads the active runtime sound level from persisted `notify-sound`.
|
|
396
|
-
- **TST-098**: MUST verify menu-selected boot sound changes persist to
|
|
397
|
-
- **TST-047**: MUST verify the `Notifications` menu exposes `Pushover events` before direct Pushover settings, keeps `Enable pushover` dimmed and locked until both credential fields are non-empty, and persists Pushover event and credential values.
|
|
406
|
+
- **TST-098**: MUST verify menu-selected boot sound changes persist to global configuration without changing the active runtime sound level.
|
|
407
|
+
- **TST-047**: MUST verify the `Notifications` menu exposes `Pushover events` before direct Pushover settings, keeps `Enable pushover` dimmed and locked until both credential fields are non-empty, and persists Pushover event and credential values only in global configuration.
|
|
398
408
|
- **TST-072**: MUST verify `Pushover text` displays escaped control sequences in menus and decodes the documented escape sequences from input before persistence.
|
|
399
409
|
- **TST-048**: MUST verify native Pushover requests honor global enable, completed/interrupted/failed Pushover toggles, credentials, priority, title, and text placeholder substitution including `%%RESULT%%` for enabled prompt-end outcomes.
|
|
400
410
|
- **TST-049**: MUST verify the status bar renders ordered `status`, `branch`, `context`, `elapsed`, and `sound` fields and appends `sound:<level>`.
|
|
401
411
|
- **TST-050**: MUST verify `PI_NOTIFY_CMD` placeholder substitution including `%%RESULT%%` and routing honor global notify enable plus completed/interrupted/failed notify toggles.
|
|
402
412
|
- **TST-034**: MUST verify `ctx.getContextUsage()` snapshots refresh status updates and `elapsed` preserves `⚑` plus `⌛︎` across escape-triggered cancellation.
|
|
403
|
-
- **TST-062**: MUST verify `Show configuration` saves pending config, closes the active configuration menu tree, and writes
|
|
413
|
+
- **TST-062**: MUST verify `Show local configuration` saves pending local and global config, closes the active configuration menu tree, and writes persisted `<base-path>/.pi-usereq.json` text into the editor.
|
|
414
|
+
- **TST-109**: MUST verify `Show global configuration` saves pending local and global config, closes the active configuration menu tree, and writes persisted `~/.config/pi-usereq/config.json` text into the editor.
|
|
415
|
+
- **TST-111**: MUST verify `Show local configuration` and `Show global configuration` render `~`-relative config paths with the settings-list `dim` value style.
|
|
404
416
|
- **TST-063**: MUST verify `⚑` plus `⌛︎` survive `session_start` reason `new` and reset on `session_start` reason `reload`.
|
|
405
417
|
- **TST-045**: MUST verify default configuration enables auto git commit, disables debug, notify, and Pushover globally, initializes sound to `none`, sets `DEBUG_LOG_FILE=/tmp/PI-useReq.json`, and persists the documented notify and Pushover templates.
|
|
406
418
|
- **TST-051**: MUST verify sound routing honors the active runtime sound state and completed/interrupted/failed sound toggles.
|
|
@@ -445,7 +457,7 @@ PI-useReq is a TypeScript pi extension plus companion Node CLI and standalone ex
|
|
|
445
457
|
- **TST-039**: MUST verify `.github/workflows/release-npm.yml` keeps the existing tag filter, gates downstream release work on `origin/master`, runs npm publication, and creates the GitHub Release from generated changelog text.
|
|
446
458
|
- **TST-042**: MUST verify `package.json` keeps `name` equal to `pi-usereq` so npm publication resolves to `https://www.npmjs.com/package/pi-usereq`.
|
|
447
459
|
- **TST-044**: MUST verify `package.json` keeps npm provenance metadata aligned to the canonical GitHub repository, issues URL, and README homepage.
|
|
448
|
-
- **TST-040**: MUST verify
|
|
460
|
+
- **TST-040**: MUST verify local and global configuration files omit derived static and dynamic path fields while runtime path context and status rendering still derive them correctly.
|
|
449
461
|
- **TST-041**: MUST verify the `pi-usereq` menu uses the documented labels and order, every configuration menu ends with `Reset defaults` without right-aligned value text, dims locked git or debug rows, and preserves the documented summary rows.
|
|
450
462
|
- **TST-073**: MUST verify the `Debug` submenu persists `DEBUG_ENABLED`, `DEBUG_STATUS_CHANGES`, `DEBUG_WORKFLOW_EVENTS`, `DEBUG_LOG_FILE`, `DEBUG_LOG_ON_STATUS`, and per-item debug toggles through immediate-save, reset-confirmation, and focus-preserving re-render flows.
|
|
451
463
|
- **TST-074**: MUST verify selected custom and embedded tool debug toggles append JSON entries with tool name, workflow state, input, result, and error flag, honoring `DEBUG_ENABLED` plus `DEBUG_LOG_ON_STATUS`.
|
|
@@ -477,6 +489,7 @@ PI-useReq is a TypeScript pi extension plus companion Node CLI and standalone ex
|
|
|
477
489
|
- **TST-070**: MUST verify prompt-end handling ignores unrelated or non-success completions and performs cleanup only for the matched successful prompt.
|
|
478
490
|
- **TST-071**: MUST verify matched successful cleanup transitions workflow state through `merging` to `idle` and transitions to `error` on merge or deletion failure.
|
|
479
491
|
- **TST-065**: MUST verify default startup-tool enablement matches the documented enabled and disabled tool matrix.
|
|
492
|
+
- **TST-110**: MUST verify `Enable tools` toggles, enable-all, disable-all, and reset-defaults persist only in global configuration.
|
|
480
493
|
- **TST-066**: MUST verify `req-<prompt>` commands keep working when extension custom-tool registrations are removed from the runtime inventory.
|
|
481
494
|
- **TST-059**: MUST verify every agent-tool registration defines custom `renderResult` and that compact rendering shows essential invocation parameters while expanded rendering avoids fallback raw-content display.
|
|
482
495
|
- **TST-086**: MUST verify bundled prompt-backed `req-<prompt>` commands abort before prompt dispatch when the persisted execution-session header cwd or `process.cwd()` differs from the expected execution path, and abort before merge when persisted execution-session header metadata or verified worktree artifacts diverge, while stale pre-switch context probes alone do not abort.
|
|
@@ -63,12 +63,18 @@
|
|
|
63
63
|
- `main(...)`: parse argv, normalize config, dispatch selected runner, serialize result [`src/cli.ts`]
|
|
64
64
|
- `parseArgs(...)`: map argv tokens into a structured command selection [`src/cli.ts`]
|
|
65
65
|
- `takeUntilOption(...)`: collect positional operands until next option token [`src/cli.ts`]
|
|
66
|
-
- `applyEnableStaticCheckSpecs(...)`: merge repeatable CLI static-check enable specs
|
|
67
|
-
- `loadMutableProjectConfig(...)`: load
|
|
66
|
+
- `applyEnableStaticCheckSpecs(...)`: merge repeatable CLI static-check enable specs into global checker lists, preserve existing entries, and force targeted local enable flags on before command dispatch [`src/cli.ts`]
|
|
67
|
+
- `loadMutableProjectConfig(...)`: load effective config without intermediate persistence [`src/cli.ts`]
|
|
68
68
|
- `resolveProjectBase(...)`: validate project base path [`src/core/tool-runner.ts`]
|
|
69
|
-
- `loadConfig(...)`: load config or defaults [`src/core/config.ts`]
|
|
70
|
-
- `
|
|
71
|
-
|
|
69
|
+
- `loadConfig(...)`: load merged local/global config or defaults [`src/core/config.ts`]
|
|
70
|
+
- `loadGlobalConfig(...)`: load global config or defaults [`src/core/config.ts`]
|
|
71
|
+
- `getGlobalConfigPath(...)`: resolve global config file path [`src/core/config.ts`]
|
|
72
|
+
- `readConfigPayload(...)`: parse persisted global config JSON when present [`src/core/config.ts`]
|
|
73
|
+
- `loadLocalConfig(...)`: load local config or defaults using global static-check enable defaults [`src/core/config.ts`]
|
|
74
|
+
- `getProjectConfigPath(...)`: resolve local config file path [`src/core/config.ts`]
|
|
75
|
+
- `readConfigPayload(...)`: parse persisted local config JSON when present [`src/core/config.ts`]
|
|
76
|
+
- `mergeConfigScopes(...)`: combine local and global config into the effective runtime config [`src/core/config.ts`]
|
|
77
|
+
- `mergeStaticCheckConfig(...)`: combine local enable flags with global checker arrays [`src/core/config.ts`]
|
|
72
78
|
- `normalizeEnabledPiUsereqTools(...)`: canonicalize startup tools [`src/core/pi-usereq-tools.ts`]
|
|
73
79
|
- `isInsideGitRepo(...)`: probe git repository membership [`src/core/tool-runner.ts`]
|
|
74
80
|
- `runCapture(...)`: run git subprocess [`src/core/tool-runner.ts`]
|
|
@@ -79,23 +85,41 @@
|
|
|
79
85
|
- `validateStaticCheckEntry(...)`: validate command-backed entry before config write [`src/core/static-check.ts`]
|
|
80
86
|
- `findExecutable(...)`: resolve executable on PATH or explicit path [`src/core/static-check.ts`]
|
|
81
87
|
- `isExecutableFile(...)`: verify executable access bits [`src/core/static-check.ts`]
|
|
82
|
-
- `saveConfig(...)`: persist
|
|
83
|
-
- `
|
|
88
|
+
- `saveConfig(...)`: persist split local/global config JSON [`src/core/config.ts`]
|
|
89
|
+
- `saveLocalConfig(...)`: write the local config file [`src/core/config.ts`]
|
|
90
|
+
- `getProjectConfigPath(...)`: resolve local config file path [`src/core/config.ts`]
|
|
91
|
+
- `saveGlobalConfig(...)`: write the global config file [`src/core/config.ts`]
|
|
92
|
+
- `getGlobalConfigPath(...)`: resolve global config file path [`src/core/config.ts`]
|
|
84
93
|
- `loadAndRepairConfig(...)`: persist normalized config when `--here` or `--base` is active and no CLI static-check mutation is requested [`src/core/tool-runner.ts`]
|
|
85
94
|
- `resolveProjectBase(...)`: validate project base path [`src/core/tool-runner.ts`]
|
|
86
|
-
- `loadConfig(...)`: load config or defaults [`src/core/config.ts`]
|
|
87
|
-
- `
|
|
88
|
-
|
|
95
|
+
- `loadConfig(...)`: load merged local/global config or defaults [`src/core/config.ts`]
|
|
96
|
+
- `loadGlobalConfig(...)`: load global config or defaults [`src/core/config.ts`]
|
|
97
|
+
- `getGlobalConfigPath(...)`: resolve global config file path [`src/core/config.ts`]
|
|
98
|
+
- `readConfigPayload(...)`: parse persisted global config JSON when present [`src/core/config.ts`]
|
|
99
|
+
- `loadLocalConfig(...)`: load local config or defaults using global static-check enable defaults [`src/core/config.ts`]
|
|
100
|
+
- `getProjectConfigPath(...)`: resolve local config file path [`src/core/config.ts`]
|
|
101
|
+
- `readConfigPayload(...)`: parse persisted local config JSON when present [`src/core/config.ts`]
|
|
102
|
+
- `mergeConfigScopes(...)`: combine local and global config into the effective runtime config [`src/core/config.ts`]
|
|
103
|
+
- `mergeStaticCheckConfig(...)`: combine local enable flags with global checker arrays [`src/core/config.ts`]
|
|
89
104
|
- `normalizeEnabledPiUsereqTools(...)`: canonicalize startup tools [`src/core/pi-usereq-tools.ts`]
|
|
90
105
|
- `isInsideGitRepo(...)`: probe git repository membership [`src/core/tool-runner.ts`]
|
|
91
106
|
- `runCapture(...)`: run git subprocess [`src/core/tool-runner.ts`]
|
|
92
107
|
- `resolveGitRoot(...)`: resolve repository root [`src/core/tool-runner.ts`]
|
|
93
108
|
- `runCapture(...)`: run git subprocess [`src/core/tool-runner.ts`]
|
|
94
|
-
- `saveConfig(...)`: persist
|
|
95
|
-
- `
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
109
|
+
- `saveConfig(...)`: persist split local/global config JSON [`src/core/config.ts`]
|
|
110
|
+
- `saveLocalConfig(...)`: write the local config file [`src/core/config.ts`]
|
|
111
|
+
- `getProjectConfigPath(...)`: resolve local config file path [`src/core/config.ts`]
|
|
112
|
+
- `saveGlobalConfig(...)`: write the global config file [`src/core/config.ts`]
|
|
113
|
+
- `getGlobalConfigPath(...)`: resolve global config file path [`src/core/config.ts`]
|
|
114
|
+
- `loadConfig(...)`: load effective merged local/global config for dispatch when no CLI static-check mutation is requested [`src/core/config.ts`]
|
|
115
|
+
- `loadGlobalConfig(...)`: load global config or defaults [`src/core/config.ts`]
|
|
116
|
+
- `getGlobalConfigPath(...)`: resolve global config file path [`src/core/config.ts`]
|
|
117
|
+
- `readConfigPayload(...)`: parse persisted global config JSON when present [`src/core/config.ts`]
|
|
118
|
+
- `loadLocalConfig(...)`: load local config or defaults using global static-check enable defaults [`src/core/config.ts`]
|
|
119
|
+
- `getProjectConfigPath(...)`: resolve local config file path [`src/core/config.ts`]
|
|
120
|
+
- `readConfigPayload(...)`: parse persisted local config JSON when present [`src/core/config.ts`]
|
|
121
|
+
- `mergeConfigScopes(...)`: combine local and global config into the effective runtime config [`src/core/config.ts`]
|
|
122
|
+
- `mergeStaticCheckConfig(...)`: combine local enable flags with global checker arrays [`src/core/config.ts`]
|
|
99
123
|
- `normalizeEnabledPiUsereqTools(...)`: canonicalize startup tools [`src/core/pi-usereq-tools.ts`]
|
|
100
124
|
- `runFilesTokens(...)`: branch `--files-tokens`; count explicit-file token, size, and structure metrics [`src/core/tool-runner.ts`]
|
|
101
125
|
- `countFilesMetrics(...)`: read files and extract token, character, byte, line, heading, and optional Doxygen facts [`src/core/token-counter.ts`]
|
|
@@ -551,8 +575,9 @@
|
|
|
551
575
|
- `deliverPromptCommand(...)`: dispatch prompt replay into the current recorded session [`src/index.ts`]
|
|
552
576
|
- External boundaries: `RecordingExtensionAPI.sendUserMessage(...)` records the delivered prompt payload.
|
|
553
577
|
- `configurePiUsereq(...)`: execute the interactive configuration menu [`src/index.ts`]
|
|
554
|
-
- `buildPiUsereqMenuChoices(...)`: serialize top-level settings actions including effective worktree locking
|
|
555
|
-
- `
|
|
578
|
+
- `buildPiUsereqMenuChoices(...)`: serialize top-level settings actions including effective worktree locking plus display-only local and global config-path rows [`src/index.ts`]
|
|
579
|
+
- `formatLocalConfigPathForMenu(...)`: format the current local config path with the shared `~`-relative path formatter for menu display [`src/index.ts`]
|
|
580
|
+
- `formatGlobalConfigPathForMenu(...)`: format the current global config path with the shared `~`-relative path formatter for menu display [`src/index.ts`]
|
|
556
581
|
- `showPiUsereqSettingsMenu(...)`: render the shared settings-menu UI for top-level and submenu actions, keeping inline toggle rows open while rebuilding dependent rows in place [`src/core/settings-menu.ts`]
|
|
557
582
|
- `formatPiUsereqSettingsMenuTitle(...)`: rebuild the menu title with active-theme semantics [`src/core/settings-menu.ts`]
|
|
558
583
|
- `buildPiUsereqSettingsListTheme(...)`: prefer shared CLI settings-list theming and fall back during offline replay [`src/core/settings-menu.ts`]
|
|
@@ -560,7 +585,7 @@
|
|
|
560
585
|
- `buildSettingItems(...)`: map menu choices into settings-list rows, apply optional dim tones, disable non-selectable actions, and expose inline value cycles [`src/core/settings-menu.ts`]
|
|
561
586
|
- `setSettingsListSelectedIndex(...)`: restore the focused row during in-place menu rebuilds [`src/core/settings-menu.ts`]
|
|
562
587
|
- `getSettingsListSelectedIndex(...)`: expose the focused row for the offline bridge after inline toggle handling [`src/core/settings-menu.ts`]
|
|
563
|
-
- `saveProjectConfig(...)`: persist menu updates
|
|
588
|
+
- `saveProjectConfig(...)`: persist split local/global menu updates [`src/index.ts`]
|
|
564
589
|
- `setPiUsereqStatusConfig(...)`: cache the saved config for footer rendering [`src/core/extension-status.ts`]
|
|
565
590
|
- `renderPiUsereqStatus(...)`: refresh live context usage and render the status/branch/context/elapsed/sound footer after save-and-close with CLI-theme token overlays [`src/core/extension-status.ts`]
|
|
566
591
|
- `createStatusThemeAdapter(...)`: constrain status rendering to CLI-supported `accent`, `warning`, `dim`, and `error` theme tokens [`src/core/extension-status.ts`]
|
|
@@ -576,10 +601,10 @@
|
|
|
576
601
|
- `formatElapsedStatusValue(...)`: compose `⏱︎`, `⚑`, and `⌛︎` timer segments [`src/core/extension-status.ts`]
|
|
577
602
|
- `formatCompletedStatusDuration(...)`: render completed timers or the unset placeholder [`src/core/extension-status.ts`]
|
|
578
603
|
- `formatStatusDuration(...)`: render `M:SS` durations [`src/core/extension-status.ts`]
|
|
579
|
-
- `configureStaticCheckMenu(...)`: interactive
|
|
580
|
-
- `configurePiUsereqToolsMenu(...)`: interactive active-tool editor whose per-tool toggle submenu keeps focus while
|
|
581
|
-
- `configurePiNotifyMenu(...)`: interactive notify, sound, and Pushover editor
|
|
582
|
-
- `buildPiNotifyMenuChoices(...)`: serialize command-notify, sound, and Pushover blocks plus shared-event submenu launchers, including boot-sound rows sourced from persisted config [`src/index.ts`]
|
|
604
|
+
- `configureStaticCheckMenu(...)`: interactive editor that adds and removes global Command entries while toggling local per-language enable flags [`src/index.ts`]
|
|
605
|
+
- `configurePiUsereqToolsMenu(...)`: interactive active-tool editor whose per-tool toggle submenu keeps focus while persisting enablement in global config [`src/index.ts`]
|
|
606
|
+
- `configurePiNotifyMenu(...)`: interactive notify, sound, and Pushover editor that persists every subtree mutation in global config [`src/index.ts`]
|
|
607
|
+
- `buildPiNotifyMenuChoices(...)`: serialize command-notify, sound, and Pushover blocks plus shared-event submenu launchers, including boot-sound rows sourced from persisted global config [`src/index.ts`]
|
|
583
608
|
- `buildPiNotifyEventLauncherChoice(...)`: serialize one event-submenu launcher row with a compact enabled-toggle summary [`src/index.ts`]
|
|
584
609
|
- `buildPiNotifyPushoverRows(...)`: serialize direct Pushover rows with locked enablement guidance text plus the shared event-submenu launcher [`src/index.ts`]
|
|
585
610
|
- `configurePiNotifyEventMenu(...)`: interactive completed/interrupted/failed event editor that keeps focus while toggling `on|off` rows for one notification transport [`src/index.ts`]
|
|
@@ -1082,9 +1107,10 @@
|
|
|
1082
1107
|
- `resolveGitRoot(...)`: resolve repository root [`src/core/tool-runner.ts`]
|
|
1083
1108
|
- `runCapture(...)`: run git subprocess [`src/core/tool-runner.ts`]
|
|
1084
1109
|
- `getProjectBase(...)`: resolve project base from command context cwd [`src/index.ts`]
|
|
1085
|
-
- `buildPiUsereqMenuChoices(...)`: serialize top-level settings actions including effective worktree locking, notification and debug summaries,
|
|
1110
|
+
- `buildPiUsereqMenuChoices(...)`: serialize top-level settings actions including effective worktree locking, notification and debug summaries, display-only local and global config-path rows, and reset-only terminal rows [`src/index.ts`]
|
|
1086
1111
|
- `formatDebugMenuSummary(...)`: summarize global debug mode plus selected tool and prompt counts [`src/index.ts`]
|
|
1087
|
-
- `
|
|
1112
|
+
- `formatLocalConfigPathForMenu(...)`: format the current local config path with the shared `~`-relative path formatter for menu display [`src/index.ts`]
|
|
1113
|
+
- `formatGlobalConfigPathForMenu(...)`: format the current global config path with the shared `~`-relative path formatter for menu display [`src/index.ts`]
|
|
1088
1114
|
- `buildTerminalSettingsMenuChoices(...)`: append the canonical `Reset defaults` row without `Save and close` [`src/index.ts`]
|
|
1089
1115
|
- `showPiUsereqSettingsMenu(...)`: render the shared settings-menu UI for top-level and submenu actions, keeping inline toggle rows open while rebuilding dependent rows in place [`src/core/settings-menu.ts`]
|
|
1090
1116
|
- `formatPiUsereqSettingsMenuTitle(...)`: rebuild the menu title with active-theme semantics [`src/core/settings-menu.ts`]
|
|
@@ -1095,11 +1121,16 @@
|
|
|
1095
1121
|
- `getSettingsListSelectedIndex(...)`: expose the focused row for the offline bridge after inline toggle handling [`src/core/settings-menu.ts`]
|
|
1096
1122
|
- `persistConfigChange(...)`: persist config immediately after every settings mutation and refresh status rendering [`src/index.ts`]
|
|
1097
1123
|
- `getProjectBase(...)`: resolve project base from command context cwd [`src/index.ts`]
|
|
1098
|
-
- `saveConfig(...)`: persist config JSON [`src/core/config.ts`]
|
|
1099
|
-
- `
|
|
1100
|
-
|
|
1124
|
+
- `saveConfig(...)`: persist split local/global config JSON [`src/core/config.ts`]
|
|
1125
|
+
- `saveLocalConfig(...)`: write the local config file [`src/core/config.ts`]
|
|
1126
|
+
- `getProjectConfigPath(...)`: resolve local config file path [`src/core/config.ts`]
|
|
1127
|
+
- `saveGlobalConfig(...)`: write the global config file [`src/core/config.ts`]
|
|
1128
|
+
- `getGlobalConfigPath(...)`: resolve global config file path [`src/core/config.ts`]
|
|
1129
|
+
- `writePersistedLocalConfigToEditor(...)`: read the already-persisted local config file and write its exact text into the editor [`src/index.ts`]
|
|
1101
1130
|
- `getProjectBase(...)`: resolve project base from command context cwd [`src/index.ts`]
|
|
1102
|
-
- `getProjectConfigPath(...)`: resolve the persisted config path [`src/core/config.ts`]
|
|
1131
|
+
- `getProjectConfigPath(...)`: resolve the persisted local config path [`src/core/config.ts`]
|
|
1132
|
+
- `writePersistedGlobalConfigToEditor(...)`: read the already-persisted global config file and write its exact text into the editor [`src/index.ts`]
|
|
1133
|
+
- `getGlobalConfigPath(...)`: resolve the persisted global config path [`src/core/config.ts`]
|
|
1103
1134
|
- `setPiUsereqStatusConfig(...)`: cache the just-saved docs/tests/src and pi-notify values for status rendering [`src/core/extension-status.ts`]
|
|
1104
1135
|
- `renderPiUsereqStatus(...)`: refresh live context usage and render the status/branch/context/elapsed/sound footer after save-and-close with CLI-theme token overlays [`src/core/extension-status.ts`]
|
|
1105
1136
|
- `createStatusThemeAdapter(...)`: constrain status rendering to CLI-supported `accent`, `warning`, `dim`, and `error` theme tokens [`src/core/extension-status.ts`]
|
|
@@ -1117,12 +1148,12 @@
|
|
|
1117
1148
|
- `formatElapsedStatusValue(...)`: compose `⏱︎`, `⚑`, and `⌛︎` timer segments [`src/core/extension-status.ts`]
|
|
1118
1149
|
- `formatCompletedStatusDuration(...)`: render completed timers or the unset placeholder [`src/core/extension-status.ts`]
|
|
1119
1150
|
- `formatStatusDuration(...)`: render `M:SS` durations [`src/core/extension-status.ts`]
|
|
1120
|
-
- `configureStaticCheckMenu(...)`: interactive
|
|
1151
|
+
- `configureStaticCheckMenu(...)`: interactive editor that adds and removes global Command entries while toggling local per-language enable flags [`src/index.ts`]
|
|
1121
1152
|
- `getStaticCheckLanguageConfigForMenu(...)`: resolve a menu-facing per-language static-check object [`src/index.ts`]
|
|
1122
|
-
- `countConfiguredStaticCheckLanguages(...)`: count languages that retain checker entries [`src/index.ts`]
|
|
1123
|
-
- `countEnabledStaticCheckLanguages(...)`: count languages whose enable flag is on [`src/index.ts`]
|
|
1124
|
-
- `formatStaticCheckLanguagesSummary(...)`: summarize enabled and configured checker languages [`src/index.ts`]
|
|
1125
|
-
- `buildStaticCheckMenuChoices(...)`: serialize guided add/remove actions plus direct per-language toggle rows [`src/index.ts`]
|
|
1153
|
+
- `countConfiguredStaticCheckLanguages(...)`: count languages that retain global checker entries [`src/index.ts`]
|
|
1154
|
+
- `countEnabledStaticCheckLanguages(...)`: count languages whose local enable flag is on [`src/index.ts`]
|
|
1155
|
+
- `formatStaticCheckLanguagesSummary(...)`: summarize enabled languages and configured global checker languages [`src/index.ts`]
|
|
1156
|
+
- `buildStaticCheckMenuChoices(...)`: serialize guided add/remove actions plus direct per-language local toggle rows [`src/index.ts`]
|
|
1126
1157
|
- `getSupportedStaticCheckLanguageSupport(...)`: enumerate supported languages and extensions [`src/core/static-check.ts`]
|
|
1127
1158
|
- `getSupportedStaticCheckLanguages(...)`: enumerate canonical supported languages [`src/core/static-check.ts`]
|
|
1128
1159
|
- `buildTerminalSettingsMenuChoices(...)`: append the canonical value-less `Reset defaults` row to the selector menu [`src/index.ts`]
|
|
@@ -1139,7 +1170,7 @@
|
|
|
1139
1170
|
- `createStaticCheckLanguageConfig(...)`: clone checker entries and derive the enable flag [`src/core/config.ts`]
|
|
1140
1171
|
- `createStaticCheckLanguageConfig(...)`: create empty per-language configs for toggle and removal flows [`src/core/config.ts`]
|
|
1141
1172
|
- `shellSplit(...)`: parse optional parameter input [`src/core/utils.ts`]
|
|
1142
|
-
- `configurePiUsereqToolsMenu(...)`: interactive active-tool editor whose per-tool toggle submenu keeps focus while
|
|
1173
|
+
- `configurePiUsereqToolsMenu(...)`: interactive active-tool editor whose per-tool toggle submenu keeps focus while persisting enablement in global config [`src/index.ts`]
|
|
1143
1174
|
- `applyConfiguredPiUsereqTools(...)`: enforce configured active-tool set [`src/index.ts`]
|
|
1144
1175
|
- `getConfiguredEnabledPiUsereqTools(...)`: canonicalize configured enabled tools [`src/index.ts`]
|
|
1145
1176
|
- `normalizeEnabledPiUsereqTools(...)`: canonicalize configurable active tools [`src/core/pi-usereq-tools.ts`]
|
|
@@ -1159,8 +1190,8 @@
|
|
|
1159
1190
|
- `selectDebugLogOnStatus(...)`: select one explicit workflow-state filter or `any` [`src/index.ts`]
|
|
1160
1191
|
- `confirmResetChanges(...)`: require explicit approval before applying reset mutations [`src/index.ts`]
|
|
1161
1192
|
- `resetDebugConfigToDefaults(...)`: restore the debug configuration subtree to documented defaults [`src/index.ts`]
|
|
1162
|
-
- `configurePiNotifyMenu(...)`: interactive notify, sound, and Pushover editor
|
|
1163
|
-
- `buildPiNotifyMenuChoices(...)`: serialize command-notify, sound, and Pushover blocks plus shared-event submenu launchers and the value-less terminal reset row, including boot-sound rows sourced from persisted config [`src/index.ts`]
|
|
1193
|
+
- `configurePiNotifyMenu(...)`: interactive notify, sound, and Pushover editor that persists every subtree mutation in global config while keeping runtime sound edits in memory only [`src/index.ts`]
|
|
1194
|
+
- `buildPiNotifyMenuChoices(...)`: serialize command-notify, sound, and Pushover blocks plus shared-event submenu launchers and the value-less terminal reset row, including boot-sound rows sourced from persisted global config [`src/index.ts`]
|
|
1164
1195
|
- `buildPiNotifyEventLauncherChoice(...)`: serialize one event-submenu launcher row with a compact enabled-toggle summary [`src/index.ts`]
|
|
1165
1196
|
- `buildPiNotifyPushoverRows(...)`: serialize direct Pushover rows with locked enablement guidance text plus the shared event-submenu launcher [`src/index.ts`]
|
|
1166
1197
|
- `buildTerminalSettingsMenuChoices(...)`: append the canonical value-less `Reset defaults` row [`src/index.ts`]
|