zelari-code 0.4.3 → 0.6.2

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 (58) hide show
  1. package/README.md +42 -0
  2. package/dist/cli/app.js +17 -12
  3. package/dist/cli/app.js.map +1 -1
  4. package/dist/cli/compaction.js.map +1 -1
  5. package/dist/cli/components/ChatStream.js +57 -10
  6. package/dist/cli/components/ChatStream.js.map +1 -1
  7. package/dist/cli/components/CollapsibleToolOutput.js +5 -0
  8. package/dist/cli/components/CollapsibleToolOutput.js.map +1 -1
  9. package/dist/cli/councilDispatcher.js +1 -1
  10. package/dist/cli/councilDispatcher.js.map +1 -1
  11. package/dist/cli/headless.js +137 -0
  12. package/dist/cli/headless.js.map +1 -0
  13. package/dist/cli/hooks/eventsToMessages.js +42 -11
  14. package/dist/cli/hooks/eventsToMessages.js.map +1 -1
  15. package/dist/cli/hooks/messageHelpers.js +65 -15
  16. package/dist/cli/hooks/messageHelpers.js.map +1 -1
  17. package/dist/cli/hooks/useBatchedMessages.js +67 -0
  18. package/dist/cli/hooks/useBatchedMessages.js.map +1 -0
  19. package/dist/cli/hooks/useChatTurn.js +97 -41
  20. package/dist/cli/hooks/useChatTurn.js.map +1 -1
  21. package/dist/cli/hooks/useSession.js +10 -1
  22. package/dist/cli/hooks/useSession.js.map +1 -1
  23. package/dist/cli/hooks/useSlashDispatch.js +4 -1
  24. package/dist/cli/hooks/useSlashDispatch.js.map +1 -1
  25. package/dist/cli/main.bundled.js +15328 -14305
  26. package/dist/cli/main.bundled.js.map +4 -4
  27. package/dist/cli/main.js +86 -2
  28. package/dist/cli/main.js.map +1 -1
  29. package/dist/cli/provider/openai-compatible.js +9 -2
  30. package/dist/cli/provider/openai-compatible.js.map +1 -1
  31. package/dist/cli/runHeadless.js +160 -0
  32. package/dist/cli/runHeadless.js.map +1 -0
  33. package/dist/cli/sessionManager.js +1 -1
  34. package/dist/cli/sessionManager.js.map +1 -1
  35. package/dist/cli/skillSuggest.js +1 -1
  36. package/dist/cli/slashHandlers/branch.js +11 -2
  37. package/dist/cli/slashHandlers/branch.js.map +1 -1
  38. package/dist/cli/slashHandlers/git.js +0 -75
  39. package/dist/cli/slashHandlers/git.js.map +1 -1
  40. package/dist/cli/slashHandlers/promoteMember.js +25 -0
  41. package/dist/cli/slashHandlers/promoteMember.js.map +1 -0
  42. package/dist/cli/slashHandlers/transcript.js +13 -0
  43. package/dist/cli/slashHandlers/transcript.js.map +1 -0
  44. package/dist/cli/slashHandlers/updater.js +40 -0
  45. package/dist/cli/slashHandlers/updater.js.map +1 -0
  46. package/dist/cli/toolRegistry.js +6 -6
  47. package/dist/cli/toolRegistry.js.map +1 -1
  48. package/dist/cli/wizard/firstRun.js +63 -0
  49. package/dist/cli/wizard/firstRun.js.map +1 -0
  50. package/dist/cli/wizard/index.js +150 -0
  51. package/dist/cli/wizard/index.js.map +1 -0
  52. package/dist/cli/wizard/runWizard.js +137 -0
  53. package/dist/cli/wizard/runWizard.js.map +1 -0
  54. package/dist/cli/wizard/useWizardState.js +151 -0
  55. package/dist/cli/wizard/useWizardState.js.map +1 -0
  56. package/dist/cli/workspace/toolRegistry.js +2 -2
  57. package/dist/cli/workspace/toolRegistry.js.map +1 -1
  58. package/package.json +6 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updater.js","sourceRoot":"","sources":["../../../src/cli/slashHandlers/updater.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAiB1D,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,GAAwB;IAC9D,IAAI,CAAC;QACH,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,MAAM,cAAc,EAAE,CAAC;QACpC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,0BAA0B,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACxE,CAAC;aAAM,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YAChC,YAAY,CACV,GAAG,CAAC,WAAW,EACf,2BAA2B,IAAI,CAAC,aAAa,wBAAwB,IAAI,CAAC,cAAc,KAAK;gBAC3F,iFAAiF,CACpF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,wBAAwB,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;QAChF,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,kBAAkB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACtG,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAwB;IAChE,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,yDAAyD,CAAC,CAAC;IACzF,IAAI,CAAC;QACH,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QACxD,MAAM,GAAG,GAAG,MAAM,aAAa,EAAE,CAAC;QAClC,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC;YACX,YAAY,CACV,GAAG,CAAC,WAAW,EACf,uCAAuC;gBACrC,+DAA+D;gBAC/D,6DAA6D,CAChE,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,YAAY,CACV,GAAG,CAAC,WAAW,EACf,sBAAsB,GAAG,CAAC,KAAK,IAAI,eAAe,MAAM;gBACtD,gBAAgB,GAAG,CAAC,MAAM,IAAI,SAAS,EAAE,CAC5C,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,kBAAkB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACtG,CAAC;AACH,CAAC"}
@@ -13,12 +13,12 @@
13
13
  * @see docs/plans/2026-06-29-anathema-coder-v3.md (Tasks A1 + A2)
14
14
  * @see docs/plans/2026-07-01-v0-4-0-fix-audit.md (v0.4.0 scope)
15
15
  */
16
- import { ToolRegistry } from '../main/core/tools/registry.js';
17
- import { readFileTool, writeFileTool, editFileTool, } from '../main/core/tools/builtin/filesystem.js';
18
- import { bashTool } from '../main/core/tools/builtin/shell.js';
19
- import { grepContentTool } from '../main/core/tools/builtin/search.js';
20
- import { listFilesTool } from '../main/core/tools/builtin/listFiles.js';
21
- import { showDiffTool, applyDiffTool } from '../main/core/tools/builtin/diff.js';
16
+ import { ToolRegistry } from '@zelari/core/harness/tools/registry';
17
+ import { readFileTool, writeFileTool, editFileTool, } from '@zelari/core/harness/tools/builtin/filesystem';
18
+ import { bashTool } from '@zelari/core/harness/tools/builtin/shell';
19
+ import { grepContentTool } from '@zelari/core/harness/tools/builtin/search';
20
+ import { listFilesTool } from '@zelari/core/harness/tools/builtin/listFiles';
21
+ import { showDiffTool, applyDiffTool } from '@zelari/core/harness/tools/builtin/diff';
22
22
  import { resolveSandboxedPath, SandboxViolationError } from './safety/sandboxPath.js';
23
23
  import { assertShellAllowed, ShellBlockedError } from './safety/shellBlocklist.js';
24
24
  import { AuditLogger } from './safety/auditLogger.js';
@@ -1 +1 @@
1
- {"version":3,"file":"toolRegistry.js","sourceRoot":"","sources":["../../src/cli/toolRegistry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"toolRegistry.js","sourceRoot":"","sources":["../../src/cli/toolRegistry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * firstRun — detection logic for the onboarding wizard.
3
+ *
4
+ * Decides whether `zelari-code` should launch the wizard instead of
5
+ * the regular TUI. The decision is a pure function of:
6
+ * - CLI flags (--no-wizard, --reset-config)
7
+ * - Environment variables (ZELARI_NO_WIZARD)
8
+ * - Presence of the provider config file on disk
9
+ *
10
+ * All three inputs are injected so tests don't touch real fs/env.
11
+ *
12
+ * @public
13
+ * @since 0.5.0
14
+ */
15
+ import { existsSync } from 'node:fs';
16
+ /**
17
+ * Decide whether the wizard should run on startup.
18
+ *
19
+ * Order of precedence (highest first):
20
+ * 1. `--reset-config` → always run wizard (force re-onboarding).
21
+ * 2. `--no-wizard` or `ZELARI_NO_WIZARD` → never run wizard.
22
+ * 3. Config file missing on disk → run wizard (first-run case).
23
+ * 4. Otherwise → skip wizard.
24
+ *
25
+ * @public
26
+ */
27
+ export function shouldRunWizard(input) {
28
+ const exists = input.exists ?? existsSync;
29
+ if (input.hasResetConfigFlag) {
30
+ return { shouldRun: true, reason: '--reset-config flag forced wizard' };
31
+ }
32
+ if (input.hasNoWizardFlag) {
33
+ return { shouldRun: false, reason: '--no-wizard flag suppressed wizard' };
34
+ }
35
+ if (input.noWizardEnv && input.noWizardEnv.trim().length > 0) {
36
+ return {
37
+ shouldRun: false,
38
+ reason: `ZELARI_NO_WIZARD=${input.noWizardEnv} suppressed wizard`,
39
+ };
40
+ }
41
+ if (!exists(input.configPath)) {
42
+ return {
43
+ shouldRun: true,
44
+ reason: `provider config not found at ${input.configPath} (first run)`,
45
+ };
46
+ }
47
+ return {
48
+ shouldRun: false,
49
+ reason: `provider config exists at ${input.configPath}; wizard skipped`,
50
+ };
51
+ }
52
+ export function parseWizardFlags(argv) {
53
+ let noWizard = false;
54
+ let resetConfig = false;
55
+ for (const arg of argv) {
56
+ if (arg === '--no-wizard')
57
+ noWizard = true;
58
+ else if (arg === '--reset-config')
59
+ resetConfig = true;
60
+ }
61
+ return { noWizard, resetConfig };
62
+ }
63
+ //# sourceMappingURL=firstRun.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"firstRun.js","sourceRoot":"","sources":["../../../src/cli/wizard/firstRun.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAyBrC;;;;;;;;;;GAUG;AACH,MAAM,UAAU,eAAe,CAAC,KAAoB;IAClD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,UAAU,CAAC;IAE1C,IAAI,KAAK,CAAC,kBAAkB,EAAE,CAAC;QAC7B,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,mCAAmC,EAAE,CAAC;IAC1E,CAAC;IAED,IAAI,KAAK,CAAC,eAAe,EAAE,CAAC;QAC1B,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,oCAAoC,EAAE,CAAC;IAC5E,CAAC;IAED,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7D,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,oBAAoB,KAAK,CAAC,WAAW,oBAAoB;SAClE,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,OAAO;YACL,SAAS,EAAE,IAAI;YACf,MAAM,EAAE,gCAAgC,KAAK,CAAC,UAAU,cAAc;SACvE,CAAC;IACJ,CAAC;IAED,OAAO;QACL,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE,6BAA6B,KAAK,CAAC,UAAU,kBAAkB;KACxE,CAAC;AACJ,CAAC;AAcD,MAAM,UAAU,gBAAgB,CAAC,IAAuB;IACtD,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,KAAK,aAAa;YAAE,QAAQ,GAAG,IAAI,CAAC;aACtC,IAAI,GAAG,KAAK,gBAAgB;YAAE,WAAW,GAAG,IAAI,CAAC;IACxD,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;AACnC,CAAC"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * Wizard — Ink UI for first-run onboarding.
3
+ *
4
+ * Renders the step machine from `useWizardState`. Keyboard handling is
5
+ * done at the App level (via useInput in main.tsx) — this component is
6
+ * "dumb" and just renders the current state.
7
+ *
8
+ * Steps:
9
+ * 1. welcome: title + intro text + "Press Enter to begin"
10
+ * 2. provider: list of PROVIDERS with arrow cursor
11
+ * 3. model: read model name from input (or accept default)
12
+ * 4. apikey: choose env/keystore/skip
13
+ * 5. confirm: review + "Press Enter to commit, B to go back"
14
+ *
15
+ * Used in `main.tsx` instead of `<App>` when `shouldRunWizard()` is true.
16
+ *
17
+ * @public
18
+ * @since 0.5.0
19
+ */
20
+ import React from 'react';
21
+ import { Box, Text } from 'ink';
22
+ import { API_KEY_OPTIONS, } from './useWizardState.js';
23
+ const VERSION = '0.6.2';
24
+ function Frame({ children }) {
25
+ return (React.createElement(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 2, paddingY: 1 }, children));
26
+ }
27
+ function Step(props) {
28
+ return (React.createElement(Box, null,
29
+ React.createElement(Text, { color: props.active ? 'cyan' : 'gray', inverse: props.active },
30
+ ' ',
31
+ props.index,
32
+ "/",
33
+ props.total,
34
+ " ",
35
+ props.name,
36
+ ' ')));
37
+ }
38
+ function renderProviderList(providers, cursor) {
39
+ return (React.createElement(Box, { flexDirection: "column" }, providers.map((p, i) => {
40
+ const arrow = i === cursor ? '➜ ' : ' ';
41
+ const color = i === cursor ? 'cyan' : undefined;
42
+ return (React.createElement(Text, { key: p.id, color: color },
43
+ arrow,
44
+ p.displayName,
45
+ " ",
46
+ React.createElement(Text, { color: "gray" },
47
+ "(",
48
+ p.id,
49
+ ", uses env ",
50
+ p.envVar,
51
+ ")")));
52
+ })));
53
+ }
54
+ function renderApiKeyOptions(cursor) {
55
+ const labels = {
56
+ env: 'Use env var (recommended — safe)',
57
+ keystore: 'Save to local keyStore (encrypted)',
58
+ skip: 'Skip for now (chat will fail until key is set)',
59
+ };
60
+ return (React.createElement(Box, { flexDirection: "column" }, API_KEY_OPTIONS.map((choice, i) => {
61
+ const arrow = i === cursor ? '➜ ' : ' ';
62
+ const color = i === cursor ? 'cyan' : undefined;
63
+ return (React.createElement(Text, { key: choice, color: color },
64
+ arrow,
65
+ labels[choice]));
66
+ })));
67
+ }
68
+ export function Wizard({ state, providers }) {
69
+ const s = state.state;
70
+ if (s.committed) {
71
+ return (React.createElement(Frame, null,
72
+ React.createElement(Text, { color: "green" }, "\u2713 Setup complete!"),
73
+ React.createElement(Text, null,
74
+ "Provider: ",
75
+ React.createElement(Text, { color: "cyan" }, s.providerId),
76
+ ' | ',
77
+ "Model: ",
78
+ React.createElement(Text, { color: "cyan" }, s.model),
79
+ ' | ',
80
+ "API key: ",
81
+ React.createElement(Text, { color: "cyan" }, s.apiKeyChoice ?? 'n/a')),
82
+ React.createElement(Box, { marginTop: 1 },
83
+ React.createElement(Text, { color: "gray" }, "Launching zelari-code\u2026 (press any key)"))));
84
+ }
85
+ return (React.createElement(Frame, null,
86
+ React.createElement(Text, { color: "cyan", bold: true },
87
+ "zelari-code v",
88
+ VERSION,
89
+ " \u2014 first-time setup"),
90
+ React.createElement(Box, { marginTop: 1, marginBottom: 1, flexDirection: "row" },
91
+ React.createElement(Step, { index: 1, total: 5, name: "welcome", active: s.step === 'welcome' }),
92
+ React.createElement(Step, { index: 2, total: 5, name: "provider", active: s.step === 'provider' }),
93
+ React.createElement(Step, { index: 3, total: 5, name: "model", active: s.step === 'model' }),
94
+ React.createElement(Step, { index: 4, total: 5, name: "apikey", active: s.step === 'apikey' }),
95
+ React.createElement(Step, { index: 5, total: 5, name: "confirm", active: s.step === 'confirm' })),
96
+ s.step === 'welcome' && (React.createElement(React.Fragment, null,
97
+ React.createElement(Text, null, "Welcome! Let's get you coding in under two minutes."),
98
+ React.createElement(Text, { color: "gray" }, "We'll pick a provider, default model, and how to handle your API key."),
99
+ React.createElement(Box, { marginTop: 1 },
100
+ React.createElement(Text, null, "Press "),
101
+ React.createElement(Text, { color: "cyan", inverse: true }, " Enter "),
102
+ React.createElement(Text, null, " to continue, or "),
103
+ React.createElement(Text, { color: "red", inverse: true }, " Q "),
104
+ React.createElement(Text, null, " to quit (re-run with "),
105
+ React.createElement(Text, { color: "gray" }, "--no-wizard"),
106
+ React.createElement(Text, null, " to skip later).")))),
107
+ s.step === 'provider' && (React.createElement(React.Fragment, null,
108
+ React.createElement(Text, null, "Choose your LLM provider:"),
109
+ React.createElement(Box, { marginTop: 1 }, renderProviderList(providers, s.providerCursor)),
110
+ React.createElement(Box, { marginTop: 1 },
111
+ React.createElement(Text, { color: "gray" }, "\u2191/\u2193 to move, Enter to confirm")))),
112
+ s.step === 'model' && (React.createElement(React.Fragment, null,
113
+ React.createElement(Text, null,
114
+ "Model for ",
115
+ React.createElement(Text, { color: "cyan" }, s.providerId),
116
+ ":"),
117
+ React.createElement(Box, { marginTop: 1, borderStyle: "single", borderColor: "cyan", paddingX: 1 },
118
+ React.createElement(Text, null, s.model ?? '(empty)')),
119
+ React.createElement(Box, { marginTop: 1 },
120
+ React.createElement(Text, null,
121
+ "Press ",
122
+ React.createElement(Text, { color: "cyan", inverse: true }, " Enter "),
123
+ "to accept, or type a new name. ",
124
+ React.createElement(Text, { color: "gray" }, "(default kept on empty input)"))))),
125
+ s.step === 'apikey' && (React.createElement(React.Fragment, null,
126
+ React.createElement(Text, null, "How should we handle the API key?"),
127
+ React.createElement(Box, { marginTop: 1 }, renderApiKeyOptions(s.apiKeyCursor)),
128
+ React.createElement(Box, { marginTop: 1 },
129
+ React.createElement(Text, { color: "gray" }, "\u2191/\u2193 to move, Enter to confirm")))),
130
+ s.step === 'confirm' && (React.createElement(React.Fragment, null,
131
+ React.createElement(Text, null, "Confirm your setup:"),
132
+ React.createElement(Box, { marginTop: 1, flexDirection: "column" },
133
+ React.createElement(Text, null,
134
+ "Provider: ",
135
+ React.createElement(Text, { color: "cyan" }, s.providerId)),
136
+ React.createElement(Text, null,
137
+ "Model: ",
138
+ React.createElement(Text, { color: "cyan" }, s.model)),
139
+ React.createElement(Text, null,
140
+ "API key: ",
141
+ React.createElement(Text, { color: "cyan" }, s.apiKeyChoice ?? '(unset)'))),
142
+ React.createElement(Box, { marginTop: 1 },
143
+ React.createElement(Text, null,
144
+ "Press ",
145
+ React.createElement(Text, { color: "green", inverse: true }, " Enter "),
146
+ "to save and launch, or ",
147
+ React.createElement(Text, { color: "yellow", inverse: true }, " B "),
148
+ "to go back."))))));
149
+ }
150
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/wizard/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * runWizard — runs the wizard as a self-contained Ink app, then
3
+ * transparently transitions into the regular App once commit() runs.
4
+ *
5
+ * No process.exit — the same Ink root remains mounted; only the child
6
+ * component changes. This avoids the bad UX of "wizard runs, CLI
7
+ * exits, user has to re-launch" while still honouring the user's
8
+ * decision end-to-end (provider config + api key + model are all
9
+ * persisted before the transition).
10
+ *
11
+ * @public
12
+ * @since 0.5.0
13
+ */
14
+ import React, { useEffect, useState } from 'react';
15
+ import { Box, Text } from 'ink';
16
+ import { useInput } from 'ink';
17
+ // @ts-ignore — app.tsx is .tsx, esbuild-bundled.
18
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
19
+ import { App } from '../app.js';
20
+ import { PROVIDERS } from '../keyStore.js';
21
+ import { getModelForProvider } from '../providerConfig.js';
22
+ import { Wizard } from './index.js';
23
+ import { createWizardState } from './useWizardState.js';
24
+ export function RunWizard(_props) {
25
+ const [wiz] = useState(() => createWizardState({
26
+ providers: PROVIDERS,
27
+ defaultModelFor: (id) => getModelForProvider(id),
28
+ }));
29
+ const [, force] = useState(0);
30
+ // Force re-render when state machine changes (subscribe pattern).
31
+ useEffect(() => {
32
+ if (typeof wiz.subscribe === 'function') {
33
+ const sub = wiz.subscribe(() => force((n) => n + 1));
34
+ return () => sub();
35
+ }
36
+ return undefined;
37
+ }, [wiz]);
38
+ useInput((input, key) => {
39
+ // Once committed, App takes over. Don't intercept input here
40
+ // (App's own useInput handlers manage keyboard from this point).
41
+ if (wiz.state.committed)
42
+ return;
43
+ const s = wiz.state;
44
+ if (key.escape) {
45
+ process.exit(0);
46
+ }
47
+ // 'q' quits from any step (not just welcome).
48
+ if (input === 'q') {
49
+ process.exit(0);
50
+ }
51
+ if (s.step === 'welcome') {
52
+ if (key.return) {
53
+ wiz.jumpToProvider();
54
+ }
55
+ return;
56
+ }
57
+ if (s.step === 'provider') {
58
+ if (key.upArrow)
59
+ wiz.moveProvider(true);
60
+ else if (key.downArrow)
61
+ wiz.moveProvider(false);
62
+ else if (key.return)
63
+ wiz.selectProvider();
64
+ return;
65
+ }
66
+ if (s.step === 'model') {
67
+ if (key.return) {
68
+ // If model is empty, fall back to the default for the
69
+ // currently selected provider. If provider is also unset,
70
+ // just no-op (shouldn't happen in normal flow).
71
+ if (s.model && s.model.trim().length > 0) {
72
+ wiz?.advanceToApikey?.();
73
+ }
74
+ else if (s.providerId) {
75
+ // Re-seed the default and advance.
76
+ wiz.setModel(getModelForProvider(s.providerId));
77
+ wiz?.advanceToApikey?.();
78
+ }
79
+ return;
80
+ }
81
+ if (key.backspace || key.delete) {
82
+ const m = (s.model ?? '').slice(0, -1);
83
+ wiz.setModel(m);
84
+ return;
85
+ }
86
+ if (input && input.length === 1 && !key.ctrl) {
87
+ wiz.setModel((s.model ?? '') + input);
88
+ }
89
+ return;
90
+ }
91
+ if (s.step === 'apikey') {
92
+ if (key.upArrow)
93
+ wiz.moveApiKey(true);
94
+ else if (key.downArrow)
95
+ wiz.moveApiKey(false);
96
+ else if (key.return) {
97
+ const choice = ['env', 'keystore', 'skip'][s.apiKeyCursor];
98
+ wiz.selectApiKey(choice);
99
+ }
100
+ return;
101
+ }
102
+ if (s.step === 'confirm') {
103
+ if (key.return)
104
+ wiz.commit();
105
+ else if (input === 'b' || input === 'B')
106
+ wiz.back();
107
+ return;
108
+ }
109
+ });
110
+ // ── Transition: wizard committed → swap to App in same Ink tree ──
111
+ if (wiz.state.committed) {
112
+ // Show a brief "✓ Setup complete" banner for ~1.2s, then mount App.
113
+ // This gives the user a moment to read what was saved.
114
+ return React.createElement(PostCommitBridge, null);
115
+ }
116
+ return (React.createElement(Box, { flexDirection: "column", paddingX: 2, paddingY: 1 },
117
+ React.createElement(Wizard, { state: wiz, providers: PROVIDERS })));
118
+ }
119
+ /**
120
+ * PostCommitBridge — short banner shown after commit() succeeds, then
121
+ * fades into <App>. Uses internal state to time the transition.
122
+ */
123
+ function PostCommitBridge() {
124
+ const [showApp, setShowApp] = useState(false);
125
+ useEffect(() => {
126
+ const t = setTimeout(() => setShowApp(true), 1200);
127
+ return () => clearTimeout(t);
128
+ }, []);
129
+ if (showApp) {
130
+ return React.createElement(App, null);
131
+ }
132
+ return (React.createElement(Box, { flexDirection: "column", paddingX: 2, paddingY: 1 },
133
+ React.createElement(Box, { borderStyle: "round", borderColor: "green", paddingX: 2, paddingY: 1, flexDirection: "column" },
134
+ React.createElement(Text, { color: "green", bold: true }, "\u2713 Setup complete! Launching zelari-code\u2026"),
135
+ React.createElement(Text, { color: "gray" }, "Press Ctrl+C any time to exit."))));
136
+ }
137
+ //# sourceMappingURL=runWizard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runWizard.js","sourceRoot":"","sources":["../../../src/cli/wizard/runWizard.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,151 @@
1
+ import { setActiveProviderId, setModelForProvider, } from '../providerConfig.js';
2
+ import { setApiKey as setKeyStoreApiKey } from '../keyStore.js';
3
+ const ORDER = ['welcome', 'provider', 'model', 'apikey', 'confirm'];
4
+ function next(s) {
5
+ const idx = ORDER.indexOf(s);
6
+ if (idx === -1 || idx === ORDER.length - 1)
7
+ return null;
8
+ return ORDER[idx + 1];
9
+ }
10
+ function prev(s) {
11
+ const idx = ORDER.indexOf(s);
12
+ if (idx <= 0)
13
+ return null;
14
+ return ORDER[idx - 1];
15
+ }
16
+ /**
17
+ * Pure-function factory for the wizard state machine. Returned API is
18
+ * stateless from the caller's perspective — pass the same instance to
19
+ * React via `useMemo`.
20
+ *
21
+ * @public
22
+ */
23
+ export function createWizardState(opts) {
24
+ const persistActive = opts.persistActiveProvider ?? ((id) => setActiveProviderId(id));
25
+ const persistModel = opts.persistModel ?? ((id, m) => setModelForProvider(id, m));
26
+ const persistKey = opts.persistApiKey ?? ((id, k) => setKeyStoreApiKey(id, k));
27
+ let s = {
28
+ step: 'welcome',
29
+ providerCursor: 0,
30
+ apiKeyCursor: 0,
31
+ committed: false,
32
+ };
33
+ const listeners = new Set();
34
+ function notify() {
35
+ for (const l of listeners)
36
+ l();
37
+ }
38
+ const api = {
39
+ get state() {
40
+ return s;
41
+ },
42
+ moveProvider(up) {
43
+ const n = opts.providers.length;
44
+ const c = s.providerCursor;
45
+ s = {
46
+ ...s,
47
+ providerCursor: up ? (c - 1 + n) % n : (c + 1) % n,
48
+ };
49
+ notify();
50
+ },
51
+ selectProvider() {
52
+ const provider = opts.providers[s.providerCursor];
53
+ if (!provider)
54
+ return; // shouldn't happen
55
+ s = {
56
+ ...s,
57
+ step: 'model',
58
+ providerId: provider.id,
59
+ model: opts.defaultModelFor(provider.id),
60
+ };
61
+ notify();
62
+ },
63
+ setModel(name) {
64
+ const trimmed = name.trim();
65
+ if (!trimmed || !s.providerId)
66
+ return;
67
+ s = { ...s, model: trimmed };
68
+ notify();
69
+ },
70
+ moveApiKey(up) {
71
+ const c = s.apiKeyCursor;
72
+ // 3 options: 0=env, 1=keystore, 2=skip
73
+ s = { ...s, apiKeyCursor: up ? (c - 1 + 3) % 3 : (c + 1) % 3 };
74
+ notify();
75
+ },
76
+ selectApiKey(choice, value) {
77
+ // 'keystore' stores the (trimmed) value; 'env' and 'skip' clear it.
78
+ // Distinguish `value === undefined` (no value provided) from
79
+ // `value === ''` or whitespace-only (empty after trim) — both
80
+ // are guarded at commit time, but the type signature is clearer
81
+ // if we keep `undefined` for "not provided".
82
+ let apiKeyValue;
83
+ if (choice === 'keystore') {
84
+ apiKeyValue = value === undefined ? undefined : value.trim();
85
+ }
86
+ s = {
87
+ ...s,
88
+ apiKeyChoice: choice,
89
+ apiKeyValue,
90
+ step: 'confirm',
91
+ };
92
+ notify();
93
+ },
94
+ back() {
95
+ const p = prev(s.step);
96
+ if (!p)
97
+ return;
98
+ s = { ...s, step: p };
99
+ notify();
100
+ },
101
+ commit() {
102
+ if (s.committed || !s.providerId || !s.model)
103
+ return;
104
+ persistActive(s.providerId);
105
+ persistModel(s.providerId, s.model);
106
+ // Persist API key only if user chose 'keystore' AND provided a
107
+ // non-empty value. 'env' means "use env var, don't save" and
108
+ // 'skip' means "no key yet, user will set it later via /login".
109
+ if (s.apiKeyChoice === 'keystore' && s.apiKeyValue && s.apiKeyValue.length > 0) {
110
+ try {
111
+ persistKey(s.providerId, s.apiKeyValue);
112
+ }
113
+ catch (err) {
114
+ // Key persistence failure shouldn't block config commit —
115
+ // the user can re-add the key later via /login. Log to
116
+ // stderr for debuggability, then proceed.
117
+ // eslint-disable-next-line no-console
118
+ console.error(`[zelari-code wizard] failed to persist API key for ${s.providerId}: ` +
119
+ (err instanceof Error ? err.message : String(err)));
120
+ }
121
+ }
122
+ s = { ...s, committed: true };
123
+ notify();
124
+ },
125
+ };
126
+ // Internal: allow React UI to re-render. We expose `subscribe` so the
127
+ // Ink component can useSyncExternalStore (or call manually in tests).
128
+ api.subscribe = (l) => {
129
+ listeners.add(l);
130
+ return () => listeners.delete(l);
131
+ };
132
+ // Advance to first non-welcome step programmatically — used by tests
133
+ // and by the "skip intro" flag (future).
134
+ api.jumpToProvider = () => {
135
+ s = { ...s, step: 'provider' };
136
+ notify();
137
+ };
138
+ // Advance from model to apikey step (used by runWizard when user
139
+ // confirms the model on step 3).
140
+ api.advanceToApikey = () => {
141
+ if (s.step === 'model') {
142
+ s = { ...s, step: 'apikey' };
143
+ notify();
144
+ }
145
+ };
146
+ return api;
147
+ }
148
+ /** Convenience constants for tests + UI. */
149
+ export const API_KEY_OPTIONS = ['env', 'keystore', 'skip'];
150
+ export const WIZARD_STEPS = ORDER;
151
+ //# sourceMappingURL=useWizardState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWizardState.js","sourceRoot":"","sources":["../../../src/cli/wizard/useWizardState.ts"],"names":[],"mappings":"AAkBA,OAAO,EACL,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,SAAS,IAAI,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AA4DhE,MAAM,KAAK,GAAiB,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;AAElF,SAAS,IAAI,CAAC,CAAa;IACzB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACxD,OAAO,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,IAAI,CAAC,CAAa;IACzB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,GAAG,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1B,OAAO,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;AACxB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAA2B;IAC3D,MAAM,aAAa,GAAG,IAAI,CAAC,qBAAqB,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC;IACtF,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAClF,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAE/E,IAAI,CAAC,GAAgB;QACnB,IAAI,EAAE,SAAS;QACf,cAAc,EAAE,CAAC;QACjB,YAAY,EAAE,CAAC;QACf,SAAS,EAAE,KAAK;KACjB,CAAC;IACF,MAAM,SAAS,GAAG,IAAI,GAAG,EAAc,CAAC;IAExC,SAAS,MAAM;QACb,KAAK,MAAM,CAAC,IAAI,SAAS;YAAE,CAAC,EAAE,CAAC;IACjC,CAAC;IAED,MAAM,GAAG,GAAsB;QAC7B,IAAI,KAAK;YACP,OAAO,CAAC,CAAC;QACX,CAAC;QACD,YAAY,CAAC,EAAW;YACtB,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YAChC,MAAM,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC;YAC3B,CAAC,GAAG;gBACF,GAAG,CAAC;gBACJ,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC;aACnD,CAAC;YACF,MAAM,EAAE,CAAC;QACX,CAAC;QACD,cAAc;YACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;YAClD,IAAI,CAAC,QAAQ;gBAAE,OAAO,CAAC,mBAAmB;YAC1C,CAAC,GAAG;gBACF,GAAG,CAAC;gBACJ,IAAI,EAAE,OAAO;gBACb,UAAU,EAAE,QAAQ,CAAC,EAAE;gBACvB,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;aACzC,CAAC;YACF,MAAM,EAAE,CAAC;QACX,CAAC;QACD,QAAQ,CAAC,IAAY;YACnB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,UAAU;gBAAE,OAAO;YACtC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;YAC7B,MAAM,EAAE,CAAC;QACX,CAAC;QACD,UAAU,CAAC,EAAW;YACpB,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC;YACzB,uCAAuC;YACvC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;YAC/D,MAAM,EAAE,CAAC;QACX,CAAC;QACD,YAAY,CAAC,MAAoB,EAAE,KAAc;YAC/C,oEAAoE;YACpE,6DAA6D;YAC7D,8DAA8D;YAC9D,gEAAgE;YAChE,6CAA6C;YAC7C,IAAI,WAA+B,CAAC;YACpC,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;gBAC1B,WAAW,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YAC/D,CAAC;YACD,CAAC,GAAG;gBACF,GAAG,CAAC;gBACJ,YAAY,EAAE,MAAM;gBACpB,WAAW;gBACX,IAAI,EAAE,SAAS;aAChB,CAAC;YACF,MAAM,EAAE,CAAC;QACX,CAAC;QACD,IAAI;YACF,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACvB,IAAI,CAAC,CAAC;gBAAE,OAAO;YACf,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;YACtB,MAAM,EAAE,CAAC;QACX,CAAC;QACD,MAAM;YACJ,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,KAAK;gBAAE,OAAO;YACrD,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YAC5B,YAAY,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;YACpC,+DAA+D;YAC/D,6DAA6D;YAC7D,gEAAgE;YAChE,IAAI,CAAC,CAAC,YAAY,KAAK,UAAU,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/E,IAAI,CAAC;oBACH,UAAU,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC;gBAC1C,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,0DAA0D;oBAC1D,uDAAuD;oBACvD,0CAA0C;oBAC1C,sCAAsC;oBACtC,OAAO,CAAC,KAAK,CACX,sDAAsD,CAAC,CAAC,UAAU,IAAI;wBACpE,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CACrD,CAAC;gBACJ,CAAC;YACH,CAAC;YACD,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;YAC9B,MAAM,EAAE,CAAC;QACX,CAAC;KACF,CAAC;IAEF,sEAAsE;IACtE,sEAAsE;IACrE,GAA2D,CAAC,SAAS,GAAG,CACvE,CAAa,EACb,EAAE;QACF,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC;IAEF,qEAAqE;IACrE,yCAAyC;IACxC,GAA6C,CAAC,cAAc,GAAG,GAAG,EAAE;QACnE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;QAC/B,MAAM,EAAE,CAAC;IACX,CAAC,CAAC;IAEF,iEAAiE;IACjE,iCAAiC;IAChC,GAA8C,CAAC,eAAe,GAAG,GAAG,EAAE;QACrE,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACvB,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;YAC7B,MAAM,EAAE,CAAC;QACX,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,GAAG,CAAC;AACb,CAAC;AAED,4CAA4C;AAC5C,MAAM,CAAC,MAAM,eAAe,GAA4B,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;AACpF,MAAM,CAAC,MAAM,YAAY,GAA0B,KAAK,CAAC"}
@@ -17,8 +17,8 @@
17
17
  * from the per-call ToolContext.
18
18
  */
19
19
  import { z } from 'zod';
20
- import { ToolRegistry } from '../../main/core/tools/registry.js';
21
- import { typedOk, typedErr } from '../../main/core/tools/toolTypes.js';
20
+ import { ToolRegistry } from '@zelari/core/harness/tools/registry';
21
+ import { typedOk, typedErr } from '@zelari/core/harness/tools/toolTypes';
22
22
  import { createWorkspaceStubs } from './stubs.js';
23
23
  /** Build a ToolRegistry containing the workspace stubs bound to ctx. */
24
24
  export function createWorkspaceToolRegistry(ctx) {
@@ -1 +1 @@
1
- {"version":3,"file":"toolRegistry.js","sourceRoot":"","sources":["../../../src/cli/workspace/toolRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAoB,MAAM,oCAAoC,CAAC;AAGzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,wEAAwE;AACxE,MAAM,UAAU,2BAA2B,CAAC,GAAqB;IAC/D,MAAM,KAAK,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,EAAE,GAAG,yBAAyB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAChD,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,mEAAmE;AACnE,SAAS,yBAAyB,CAChC,IAA4B,EAC5B,YAA8B;IAE9B,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,EAAE;QACf,qEAAqE;QACrE,kEAAkE;QAClE,WAAW,EAAE,CAAC,CAAC,GAAG,EAAE;QACpB,OAAO,EAAE,KAAK,EAAE,KAAc,EAAE,UAAoB,EAAgC,EAAE;YACpF,IAAI,CAAC;gBACH,MAAM,IAAI,GAAI,KAAiC,IAAI,EAAE,CAAC;gBACtD,wEAAwE;gBACxE,mFAAmF;gBACnF,sEAAsE;gBACtE,sEAAsE;gBACtE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;oBAC3D,OAAO,EAAE,UAAU;iBACpB,CAAC,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAClC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAA0D,CAAC,CAC/E,CAAC;gBACF,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,QAAQ,CACb,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACrE,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"toolRegistry.js","sourceRoot":"","sources":["../../../src/cli/workspace/toolRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAoB,MAAM,sCAAsC,CAAC;AAG3F,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAElD,wEAAwE;AACxE,MAAM,UAAU,2BAA2B,CAAC,GAAqB;IAC/D,MAAM,KAAK,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;IACpC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,EAAE,GAAG,yBAAyB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAChD,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,mEAAmE;AACnE,SAAS,yBAAyB,CAChC,IAA4B,EAC5B,YAA8B;IAE9B,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW,EAAE,EAAE;QACf,qEAAqE;QACrE,kEAAkE;QAClE,WAAW,EAAE,CAAC,CAAC,GAAG,EAAE;QACpB,OAAO,EAAE,KAAK,EAAE,KAAc,EAAE,UAAoB,EAAgC,EAAE;YACpF,IAAI,CAAC;gBACH,MAAM,IAAI,GAAI,KAAiC,IAAI,EAAE,CAAC;gBACtD,wEAAwE;gBACxE,mFAAmF;gBACnF,sEAAsE;gBACtE,sEAAsE;gBACtE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;oBAC3D,OAAO,EAAE,UAAU;iBACpB,CAAC,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAClC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,SAA0D,CAAC,CAC/E,CAAC;gBACF,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,QAAQ,CACb,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACrE,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,10 +1,13 @@
1
1
  {
2
2
  "name": "zelari-code",
3
- "version": "0.4.3",
3
+ "version": "0.6.2",
4
4
  "description": "Zelari Code — AI Council coding agent CLI. Multi-agent orchestration (Caronte, Nettuno, Gerione, Plutone, Minosse, Lucifero) with slash commands, provider-agnostic LLM streaming, and self-update.",
5
5
  "author": "N-THEM Studio",
6
6
  "license": "SEE LICENSE IN LICENSE",
7
7
  "type": "module",
8
+ "workspaces": [
9
+ "packages/*"
10
+ ],
8
11
  "main": "dist/cli/main.js",
9
12
  "bin": {
10
13
  "zelari-code": "./bin/zelari-code.js"
@@ -24,12 +27,14 @@
24
27
  "build": "tsc -p tsconfig.json && node scripts/bundle-cli.mjs",
25
28
  "build:cli": "tsc -p tsconfig.json && node scripts/bundle-cli.mjs",
26
29
  "typecheck": "tsc --noEmit -p tsconfig.json",
30
+ "pretest": "npm run build --workspace=@zelari/core",
27
31
  "test": "vitest run",
28
32
  "test:watch": "vitest",
29
33
  "smoke": "node bin/zelari-code.js --version",
30
34
  "prepublishOnly": "node scripts/prepublish.mjs"
31
35
  },
32
36
  "dependencies": {
37
+ "@zelari/core": "0.6.2",
33
38
  "ink": "^6.8.0",
34
39
  "ink-text-input": "^6.0.0",
35
40
  "react": "^19.2.7",