@plurnk/plurnk 0.74.0 → 0.76.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 (96) hide show
  1. package/.env.defaults +3 -4
  2. package/README.md +60 -23
  3. package/completions/_plurnk +13 -0
  4. package/completions/plurnk.bash +14 -0
  5. package/completions/plurnk.fish +37 -0
  6. package/conformance/agui-client.json +863 -0
  7. package/dist/agents.d.ts +11 -0
  8. package/dist/agents.d.ts.map +1 -0
  9. package/dist/agents.js +170 -0
  10. package/dist/agents.js.map +1 -0
  11. package/dist/agui.d.ts +1 -0
  12. package/dist/agui.d.ts.map +1 -1
  13. package/dist/agui.js +45 -5
  14. package/dist/agui.js.map +1 -1
  15. package/dist/agui_cli.d.ts +1 -4
  16. package/dist/agui_cli.d.ts.map +1 -1
  17. package/dist/agui_cli.js +29 -9
  18. package/dist/agui_cli.js.map +1 -1
  19. package/dist/build-info.json +1 -1
  20. package/dist/cli.d.ts.map +1 -1
  21. package/dist/cli.js +12 -7
  22. package/dist/cli.js.map +1 -1
  23. package/dist/color.d.ts +2 -0
  24. package/dist/color.d.ts.map +1 -0
  25. package/dist/color.js +5 -0
  26. package/dist/color.js.map +1 -0
  27. package/dist/completion.js +4 -4
  28. package/dist/completion.js.map +1 -1
  29. package/dist/diagnostics.d.ts +1 -1
  30. package/dist/diagnostics.d.ts.map +1 -1
  31. package/dist/diagnostics.js +4 -2
  32. package/dist/diagnostics.js.map +1 -1
  33. package/dist/dispatcher.d.ts +8 -8
  34. package/dist/dispatcher.d.ts.map +1 -1
  35. package/dist/dispatcher.js +196 -104
  36. package/dist/dispatcher.js.map +1 -1
  37. package/dist/envdefaults.d.ts.map +1 -1
  38. package/dist/envdefaults.js +4 -6
  39. package/dist/envdefaults.js.map +1 -1
  40. package/dist/markdown.d.ts +17 -0
  41. package/dist/markdown.d.ts.map +1 -0
  42. package/dist/markdown.js +234 -0
  43. package/dist/markdown.js.map +1 -0
  44. package/dist/mcp.d.ts +11 -1
  45. package/dist/mcp.d.ts.map +1 -1
  46. package/dist/mcp.js +213 -69
  47. package/dist/mcp.js.map +1 -1
  48. package/dist/paste.d.ts +1 -0
  49. package/dist/paste.d.ts.map +1 -1
  50. package/dist/paste.js +5 -0
  51. package/dist/paste.js.map +1 -1
  52. package/dist/paths.d.ts +2 -0
  53. package/dist/paths.d.ts.map +1 -0
  54. package/dist/paths.js +12 -0
  55. package/dist/paths.js.map +1 -0
  56. package/dist/plan.d.ts +12 -0
  57. package/dist/plan.d.ts.map +1 -0
  58. package/dist/plan.js +30 -0
  59. package/dist/plan.js.map +1 -0
  60. package/dist/proposal.d.ts +3 -5
  61. package/dist/proposal.d.ts.map +1 -1
  62. package/dist/proposal.js +54 -34
  63. package/dist/proposal.js.map +1 -1
  64. package/dist/reasoning-events.d.ts +23 -0
  65. package/dist/reasoning-events.d.ts.map +1 -0
  66. package/dist/reasoning-events.js +40 -0
  67. package/dist/reasoning-events.js.map +1 -0
  68. package/dist/reasoning.d.ts +11 -0
  69. package/dist/reasoning.d.ts.map +1 -0
  70. package/dist/reasoning.js +10 -0
  71. package/dist/reasoning.js.map +1 -0
  72. package/dist/render.d.ts +4 -0
  73. package/dist/render.d.ts.map +1 -1
  74. package/dist/render.js +93 -50
  75. package/dist/render.js.map +1 -1
  76. package/dist/skills.d.ts +7 -0
  77. package/dist/skills.d.ts.map +1 -0
  78. package/dist/skills.js +152 -0
  79. package/dist/skills.js.map +1 -0
  80. package/dist/stream.d.ts.map +1 -1
  81. package/dist/stream.js +11 -11
  82. package/dist/stream.js.map +1 -1
  83. package/dist/subcommands.d.ts +3 -0
  84. package/dist/subcommands.d.ts.map +1 -1
  85. package/dist/subcommands.js +32 -11
  86. package/dist/subcommands.js.map +1 -1
  87. package/dist/transport.d.ts +12 -4
  88. package/dist/transport.d.ts.map +1 -1
  89. package/dist/transport.js +77 -21
  90. package/dist/transport.js.map +1 -1
  91. package/dist/tui.d.ts +23 -13
  92. package/dist/tui.d.ts.map +1 -1
  93. package/dist/tui.js +335 -92
  94. package/dist/tui.js.map +1 -1
  95. package/man/plurnk.1 +153 -0
  96. package/package.json +16 -9
package/dist/mcp.js CHANGED
@@ -1,102 +1,246 @@
1
- // Thin TUI projection of daemon-owned workspace MCP management.
1
+ // Thin TUI projection of the daemon-owned MCP Functionality family: one common
2
+ // lifecycle (list | discover | add | enable | disable | remove) plus the MCP
3
+ // OAuth continuation. The client composes exact definitions and renders the
4
+ // daemon's states; it owns no lifecycle policy.
2
5
  import { readFile } from "node:fs/promises";
3
6
  import { resolve } from "node:path";
4
- const readDefinition = async (path) => {
7
+ const readOptions = async (path) => {
5
8
  const absolute = resolve(path);
6
9
  let text;
7
10
  try {
8
11
  text = await readFile(absolute, "utf8");
9
12
  }
10
13
  catch (cause) {
11
- throw new Error(`MCP definition not readable: ${absolute}`, { cause });
14
+ throw new Error(`MCP options not readable: ${absolute}`, { cause });
12
15
  }
16
+ let parsed;
13
17
  try {
14
- return JSON.parse(text);
18
+ parsed = JSON.parse(text);
15
19
  }
16
20
  catch (cause) {
17
- throw new Error(`MCP definition is not valid JSON: ${absolute}`, { cause });
21
+ throw new Error(`MCP options are not valid JSON: ${absolute}`, { cause });
18
22
  }
23
+ if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
24
+ throw new Error(`MCP options must be a JSON object: ${absolute}`);
25
+ }
26
+ return parsed;
19
27
  };
20
- const definitionName = (definition) => typeof definition === "object"
21
- && definition !== null
22
- && "name" in definition
23
- && typeof definition.name === "string"
24
- ? definition.name
25
- : "<name>";
26
- const renderServer = (server) => {
27
- const name = typeof server.name === "string" ? server.name : "(unnamed)";
28
- const state = typeof server.state === "string" ? server.state : "unknown";
29
- const transport = typeof server.transport === "string" ? server.transport : "unknown";
30
- const available = Array.isArray(server.tools) ? server.tools.length : null;
31
- const enabled = Array.isArray(server.enabledTools) ? server.enabledTools.length : null;
32
- const count = enabled === null ? available : available === null ? String(enabled) : `${enabled}/${available}`;
33
- const tools = count === null ? "" : ` ${count} tool${count === 1 ? "" : "s"}`;
34
- return ` ${name} ${state} ${transport}${tools}\n`;
28
+ const argumentsOf = (source) => {
29
+ const values = [];
30
+ let value = "";
31
+ let quote = null;
32
+ let escaped = false;
33
+ let started = false;
34
+ for (const character of source) {
35
+ if (escaped) {
36
+ value += character;
37
+ escaped = false;
38
+ started = true;
39
+ continue;
40
+ }
41
+ if (character === "\\") {
42
+ escaped = true;
43
+ started = true;
44
+ continue;
45
+ }
46
+ if (quote !== null) {
47
+ if (character === quote)
48
+ quote = null;
49
+ else
50
+ value += character;
51
+ started = true;
52
+ continue;
53
+ }
54
+ if (character === "\"" || character === "'") {
55
+ quote = character;
56
+ started = true;
57
+ continue;
58
+ }
59
+ if (/\s/u.test(character)) {
60
+ if (started) {
61
+ values.push(value);
62
+ value = "";
63
+ started = false;
64
+ }
65
+ continue;
66
+ }
67
+ value += character;
68
+ started = true;
69
+ }
70
+ if (escaped || quote !== null)
71
+ return null;
72
+ if (started)
73
+ values.push(value);
74
+ return values;
75
+ };
76
+ // An absolute HTTP(S) target selects Streamable HTTP; anything else is one
77
+ // exact stdio executable. Options are the closed McpServerOptions supplement.
78
+ export const composeDefinition = (alias, target, options = {}) => /^https?:\/\//u.test(target)
79
+ ? { name: alias, transport: "http", url: target, ...options }
80
+ : { name: alias, transport: "stdio", command: target, ...options, args: Array.isArray(options.args) ? options.args : [] };
81
+ const targetOf = (definition) => {
82
+ if (definition === undefined)
83
+ return null;
84
+ if (definition.transport === "http" && typeof definition.url === "string")
85
+ return definition.url;
86
+ if (definition.transport === "stdio" && typeof definition.command === "string")
87
+ return definition.command;
88
+ return null;
89
+ };
90
+ const renderDefinition = (entry) => {
91
+ const alias = typeof entry.alias === "string" ? entry.alias : "(unnamed)";
92
+ const state = typeof entry.state === "string" ? entry.state : "unknown";
93
+ const transport = typeof entry.definition?.transport === "string" ? entry.definition.transport : "unknown";
94
+ const target = targetOf(entry.definition);
95
+ const targetText = target === null ? "" : ` ${target}`;
96
+ const enabledTools = Array.isArray(entry.definition?.tools) ? entry.definition.tools.length : null;
97
+ const available = Array.isArray(entry.detail?.tools) ? entry.detail.tools.length : null;
98
+ const count = enabledTools === null
99
+ ? available === null ? null : String(available)
100
+ : available === null ? String(enabledTools) : `${enabledTools}/${available}`;
101
+ const tools = count === null ? "" : ` ${count} tools`;
102
+ const origin = entry.origin === "service" ? " (service)" : "";
103
+ const problem = typeof entry.problem?.detail === "string" ? ` — ${entry.problem.detail}` : "";
104
+ return ` ${alias} ${state} ${transport}${targetText}${tools}${origin}${problem}\n`;
105
+ };
106
+ const renderCandidate = (candidate) => {
107
+ const alias = typeof candidate.alias === "string" ? candidate.alias : "(unnamed)";
108
+ const transport = typeof candidate.definition?.transport === "string" ? candidate.definition.transport : "unknown";
109
+ const target = targetOf(candidate.definition);
110
+ return ` ${alias} candidate ${transport}${target === null ? "" : ` ${target}`}\n`;
35
111
  };
36
- const renderMutation = (result, verb, nameHint, write) => {
112
+ const renderMutation = (result, verb, aliasHint, write) => {
113
+ const alias = typeof result.alias === "string" ? result.alias : aliasHint;
37
114
  if (result.status === 202) {
38
- const url = result.authorization?.url;
115
+ const url = result.definition?.authorization?.url;
39
116
  if (typeof url !== "string")
40
117
  throw new Error("MCP authorization response omitted its URL.");
41
118
  write(` authorization required: ${url}\n`);
42
- write(` complete: /mcp oauth ${nameHint} <callback-url>\n`);
119
+ write(` complete: /mcp oauth ${alias} <callback-url>\n`);
43
120
  return;
44
121
  }
45
- const name = typeof result.server?.name === "string" ? result.server.name : nameHint;
46
- const state = typeof result.server?.state === "string" ? ` (${result.server.state})` : "";
47
- write(` ${verb}: ${name}${state}\n`);
122
+ const state = typeof result.definition?.state === "string" ? ` (${result.definition.state})` : "";
123
+ write(` ${verb}: ${alias}${state}\n`);
48
124
  };
49
- export const handleMcp = async (rest, rpc, write) => {
50
- if (rest.length === 0) {
51
- const result = await rpc.call("workspace.mcp.list");
52
- if (!Array.isArray(result.servers))
53
- throw new Error("workspace.mcp.list returned an invalid result.");
54
- if (result.servers.length === 0)
125
+ const usage = (write) => {
126
+ write(" usage: /mcp [discover <url|command> | add <alias> <target> [options.json] | enable <alias> [options.json] | disable|remove <alias> | oauth <alias> <callback-url>]\n");
127
+ };
128
+ const candidatesFrom = async (rpc, overlay) => {
129
+ if (Object.keys(overlay).length === 0)
130
+ return [];
131
+ const discovered = await rpc.call("worker.mcp.discover", { configuration: overlay });
132
+ if (!Array.isArray(discovered.candidates))
133
+ throw new Error("worker.mcp.discover returned an invalid result.");
134
+ return discovered.candidates;
135
+ };
136
+ export const handleMcp = async (input, rpc, write, configuration = {}) => {
137
+ const overlay = { ...configuration.overlay };
138
+ if (input.length === 0) {
139
+ const result = await rpc.call("worker.mcp.list", {});
140
+ if (!Array.isArray(result.definitions))
141
+ throw new Error("worker.mcp.list returned an invalid result.");
142
+ if (result.definitions.length === 0)
55
143
  write(" MCP servers: none\n");
56
144
  else
57
- for (const server of result.servers)
58
- write(renderServer(server));
59
- return;
145
+ for (const definition of result.definitions)
146
+ write(renderDefinition(definition));
147
+ const candidates = await candidatesFrom(rpc, overlay);
148
+ if (candidates.length > 0) {
149
+ write(" from your configuration (not added):\n");
150
+ for (const candidate of candidates)
151
+ write(renderCandidate(candidate));
152
+ }
153
+ return result;
154
+ }
155
+ const args = typeof input === "string" ? argumentsOf(input) : [...input];
156
+ if (args === null || args.length === 0) {
157
+ usage(write);
158
+ return null;
60
159
  }
61
- if (rest === "replace" || rest.startsWith("replace ")) {
62
- const path = rest.slice("replace".length).trim();
63
- if (path.length === 0) {
64
- write(" usage: /mcp replace <definition.json>\n");
65
- return;
160
+ const [command, alias] = args;
161
+ if (command === "discover") {
162
+ if (args.length !== 2 || alias.length === 0) {
163
+ write(" usage: /mcp discover <url|command>\n");
164
+ return null;
66
165
  }
67
- const server = await readDefinition(path);
68
- const result = await rpc.call("workspace.mcp.replace", { server });
69
- renderMutation(result, "replaced", definitionName(server), write);
70
- return;
166
+ const result = await rpc.call("worker.mcp.discover", { source: alias });
167
+ if (!Array.isArray(result.candidates))
168
+ throw new Error("worker.mcp.discover returned an invalid result.");
169
+ if (result.candidates.length === 0)
170
+ write(" candidates: none\n");
171
+ else
172
+ for (const candidate of result.candidates)
173
+ write(renderCandidate(candidate));
174
+ return result;
71
175
  }
72
- for (const action of ["detach", "reconnect"]) {
73
- if (rest === action || rest.startsWith(`${action} `)) {
74
- const name = rest.slice(action.length).trim();
75
- if (!/^\S+$/.test(name)) {
76
- write(` usage: /mcp ${action} <name>\n`);
77
- return;
78
- }
79
- const result = await rpc.call(`workspace.mcp.${action}`, { name });
80
- if (action === "detach")
81
- write(` detached: ${name}\n`);
82
- else
83
- renderMutation(result, "reconnected", name, write);
84
- return;
176
+ if (command === "add") {
177
+ if (args.length < 3 || args.length > 4 || alias.length === 0 || args[2].length === 0) {
178
+ write(" usage: /mcp add <alias> <target> [options.json]\n");
179
+ return null;
85
180
  }
181
+ const [, , target, path] = args;
182
+ const options = path === undefined ? {} : await readOptions(path);
183
+ const result = await rpc.call("worker.mcp.add", { alias, definition: composeDefinition(alias, target, options) });
184
+ renderMutation(result, "added", alias, write);
185
+ return result;
86
186
  }
87
- if (rest === "oauth" || rest.startsWith("oauth ")) {
88
- const match = rest.match(/^oauth\s+(\S+)\s+(\S+)$/);
89
- if (!match) {
90
- write(" usage: /mcp oauth <name> <callback-url>\n");
91
- return;
187
+ if (command === "enable") {
188
+ if (args.length < 2 || args.length > 3 || alias.length === 0) {
189
+ write(" usage: /mcp enable <alias> [options.json]\n");
190
+ return null;
92
191
  }
93
- const [, name, callbackUrl] = match;
94
- const result = await rpc.call("workspace.mcp.oauth.complete", { name, callbackUrl });
95
- renderMutation(result, "authorized", name, write);
96
- return;
192
+ if (args[2] === undefined) {
193
+ // A candidate from the client's own configuration is added; an
194
+ // available definition is enabled.
195
+ const candidate = (await candidatesFrom(rpc, overlay)).find((entry) => entry.alias === alias);
196
+ const result = candidate?.definition === undefined
197
+ ? await rpc.call("worker.mcp.enable", { alias })
198
+ : await rpc.call("worker.mcp.add", { alias, definition: candidate.definition });
199
+ renderMutation(result, candidate === undefined ? "enabled" : "added", alias, write);
200
+ return result;
201
+ }
202
+ // Options specialize the alias's current definition into this Worker's own.
203
+ const options = await readOptions(args[2]);
204
+ const listed = await rpc.call("worker.mcp.list", {});
205
+ const current = listed.definitions?.find((entry) => entry.alias === alias)?.definition
206
+ ?? (await candidatesFrom(rpc, overlay)).find((entry) => entry.alias === alias)?.definition;
207
+ if (current === undefined)
208
+ throw new Error(`MCP server '${alias}' is not available to this Worker or your configuration.`);
209
+ const result = await rpc.call("worker.mcp.add", { alias, definition: { ...current, ...options } });
210
+ renderMutation(result, "added", alias, write);
211
+ return result;
212
+ }
213
+ if (command === "disable") {
214
+ if (args.length !== 2 || alias.length === 0) {
215
+ write(" usage: /mcp disable <alias>\n");
216
+ return null;
217
+ }
218
+ const result = await rpc.call("worker.mcp.disable", { alias });
219
+ renderMutation(result, "disabled", alias, write);
220
+ return result;
221
+ }
222
+ if (command === "remove") {
223
+ if (args.length !== 2 || alias.length === 0) {
224
+ write(" usage: /mcp remove <alias>\n");
225
+ return null;
226
+ }
227
+ const result = await rpc.call("worker.mcp.remove", { alias });
228
+ write(` removed: ${alias}\n`);
229
+ return result;
230
+ }
231
+ if (command === "oauth") {
232
+ if (args.length !== 3 || alias.length === 0 || args[2].length === 0) {
233
+ write(" usage: /mcp oauth <alias> <callback-url>\n");
234
+ return null;
235
+ }
236
+ const result = await rpc.call("worker.mcp.oauth.complete", {
237
+ alias,
238
+ callbackUrl: args[2],
239
+ });
240
+ renderMutation(result, "authorized", alias, write);
241
+ return result;
97
242
  }
98
- const server = await readDefinition(rest);
99
- const result = await rpc.call("workspace.mcp.attach", { server });
100
- renderMutation(result, "attached", definitionName(server), write);
243
+ usage(write);
244
+ return null;
101
245
  };
102
246
  //# sourceMappingURL=mcp.js.map
package/dist/mcp.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
package/dist/paste.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  export default class PasteFilter {
2
2
  #private;
3
+ idle(): boolean;
3
4
  feed(chunk: string): string;
4
5
  stash(content: string): string;
5
6
  expand(line: string): string;
@@ -1 +1 @@
1
- {"version":3,"file":"paste.d.ts","sourceRoot":"","sources":["../src/paste.ts"],"names":[],"mappings":"AA2BA,MAAM,CAAC,OAAO,OAAO,WAAW;;IAS5B,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAiC1B;IAgBD,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE7B;IAID,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ3B;CACJ"}
1
+ {"version":3,"file":"paste.d.ts","sourceRoot":"","sources":["../src/paste.ts"],"names":[],"mappings":"AA2BA,MAAM,CAAC,OAAO,OAAO,WAAW;;IAS5B,IAAI,IAAI,OAAO,CAEd;IAID,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAiC1B;IAgBD,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE7B;IAID,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ3B;CACJ"}
package/dist/paste.js CHANGED
@@ -29,6 +29,11 @@ export default class PasteFilter {
29
29
  #carry = "";
30
30
  #store = new Map();
31
31
  #nextId = 1;
32
+ // True when no paste is open and no partial marker is held back — the
33
+ // precondition for reading an exact lone-ESC chunk as the Esc KEY.
34
+ idle() {
35
+ return this.#state === "normal" && this.#carry === "";
36
+ }
32
37
  // Process a stdin chunk; return the bytes readline should see (multi-line
33
38
  // pastes collapsed to markers). Completed pastes are stored for expand().
34
39
  feed(chunk) {
package/dist/paste.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"paste.js","sourceRoot":"","sources":["../src/paste.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"paste.js","sourceRoot":"","sources":["../src/paste.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const userConfigFile: (env?: NodeJS.ProcessEnv, home?: string) => string;
2
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,cAAc,SAClB,MAAM,CAAC,UAAU,SAChB,MAAM,KACb,MAMF,CAAC"}
package/dist/paths.js ADDED
@@ -0,0 +1,12 @@
1
+ import { homedir } from "node:os";
2
+ import { isAbsolute, join, resolve } from "node:path";
3
+ // XDG is the cross-process user-configuration contract. The client owns no
4
+ // daemon data path and never reads the retired mixed application home.
5
+ export const userConfigFile = (env = process.env, home = homedir()) => {
6
+ const configured = env.XDG_CONFIG_HOME;
7
+ const configHome = configured !== undefined && configured.length > 0 && isAbsolute(configured)
8
+ ? resolve(configured)
9
+ : resolve(home, ".config");
10
+ return join(configHome, "plurnk", ".env");
11
+ };
12
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEtD,2EAA2E;AAC3E,uEAAuE;AACvE,MAAM,CAAC,MAAM,cAAc,GAAG,CAC1B,GAAG,GAAsB,OAAO,CAAC,GAAG,EACpC,IAAI,GAAW,OAAO,EAAE,EAClB,EAAE;IACR,MAAM,UAAU,GAAG,GAAG,CAAC,eAAe,CAAC;IACvC,MAAM,UAAU,GAAG,UAAU,KAAK,SAAS,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC;QAC1F,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;QACrB,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC/B,OAAO,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC9C,CAAC,CAAC"}
package/dist/plan.d.ts ADDED
@@ -0,0 +1,12 @@
1
+ export declare const PLAN_STATUS_GLYPHS: {
2
+ readonly completed: "✅";
3
+ readonly in_progress: "🚧";
4
+ readonly memory: "💾";
5
+ readonly pending: "⬜";
6
+ };
7
+ export interface PresentedPlanEntry {
8
+ glyph: string;
9
+ text: string;
10
+ }
11
+ export declare const presentPlan: (tx: unknown) => PresentedPlanEntry[];
12
+ //# sourceMappingURL=plan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../src/plan.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,kBAAkB;wBAChB,GAAG;0BACD,IAAI;qBACT,IAAI;sBACH,GAAG;CACsD,CAAC;AAEvE,MAAM,WAAW,kBAAkB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CAChB;AAcD,eAAO,MAAM,WAAW,OAAQ,OAAO,KAAG,kBAAkB,EAY3D,CAAC"}
package/dist/plan.js ADDED
@@ -0,0 +1,30 @@
1
+ import { ACP_MEMORY_PREFIX, AcpPlanValue, } from "@plurnk/plurnk-contracts";
2
+ export const PLAN_STATUS_GLYPHS = {
3
+ completed: "✅",
4
+ in_progress: "🚧",
5
+ memory: "💾",
6
+ pending: "⬜",
7
+ };
8
+ const isProjectedMemory = (entry) => (entry.status === "completed" && entry.content.startsWith(ACP_MEMORY_PREFIX));
9
+ const entryText = (entry) => {
10
+ const raw = isProjectedMemory(entry) ? entry.content.slice(ACP_MEMORY_PREFIX.length) : entry.content;
11
+ const content = raw.replace(/\s+/gu, " ").trim();
12
+ return entry.priority === "medium"
13
+ ? content
14
+ : `[${entry.priority}] ${content}`;
15
+ };
16
+ export const presentPlan = (tx) => {
17
+ const body = tx?.body;
18
+ let plan;
19
+ try {
20
+ plan = AcpPlanValue.assertCanonical(body);
21
+ }
22
+ catch (error) {
23
+ throw new TypeError("A PLAN row must carry its canonical Plan body.", { cause: error });
24
+ }
25
+ return plan.entries.map((entry) => ({
26
+ glyph: PLAN_STATUS_GLYPHS[isProjectedMemory(entry) ? "memory" : entry.status],
27
+ text: entryText(entry),
28
+ }));
29
+ };
30
+ //# sourceMappingURL=plan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../src/plan.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,iBAAiB,EACjB,YAAY,GAEf,MAAM,0BAA0B,CAAC;AAElC,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAC9B,SAAS,EAAE,GAAG;IACd,WAAW,EAAE,IAAI;IACjB,MAAM,EAAE,IAAI;IACZ,OAAO,EAAE,GAAG;CACsD,CAAC;AAOvE,MAAM,iBAAiB,GAAG,CAAC,KAAmB,EAAW,EAAE,CAAC,CACxD,KAAK,CAAC,MAAM,KAAK,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAC9E,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,KAAmB,EAAU,EAAE;IAC9C,MAAM,GAAG,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;IACrG,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ;QAC9B,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;AAC3C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAW,EAAwB,EAAE;IAC7D,MAAM,IAAI,GAAI,EAAgC,EAAE,IAAI,CAAC;IACrD,IAAI,IAAI,CAAC;IACT,IAAI,CAAC;QACD,IAAI,GAAG,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,IAAI,SAAS,CAAC,gDAAgD,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAChC,KAAK,EAAE,kBAAkB,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;QAC7E,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC;KACzB,CAAC,CAAC,CAAC;AACR,CAAC,CAAC"}
@@ -26,13 +26,11 @@ export interface Resolution {
26
26
  }
27
27
  export declare const renderBody: (op: string, body: string) => string;
28
28
  export declare const formatTarget: ({ scheme, pathname }: ProposalParams["target"], op?: string) => string;
29
+ export declare const editInEditor: (body: string, suffix: string) => Promise<string | null>;
29
30
  export declare const renderProposalMenu: (params: ProposalParams) => string;
30
- export declare const questionFromProposal: (params: ProposalParams) => {
31
- question: string;
32
- choices: string[];
33
- } | null;
31
+ export declare const questionChoices: (schema: Record<string, unknown>) => string[];
32
+ export declare const answerForQuestion: (line: string, schema: Record<string, unknown>) => Record<string, unknown> | null;
34
33
  export declare const renderQuestionMenu: (question: string, choices: string[]) => string;
35
- export declare const answerForLine: (line: string, choices: string[]) => string | null;
36
34
  export declare const keyToResolution: (key: string, params: ProposalParams) => Promise<Resolution | null>;
37
35
  export declare const reviewProposal: (params: ProposalParams) => Promise<Resolution>;
38
36
  //# sourceMappingURL=proposal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"proposal.d.ts","sourceRoot":"","sources":["../src/proposal.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,aAAa;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,aAAa,CAAC;CACxB;AAMD,eAAO,MAAM,gBAAgB,cAAe,cAAc,KAAG,OACN,CAAC;AAExD,MAAM,WAAW,UAAU;IACvB,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAYD,eAAO,MAAM,UAAU,OAAQ,MAAM,QAAQ,MAAM,KAAG,MASrD,CAAC;AAKF,eAAO,MAAM,YAAY,yBAA0B,cAAc,CAAC,QAAQ,CAAC,OAAO,MAAM,KAAG,MAG1F,CAAC;AA0CF,eAAO,MAAM,kBAAkB,WAAY,cAAc,KAAG,MAK3D,CAAC;AAUF,eAAO,MAAM,oBAAoB,WAAY,cAAc,KAAG;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAMvG,CAAC;AAIF,eAAO,MAAM,kBAAkB,aAAc,MAAM,WAAW,MAAM,EAAE,KAAG,MAOxE,CAAC;AAKF,eAAO,MAAM,aAAa,SAAU,MAAM,WAAW,MAAM,EAAE,KAAG,MAAM,GAAG,IAMxE,CAAC;AAMF,eAAO,MAAM,eAAe,QAAe,MAAM,UAAU,cAAc,KAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAgBpG,CAAC;AAKF,eAAO,MAAM,cAAc,WAAkB,cAAc,KAAG,OAAO,CAAC,UAAU,CAM/E,CAAC"}
1
+ {"version":3,"file":"proposal.d.ts","sourceRoot":"","sources":["../src/proposal.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,aAAa;IAC1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,aAAa,CAAC;CACxB;AAMD,eAAO,MAAM,gBAAgB,cAAe,cAAc,KAAG,OACN,CAAC;AAExD,MAAM,WAAW,UAAU;IACvB,QAAQ,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAYD,eAAO,MAAM,UAAU,OAAQ,MAAM,QAAQ,MAAM,KAAG,MASrD,CAAC;AAKF,eAAO,MAAM,YAAY,yBAA0B,cAAc,CAAC,QAAQ,CAAC,OAAO,MAAM,KAAG,MAG1F,CAAC;AAqBF,eAAO,MAAM,YAAY,SAAgB,MAAM,UAAU,MAAM,KAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAgBtF,CAAC;AAIF,eAAO,MAAM,kBAAkB,WAAY,cAAc,KAAG,MAK3D,CAAC;AAUF,eAAO,MAAM,eAAe,WAAY,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,MAAM,EAQvE,CAAC;AAKF,eAAO,MAAM,iBAAiB,SAAU,MAAM,UAAU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAuB3G,CAAC;AAIF,eAAO,MAAM,kBAAkB,aAAc,MAAM,WAAW,MAAM,EAAE,KAAG,MAOxE,CAAC;AAMF,eAAO,MAAM,eAAe,QAAe,MAAM,UAAU,cAAc,KAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAgBpG,CAAC;AAKF,eAAO,MAAM,cAAc,WAAkB,cAAc,KAAG,OAAO,CAAC,UAAU,CAM/E,CAAC"}