@goah/cli 0.11.5 → 0.13.1

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 (242) hide show
  1. package/dist/LICENSE +201 -0
  2. package/dist/THIRD-PARTY-NOTICES.md +2319 -0
  3. package/dist/anthropic-messages-WBFOHES5.js +7214 -0
  4. package/dist/azure-openai-responses-NZFH3PO6.js +253 -0
  5. package/dist/chunk-25XSBFX6.js +639 -0
  6. package/dist/chunk-2QBQZGXF.js +110 -0
  7. package/dist/chunk-2ZP2NBW3.js +345 -0
  8. package/dist/chunk-4KA63VNZ.js +2 -0
  9. package/dist/chunk-4M6TXTT5.js +86 -0
  10. package/dist/chunk-4US7ZHT3.js +20 -0
  11. package/dist/chunk-6M3OOCKO.js +11809 -0
  12. package/dist/chunk-7AXAFDPG.js +17 -0
  13. package/dist/chunk-BXA47DTF.js +548 -0
  14. package/dist/chunk-FSBUS2BI.js +26 -0
  15. package/dist/chunk-GKDRAHLI.js +4787 -0
  16. package/dist/chunk-H462EFJP.js +89 -0
  17. package/dist/chunk-IIJQ3DW4.js +35 -0
  18. package/dist/chunk-JQD5EWJY.js +34 -0
  19. package/dist/chunk-K26BVR6O.js +61 -0
  20. package/dist/chunk-KAO7WIXG.js +31 -0
  21. package/dist/chunk-LBKI23CC.js +9810 -0
  22. package/dist/chunk-LKBKZEHT.js +41 -0
  23. package/dist/chunk-MD7TLTXZ.js +18 -0
  24. package/dist/chunk-MPXK7QBL.js +868 -0
  25. package/dist/chunk-NRLGWZJC.js +11 -0
  26. package/dist/chunk-PFEV3HWI.js +1178 -0
  27. package/dist/chunk-QBD6EJ2Z.js +1746 -0
  28. package/dist/chunk-R6I3VKME.js +132 -0
  29. package/dist/chunk-TJON22J4.js +87 -0
  30. package/dist/chunk-ULY36ME4.js +33097 -0
  31. package/dist/chunk-VWEV4LTH.js +25 -0
  32. package/dist/chunk-X7UWW2PN.js +883 -0
  33. package/dist/chunk-XALZLRYK.js +9221 -0
  34. package/dist/chunk-XPQKM3L7.js +57 -0
  35. package/dist/chunk-YH6YJ2IB.js +1773 -0
  36. package/dist/cli.d.ts +0 -2
  37. package/dist/cli.js +13148 -506
  38. package/dist/console/assets/index-3sYrDMmt.css +1 -0
  39. package/dist/console/assets/index-B1vGMXKr.js +52 -0
  40. package/dist/console/assets/index-B1vGMXKr.js.map +1 -0
  41. package/dist/console/index.html +2 -2
  42. package/dist/dist-65MDQA4Q.js +1126 -0
  43. package/dist/dist-KNR2XL6J.js +39 -0
  44. package/dist/execution.d.ts +557 -2
  45. package/dist/execution.js +37 -2
  46. package/dist/faux-runner-worker.js +128 -0
  47. package/dist/google-generative-ai-YMHXZSFE.js +422 -0
  48. package/dist/google-vertex-X6DB3ZQ6.js +471 -0
  49. package/dist/index.d.ts +855 -44
  50. package/dist/index.js +84 -257
  51. package/dist/kernel.d.ts +39 -2
  52. package/dist/kernel.js +21 -2
  53. package/dist/mistral-conversations-TY3MMD6G.js +718 -0
  54. package/dist/multipart-parser-F6M4NJZU.js +373 -0
  55. package/dist/openai-codex-responses-BRDUMLN5.js +1374 -0
  56. package/dist/openai-completions-CX634XN3.js +1139 -0
  57. package/dist/openai-responses-HMCXJIHT.js +300 -0
  58. package/dist/openrouter-images-KTWET2H2.js +148 -0
  59. package/dist/pi-messages-XL5OEC4K.js +307 -0
  60. package/dist/pi-worker.js +671 -0
  61. package/dist/runner-pi.d.ts +342 -2
  62. package/dist/runner-pi.js +46 -2
  63. package/dist/runner-registry-M776E3SE.js +22 -0
  64. package/dist/sqlite.d.ts +446 -2
  65. package/dist/sqlite.js +15 -2
  66. package/dist/src-F2KBSV4T.js +1398 -0
  67. package/dist/supervisor.d.ts +625 -2
  68. package/dist/supervisor.js +39 -2
  69. package/dist/testkit.d.ts +564 -2
  70. package/dist/testkit.js +127 -2
  71. package/dist/transcript.d.ts +84 -0
  72. package/dist/transcript.js +25 -0
  73. package/dist/verification-worker.js +72 -0
  74. package/package.json +3 -28
  75. package/dist/cli.d.ts.map +0 -1
  76. package/dist/cli.js.map +0 -1
  77. package/dist/console/assets/index-BJTGvlCH.js +0 -52
  78. package/dist/console/assets/index-BJTGvlCH.js.map +0 -1
  79. package/dist/console/assets/index-msBn41Cl.css +0 -1
  80. package/dist/control.d.ts +0 -106
  81. package/dist/control.d.ts.map +0 -1
  82. package/dist/control.js +0 -215
  83. package/dist/control.js.map +0 -1
  84. package/dist/execution.d.ts.map +0 -1
  85. package/dist/execution.js.map +0 -1
  86. package/dist/index.d.ts.map +0 -1
  87. package/dist/index.js.map +0 -1
  88. package/dist/inspect.d.ts +0 -61
  89. package/dist/inspect.d.ts.map +0 -1
  90. package/dist/inspect.js +0 -110
  91. package/dist/inspect.js.map +0 -1
  92. package/dist/kernel.d.ts.map +0 -1
  93. package/dist/kernel.js.map +0 -1
  94. package/dist/live-config.d.ts +0 -10
  95. package/dist/live-config.d.ts.map +0 -1
  96. package/dist/live-config.js +0 -44
  97. package/dist/live-config.js.map +0 -1
  98. package/dist/metrics.d.ts +0 -2
  99. package/dist/metrics.d.ts.map +0 -1
  100. package/dist/metrics.js +0 -2
  101. package/dist/metrics.js.map +0 -1
  102. package/dist/prompt-queue.d.ts +0 -13
  103. package/dist/prompt-queue.d.ts.map +0 -1
  104. package/dist/prompt-queue.js +0 -30
  105. package/dist/prompt-queue.js.map +0 -1
  106. package/dist/runner-pi.d.ts.map +0 -1
  107. package/dist/runner-pi.js.map +0 -1
  108. package/dist/runner-registry.d.ts +0 -8
  109. package/dist/runner-registry.d.ts.map +0 -1
  110. package/dist/runner-registry.js +0 -12
  111. package/dist/runner-registry.js.map +0 -1
  112. package/dist/searchable-select.d.ts +0 -24
  113. package/dist/searchable-select.d.ts.map +0 -1
  114. package/dist/searchable-select.js +0 -61
  115. package/dist/searchable-select.js.map +0 -1
  116. package/dist/secret-input.d.ts +0 -8
  117. package/dist/secret-input.d.ts.map +0 -1
  118. package/dist/secret-input.js +0 -14
  119. package/dist/secret-input.js.map +0 -1
  120. package/dist/session.d.ts +0 -2
  121. package/dist/session.d.ts.map +0 -1
  122. package/dist/session.js +0 -2
  123. package/dist/session.js.map +0 -1
  124. package/dist/setup-wizard.d.ts +0 -11
  125. package/dist/setup-wizard.d.ts.map +0 -1
  126. package/dist/setup-wizard.js +0 -130
  127. package/dist/setup-wizard.js.map +0 -1
  128. package/dist/sqlite.d.ts.map +0 -1
  129. package/dist/sqlite.js.map +0 -1
  130. package/dist/supervisor.d.ts.map +0 -1
  131. package/dist/supervisor.js.map +0 -1
  132. package/dist/testkit.d.ts.map +0 -1
  133. package/dist/testkit.js.map +0 -1
  134. package/dist/tui-theme.d.ts +0 -16
  135. package/dist/tui-theme.d.ts.map +0 -1
  136. package/dist/tui-theme.js +0 -18
  137. package/dist/tui-theme.js.map +0 -1
  138. package/dist/tui.d.ts +0 -18
  139. package/dist/tui.d.ts.map +0 -1
  140. package/dist/tui.js +0 -583
  141. package/dist/tui.js.map +0 -1
  142. package/dist/update.d.ts +0 -15
  143. package/dist/update.d.ts.map +0 -1
  144. package/dist/update.js +0 -59
  145. package/dist/update.js.map +0 -1
  146. package/dist/web-console.d.ts +0 -33
  147. package/dist/web-console.d.ts.map +0 -1
  148. package/dist/web-console.js +0 -252
  149. package/dist/web-console.js.map +0 -1
  150. package/dist/welcome.d.ts +0 -30
  151. package/dist/welcome.d.ts.map +0 -1
  152. package/dist/welcome.js +0 -81
  153. package/dist/welcome.js.map +0 -1
  154. package/node_modules/goah-ledger-contract/dist/execution.d.ts +0 -402
  155. package/node_modules/goah-ledger-contract/dist/execution.d.ts.map +0 -1
  156. package/node_modules/goah-ledger-contract/dist/execution.js +0 -40
  157. package/node_modules/goah-ledger-contract/dist/execution.js.map +0 -1
  158. package/node_modules/goah-ledger-contract/dist/index.d.ts +0 -5
  159. package/node_modules/goah-ledger-contract/dist/index.d.ts.map +0 -1
  160. package/node_modules/goah-ledger-contract/dist/index.js +0 -5
  161. package/node_modules/goah-ledger-contract/dist/index.js.map +0 -1
  162. package/node_modules/goah-ledger-contract/dist/kernel.d.ts +0 -37
  163. package/node_modules/goah-ledger-contract/dist/kernel.d.ts.map +0 -1
  164. package/node_modules/goah-ledger-contract/dist/kernel.js +0 -8
  165. package/node_modules/goah-ledger-contract/dist/kernel.js.map +0 -1
  166. package/node_modules/goah-ledger-contract/dist/metrics.d.ts +0 -40
  167. package/node_modules/goah-ledger-contract/dist/metrics.d.ts.map +0 -1
  168. package/node_modules/goah-ledger-contract/dist/metrics.js +0 -25
  169. package/node_modules/goah-ledger-contract/dist/metrics.js.map +0 -1
  170. package/node_modules/goah-ledger-contract/dist/session.d.ts +0 -63
  171. package/node_modules/goah-ledger-contract/dist/session.d.ts.map +0 -1
  172. package/node_modules/goah-ledger-contract/dist/session.js +0 -115
  173. package/node_modules/goah-ledger-contract/dist/session.js.map +0 -1
  174. package/node_modules/goah-ledger-contract/package.json +0 -29
  175. package/node_modules/goah-ledger-sqlite/dist/index.d.ts +0 -77
  176. package/node_modules/goah-ledger-sqlite/dist/index.d.ts.map +0 -1
  177. package/node_modules/goah-ledger-sqlite/dist/index.js +0 -884
  178. package/node_modules/goah-ledger-sqlite/dist/index.js.map +0 -1
  179. package/node_modules/goah-ledger-sqlite/package.json +0 -26
  180. package/node_modules/goah-runner-pi/dist/configurator.d.ts +0 -20
  181. package/node_modules/goah-runner-pi/dist/configurator.d.ts.map +0 -1
  182. package/node_modules/goah-runner-pi/dist/configurator.js +0 -267
  183. package/node_modules/goah-runner-pi/dist/configurator.js.map +0 -1
  184. package/node_modules/goah-runner-pi/dist/credential-store.d.ts +0 -12
  185. package/node_modules/goah-runner-pi/dist/credential-store.d.ts.map +0 -1
  186. package/node_modules/goah-runner-pi/dist/credential-store.js +0 -69
  187. package/node_modules/goah-runner-pi/dist/credential-store.js.map +0 -1
  188. package/node_modules/goah-runner-pi/dist/env-spec.d.ts +0 -17
  189. package/node_modules/goah-runner-pi/dist/env-spec.d.ts.map +0 -1
  190. package/node_modules/goah-runner-pi/dist/env-spec.js +0 -95
  191. package/node_modules/goah-runner-pi/dist/env-spec.js.map +0 -1
  192. package/node_modules/goah-runner-pi/dist/index.d.ts +0 -64
  193. package/node_modules/goah-runner-pi/dist/index.d.ts.map +0 -1
  194. package/node_modules/goah-runner-pi/dist/index.js +0 -241
  195. package/node_modules/goah-runner-pi/dist/index.js.map +0 -1
  196. package/node_modules/goah-runner-pi/dist/model-provider.d.ts +0 -30
  197. package/node_modules/goah-runner-pi/dist/model-provider.d.ts.map +0 -1
  198. package/node_modules/goah-runner-pi/dist/model-provider.js +0 -96
  199. package/node_modules/goah-runner-pi/dist/model-provider.js.map +0 -1
  200. package/node_modules/goah-runner-pi/dist/pi-worker.d.ts +0 -29
  201. package/node_modules/goah-runner-pi/dist/pi-worker.d.ts.map +0 -1
  202. package/node_modules/goah-runner-pi/dist/pi-worker.js +0 -428
  203. package/node_modules/goah-runner-pi/dist/pi-worker.js.map +0 -1
  204. package/node_modules/goah-runner-pi/dist/test-helpers.d.ts +0 -4
  205. package/node_modules/goah-runner-pi/dist/test-helpers.d.ts.map +0 -1
  206. package/node_modules/goah-runner-pi/dist/test-helpers.js +0 -11
  207. package/node_modules/goah-runner-pi/dist/test-helpers.js.map +0 -1
  208. package/node_modules/goah-runner-pi/dist/verification-worker.d.ts +0 -2
  209. package/node_modules/goah-runner-pi/dist/verification-worker.d.ts.map +0 -1
  210. package/node_modules/goah-runner-pi/dist/verification-worker.js +0 -48
  211. package/node_modules/goah-runner-pi/dist/verification-worker.js.map +0 -1
  212. package/node_modules/goah-runner-pi/package.json +0 -28
  213. package/node_modules/goah-supervisor/dist/context-view.d.ts +0 -31
  214. package/node_modules/goah-supervisor/dist/context-view.d.ts.map +0 -1
  215. package/node_modules/goah-supervisor/dist/context-view.js +0 -71
  216. package/node_modules/goah-supervisor/dist/context-view.js.map +0 -1
  217. package/node_modules/goah-supervisor/dist/index.d.ts +0 -94
  218. package/node_modules/goah-supervisor/dist/index.d.ts.map +0 -1
  219. package/node_modules/goah-supervisor/dist/index.js +0 -888
  220. package/node_modules/goah-supervisor/dist/index.js.map +0 -1
  221. package/node_modules/goah-supervisor/dist/roles.d.ts +0 -3
  222. package/node_modules/goah-supervisor/dist/roles.d.ts.map +0 -1
  223. package/node_modules/goah-supervisor/dist/roles.js +0 -14
  224. package/node_modules/goah-supervisor/dist/roles.js.map +0 -1
  225. package/node_modules/goah-supervisor/dist/verification.d.ts +0 -82
  226. package/node_modules/goah-supervisor/dist/verification.d.ts.map +0 -1
  227. package/node_modules/goah-supervisor/dist/verification.js +0 -110
  228. package/node_modules/goah-supervisor/dist/verification.js.map +0 -1
  229. package/node_modules/goah-supervisor/package.json +0 -26
  230. package/node_modules/goah-testkit/dist/faux-runner-worker.d.ts +0 -2
  231. package/node_modules/goah-testkit/dist/faux-runner-worker.d.ts.map +0 -1
  232. package/node_modules/goah-testkit/dist/faux-runner-worker.js +0 -75
  233. package/node_modules/goah-testkit/dist/faux-runner-worker.js.map +0 -1
  234. package/node_modules/goah-testkit/dist/index.d.ts +0 -52
  235. package/node_modules/goah-testkit/dist/index.d.ts.map +0 -1
  236. package/node_modules/goah-testkit/dist/index.js +0 -113
  237. package/node_modules/goah-testkit/dist/index.js.map +0 -1
  238. package/node_modules/goah-testkit/dist/mock-connector-worker.d.ts +0 -2
  239. package/node_modules/goah-testkit/dist/mock-connector-worker.d.ts.map +0 -1
  240. package/node_modules/goah-testkit/dist/mock-connector-worker.js +0 -29
  241. package/node_modules/goah-testkit/dist/mock-connector-worker.js.map +0 -1
  242. package/node_modules/goah-testkit/package.json +0 -29
package/dist/inspect.js DELETED
@@ -1,110 +0,0 @@
1
- import { homedir } from "node:os";
2
- import { replaySession, wakeStream } from "goah-ledger-contract";
3
- export function listSessions(ledger) {
4
- return ledger.wakes().map((wake) => summarize(ledger, wake)).sort((a, b) => (b.lastSeq ?? 0) - (a.lastSeq ?? 0));
5
- }
6
- export function showSession(ledger, wakeId) {
7
- const wake = requiredWake(ledger, wakeId);
8
- const events = ledger.eventsForWake(wakeId);
9
- const replay = replaySession(events);
10
- const eventTypes = {};
11
- for (const event of events)
12
- eventTypes[event.type] = (eventTypes[event.type] ?? 0) + 1;
13
- return {
14
- session: summarize(ledger, wake),
15
- eventTypes,
16
- replay: { status: replay.status, messageCount: replay.messages.length, openToolCalls: replay.openToolCalls },
17
- requests: eventTypes["request.prepared"] ?? 0,
18
- activeContext: contextSnapshot(events),
19
- };
20
- }
21
- export function replayWakeSession(ledger, wakeId) {
22
- requiredWake(ledger, wakeId);
23
- return replaySession(ledger.eventsForWake(wakeId));
24
- }
25
- export function showSessionContext(ledger, wakeId) {
26
- requiredWake(ledger, wakeId);
27
- return contextSnapshot(ledger.eventsForWake(wakeId));
28
- }
29
- export function streamEvents(ledger, streamId, fromStreamSeq = 1) {
30
- if (!streamId.trim())
31
- throw new Error("--stream is required");
32
- if (!Number.isInteger(fromStreamSeq) || fromStreamSeq < 1)
33
- throw new Error("--from must be a positive integer");
34
- return ledger.readStream(streamId, fromStreamSeq);
35
- }
36
- export function exportSession(ledger, wakeId, options = {}) {
37
- const detail = showSession(ledger, wakeId);
38
- const value = {
39
- format: "goah.session-export.v1",
40
- exportedAt: options.now ?? new Date().toISOString(),
41
- redacted: !options.raw,
42
- session: detail.session,
43
- context: detail.activeContext,
44
- replay: replaySession(ledger.eventsForWake(wakeId)),
45
- events: ledger.eventsForWake(wakeId),
46
- };
47
- return options.raw ? value : redactValue(value);
48
- }
49
- export function redactValue(value, key = "") {
50
- if (SENSITIVE_KEY.test(key))
51
- return "[REDACTED]";
52
- if (Array.isArray(value))
53
- return value.map((item) => redactValue(item));
54
- if (value && typeof value === "object")
55
- return Object.fromEntries(Object.entries(value).map(([childKey, child]) => [childKey, redactValue(child, childKey)]));
56
- if (typeof value !== "string")
57
- return value;
58
- return value
59
- .replaceAll(homedir(), "<HOME>")
60
- .replace(/\bBearer\s+[^\s"']+/gi, "Bearer [REDACTED]")
61
- .replace(/\b(?:sk|ak|key)[-_][A-Za-z0-9_-]{12,}\b/gi, "[REDACTED]")
62
- .replace(/((?:api[_-]?key|token|secret|password|authorization)\s*[=:]\s*)[^\s,;"']+/gi, "$1[REDACTED]");
63
- }
64
- function summarize(ledger, wake) {
65
- const events = ledger.eventsForWake(wake.id);
66
- const replay = replaySession(events);
67
- const started = events.find((event) => event.type === "session.started")?.data;
68
- return {
69
- wakeId: wake.id,
70
- streamId: wakeStream(wake.id),
71
- agent: wake.agent,
72
- wakeStatus: wake.status,
73
- sessionStatus: replay.status === "running" && ["done", "abnormal", "merge_blocked"].includes(wake.status) ? wake.status : replay.status,
74
- triggerRef: wake.triggerRef,
75
- eventCount: events.length,
76
- firstSeq: events[0]?.seq ?? null,
77
- lastSeq: events.at(-1)?.seq ?? null,
78
- provider: typeof started?.provider === "string" ? started.provider : null,
79
- model: typeof started?.model === "string" ? started.model : null,
80
- formatVersion: typeof started?.formatVersion === "number" ? started.formatVersion : started ? 0 : null,
81
- messageCount: replay.messages.length,
82
- toolCalls: events.filter((event) => event.type === "tool.called").length,
83
- compactions: events.filter((event) => event.type === "context.compacted").length,
84
- };
85
- }
86
- function contextSnapshot(events) {
87
- const event = events.findLast((candidate) => candidate.type === "request.prepared");
88
- if (!event)
89
- return null;
90
- const request = event.data;
91
- return {
92
- eventSeq: event.seq,
93
- provider: request.provider,
94
- model: request.model,
95
- systemPrompt: request.systemPrompt,
96
- text: request.activeContext,
97
- sourceSeqs: request.sourceSeqs,
98
- toolCount: request.tools.length,
99
- messageCount: request.messages.length,
100
- modelConfig: request.modelConfig,
101
- };
102
- }
103
- function requiredWake(ledger, wakeId) {
104
- const wake = ledger.wake(wakeId);
105
- if (!wake)
106
- throw new Error(`wake not found: ${wakeId}`);
107
- return wake;
108
- }
109
- const SENSITIVE_KEY = /^(?:api[_-]?key|token|secret|password|authorization|cookie|set-cookie)$/i;
110
- //# sourceMappingURL=inspect.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../src/inspect.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"kernel.d.ts","sourceRoot":"","sources":["../src/kernel.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"kernel.js","sourceRoot":"","sources":["../src/kernel.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC"}
@@ -1,10 +0,0 @@
1
- export interface RunnerDisplay {
2
- runner: string;
3
- target: string;
4
- }
5
- export declare function readRunnerDisplay(configPath: string): RunnerDisplay;
6
- /** Switch the model for this workspace and reload the daemon. Returns the reload outcome. */
7
- export declare function switchModel(configPath: string, stateDir: string, model: string): Promise<string>;
8
- /** Reload the daemon config after an external edit (e.g. the setup wizard rewrote it). */
9
- export declare function reloadDaemon(stateDir: string, configPath: string): Promise<boolean>;
10
- //# sourceMappingURL=live-config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"live-config.d.ts","sourceRoot":"","sources":["../src/live-config.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,aAAa;IAAG,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AAEjE,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,CAMnE;AAED,6FAA6F;AAC7F,wBAAsB,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CActG;AAED,0FAA0F;AAC1F,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGzF"}
@@ -1,44 +0,0 @@
1
- /**
2
- * Live config mutation: edit goah.config.json in place, then ask the resident
3
- * daemon to reload (config.reload swaps the runner; spawn-time env resolution
4
- * applies new values to the next wake).
5
- */
6
- import { readFileSync } from "node:fs";
7
- import { resolve } from "node:path";
8
- import { requestControl } from "./control.js";
9
- import { loadConfig, updateWorkspaceRunnerProfile } from "./index.js";
10
- import { runnerPlugin } from "./runner-registry.js";
11
- export function readRunnerDisplay(configPath) {
12
- const config = JSON.parse(readFileSync(resolve(configPath), "utf8"));
13
- const profile = config.runnerProfiles?.find((item) => item.id === "default") ?? config.runnerProfiles?.[0];
14
- if (!profile)
15
- return { runner: "legacy", target: "configured" };
16
- const target = typeof profile.config.provider === "string" && typeof profile.config.model === "string" ? `${profile.config.provider}/${profile.config.model}` : profile.id;
17
- return { runner: profile.runner, target };
18
- }
19
- /** Switch the model for this workspace and reload the daemon. Returns the reload outcome. */
20
- export async function switchModel(configPath, stateDir, model) {
21
- if (!model.trim())
22
- throw new Error("model id is required");
23
- const config = loadConfig(configPath);
24
- const profile = config.runnerProfiles?.find((item) => item.id === "default") ?? config.runnerProfiles?.[0];
25
- if (!profile)
26
- throw new Error("no Runner Profile is configured");
27
- const plugin = runnerPlugin(profile.runner);
28
- if (!plugin.configurator.runCommand)
29
- throw new Error(`${profile.runner} does not support model switching`);
30
- const interaction = { select: async () => null, input: async () => null, notify: () => undefined };
31
- const result = await plugin.configurator.runCommand("model", [model.trim()], profile.config, interaction);
32
- if (result.config === undefined)
33
- throw new Error(`${profile.runner} did not return an updated configuration`);
34
- updateWorkspaceRunnerProfile(configPath, { ...profile, config: result.config });
35
- const outcome = await requestControl(stateDir, { op: "config.reload", configPath: resolve(configPath) }).catch((error) => ({ reloaded: false, error: error instanceof Error ? error.message : String(error) }));
36
- const reloaded = Boolean(outcome.reloaded);
37
- return reloaded ? result.output.join("\n") : `${result.output.join("\n")}; daemon reload failed (${String(outcome.error ?? "daemon not running")}), it will apply on next start`;
38
- }
39
- /** Reload the daemon config after an external edit (e.g. the setup wizard rewrote it). */
40
- export async function reloadDaemon(stateDir, configPath) {
41
- const outcome = await requestControl(stateDir, { op: "config.reload", configPath: resolve(configPath) }).catch(() => null);
42
- return Boolean(outcome?.reloaded);
43
- }
44
- //# sourceMappingURL=live-config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"live-config.js","sourceRoot":"","sources":["../src/live-config.ts"],"names":[],"mappings":"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"}
package/dist/metrics.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export * from "goah-ledger-contract/metrics";
2
- //# sourceMappingURL=metrics.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC"}
package/dist/metrics.js DELETED
@@ -1,2 +0,0 @@
1
- export * from "goah-ledger-contract/metrics";
2
- //# sourceMappingURL=metrics.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC"}
@@ -1,13 +0,0 @@
1
- import { type Interface as ReadlineInterface } from "node:readline";
2
- /**
3
- * Prompt queue over readline 'line' events. readline/promises `question()` loses lines that arrive
4
- * between awaits under piped input (same-tick chunks race the next listener registration), so
5
- * onboarding buffers lines itself.
6
- */
7
- export declare function lineQueue(input: ReadlineInterface): ((prompt: string) => Promise<string>) & {
8
- close(): void;
9
- };
10
- export declare function stdioQueue(): ((prompt: string) => Promise<string>) & {
11
- close(): void;
12
- };
13
- //# sourceMappingURL=prompt-queue.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompt-queue.d.ts","sourceRoot":"","sources":["../src/prompt-queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,SAAS,IAAI,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAErF;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,iBAAiB,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG;IAAE,KAAK,IAAI,IAAI,CAAA;CAAE,CAc7G;AAED,wBAAgB,UAAU,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG;IAAE,KAAK,IAAI,IAAI,CAAA;CAAE,CAEtF"}
@@ -1,30 +0,0 @@
1
- import { createInterface } from "node:readline";
2
- /**
3
- * Prompt queue over readline 'line' events. readline/promises `question()` loses lines that arrive
4
- * between awaits under piped input (same-tick chunks race the next listener registration), so
5
- * onboarding buffers lines itself.
6
- */
7
- export function lineQueue(input) {
8
- const buffered = [];
9
- const waiters = [];
10
- input.on("line", (line) => { const waiter = waiters.shift(); if (waiter)
11
- waiter(line);
12
- else
13
- buffered.push(line); });
14
- const ask = (prompt) => {
15
- input.setPrompt(prompt);
16
- input.prompt();
17
- const { promise, resolve } = Promise.withResolvers();
18
- const bufferedLine = buffered.shift();
19
- if (bufferedLine !== undefined)
20
- resolve(bufferedLine);
21
- else
22
- waiters.push(resolve);
23
- return promise;
24
- };
25
- return Object.assign(ask, { close: () => input.close() });
26
- }
27
- export function stdioQueue() {
28
- return lineQueue(createInterface({ input: process.stdin, output: process.stdout, terminal: false }));
29
- }
30
- //# sourceMappingURL=prompt-queue.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompt-queue.js","sourceRoot":"","sources":["../src/prompt-queue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAuC,MAAM,eAAe,CAAC;AAErF;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,KAAwB;IAChD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAkC,EAAE,CAAC;IAClD,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,GAAG,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,MAAM;QAAE,MAAM,CAAC,IAAI,CAAC,CAAC;;QAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5H,MAAM,GAAG,GAAG,CAAC,MAAc,EAAmB,EAAE;QAC9C,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACxB,KAAK,CAAC,MAAM,EAAE,CAAC;QACf,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,aAAa,EAAU,CAAC;QAC7D,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtC,IAAI,YAAY,KAAK,SAAS;YAAE,OAAO,CAAC,YAAY,CAAC,CAAC;;YACjD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO,SAAS,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;AACvG,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"runner-pi.d.ts","sourceRoot":"","sources":["../src/runner-pi.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"runner-pi.js","sourceRoot":"","sources":["../src/runner-pi.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC"}
@@ -1,8 +0,0 @@
1
- import type { JsonValue, Runner, RunnerConfigurator, RunnerManifest } from "goah-ledger-contract";
2
- export interface RunnerPlugin {
3
- configurator: RunnerConfigurator;
4
- create(config: JsonValue, root: string): Runner;
5
- }
6
- export declare function runnerPlugin(id: string): RunnerPlugin;
7
- export declare function runnerManifests(): RunnerManifest[];
8
- //# sourceMappingURL=runner-registry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runner-registry.d.ts","sourceRoot":"","sources":["../src/runner-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGlG,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,kBAAkB,CAAC;IACjC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;CACjD;AAMD,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,YAAY,CAIrD;AAED,wBAAgB,eAAe,IAAI,cAAc,EAAE,CAAkF"}
@@ -1,12 +0,0 @@
1
- import { createPiProcessRunner, piRunnerConfigurator } from "goah-runner-pi";
2
- const plugins = new Map([
3
- ["pi", { configurator: piRunnerConfigurator(), create: createPiProcessRunner }],
4
- ]);
5
- export function runnerPlugin(id) {
6
- const plugin = plugins.get(id);
7
- if (!plugin)
8
- throw new Error(`Runner is not installed: ${id}`);
9
- return plugin;
10
- }
11
- export function runnerManifests() { return [...plugins.values()].map((plugin) => plugin.configurator.describe()); }
12
- //# sourceMappingURL=runner-registry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runner-registry.js","sourceRoot":"","sources":["../src/runner-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAO7E,MAAM,OAAO,GAAG,IAAI,GAAG,CAAuB;IAC5C,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,oBAAoB,EAAE,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAC;CAChF,CAAC,CAAC;AAEH,MAAM,UAAU,YAAY,CAAC,EAAU;IACrC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,EAAE,EAAE,CAAC,CAAC;IAC/D,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,eAAe,KAAuB,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC"}
@@ -1,24 +0,0 @@
1
- import { type Component, type Focusable, type SelectItem, type SelectListTheme } from "@earendil-works/pi-tui";
2
- export interface SearchableSelectOptions {
3
- searchLabel?: string;
4
- emptyLabel?: string;
5
- }
6
- /** A visible fuzzy-search field composed with pi-tui's keyboard SelectList. */
7
- export declare class SearchableSelect implements Component, Focusable {
8
- #private;
9
- readonly items: SelectItem[];
10
- readonly maxVisible: number;
11
- readonly theme: SelectListTheme;
12
- readonly options: SearchableSelectOptions;
13
- onSelect?: (item: SelectItem) => void;
14
- onCancel?: () => void;
15
- constructor(items: SelectItem[], maxVisible: number, theme: SelectListTheme, options?: SearchableSelectOptions);
16
- get focused(): boolean;
17
- set focused(value: boolean);
18
- get query(): string;
19
- get resultCount(): number;
20
- handleInput(data: string): void;
21
- render(width: number): string[];
22
- invalidate(): void;
23
- }
24
- //# sourceMappingURL=searchable-select.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"searchable-select.d.ts","sourceRoot":"","sources":["../src/searchable-select.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkD,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE/J,MAAM,WAAW,uBAAuB;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,+EAA+E;AAC/E,qBAAa,gBAAiB,YAAW,SAAS,EAAE,SAAS;;IAQ/C,QAAQ,CAAC,KAAK,EAAE,UAAU,EAAE;IAAE,QAAQ,CAAC,UAAU,EAAE,MAAM;IAAE,QAAQ,CAAC,KAAK,EAAE,eAAe;IAAE,QAAQ,CAAC,OAAO,EAAE,uBAAuB;IAHjJ,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,UAAU,KAAK,IAAI,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;gBAED,KAAK,EAAE,UAAU,EAAE,EAAW,UAAU,EAAE,MAAM,EAAW,KAAK,EAAE,eAAe,EAAW,OAAO,GAAE,uBAA4B;IAKtJ,IAAI,OAAO,IAAI,OAAO,CAA0B;IAChD,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,EAAyD;IACnF,IAAI,KAAK,IAAI,MAAM,CAAmC;IACtD,IAAI,WAAW,IAAI,MAAM,CAAkC;IAE3D,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAY/B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;IAM/B,UAAU,IAAI,IAAI;CAanB"}
@@ -1,61 +0,0 @@
1
- import { fuzzyFilter, getKeybindings, Input, SelectList } from "@earendil-works/pi-tui";
2
- /** A visible fuzzy-search field composed with pi-tui's keyboard SelectList. */
3
- export class SearchableSelect {
4
- items;
5
- maxVisible;
6
- theme;
7
- options;
8
- #input = new Input();
9
- #list;
10
- #filtered;
11
- #focused = false;
12
- onSelect;
13
- onCancel;
14
- constructor(items, maxVisible, theme, options = {}) {
15
- this.items = items;
16
- this.maxVisible = maxVisible;
17
- this.theme = theme;
18
- this.options = options;
19
- this.#filtered = items;
20
- this.#list = this.#createList(items);
21
- }
22
- get focused() { return this.#focused; }
23
- set focused(value) { this.#focused = value; this.#input.focused = value; }
24
- get query() { return this.#input.getValue(); }
25
- get resultCount() { return this.#filtered.length; }
26
- handleInput(data) {
27
- const keys = getKeybindings();
28
- if (keys.matches(data, "tui.select.up") || keys.matches(data, "tui.select.down") || keys.matches(data, "tui.select.confirm")) {
29
- this.#list.handleInput(data);
30
- return;
31
- }
32
- if (keys.matches(data, "tui.select.cancel")) {
33
- if (this.query) {
34
- this.#input.setValue("");
35
- this.#refresh();
36
- }
37
- else
38
- this.onCancel?.();
39
- return;
40
- }
41
- this.#input.handleInput(data);
42
- this.#refresh();
43
- }
44
- render(width) {
45
- const label = this.options.searchLabel ?? "Search";
46
- const status = this.query ? `${this.resultCount}/${this.items.length} matches · Esc clears` : `${this.items.length} options · type to search`;
47
- return [` ${label} ${this.theme.scrollInfo(status)}`, ...this.#input.render(width), "", ...this.#list.render(width)];
48
- }
49
- invalidate() { this.#input.invalidate(); this.#list.invalidate(); }
50
- #refresh() {
51
- this.#filtered = fuzzyFilter(this.items, this.query, (item) => `${item.label} ${item.value} ${item.description ?? ""}`);
52
- this.#list = this.#createList(this.#filtered);
53
- }
54
- #createList(items) {
55
- const list = new SelectList(items, this.maxVisible, { ...this.theme, noMatch: () => this.theme.noMatch(` ${this.options.emptyLabel ?? "No matches"}${this.query ? ` for “${this.query}”` : ""} · Esc clears`) });
56
- list.onSelect = (item) => this.onSelect?.(item);
57
- list.onCancel = () => this.onCancel?.();
58
- return list;
59
- }
60
- }
61
- //# sourceMappingURL=searchable-select.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"searchable-select.js","sourceRoot":"","sources":["../src/searchable-select.ts"],"names":[],"mappings":"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"}
@@ -1,8 +0,0 @@
1
- import { Input } from "@earendil-works/pi-tui";
2
- /** Input that keeps the real value in memory while rendering only a fixed mask. */
3
- export declare class SecretInput extends Input {
4
- render(width: number): string[];
5
- }
6
- /** Input.setValue preserves cursor position; setup defaults should instead edit from the end. */
7
- export declare function setInitialValue(input: Input, value: string): void;
8
- //# sourceMappingURL=secret-input.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"secret-input.d.ts","sourceRoot":"","sources":["../src/secret-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAE9D,mFAAmF;AACnF,qBAAa,WAAY,SAAQ,KAAK;IAC3B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE;CAOzC;AAED,iGAAiG;AACjG,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAsD"}
@@ -1,14 +0,0 @@
1
- import { CURSOR_MARKER, Input } from "@earendil-works/pi-tui";
2
- /** Input that keeps the real value in memory while rendering only a fixed mask. */
3
- export class SecretInput extends Input {
4
- render(width) {
5
- const available = Math.max(0, width - 3);
6
- const length = [...this.getValue()].length;
7
- const mask = length > available ? `${"*".repeat(Math.max(0, available - 1))}…` : "*".repeat(length);
8
- const marker = this.focused ? CURSOR_MARKER : "";
9
- return [`> ${mask}${marker}\x1b[7m \x1b[27m${" ".repeat(Math.max(0, available - mask.length - 1))}`];
10
- }
11
- }
12
- /** Input.setValue preserves cursor position; setup defaults should instead edit from the end. */
13
- export function setInitialValue(input, value) { input.setValue(value); input.handleInput("\x05"); }
14
- //# sourceMappingURL=secret-input.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"secret-input.js","sourceRoot":"","sources":["../src/secret-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAC;AAE9D,mFAAmF;AACnF,MAAM,OAAO,WAAY,SAAQ,KAAK;IAC3B,MAAM,CAAC,KAAa;QAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QACzC,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC;QAC3C,MAAM,IAAI,GAAG,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACpG,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,OAAO,CAAC,KAAK,IAAI,GAAG,MAAM,mBAAmB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IACvG,CAAC;CACF;AAED,iGAAiG;AACjG,MAAM,UAAU,eAAe,CAAC,KAAY,EAAE,KAAa,IAAU,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC"}
package/dist/session.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export * from "goah-ledger-contract/session";
2
- //# sourceMappingURL=session.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC"}
package/dist/session.js DELETED
@@ -1,2 +0,0 @@
1
- export * from "goah-ledger-contract/session";
2
- //# sourceMappingURL=session.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC"}
@@ -1,11 +0,0 @@
1
- import type { RunnerProfile } from "goah-ledger-contract";
2
- export interface WizardResult {
3
- profile: RunnerProfile | null;
4
- }
5
- export declare function renderSetupHeader(title: string, description?: string, progress?: {
6
- current: number;
7
- total: number;
8
- }): string;
9
- export declare function runSetupWizard(current?: RunnerProfile | null): Promise<WizardResult>;
10
- export declare function applyWizardResult(result: WizardResult, configPath: string | null): void;
11
- //# sourceMappingURL=setup-wizard.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"setup-wizard.d.ts","sourceRoot":"","sources":["../src/setup-wizard.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAa,aAAa,EAA0B,MAAM,sBAAsB,CAAC;AAQ7F,MAAM,WAAW,YAAY;IAAG,OAAO,EAAE,aAAa,GAAG,IAAI,CAAA;CAAE;AAE/D,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,SAAK,EAAE,QAAQ,CAAC,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAGxH;AAUD,wBAAsB,cAAc,CAAC,OAAO,GAAE,aAAa,GAAG,IAAiC,GAAG,OAAO,CAAC,YAAY,CAAC,CAEtH;AA6ED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAIvF"}
@@ -1,130 +0,0 @@
1
- /** Generic Runner setup. Provider/model semantics remain inside each Runner plugin. */
2
- import { spawn } from "node:child_process";
3
- import { Input, ProcessTerminal, SelectList, Text, TuiAltScreen } from "@earendil-works/pi-tui";
4
- import { readDefaultRunnerProfile, updateWorkspaceRunnerProfile, writeDefaultRunnerProfile } from "./index.js";
5
- import { stdioQueue } from "./prompt-queue.js";
6
- import { runnerManifests, runnerPlugin } from "./runner-registry.js";
7
- import { SearchableSelect } from "./searchable-select.js";
8
- import { SecretInput, setInitialValue } from "./secret-input.js";
9
- import { tuiTheme } from "./tui-theme.js";
10
- export function renderSetupHeader(title, description = "", progress) {
11
- const meter = progress ? `${"━".repeat(progress.current)}${"─".repeat(Math.max(0, progress.total - progress.current))} ${progress.current}/${progress.total}` : "";
12
- return [`${tuiTheme.brand(" GOAH ")}${tuiTheme.rail(` SETUP${meter ? ` ${meter}` : ""} `)}`, "", ` ${tuiTheme.strong(title)}`, description ? ` ${tuiTheme.muted(description)}` : "", ""].join("\n");
13
- }
14
- const theme = {
15
- selectedPrefix: (text) => `${tuiTheme.accent(">")} ${text}`,
16
- selectedText: tuiTheme.strong,
17
- description: tuiTheme.muted,
18
- scrollInfo: tuiTheme.muted,
19
- noMatch: tuiTheme.muted,
20
- };
21
- export async function runSetupWizard(current = readDefaultRunnerProfile()) {
22
- return process.stdin.isTTY && process.stdout.isTTY ? runTui(current) : runPiped(current);
23
- }
24
- async function runTui(current) {
25
- const tui = new TuiAltScreen(new ProcessTerminal(), true);
26
- const header = new Text("");
27
- let slot = null;
28
- const replace = (component) => { if (slot)
29
- tui.removeChild(slot); slot = component; tui.addChild(component); tui.setFocus(component); tui.requestRender(); };
30
- const setHeader = (title, description = "", progress) => { header.setText(renderSetupHeader(title, description, progress)); };
31
- const interaction = {
32
- select: ({ title, description, choices, progress }) => new Promise((resolve) => {
33
- setHeader(title, description, progress);
34
- const list = choices.length >= 8
35
- ? new SearchableSelect(choices, 9, theme, { searchLabel: `Search ${title.toLowerCase()}`, emptyLabel: `No matching ${title.toLowerCase()}` })
36
- : new SelectList(choices, 10, theme);
37
- list.onSelect = (item) => resolve(item.value);
38
- list.onCancel = () => resolve(null);
39
- replace(list);
40
- }),
41
- input: ({ title, description, prompt, initial, secret, progress }) => new Promise((resolve) => {
42
- setHeader(title, `${description ?? ""}\n ${prompt}`.trim(), progress);
43
- const input = secret ? new SecretInput() : new Input();
44
- if (initial)
45
- setInitialValue(input, initial);
46
- input.onSubmit = (line) => resolve(line.trim());
47
- input.onEscape = () => resolve(null);
48
- replace(input);
49
- }),
50
- notify: (message) => { setHeader("Authentication", message); tui.requestRender(); },
51
- openUrl,
52
- };
53
- tui.addChild(header);
54
- const { promise, resolve } = Promise.withResolvers();
55
- void (async () => {
56
- while (true) {
57
- try {
58
- const manifests = runnerManifests();
59
- const runner = await interaction.select({ title: "Choose a runner", description: "A runner owns execution, models, and authentication.", progress: { current: 1, total: 5 }, choices: manifests.map((item) => ({ value: item.id, label: item.name, description: item.description })) });
60
- if (!runner) {
61
- resolve({ profile: null });
62
- return;
63
- }
64
- const config = await runnerPlugin(runner).configurator.setup(current?.runner === runner ? current.config : null, interaction);
65
- if (config === null) {
66
- resolve({ profile: null });
67
- return;
68
- }
69
- const summary = runnerPlugin(runner).configurator.summarize?.(config) ?? summarize(config);
70
- const confirmation = await interaction.select({ title: "Review", description: summary.map((item) => `${item.label.padEnd(12)} ${item.value}`).join("\n "), progress: { current: 5, total: 5 }, choices: [{ value: "save", label: "Save and continue" }, { value: "back", label: "Back" }, { value: "cancel", label: "Cancel without saving" }] });
71
- if (confirmation === "back")
72
- continue;
73
- resolve({ profile: confirmation === "save" ? { id: current?.id ?? "default", runner, config } : null });
74
- return;
75
- }
76
- catch (error) {
77
- const choice = await interaction.select({ title: "Setup failed", description: error instanceof Error ? error.message : String(error), choices: [{ value: "retry", label: "Try again" }, { value: "cancel", label: "Cancel without saving" }] });
78
- if (choice !== "retry") {
79
- resolve({ profile: null });
80
- return;
81
- }
82
- }
83
- }
84
- })();
85
- tui.start();
86
- const result = await promise;
87
- tui.stop();
88
- process.stdout.write("\x1b[2J\x1b[H");
89
- return result;
90
- }
91
- async function runPiped(current) {
92
- const ask = stdioQueue();
93
- const interaction = {
94
- select: async ({ title, choices }) => {
95
- const answer = Number(await ask(`${title}: ${choices.map((choice, index) => `${index + 1}) ${choice.label}`).join(" ")} — select: `));
96
- return choices[answer - 1]?.value ?? null;
97
- },
98
- input: async ({ prompt, initial }) => (await ask(`${prompt}${initial ? ` (${initial})` : ""}: `)) || initial || null,
99
- notify: (message) => process.stdout.write(`${message}\n`),
100
- };
101
- try {
102
- const manifests = runnerManifests();
103
- const runner = await interaction.select({ title: "Runner", choices: manifests.map((item) => ({ value: item.id, label: item.name })) });
104
- if (!runner)
105
- return { profile: null };
106
- const config = await runnerPlugin(runner).configurator.setup(current?.runner === runner ? current.config : null, interaction);
107
- return { profile: config === null ? null : { id: current?.id ?? "default", runner, config } };
108
- }
109
- finally {
110
- ask.close();
111
- }
112
- }
113
- export function applyWizardResult(result, configPath) {
114
- if (!result.profile)
115
- throw new Error("Setup was cancelled; your existing configuration was not changed.");
116
- writeDefaultRunnerProfile(result.profile);
117
- if (configPath)
118
- updateWorkspaceRunnerProfile(configPath, result.profile);
119
- }
120
- function summarize(config) {
121
- if (!config || typeof config !== "object" || Array.isArray(config))
122
- return [{ label: "Configuration", value: String(config) }];
123
- return Object.entries(config).filter(([key]) => !/key|token|secret|password|authFile/i.test(key)).map(([label, value]) => ({ label, value: String(value) }));
124
- }
125
- function openUrl(url) {
126
- const command = process.platform === "darwin" ? "open" : process.platform === "win32" ? "cmd" : "xdg-open";
127
- const args = process.platform === "win32" ? ["/c", "start", "", url] : [url];
128
- spawn(command, args, { detached: true, stdio: "ignore" }).unref();
129
- }
130
- //# sourceMappingURL=setup-wizard.js.map