@plurnk/plurnk 0.83.5 → 0.84.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.
Files changed (93) hide show
  1. package/.env.defaults +2 -2
  2. package/README.md +129 -126
  3. package/conformance/agui-client.json +28 -41
  4. package/dist/QuestionForm.d.ts +17 -0
  5. package/dist/QuestionForm.d.ts.map +1 -0
  6. package/dist/QuestionForm.js +74 -0
  7. package/dist/QuestionForm.js.map +1 -0
  8. package/dist/agents.js +8 -8
  9. package/dist/agents.js.map +1 -1
  10. package/dist/agui_cli.d.ts +3 -7
  11. package/dist/agui_cli.d.ts.map +1 -1
  12. package/dist/agui_cli.js +27 -30
  13. package/dist/agui_cli.js.map +1 -1
  14. package/dist/build-info.json +1 -1
  15. package/dist/cli.d.ts +0 -1
  16. package/dist/cli.d.ts.map +1 -1
  17. package/dist/cli.js +11 -20
  18. package/dist/cli.js.map +1 -1
  19. package/dist/commands.d.ts +20 -0
  20. package/dist/commands.d.ts.map +1 -1
  21. package/dist/commands.js +7 -2
  22. package/dist/commands.js.map +1 -1
  23. package/dist/completion.d.ts +2 -2
  24. package/dist/completion.d.ts.map +1 -1
  25. package/dist/completion.js +12 -27
  26. package/dist/completion.js.map +1 -1
  27. package/dist/diagnostics.d.ts +1 -1
  28. package/dist/diagnostics.d.ts.map +1 -1
  29. package/dist/diagnostics.js +3 -3
  30. package/dist/diagnostics.js.map +1 -1
  31. package/dist/dispatcher.d.ts +1 -1
  32. package/dist/dispatcher.d.ts.map +1 -1
  33. package/dist/dispatcher.js +8 -13
  34. package/dist/dispatcher.js.map +1 -1
  35. package/dist/mcp.js +14 -14
  36. package/dist/mcp.js.map +1 -1
  37. package/dist/members.js +7 -7
  38. package/dist/members.js.map +1 -1
  39. package/dist/plan.d.ts +0 -1
  40. package/dist/plan.d.ts.map +1 -1
  41. package/dist/plan.js +12 -7
  42. package/dist/plan.js.map +1 -1
  43. package/dist/policy.d.ts +1 -3
  44. package/dist/policy.d.ts.map +1 -1
  45. package/dist/policy.js +5 -15
  46. package/dist/policy.js.map +1 -1
  47. package/dist/proposal.d.ts +0 -1
  48. package/dist/proposal.d.ts.map +1 -1
  49. package/dist/proposal.js +2 -31
  50. package/dist/proposal.js.map +1 -1
  51. package/dist/reasoning.d.ts +1 -0
  52. package/dist/reasoning.d.ts.map +1 -1
  53. package/dist/reasoning.js +4 -1
  54. package/dist/reasoning.js.map +1 -1
  55. package/dist/render.d.ts +4 -2
  56. package/dist/render.d.ts.map +1 -1
  57. package/dist/render.js +39 -48
  58. package/dist/render.js.map +1 -1
  59. package/dist/skills.js +9 -9
  60. package/dist/skills.js.map +1 -1
  61. package/dist/status.d.ts +9 -6
  62. package/dist/status.d.ts.map +1 -1
  63. package/dist/status.js +37 -41
  64. package/dist/status.js.map +1 -1
  65. package/dist/stream.d.ts +0 -1
  66. package/dist/stream.d.ts.map +1 -1
  67. package/dist/stream.js +2 -2
  68. package/dist/stream.js.map +1 -1
  69. package/dist/subcommands.d.ts.map +1 -1
  70. package/dist/subcommands.js +4 -3
  71. package/dist/subcommands.js.map +1 -1
  72. package/dist/tail-text.d.ts +9 -0
  73. package/dist/tail-text.d.ts.map +1 -0
  74. package/dist/tail-text.js +23 -0
  75. package/dist/tail-text.js.map +1 -0
  76. package/dist/transport.d.ts +0 -2
  77. package/dist/transport.d.ts.map +1 -1
  78. package/dist/transport.js +12 -7
  79. package/dist/transport.js.map +1 -1
  80. package/dist/tui-surface.d.ts +1 -0
  81. package/dist/tui-surface.d.ts.map +1 -1
  82. package/dist/tui-surface.js +10 -1
  83. package/dist/tui-surface.js.map +1 -1
  84. package/dist/tui.d.ts +1 -2
  85. package/dist/tui.d.ts.map +1 -1
  86. package/dist/tui.js +90 -98
  87. package/dist/tui.js.map +1 -1
  88. package/dist/workers.d.ts +10 -0
  89. package/dist/workers.d.ts.map +1 -1
  90. package/dist/workers.js +63 -5
  91. package/dist/workers.js.map +1 -1
  92. package/man/plurnk.1 +6 -2
  93. package/package.json +3 -3
package/.env.defaults CHANGED
@@ -22,8 +22,8 @@
22
22
  # PLURNK_AUTO=
23
23
 
24
24
  # LoopPolicy JSON applied to every loop. `--policy` overrides it; `--auto` sets
25
- # proposals to accept, and a `?` prompt additionally denies EXEC for that loop.
26
- # PLURNK_CLIENT_LOOP_POLICY={"capabilities":{},"proposals":"review"}
25
+ # proposals to accept; a `?` prompt selects review.
26
+ # PLURNK_CLIENT_LOOP_POLICY={"proposals":"review"}
27
27
 
28
28
  # CapabilityPolicy JSON applied when this client creates a workspace. Existing
29
29
  # workspaces retain their durable setting.
package/README.md CHANGED
@@ -1,161 +1,164 @@
1
- # plurnk
2
-
3
- A terminal client for [plurnk-service](https://github.com/plurnk/plurnk-service). Type a prompt, drive a real model loop through the plurnk DSL — a compact grammar where the model emits operations, the daemon executes them against real workspaces, and the client renders the trace. One-shot CLI, scrollback-native interactive terminal, and Neovim integration share ONE wire: AG-UI+ (the daemon's sole client surface).
4
-
5
- Plurnk gets its power from structure, not raw model capability: the grammar forces disciplined multi-turn loops, real receipts for every operation, and a budget the model can actually see and manage. Fancy agent behavior on weak models.
6
-
7
- ## install
8
-
9
- Try it instantly zero install, npx fetches both (always latest):
10
-
11
- ```
12
- export PLURNK_API_KEY="…" # your plurnk key (optional! works with everything.)
13
- npx @plurnk/plurnk-service start # daemon — terminal 1
14
- npx @plurnk/plurnk "what is 2+2?" # client terminal 2
1
+ # Plurnk
2
+
3
+ **The [Bitter Lesson](https://bitterlesson.ai/) applies to the harness, too.**
4
+
5
+ The model should decide what to remember, where to look, when to delegate, and
6
+ how to proceed. Plurnk is an agentic operating system and programming language
7
+ that puts those decisions in the model's hands.
8
+
9
+ Files, tools, and the agent's own context become an addressable environment.
10
+ Composable operations let it search that environment, make precise changes,
11
+ curate its memory, and build its own delegation topology. The runtime provides
12
+ reliable machinery; the model supplies the strategy.
13
+
14
+ Use local or cloud models to build software, investigate a codebase, or automate
15
+ work across tools. Interact from your terminal or editor, or compose Plurnk
16
+ with ordinary shell pipelines.
17
+
18
+ This repository provides the CLI and interactive terminal client for
19
+ [plurnk-service](https://github.com/plurnk/plurnk-service), the shared daemon.
20
+
21
+ ## Why Plurnk
22
+
23
+ - **Curation, not compaction.** The agent retrieves the passages it needs and
24
+ removes stale items or individual lines from its active context. Its working
25
+ set changes; source material and original execution evidence survive.
26
+ - **Precision without ceremony.** Line ranges, character regions, and
27
+ hash-anchored edits make surgical changes possible. Stale anchors reject
28
+ conflicting edits before they overwrite the wrong text.
29
+ - **The model chooses the topology.** Fork with existing context, start a
30
+ worker with a fresh log, or delegate pure inference without an agent loop.
31
+ Parent and child models can use different endpoints: a cloud model can
32
+ orchestrate local workers through the same primitives.
33
+ - **Execution with evidence.** ANTLR parses model output into executable
34
+ operations. The runtime records their results and returns structured errors
35
+ the model can act on. Full packet digests make the work inspectable. A
36
+ compatible local server can run under a grammar you wrote, carried verbatim.
37
+
38
+ Workspaces and worker conversations live in the daemon, independently of the
39
+ client session. Choose your model, context limits, tools, and capability
40
+ policies without replacing the environment. No Plurnk account is required.
41
+
42
+ ## Patterns that compose
43
+
44
+ The pattern engine connects discovery and context management. Path globs
45
+ combine with full-text search, regex, JSONPath, XPath, and symbol-graph queries.
46
+ The model can search for phrases, inspect structured data, or follow symbol
47
+ relationships without writing a script for each question.
48
+
49
+ For example, these model-side operations find TypeScript files matching
50
+ `retry` or `timeout`, then trim older READ receipts to their first 16 lines:
51
+
52
+ ```text
53
+ ### FIND_ (src/**/*.{ts,tsx})
54
+ ~retry OR timeout
55
+
56
+ ### KILL_ (log:///1/[1-7]/*/READ) <17,-1>
15
57
  ```
16
58
 
17
- Or install for keeps:
59
+ The second operation targets READ results from turns 1–7 of loop 1. It curates
60
+ the log, not the source files. One expression can manage many entries: the
61
+ agent has bulk operations over its own context, not just over your code.
18
62
 
19
- ```
20
- npm install -g @plurnk/plurnk # the client — lean, a pure AG-UI+ consumer
21
- npm install -g @plurnk/plurnk-service # the daemon — its own (lean) install story
22
- plurnk-service # start the background daemon
23
- ```
63
+ ## Get started
24
64
 
25
- The client never starts a daemon. It POSTs runs/actions to the daemon's module at `http://PLURNK_HOST:PLURNK_PORT` (default `127.0.0.1:1066`). All engine config — models, providers, turns lives in the daemon's environment.
65
+ Requires Node.js 26+, npm, Git, and a local or cloud model endpoint.
26
66
 
27
- ## use
28
-
29
- ```
30
- plurnk # interactive terminal (no args, a TTY)
31
- plurnk "what is the capital of France?" # one-shot — bare answer on stdout
32
- plurnk --json "…" | jq -r .response # json mode: ONE complete record document
33
- plurnk --workspace project mcp enable gitea # activate project-specialized config
34
- cat notes.md | plurnk "summarize this" # piped stdin (appended)
35
- plurnk models | workspace list | log read … # inspect daemon state
36
- plurnk reasoning high --workspace my-work # persist worker reasoning policy
37
- plurnk web --workspace my-work # foreground browser client (optional package)
38
- printf '# Result\n\n| a | b |\n| - | - |' | plurnk render --width 80
39
- plurnk --help # full flag list
67
+ ```sh
68
+ npm install -g @plurnk/plurnk @plurnk/plurnk-service
40
69
  ```
41
70
 
42
- `plurnk render` is a daemon-free stdin/stdout filter for clients that want the
43
- terminal client's width-aware GFM and Beautiful Mermaid projection as plain Unicode.
44
-
45
- `plurnk web` loads an already installed `@plurnk/plurnk-web` presentation
46
- module after the normal client has resolved its complete environment cascade.
47
- The browser uses `/<workspace>/<threadId>` URLs: without configured constraints
48
- it can create or select many workspaces and Workers; configured workspace or
49
- Worker values lock only their respective coordinates. The web package receives
50
- a safe resolved projection rather than duplicating configuration parsing. The
51
- command never downloads a package or starts the daemon.
52
- Install the optional client with
53
- `npm install -g @plurnk/plurnk-web`.
54
-
55
- To run both sibling working trees without publishing either package, build the
56
- web checkout and link it into the client checkout:
71
+ In one terminal, configure a model and start the daemon. This example uses
72
+ DeepSeek; see [model configuration](https://github.com/plurnk/plurnk-service/blob/main/plurnk-providers/docs/models.md)
73
+ for other providers and local servers.
57
74
 
58
75
  ```sh
59
- cd ../plurnk-web
60
- npm install
61
- npm run build
62
-
63
- cd ../plurnk
64
- npm install
65
- npm link --no-save --package-lock=false ../plurnk-web
66
- npm run build
67
- ./bin/plurnk.js web --yolo --model=fireox
76
+ export DEEPSEEK_API_KEY="your-api-key"
77
+ export PLURNK_MODEL=deepseek/deepseek-v4-flash
78
+ plurnk-service start
68
79
  ```
69
80
 
70
- **Two output modes.** Default: stdout is the bare answer, stderr the trace — `plurnk "X" > a.txt` captures just the answer. On a terminal, one replaceable status row shows authoritative lifecycle, durable model, packet count, and current activity; indexing repaints at most every 15 seconds and redirected stderr omits routine progress history. `--json` (or `PLURNK_CLIENT_JSON`): one complete structured document on stdout (`response` + `turns[].ops` + `notices` + the daemon's exact `usage.accounting` envelope), stderr silent, failures as RFC 9457 Problems under `{"problem":…}`. Op *content* isn't inlined — fetch it on demand with `plurnk read <coord>`. The CLI is the integration layer: shell out, parse — no protocol client to build.
71
-
72
- The one-shot CLI is the pipeline surface, the interactive terminal is a
73
- readline-style main-buffer conversation with real multiline editing, and
74
- plurnk.nvim is a native editor surface. None is a protocol intermediary for
75
- another; each speaks AG-UI+ directly.
76
-
77
- Readable provider reasoning appears as a distinct `💭` trace before the paired
78
- SEND. It comes from AG-UI's standard reasoning events; PLAN remains the model's
79
- durable public work inventory.
81
+ In another terminal, open a project:
80
82
 
81
- **Line language** (converged across the TUI, the CLI prefixes, and plurnk.nvim's `:AI`):
82
-
83
- | | |
84
- |---|---|
85
- | `text` | a prompt (`?` denies EXEC and keeps proposal review; `:` is ordinary) |
86
- | `/verb` | `/help /models /workspaces /workers /log` · `/model /child /reasoning /capabilities /yolo` · `/workspace /rename /worker /attach` · `/mcp /skills /agents /members` · `/import /script /editor` · `/accept /reject /cancel /edit /stop /quit` |
87
- | `! cmd` | exec via the daemon |
88
-
89
- **Key flags:** `--model <selector>` · `--reasoning <policy>` · `--policy <json>` · `--capabilities <json>` · `--yolo` (client auto-accept) · `--auto` (loop authority) · `--json` · `--workspace/--worker <name>` · `--project-root <p>` · `--max-turns <n>` · `--timeout <s>` · `--files-items <n>` · `--max-commands <n>` · `--no-git`.
90
-
91
- ## what plurnk is
83
+ ```sh
84
+ cd /path/to/your/project
85
+ plurnk --workspace="myProject" --yolo
86
+ ```
92
87
 
93
- From the model's perspective, plurnk is an operating environment, not a bag of tools: the log is its address space, the materialized packet is its working set, and the OPs are a small, stable system-call vocabulary over heterogeneous resources.
88
+ Give it a task in ordinary language. The model uses the operation language;
89
+ you do not need to learn it to use Plurnk. Run the same command later to return
90
+ to that workspace's conversation.
94
91
 
95
- The model emits operations in a compact grammar; the daemon executes them, persists state, and the client renders the trace. An action turn:
92
+ The client connects to `127.0.0.1:1066` by default and never starts the daemon.
93
+ Provider credentials belong in the daemon's environment. Proposal review is
94
+ interactive by default; `--yolo` automatically accepts proposals but does not
95
+ override capability restrictions.
96
96
 
97
- ```
98
- ## PLAN0
99
- [{"content":"Update the capital, then answer.","status":"in_progress"}]
100
- ### EDIT0 (worker:///countries/france/capital)
101
- Paris
102
- ### SEND0 (NEXT)
103
- Next: Confirm the update, then answer.
104
- ```
97
+ ## TUI, CLI, and Neovim
105
98
 
106
- Then its completion turn:
99
+ ### Interactive terminal
107
100
 
108
- ```
109
- ## PLAN0
110
- [{"content":"The capital is updated and confirmed.","status":"completed"}]
111
- ### SEND0 (TERM)
112
- Paris
101
+ ```sh
102
+ plurnk --workspace="myProject" --yolo
113
103
  ```
114
104
 
115
- Multi-turn loops emerge from the structure — `### SEND0 (NEXT)` continues, `### SEND0 (TERM)` terminates. Every operation returns a real receipt; the model reads them and plans the next turn. The full grammar and its rationale live in [plurnk-service](https://github.com/plurnk/plurnk-service) (`plurnk-contracts/plurnk.md` — the model-facing contract).
105
+ A scrollback-native TUI with multiline prompts, streaming reasoning when the
106
+ provider supplies it, Markdown and Mermaid rendering, and slash commands for
107
+ managing models, workers, and tools. Run `/help` to explore; `/model` and
108
+ `/child` select the conversation and delegated models.
116
109
 
117
- What the daemon brings to those turns:
110
+ ### CLI and pipelines
118
111
 
119
- - **Private by default** — the embedding model and the per-model tokenizer vocabularies are bundled and offline. No network, no vendor sees your files.
120
- - **One language, not a tool catalog** — explore and transform the environment with globs, regex, jsonpath, xpath, and cosine similarity, all in the same grammar. The model learns one interface instead of dozens of schemas.
121
- - **A real environment** a filesystem jail per project (configurable to any security posture, including none); `~phrase` FIND runs semantic search against the embedded model; the packet shows the model exactly what every row costs, from token-accurate budgets.
122
- - **Curation, not compaction** no context-compaction algorithms, no garbage collection. The model `KILL`s superseded log items or selected ranges by address, usually in bulk patterns; the corresponding source material survives log curation.
123
- - **Topology on demand** — the model forks sister subagents, spawns children, or fires bare one-shot requests, shaping its own graph; parent and child endpoints can be different models, for cheap orchestrator-driven workflows.
124
- - **Rails & recovery** — GBNF grammar constraints keep low-end models reliable; the model-managed context optimizes tiny KV footprints; structured failure recovery keeps extended runs alive on modest models.
125
- - **Interop** — universal Agent Skills, and MCP hosting (stdio, remote HTTP, interactive OAuth, client credentials); attached tools materialize in the model's discovery surface like native ones.
126
- - **Forensics** — every run is reproducible: per-op receipts, structured notices, and the daemon's digest with full packet capture.
127
-
128
- ## configuration
112
+ ```sh
113
+ plurnk "Explain how this project's request handling works"
114
+ plurnk "Summarize this repository" > overview.md
115
+ git diff | plurnk "Review this patch for correctness"
116
+ plurnk --json "Explain the test layout" | jq -r .response
117
+ ```
129
118
 
130
- **Env cascade** (the client's side): packaged `.env.defaults` floor < `${XDG_CONFIG_HOME:-$HOME/.config}/plurnk/.env` < project `./.env` < repeated `--env-file` flags (last wins) < shell. `plurnk-service config defaults` prints the complete owner-labelled catalog on demand.
119
+ One-shot commands put the answer on stdout and progress on stderr. `--json`
120
+ returns one structured document containing the answer, operation trace,
121
+ diagnostics, and usage.
131
122
 
132
- **Client env:** `PLURNK_HOST`/`PLURNK_PORT` (the daemon's one client surface, default `127.0.0.1:1066`; `PLURNK_AGUI_URL` overrides for a remote portal) · `PLURNK_CLIENT_WORKSPACE` / `PLURNK_CLIENT_WORKER` · `PLURNK_CLIENT_YOLO` · `PLURNK_AUTO` · `PLURNK_CLIENT_PROJECT_ROOT` · `PLURNK_CLIENT_LOOP_POLICY` · `PLURNK_CLIENT_WORKSPACE_CAPABILITIES`.
123
+ Use `plurnk --help` for CLI options. `plurnk models` lists available model
124
+ routes.
133
125
 
134
- **Capabilities** use the daemon's one subtractive policy contract at every scope. `--capabilities` applies a workspace ceiling at creation; `plurnk capabilities [json]` and `/capabilities [json]` inspect the service/workspace/inherited/Worker cascade or replace its mutable Worker layer; `--policy` supplies the complete per-loop policy. Child Workers inherit the parent's effective ceiling and may only narrow it.
126
+ ### Neovim
135
127
 
136
- **Models** are daemon-side. A worker durably owns its selected route; `--model` and `/model` accept either a declared alias or an exact `provider/model` selector and persist it without adding model policy to subsequent loops. `plurnk models [search]` and `/models [search]` query the daemon's bounded catalog only when requested. Provider credentials and the `PLURNK_MODEL` default live in the daemon's environment — the client never holds a key or guesses readiness.
128
+ For an editor-native interface, use [plurnk.nvim](https://github.com/plurnk/plurnk.nvim)
129
+ against the same daemon.
137
130
 
138
- **Agents:** `/agents` lists this Worker's outbound A2A agents; `/agents discover <url>|add <alias> <url> [options.json]|enable|disable|remove` are the daemon's common Functionality actions; an enabled agent is `a2a://<alias>` to the model.
131
+ ## Extend and configure
139
132
 
140
- **Skills:** `/skills` lists this Worker's Agent Skills; `/skills discover|add <name> <source> [--global]|enable|disable|remove` are the daemon's common Functionality actions — the client runs no package manager. Project skills live in `.agents/skills`; global skills live in `~/.agents/skills`.
133
+ Plurnk uses **AG-UI** for clients, **MCP** for external tools, **Agent Skills**
134
+ for reusable instructions, and **A2A** for remote agents. Tools, skills, and
135
+ agents can be discovered and enabled per worker without restarting the daemon.
136
+ Their documentation is retrieved on demand rather than loading every tool's
137
+ schema into every prompt.
141
138
 
142
- **Members:** `/members` lists this Worker's file members — what the model may see; `/members discover <path|glob>|add <alias> <glob>|enable|disable|remove` are the daemon's common Functionality actions. Git-tracked files are members on their own; a gitignore-style glob adds untracked files, and a leading `!` excludes matching members.
139
+ Configuration uses cascading environment variables and `.env` files, including
140
+ the XDG user configuration at `~/.config/plurnk/.env`. Model discovery uses
141
+ [models.dev](https://models.dev). Inspect the complete, documented configuration
142
+ catalog with:
143
143
 
144
- **MCP:** project-local `PLURNK_MCP_*` declarations accompany `/mcp` and `plurnk mcp enable`; the daemon remains their sole parser and activation owner. See the plurnk-mcp docs in plurnk-service for the declaration shapes (npx servers, remote endpoints, `_TOOLS`/`_READ` policies).
144
+ ```sh
145
+ plurnk-service config defaults
146
+ ```
145
147
 
146
- ## troubleshooting & forensics
148
+ ## Documentation
147
149
 
148
- - `plurnk read <loop>/<turn>/<seq> --json` — inspect the exact operation result at a log coordinate.
149
- - `--json` mode carries `notices` and `usage.accounting` — cost and diagnostics without a UI.
150
- - Exit codes: `0` success (`### SEND0 (TERM)`) · `1` runtime error · `2` maxTurns cap · `3` cancelled (`### SEND0 (FAIL)` / `--timeout`) · `4` loop failed (4xx/5xx final) · `64` usage error.
151
- - Deeper forensics (per-turn packet capture, the budget grinder's records, edit receipts) live in the daemon's digest — see plurnk-service's README.
150
+ - [Installation and configuration](https://github.com/plurnk/plurnk-service/blob/main/plurnk-core/INSTALL.md)
151
+ - [Architecture and extension points](https://github.com/plurnk/plurnk-service/blob/main/ARCHITECTURE.md)
152
+ - [The model-facing language](https://github.com/plurnk/plurnk-service/blob/main/plurnk-contracts/plurnk.md)
153
+ - [Client reference](SPEC.md) and [terminal design](TUI.md)
152
154
 
153
- ## related
155
+ ## Contributing
154
156
 
155
- - [plurnk-service](https://github.com/plurnk/plurnk-service) the daemon, contracts, and grammar authority
156
- - [plurnk.nvim](https://github.com/plurnk/plurnk.nvim) Neovim-integrated Plurnk client (`:AI`)
157
- - [SPEC.md](SPEC.md) — the client's behavioral contract; [TUI.md](TUI.md) — terminal design rationale
157
+ Questions, bug reports, and feedback are welcome in
158
+ [GitHub issues](https://github.com/plurnk/plurnk/issues). See the shared
159
+ [contributing guide](https://github.com/plurnk/plurnk-service/blob/main/CONTRIBUTING.md)
160
+ for development guidance.
158
161
 
159
- ## license
162
+ ## License
160
163
 
161
- MIT. Standards-oriented, not lock-in: the client speaks AG-UI, the tooling surface is MCP2, and the whole stack is open source.
164
+ [MIT](LICENSE).
@@ -177,19 +177,6 @@
177
177
  "durability"
178
178
  ]
179
179
  },
180
- "workspace.derivation": {
181
- "posture": "native",
182
- "evidence": [
183
- "src/tui.test.ts — derivation status"
184
- ],
185
- "dimensions": [
186
- "admission",
187
- "projection",
188
- "success",
189
- "failure",
190
- "presentation"
191
- ]
192
- },
193
180
  "entry.read": {
194
181
  "posture": "native",
195
182
  "evidence": [
@@ -334,7 +321,7 @@
334
321
  "durability"
335
322
  ]
336
323
  },
337
- "worker.capabilities.get": {
324
+ "workspace.capabilities.get": {
338
325
  "posture": "generic",
339
326
  "evidence": [
340
327
  "src/agui.test.ts — arbitrary action round-trip",
@@ -347,7 +334,7 @@
347
334
  "composition"
348
335
  ]
349
336
  },
350
- "worker.capabilities.set": {
337
+ "workspace.capabilities.set": {
351
338
  "posture": "generic",
352
339
  "evidence": [
353
340
  "src/agui.test.ts — arbitrary action round-trip",
@@ -362,7 +349,7 @@
362
349
  "composition"
363
350
  ]
364
351
  },
365
- "worker.skills.list": {
352
+ "workspace.skills.list": {
366
353
  "posture": "native",
367
354
  "evidence": [
368
355
  "src/skills.test.ts — Agent Skills management",
@@ -377,7 +364,7 @@
377
364
  "composition"
378
365
  ]
379
366
  },
380
- "worker.skills.discover": {
367
+ "workspace.skills.discover": {
381
368
  "posture": "native",
382
369
  "evidence": [
383
370
  "src/skills.test.ts — Agent Skills management",
@@ -392,7 +379,7 @@
392
379
  "composition"
393
380
  ]
394
381
  },
395
- "worker.skills.add": {
382
+ "workspace.skills.add": {
396
383
  "posture": "native",
397
384
  "evidence": [
398
385
  "src/skills.test.ts — Agent Skills management",
@@ -408,7 +395,7 @@
408
395
  "durability"
409
396
  ]
410
397
  },
411
- "worker.skills.enable": {
398
+ "workspace.skills.enable": {
412
399
  "posture": "native",
413
400
  "evidence": [
414
401
  "src/skills.test.ts — Agent Skills management",
@@ -424,7 +411,7 @@
424
411
  "durability"
425
412
  ]
426
413
  },
427
- "worker.skills.disable": {
414
+ "workspace.skills.disable": {
428
415
  "posture": "native",
429
416
  "evidence": [
430
417
  "src/skills.test.ts — Agent Skills management",
@@ -440,7 +427,7 @@
440
427
  "durability"
441
428
  ]
442
429
  },
443
- "worker.skills.remove": {
430
+ "workspace.skills.remove": {
444
431
  "posture": "native",
445
432
  "evidence": [
446
433
  "src/skills.test.ts — Agent Skills management",
@@ -456,7 +443,7 @@
456
443
  "durability"
457
444
  ]
458
445
  },
459
- "worker.agents.list": {
446
+ "workspace.agents.list": {
460
447
  "posture": "native",
461
448
  "evidence": [
462
449
  "src/agents.test.ts — outbound agents management",
@@ -471,7 +458,7 @@
471
458
  "composition"
472
459
  ]
473
460
  },
474
- "worker.agents.discover": {
461
+ "workspace.agents.discover": {
475
462
  "posture": "native",
476
463
  "evidence": [
477
464
  "src/agents.test.ts — outbound agents management",
@@ -486,7 +473,7 @@
486
473
  "composition"
487
474
  ]
488
475
  },
489
- "worker.agents.add": {
476
+ "workspace.agents.add": {
490
477
  "posture": "native",
491
478
  "evidence": [
492
479
  "src/agents.test.ts — outbound agents management",
@@ -502,7 +489,7 @@
502
489
  "durability"
503
490
  ]
504
491
  },
505
- "worker.agents.enable": {
492
+ "workspace.agents.enable": {
506
493
  "posture": "native",
507
494
  "evidence": [
508
495
  "src/agents.test.ts — outbound agents management",
@@ -518,7 +505,7 @@
518
505
  "durability"
519
506
  ]
520
507
  },
521
- "worker.agents.disable": {
508
+ "workspace.agents.disable": {
522
509
  "posture": "native",
523
510
  "evidence": [
524
511
  "src/agents.test.ts — outbound agents management",
@@ -534,7 +521,7 @@
534
521
  "durability"
535
522
  ]
536
523
  },
537
- "worker.agents.remove": {
524
+ "workspace.agents.remove": {
538
525
  "posture": "native",
539
526
  "evidence": [
540
527
  "src/agents.test.ts — outbound agents management",
@@ -550,7 +537,7 @@
550
537
  "durability"
551
538
  ]
552
539
  },
553
- "worker.members.list": {
540
+ "workspace.members.list": {
554
541
  "posture": "native",
555
542
  "evidence": [
556
543
  "src/members.test.ts — file members management",
@@ -565,7 +552,7 @@
565
552
  "composition"
566
553
  ]
567
554
  },
568
- "worker.members.discover": {
555
+ "workspace.members.discover": {
569
556
  "posture": "native",
570
557
  "evidence": [
571
558
  "src/members.test.ts — file members management",
@@ -580,7 +567,7 @@
580
567
  "composition"
581
568
  ]
582
569
  },
583
- "worker.members.add": {
570
+ "workspace.members.add": {
584
571
  "posture": "native",
585
572
  "evidence": [
586
573
  "src/members.test.ts — file members management",
@@ -596,7 +583,7 @@
596
583
  "durability"
597
584
  ]
598
585
  },
599
- "worker.members.enable": {
586
+ "workspace.members.enable": {
600
587
  "posture": "native",
601
588
  "evidence": [
602
589
  "src/members.test.ts — file members management",
@@ -612,7 +599,7 @@
612
599
  "durability"
613
600
  ]
614
601
  },
615
- "worker.members.disable": {
602
+ "workspace.members.disable": {
616
603
  "posture": "native",
617
604
  "evidence": [
618
605
  "src/members.test.ts — file members management",
@@ -628,7 +615,7 @@
628
615
  "durability"
629
616
  ]
630
617
  },
631
- "worker.members.remove": {
618
+ "workspace.members.remove": {
632
619
  "posture": "native",
633
620
  "evidence": [
634
621
  "src/members.test.ts — file members management",
@@ -644,7 +631,7 @@
644
631
  "durability"
645
632
  ]
646
633
  },
647
- "worker.mcp.list": {
634
+ "workspace.mcp.list": {
648
635
  "posture": "native",
649
636
  "evidence": [
650
637
  "src/mcp.test.ts — MCP management",
@@ -659,7 +646,7 @@
659
646
  "composition"
660
647
  ]
661
648
  },
662
- "worker.mcp.discover": {
649
+ "workspace.mcp.discover": {
663
650
  "posture": "native",
664
651
  "evidence": [
665
652
  "src/mcp.test.ts — MCP management",
@@ -674,7 +661,7 @@
674
661
  "composition"
675
662
  ]
676
663
  },
677
- "worker.mcp.add": {
664
+ "workspace.mcp.add": {
678
665
  "posture": "native",
679
666
  "evidence": [
680
667
  "src/mcp.test.ts — MCP management",
@@ -689,7 +676,7 @@
689
676
  "durability"
690
677
  ]
691
678
  },
692
- "worker.mcp.enable": {
679
+ "workspace.mcp.enable": {
693
680
  "posture": "native",
694
681
  "evidence": [
695
682
  "src/mcp.test.ts — MCP management",
@@ -704,7 +691,7 @@
704
691
  "durability"
705
692
  ]
706
693
  },
707
- "worker.mcp.disable": {
694
+ "workspace.mcp.disable": {
708
695
  "posture": "native",
709
696
  "evidence": [
710
697
  "src/mcp.test.ts — MCP management",
@@ -719,7 +706,7 @@
719
706
  "durability"
720
707
  ]
721
708
  },
722
- "worker.mcp.remove": {
709
+ "workspace.mcp.remove": {
723
710
  "posture": "native",
724
711
  "evidence": [
725
712
  "src/mcp.test.ts — MCP management",
@@ -734,7 +721,7 @@
734
721
  "durability"
735
722
  ]
736
723
  },
737
- "worker.mcp.oauth.complete": {
724
+ "workspace.mcp.oauth.complete": {
738
725
  "posture": "native",
739
726
  "evidence": [
740
727
  "src/mcp.test.ts — MCP authorization",
@@ -749,7 +736,7 @@
749
736
  "durability"
750
737
  ]
751
738
  },
752
- "worker.mcp.complete": {
739
+ "workspace.mcp.complete": {
753
740
  "posture": "generic",
754
741
  "evidence": [
755
742
  "src/agui.test.ts — arbitrary action round-trip"
@@ -0,0 +1,17 @@
1
+ export type QuestionAnswer = {
2
+ kind: "next";
3
+ } | {
4
+ kind: "invalid";
5
+ message: string;
6
+ } | {
7
+ kind: "complete";
8
+ content: Record<string, unknown>;
9
+ };
10
+ export default class QuestionForm {
11
+ #private;
12
+ constructor(schema: Record<string, unknown>);
13
+ get prompt(): string;
14
+ get choices(): string[];
15
+ submit(line: string): QuestionAnswer;
16
+ }
17
+ //# sourceMappingURL=QuestionForm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"QuestionForm.d.ts","sourceRoot":"","sources":["../src/QuestionForm.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,cAAc,GACpB;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,CAAC;AAE7D,MAAM,CAAC,OAAO,OAAO,YAAY;;IAM7B,YAAY,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAY1C;IAED,IAAI,MAAM,IAAI,MAAM,CASnB;IAED,IAAI,OAAO,IAAI,MAAM,EAAE,CAGtB;IAED,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CA+BnC;CACJ"}