@tenphi/akno 0.1.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 (147) hide show
  1. package/LICENSE +83 -0
  2. package/README.md +46 -0
  3. package/dist/args.d.ts +18 -0
  4. package/dist/args.d.ts.map +1 -0
  5. package/dist/args.js +92 -0
  6. package/dist/args.js.map +1 -0
  7. package/dist/bin.d.ts +3 -0
  8. package/dist/bin.d.ts.map +1 -0
  9. package/dist/bin.js +142 -0
  10. package/dist/bin.js.map +1 -0
  11. package/dist/commands/adopt-cmd.d.ts +2 -0
  12. package/dist/commands/adopt-cmd.d.ts.map +1 -0
  13. package/dist/commands/adopt-cmd.js +61 -0
  14. package/dist/commands/adopt-cmd.js.map +1 -0
  15. package/dist/commands/answer-cmd.d.ts +2 -0
  16. package/dist/commands/answer-cmd.d.ts.map +1 -0
  17. package/dist/commands/answer-cmd.js +150 -0
  18. package/dist/commands/answer-cmd.js.map +1 -0
  19. package/dist/commands/bench-cmd.d.ts +4 -0
  20. package/dist/commands/bench-cmd.d.ts.map +1 -0
  21. package/dist/commands/bench-cmd.js +1542 -0
  22. package/dist/commands/bench-cmd.js.map +1 -0
  23. package/dist/commands/config-cmd.d.ts +7 -0
  24. package/dist/commands/config-cmd.d.ts.map +1 -0
  25. package/dist/commands/config-cmd.js +80 -0
  26. package/dist/commands/config-cmd.js.map +1 -0
  27. package/dist/commands/context-cmd.d.ts +2 -0
  28. package/dist/commands/context-cmd.d.ts.map +1 -0
  29. package/dist/commands/context-cmd.js +130 -0
  30. package/dist/commands/context-cmd.js.map +1 -0
  31. package/dist/commands/doctor-cmd.d.ts +2 -0
  32. package/dist/commands/doctor-cmd.d.ts.map +1 -0
  33. package/dist/commands/doctor-cmd.js +198 -0
  34. package/dist/commands/doctor-cmd.js.map +1 -0
  35. package/dist/commands/dream-cmd.d.ts +26 -0
  36. package/dist/commands/dream-cmd.d.ts.map +1 -0
  37. package/dist/commands/dream-cmd.js +1167 -0
  38. package/dist/commands/dream-cmd.js.map +1 -0
  39. package/dist/commands/dream-model-status.d.ts +5 -0
  40. package/dist/commands/dream-model-status.d.ts.map +1 -0
  41. package/dist/commands/dream-model-status.js +33 -0
  42. package/dist/commands/dream-model-status.js.map +1 -0
  43. package/dist/commands/dream-notifications.d.ts +24 -0
  44. package/dist/commands/dream-notifications.d.ts.map +1 -0
  45. package/dist/commands/dream-notifications.js +168 -0
  46. package/dist/commands/dream-notifications.js.map +1 -0
  47. package/dist/commands/dream-schedule.d.ts +55 -0
  48. package/dist/commands/dream-schedule.d.ts.map +1 -0
  49. package/dist/commands/dream-schedule.js +160 -0
  50. package/dist/commands/dream-schedule.js.map +1 -0
  51. package/dist/commands/folder-cmd.d.ts +2 -0
  52. package/dist/commands/folder-cmd.d.ts.map +1 -0
  53. package/dist/commands/folder-cmd.js +84 -0
  54. package/dist/commands/folder-cmd.js.map +1 -0
  55. package/dist/commands/graph-cmd.d.ts +2 -0
  56. package/dist/commands/graph-cmd.d.ts.map +1 -0
  57. package/dist/commands/graph-cmd.js +126 -0
  58. package/dist/commands/graph-cmd.js.map +1 -0
  59. package/dist/commands/inbox-cmd.d.ts +2 -0
  60. package/dist/commands/inbox-cmd.d.ts.map +1 -0
  61. package/dist/commands/inbox-cmd.js +69 -0
  62. package/dist/commands/inbox-cmd.js.map +1 -0
  63. package/dist/commands/index-cmd.d.ts +2 -0
  64. package/dist/commands/index-cmd.d.ts.map +1 -0
  65. package/dist/commands/index-cmd.js +102 -0
  66. package/dist/commands/index-cmd.js.map +1 -0
  67. package/dist/commands/ingest-cmd.d.ts +2 -0
  68. package/dist/commands/ingest-cmd.d.ts.map +1 -0
  69. package/dist/commands/ingest-cmd.js +167 -0
  70. package/dist/commands/ingest-cmd.js.map +1 -0
  71. package/dist/commands/init-cmd.d.ts +292 -0
  72. package/dist/commands/init-cmd.d.ts.map +1 -0
  73. package/dist/commands/init-cmd.js +476 -0
  74. package/dist/commands/init-cmd.js.map +1 -0
  75. package/dist/commands/init-prompts.d.ts +51 -0
  76. package/dist/commands/init-prompts.d.ts.map +1 -0
  77. package/dist/commands/init-prompts.js +192 -0
  78. package/dist/commands/init-prompts.js.map +1 -0
  79. package/dist/commands/list-cmd.d.ts +2 -0
  80. package/dist/commands/list-cmd.d.ts.map +1 -0
  81. package/dist/commands/list-cmd.js +77 -0
  82. package/dist/commands/list-cmd.js.map +1 -0
  83. package/dist/commands/maintenance-policy-output.d.ts +4 -0
  84. package/dist/commands/maintenance-policy-output.d.ts.map +1 -0
  85. package/dist/commands/maintenance-policy-output.js +72 -0
  86. package/dist/commands/maintenance-policy-output.js.map +1 -0
  87. package/dist/commands/mutate-cmd.d.ts +5 -0
  88. package/dist/commands/mutate-cmd.d.ts.map +1 -0
  89. package/dist/commands/mutate-cmd.js +224 -0
  90. package/dist/commands/mutate-cmd.js.map +1 -0
  91. package/dist/commands/plan-cmd.d.ts +9 -0
  92. package/dist/commands/plan-cmd.d.ts.map +1 -0
  93. package/dist/commands/plan-cmd.js +411 -0
  94. package/dist/commands/plan-cmd.js.map +1 -0
  95. package/dist/commands/read-cmd.d.ts +2 -0
  96. package/dist/commands/read-cmd.d.ts.map +1 -0
  97. package/dist/commands/read-cmd.js +89 -0
  98. package/dist/commands/read-cmd.js.map +1 -0
  99. package/dist/commands/recall-cmd.d.ts +2 -0
  100. package/dist/commands/recall-cmd.d.ts.map +1 -0
  101. package/dist/commands/recall-cmd.js +176 -0
  102. package/dist/commands/recall-cmd.js.map +1 -0
  103. package/dist/commands/redeploy-cmd.d.ts +43 -0
  104. package/dist/commands/redeploy-cmd.d.ts.map +1 -0
  105. package/dist/commands/redeploy-cmd.js +270 -0
  106. package/dist/commands/redeploy-cmd.js.map +1 -0
  107. package/dist/commands/rules-cmd.d.ts +2 -0
  108. package/dist/commands/rules-cmd.d.ts.map +1 -0
  109. package/dist/commands/rules-cmd.js +72 -0
  110. package/dist/commands/rules-cmd.js.map +1 -0
  111. package/dist/commands/serve-cmd.d.ts +23 -0
  112. package/dist/commands/serve-cmd.d.ts.map +1 -0
  113. package/dist/commands/serve-cmd.js +415 -0
  114. package/dist/commands/serve-cmd.js.map +1 -0
  115. package/dist/commands/timeline-cmd.d.ts +2 -0
  116. package/dist/commands/timeline-cmd.d.ts.map +1 -0
  117. package/dist/commands/timeline-cmd.js +67 -0
  118. package/dist/commands/timeline-cmd.js.map +1 -0
  119. package/dist/commands/write-cmd.d.ts +49 -0
  120. package/dist/commands/write-cmd.d.ts.map +1 -0
  121. package/dist/commands/write-cmd.js +269 -0
  122. package/dist/commands/write-cmd.js.map +1 -0
  123. package/dist/ops-handle.d.ts +67 -0
  124. package/dist/ops-handle.d.ts.map +1 -0
  125. package/dist/ops-handle.js +196 -0
  126. package/dist/ops-handle.js.map +1 -0
  127. package/dist/output.d.ts +28 -0
  128. package/dist/output.d.ts.map +1 -0
  129. package/dist/output.js +87 -0
  130. package/dist/output.js.map +1 -0
  131. package/dist/serve/http.d.ts +19 -0
  132. package/dist/serve/http.d.ts.map +1 -0
  133. package/dist/serve/http.js +135 -0
  134. package/dist/serve/http.js.map +1 -0
  135. package/dist/serve/mcp.d.ts +21 -0
  136. package/dist/serve/mcp.d.ts.map +1 -0
  137. package/dist/serve/mcp.js +79 -0
  138. package/dist/serve/mcp.js.map +1 -0
  139. package/dist/serve/socket.d.ts +15 -0
  140. package/dist/serve/socket.d.ts.map +1 -0
  141. package/dist/serve/socket.js +311 -0
  142. package/dist/serve/socket.js.map +1 -0
  143. package/dist/version.d.ts +2 -0
  144. package/dist/version.d.ts.map +1 -0
  145. package/dist/version.js +15 -0
  146. package/dist/version.js.map +1 -0
  147. package/package.json +40 -0
@@ -0,0 +1,476 @@
1
+ import fs from 'node:fs';
2
+ import os from 'node:os';
3
+ import path from 'node:path';
4
+ import { applySetupConfigWrite, MODEL_FREE_PRESET, MODEL_FREE_PRESET_STATUS, OPENAI_LUNA_PRESET, OPENAI_LUNA_PRESET_STATUS, modelFreePreset, openAiLunaPreset, planSetupConfigWrite, preflightOpenAiLuna, setupConfigTarget, } from '@tenphi/akno-core';
5
+ import { parse } from "../args.js";
6
+ import { fail, heading, json, line, statusLabel, style } from "../output.js";
7
+ import { collectInteractiveInitAnswers, confirmInitAction, terminalInitPrompt, } from "./init-prompts.js";
8
+ const INIT_HELP = `akno init [--preset <name> --akno-path <path>] [options]
9
+
10
+ Run without preset/path arguments in a terminal for guided setup, or provide both
11
+ for non-interactive use. Choose the recommended single-endpoint OpenAI setup,
12
+ explicitly disable all model roles, or preserve specialist roles for manual setup.
13
+ Guided setup classifies visible top-level folders as managed memory, read-only
14
+ knowledge, or source/reference material, and can configure an exact guarded
15
+ fallback page. Existing folder policy is left unchanged unless you opt in.
16
+ After a guided config write, optional index, recall, and macOS service actions are
17
+ explained and confirmed separately; every one defaults to no.
18
+
19
+ --preset <name> openai-luna or no-model.
20
+ --maintenance <mode> audit, review, or autonomous. Guided setup recommends one
21
+ from the use case; non-interactive default is audit.
22
+ --dry-run Print the exact overlay and path-only diff without writing.
23
+ --force Apply over an existing config after inspecting the diff.
24
+ --check Send only invented fixtures to verify embedding access and
25
+ Luna's ranking transport/schema before writing.
26
+ --json Machine-readable, content-safe preview or result.`;
27
+ export async function initCommand(argv, options = {}) {
28
+ const { values } = parse(argv, {
29
+ preset: { type: 'string' },
30
+ maintenance: { type: 'string' },
31
+ 'dry-run': { type: 'boolean', default: false },
32
+ force: { type: 'boolean', default: false },
33
+ check: { type: 'boolean', default: false },
34
+ });
35
+ if (values.help) {
36
+ line(INIT_HELP);
37
+ return 0;
38
+ }
39
+ if (values.preset && values.preset !== OPENAI_LUNA_PRESET && values.preset !== MODEL_FREE_PRESET) {
40
+ fail(`unknown setup preset: ${values.preset}`);
41
+ return 2;
42
+ }
43
+ const needsGuidance = !values.preset || !values['akno-path'];
44
+ let prompt = options.prompt;
45
+ let ownsPrompt = false;
46
+ const configTarget = setupConfigTarget({ stateDir: values['state-dir'] });
47
+ try {
48
+ if (needsGuidance) {
49
+ if (values.json) {
50
+ fail('--json setup is non-interactive; provide --preset <openai-luna|no-model> and --akno-path');
51
+ return 2;
52
+ }
53
+ const interactive = options.interactive ?? Boolean(process.stdin.isTTY && process.stdout.isTTY);
54
+ if (!prompt && !interactive) {
55
+ fail('guided setup requires a terminal; provide --preset <openai-luna|no-model> and --akno-path');
56
+ return 2;
57
+ }
58
+ if (!prompt) {
59
+ prompt = terminalInitPrompt();
60
+ ownsPrompt = true;
61
+ }
62
+ }
63
+ let setup = values.preset;
64
+ let maintenance = setupMaintenanceMode(values.maintenance);
65
+ if (!maintenance) {
66
+ fail(`invalid maintenance mode: ${values.maintenance}`);
67
+ return 2;
68
+ }
69
+ let aknoPath = values['akno-path'];
70
+ let folderSetup;
71
+ if (needsGuidance) {
72
+ const answers = await collectInteractiveInitAnswers(prompt, {
73
+ aknoPath,
74
+ setup,
75
+ maintenance: values.maintenance ? maintenance : undefined,
76
+ configExists: fs.existsSync(configTarget),
77
+ readablePath: readableKnowledgeBasePath,
78
+ });
79
+ aknoPath = answers.aknoPath;
80
+ setup = answers.setup;
81
+ maintenance = answers.maintenance;
82
+ folderSetup = answers.folderSetup;
83
+ }
84
+ if (!aknoPath) {
85
+ fail('--akno-path is required; setup never guesses which folder contains your knowledge base');
86
+ return 2;
87
+ }
88
+ if (!setup) {
89
+ fail('--preset is required for non-interactive setup');
90
+ return 2;
91
+ }
92
+ if (values.check && setup !== OPENAI_LUNA_PRESET) {
93
+ fail('--check is available only for the openai-luna preset');
94
+ return 2;
95
+ }
96
+ const preset = setupPreset(setup, aknoPath, maintenance, folderSetup);
97
+ const { loadConfig } = await import('@tenphi/akno-core');
98
+ let resolved;
99
+ let writePlan;
100
+ try {
101
+ const presetConfig = loadConfig({ isolated: true, aknoPath, overrides: preset });
102
+ if (!readableKnowledgeBasePath(presetConfig.aknoPath)) {
103
+ fail(`knowledge-base folder is not readable: ${presetConfig.aknoPath}`);
104
+ return 2;
105
+ }
106
+ writePlan = planSetupConfigWrite(configTarget, preset, setupWriteOptions(setup));
107
+ resolved = loadConfig({ isolated: true, overrides: writePlan.document });
108
+ }
109
+ catch (error) {
110
+ fail(error instanceof Error ? error.message : String(error));
111
+ return 2;
112
+ }
113
+ if (!readableKnowledgeBasePath(resolved.aknoPath)) {
114
+ fail(`knowledge-base folder is not readable: ${resolved.aknoPath}`);
115
+ return 2;
116
+ }
117
+ let check = values.check;
118
+ if (needsGuidance && setup === OPENAI_LUNA_PRESET) {
119
+ const credentialPresent = Boolean(resolved.providers.openai?.apiKey);
120
+ prompt.say(credentialPresent
121
+ ? 'AKNO_OPENAI_API_KEY is available. Its value will not be printed or stored.'
122
+ : 'AKNO_OPENAI_API_KEY is not available. Setup can write the reference without storing a key.');
123
+ if (!check) {
124
+ check = await confirmInitAction(prompt, 'Run the content-safe model preflight now?', credentialPresent);
125
+ }
126
+ }
127
+ const preflight = check ? await preflightOpenAiLuna(resolved) : null;
128
+ const preview = setupInitPreview(setup, resolved.aknoPath, maintenance, preset, preflight, writePlan, folderSetup);
129
+ if (values['dry-run']) {
130
+ if (values.json)
131
+ json(preview);
132
+ else
133
+ renderInitPreview(preview);
134
+ return preflight && !preflight.passed ? 1 : 0;
135
+ }
136
+ if (preflight && !preflight.passed) {
137
+ if (values.json)
138
+ json(preview);
139
+ else
140
+ renderInitPreview(preview);
141
+ fail('requested preflight failed; configuration was not written');
142
+ return 1;
143
+ }
144
+ if (needsGuidance && writePlan.changed) {
145
+ renderInitPreview(preview, { interactiveWrite: true });
146
+ const confirmed = await confirmInitAction(prompt, writePlan.existed ? 'Apply this configuration update?' : 'Write this configuration?', !writePlan.existed);
147
+ if (!confirmed) {
148
+ line(style.grey('Setup cancelled; no configuration or knowledge-base file was changed.'));
149
+ return 0;
150
+ }
151
+ }
152
+ else if (writePlan.existed && writePlan.changed && !values.force) {
153
+ if (values.json)
154
+ json(preview);
155
+ else
156
+ renderInitPreview(preview);
157
+ fail(`configuration already exists at ${writePlan.targetPath}; inspect the diff and rerun with --force`);
158
+ return 2;
159
+ }
160
+ try {
161
+ const write = await applySetupConfigWrite(writePlan);
162
+ const result = { ...preview, kind: 'setup_result', applied: write.changed };
163
+ if (values.json)
164
+ json(result);
165
+ else
166
+ renderInitResult(result, { guidedFollowUps: needsGuidance });
167
+ if (!needsGuidance)
168
+ return 0;
169
+ // This await is load-bearing: returning the promise directly would execute the outer
170
+ // finally immediately and close the terminal before the first follow-up answer arrives.
171
+ return await runGuidedFirstRun(prompt, setup, {
172
+ aknoPath: resolved.aknoPath,
173
+ stateDir: resolved.stateDir,
174
+ indexMayWrite: resolved.writeIds || resolved.derivedInFrontmatter !== 'none' || resolved.ingest.textRendition,
175
+ }, options);
176
+ }
177
+ catch (error) {
178
+ fail(error instanceof Error ? error.message : String(error));
179
+ return 1;
180
+ }
181
+ }
182
+ finally {
183
+ if (ownsPrompt)
184
+ prompt?.close();
185
+ }
186
+ }
187
+ export function openAiInitPreview(aknoPath, maintenance, config, preflight, writePlan = null) {
188
+ return setupInitPreview(OPENAI_LUNA_PRESET, aknoPath, maintenance, config, preflight, writePlan);
189
+ }
190
+ function setupInitPreview(setup, aknoPath, maintenance, config, preflight, writePlan = null, folderSetup) {
191
+ return {
192
+ kind: 'setup_preview',
193
+ preset: setup,
194
+ presetStatus: setup === OPENAI_LUNA_PRESET
195
+ ? OPENAI_LUNA_PRESET_STATUS
196
+ : setup === MODEL_FREE_PRESET
197
+ ? MODEL_FREE_PRESET_STATUS
198
+ : 'manual',
199
+ writable: true,
200
+ writeBlocker: preflight && !preflight.passed ? 'the requested model preflight did not pass' : null,
201
+ applied: false,
202
+ knowledgeBase: {
203
+ path: aknoPath,
204
+ readable: true,
205
+ willModify: false,
206
+ },
207
+ maintenance,
208
+ maintenanceAuthority: maintenanceAuthorityCopy(setup, maintenance),
209
+ folderPolicy: folderSetup
210
+ ? {
211
+ status: 'configured',
212
+ ...folderSetup.counts,
213
+ fallbackPage: folderSetup.fallbackPage,
214
+ }
215
+ : { status: 'unchanged' },
216
+ endpointCount: setup === OPENAI_LUNA_PRESET ? 1 : setup === MODEL_FREE_PRESET ? 0 : null,
217
+ modelCount: setup === OPENAI_LUNA_PRESET ? 2 : setup === MODEL_FREE_PRESET ? 0 : null,
218
+ credential: setup === OPENAI_LUNA_PRESET
219
+ ? { env: 'AKNO_OPENAI_API_KEY', present: preflight?.credentialPresent ?? null }
220
+ : null,
221
+ preflight,
222
+ write: writePlan
223
+ ? {
224
+ path: writePlan.targetPath,
225
+ exists: writePlan.existed,
226
+ changed: writePlan.changed,
227
+ requiresForce: writePlan.existed && writePlan.changed,
228
+ preservesUnknownKeys: true,
229
+ changes: writePlan.changes,
230
+ }
231
+ : null,
232
+ config,
233
+ };
234
+ }
235
+ function renderInitPreview(preview, options = {}) {
236
+ const copy = setupCopy(preview.preset);
237
+ heading(copy.title);
238
+ line(` ${copy.summary}`);
239
+ line(` knowledge base ${preview.knowledgeBase.path}`);
240
+ line(` maintenance ${preview.maintenance}`);
241
+ line(` maintenance authority ${preview.maintenanceAuthority}`);
242
+ line(` folder admission ${preview.folderPolicy.status === 'configured'
243
+ ? `${preview.folderPolicy.managed} managed, ${preview.folderPolicy.readOnly} read-only, ${preview.folderPolicy.source} source`
244
+ : 'unchanged'}`);
245
+ line(` remember fallback ${preview.folderPolicy.status === 'configured'
246
+ ? (preview.folderPolicy.fallbackPage ?? 'off')
247
+ : 'unchanged'}`);
248
+ if (preview.write) {
249
+ line(` configuration ${preview.write.path}`);
250
+ line(` configuration write ${preview.write.changed
251
+ ? preview.write.exists
252
+ ? style.yellow(options.interactiveWrite ? 'update; confirmation required' : 'update; --force required')
253
+ : style.green('create')
254
+ : style.green('already matches')}`);
255
+ }
256
+ line(` knowledge-base writes ${style.green('none')}`);
257
+ if (preview.preflight) {
258
+ heading('Preflight — invented fixtures only');
259
+ line(` embedding ${statusLabel(preview.preflight.embedding.status)} ` +
260
+ `${preview.preflight.embedding.model}`);
261
+ if (preview.preflight.embedding.error) {
262
+ line(style.grey(` ${preview.preflight.embedding.error}`));
263
+ }
264
+ line(` generation + ranking ${statusLabel(preview.preflight.generative.status)} ` +
265
+ `${preview.preflight.generative.model}`);
266
+ if (preview.preflight.generative.error) {
267
+ line(style.grey(` ${preview.preflight.generative.error}`));
268
+ }
269
+ }
270
+ if (preview.write?.changes.length) {
271
+ heading('Configuration diff — values omitted');
272
+ for (const change of preview.write.changes) {
273
+ line(` ${change.action === 'add' ? '+' : '~'} ${change.path}`);
274
+ }
275
+ }
276
+ heading('Configuration overlay');
277
+ json(preview.config);
278
+ line(style.grey('\nNo configuration, service, index, schedule, or knowledge-base file was changed.'));
279
+ }
280
+ function renderInitResult(result, options = {}) {
281
+ const copy = setupCopy(result.preset);
282
+ heading(copy.title);
283
+ line(` ${copy.summary}`);
284
+ line(` knowledge base ${result.knowledgeBase.path}`);
285
+ line(` maintenance ${result.maintenance}`);
286
+ line(` maintenance authority ${result.maintenanceAuthority}`);
287
+ line(` folder admission ${result.folderPolicy.status === 'configured'
288
+ ? `${result.folderPolicy.managed} managed, ${result.folderPolicy.readOnly} read-only, ${result.folderPolicy.source} source`
289
+ : 'unchanged'}`);
290
+ line(` remember fallback ${result.folderPolicy.status === 'configured' ? (result.folderPolicy.fallbackPage ?? 'off') : 'unchanged'}`);
291
+ line(` configuration ${result.write?.path ?? '-'}`);
292
+ line(` configuration write ${result.applied ? style.green('written atomically') : style.green('already matched')}`);
293
+ line(` setup knowledge writes ${style.green('none')}`);
294
+ if (options.guidedFollowUps) {
295
+ line(style.grey('\nConfiguration is ready. Each optional first-run action is confirmed separately.'));
296
+ return;
297
+ }
298
+ line(style.grey('\nNext: akno index'));
299
+ line(style.grey('Then: akno recall "your question"'));
300
+ line(style.grey('Check: akno doctor'));
301
+ line(style.grey('Safe maintenance trial: akno dream --mode audit'));
302
+ line(style.grey('Optional background service: akno service install'));
303
+ }
304
+ async function runGuidedFirstRun(prompt, setup, target, options) {
305
+ const followUps = options.followUps ?? defaultInitFollowUps();
306
+ // Keep every follow-up pinned to the configuration that was just confirmed. In a checkout,
307
+ // another local overlay may exist; letting it redirect this index would violate the consent.
308
+ const targetArgs = ['--akno-path', target.aknoPath, '--state-dir', target.stateDir];
309
+ heading('Optional first run');
310
+ prompt.say(indexingDisclosure(setup, target.indexMayWrite));
311
+ const shouldIndex = await confirmInitAction(prompt, 'Build the searchable index now?', false);
312
+ let indexed = false;
313
+ let recalled = false;
314
+ let serviceInstalled = false;
315
+ if (shouldIndex) {
316
+ const exitCode = await runInitFollowUp('index', () => followUps.index(targetArgs));
317
+ if (exitCode !== 0)
318
+ return failedFirstRun('index', 'akno index');
319
+ indexed = true;
320
+ prompt.say('Recall is read-only. Its query and selected evidence may be sent to configured models.');
321
+ const shouldRecall = await confirmInitAction(prompt, 'Run a first recall now?', false);
322
+ if (shouldRecall) {
323
+ const query = await firstRecallQuery(prompt);
324
+ const recallExitCode = await runInitFollowUp('recall', () => followUps.recall([query, ...targetArgs]));
325
+ if (recallExitCode !== 0)
326
+ return failedFirstRun('recall', 'akno recall "your question"');
327
+ recalled = true;
328
+ }
329
+ }
330
+ else {
331
+ prompt.say('First recall was skipped because a fresh setup needs an index to search.');
332
+ }
333
+ if ((options.platform ?? process.platform) === 'darwin') {
334
+ prompt.say('The background service watches for changes and installs nightly maintenance using the selected profile.');
335
+ const shouldInstallService = await confirmInitAction(prompt, 'Install the background service and nightly schedule now?', false);
336
+ if (shouldInstallService) {
337
+ const exitCode = await runInitFollowUp('service installation', () => followUps.service(['install', ...targetArgs]));
338
+ if (exitCode !== 0)
339
+ return failedFirstRun('service installation', 'akno service install');
340
+ serviceInstalled = true;
341
+ }
342
+ }
343
+ else {
344
+ prompt.say('Background service installation is currently available on macOS only.');
345
+ }
346
+ heading('Ready');
347
+ if (!indexed)
348
+ line(style.grey('Next: akno index'));
349
+ else if (!recalled)
350
+ line(style.grey('Try: akno recall "your question"'));
351
+ line(style.grey('Check: akno doctor'));
352
+ line(style.grey('Safe maintenance trial: akno dream --mode audit'));
353
+ if (!serviceInstalled && (options.platform ?? process.platform) === 'darwin') {
354
+ line(style.grey('Optional background service: akno service install'));
355
+ }
356
+ return 0;
357
+ }
358
+ function defaultInitFollowUps() {
359
+ return {
360
+ index: async (argv) => (await import("./index-cmd.js")).indexCommand(argv),
361
+ recall: async (argv) => (await import("./recall-cmd.js")).recallCommand(argv),
362
+ service: async (argv) => (await import("./serve-cmd.js")).serviceCommand(argv),
363
+ };
364
+ }
365
+ async function runInitFollowUp(label, action) {
366
+ try {
367
+ return await action();
368
+ }
369
+ catch (error) {
370
+ fail(`${label} failed: ${error instanceof Error ? error.message : String(error)}`);
371
+ return 1;
372
+ }
373
+ }
374
+ function failedFirstRun(action, retry) {
375
+ line(style.yellow(`Configuration remains saved, but the optional ${action} did not complete.`));
376
+ line(style.grey(`Retry: ${retry}`));
377
+ return 1;
378
+ }
379
+ async function firstRecallQuery(prompt) {
380
+ while (true) {
381
+ const query = (await prompt.ask('Recall query: ')).trim();
382
+ if (query)
383
+ return query;
384
+ prompt.say('A recall query is required.');
385
+ }
386
+ }
387
+ function indexingDisclosure(setup, mayWrite) {
388
+ const writeBoundary = mayWrite
389
+ ? 'It will also honor configured metadata or rendition write opt-ins.'
390
+ : 'The resolved configuration does not write to knowledge-base files during indexing.';
391
+ if (setup === OPENAI_LUNA_PRESET) {
392
+ return `Indexing reads the knowledge base and sends configured page or document inputs to OpenAI for derived search data. ${writeBoundary}`;
393
+ }
394
+ if (setup === MODEL_FREE_PRESET) {
395
+ return `Indexing reads the knowledge base locally and builds derived search data. ${writeBoundary}`;
396
+ }
397
+ return `Indexing reads the knowledge base and invokes any configured models. ${writeBoundary}`;
398
+ }
399
+ function setupPreset(setup, aknoPath, maintenance, folderSetup) {
400
+ const base = setup === OPENAI_LUNA_PRESET
401
+ ? openAiLunaPreset({ aknoPath, maintenance })
402
+ : setup === MODEL_FREE_PRESET
403
+ ? modelFreePreset({ aknoPath, maintenance })
404
+ : { akno_path: aknoPath, maintenance: { profile: maintenance } };
405
+ if (!folderSetup)
406
+ return base;
407
+ return {
408
+ ...base,
409
+ folders: folderSetup.rules,
410
+ maintenance: {
411
+ ...base.maintenance,
412
+ retain: { fallback_page: folderSetup.fallbackPage },
413
+ },
414
+ };
415
+ }
416
+ function setupWriteOptions(setup) {
417
+ if (setup === OPENAI_LUNA_PRESET) {
418
+ return { replacePaths: ['providers', 'models', 'maintenance.model'] };
419
+ }
420
+ if (setup === MODEL_FREE_PRESET)
421
+ return { replacePaths: ['models', 'maintenance.model'] };
422
+ return { replacePaths: [] };
423
+ }
424
+ function setupCopy(setup) {
425
+ if (setup === OPENAI_LUNA_PRESET) {
426
+ return {
427
+ title: 'OpenAI minimum setup — recommended',
428
+ summary: 'one endpoint, two models: dedicated embeddings plus GPT-5.6 Luna',
429
+ };
430
+ }
431
+ if (setup === MODEL_FREE_PRESET) {
432
+ return {
433
+ title: 'Model-free setup',
434
+ summary: 'lexical retrieval; every model role disabled; existing provider definitions retained',
435
+ };
436
+ }
437
+ return {
438
+ title: 'Specialist/manual setup',
439
+ summary: 'knowledge-base and maintenance settings only; existing provider and model roles retained',
440
+ };
441
+ }
442
+ function maintenanceAuthorityCopy(setup, maintenance) {
443
+ if (setup === MODEL_FREE_PRESET) {
444
+ if (maintenance === 'audit')
445
+ return 'reports only; model-dependent phases are unavailable';
446
+ if (maintenance === 'review') {
447
+ return 'deterministic proposals wait for approval; model-dependent phases are unavailable';
448
+ }
449
+ return 'eligible deterministic work may apply; model-dependent phases are unavailable';
450
+ }
451
+ if (maintenance === 'audit')
452
+ return 'plans and reports only; no maintenance writes';
453
+ if (maintenance === 'review')
454
+ return 'exact proposed diffs wait for human approval';
455
+ return 'a separate curator may apply policy-eligible guarded diffs when dream runs';
456
+ }
457
+ function setupMaintenanceMode(value) {
458
+ if (value === undefined)
459
+ return 'audit';
460
+ return value === 'audit' || value === 'review' || value === 'autonomous' ? value : null;
461
+ }
462
+ export function readableKnowledgeBasePath(target) {
463
+ try {
464
+ const expanded = target === '~'
465
+ ? os.homedir()
466
+ : target.startsWith('~/')
467
+ ? path.join(os.homedir(), target.slice(2))
468
+ : target;
469
+ const resolved = path.resolve(expanded);
470
+ return fs.statSync(resolved).isDirectory() && fs.accessSync(resolved, fs.constants.R_OK) === undefined;
471
+ }
472
+ catch {
473
+ return false;
474
+ }
475
+ }
476
+ //# sourceMappingURL=init-cmd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-cmd.js","sourceRoot":"","sources":["../../src/commands/init-cmd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,wBAAwB,EACxB,kBAAkB,EAClB,yBAAyB,EACzB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,GAIlB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,EACL,6BAA6B,EAC7B,iBAAiB,EACjB,kBAAkB,GAInB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;0EAkBwD,CAAC;AAuB3E,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAc,EAAE,UAA8B,EAAE;IAChF,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAa,IAAI,EAAE;QACzC,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC1B,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC/B,SAAS,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;QAC9C,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;QAC1C,KAAK,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;KAC3C,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,IAAI,CAAC,SAAS,CAAC,CAAC;QAChB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,kBAAkB,IAAI,MAAM,CAAC,MAAM,KAAK,iBAAiB,EAAE,CAAC;QACjG,IAAI,CAAC,yBAAyB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QAC/C,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,aAAa,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC7D,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAC5B,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,MAAM,YAAY,GAAG,iBAAiB,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAC1E,IAAI,CAAC;QACH,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,IAAI,CAAC,0FAA0F,CAAC,CAAC;gBACjG,OAAO,CAAC,CAAC;YACX,CAAC;YACD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAChG,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC5B,IAAI,CAAC,2FAA2F,CAAC,CAAC;gBAClG,OAAO,CAAC,CAAC;YACX,CAAC;YACD,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,GAAG,kBAAkB,EAAE,CAAC;gBAC9B,UAAU,GAAG,IAAI,CAAC;YACpB,CAAC;QACH,CAAC;QAED,IAAI,KAAK,GAAG,MAAM,CAAC,MAAqC,CAAC;QACzD,IAAI,WAAW,GAAG,oBAAoB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3D,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,IAAI,CAAC,6BAA6B,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;YACxD,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;QACnC,IAAI,WAA+C,CAAC;QACpD,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,OAAO,GAAG,MAAM,6BAA6B,CAAC,MAAO,EAAE;gBAC3D,QAAQ;gBACR,KAAK;gBACL,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;gBACzD,YAAY,EAAE,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;gBACzC,YAAY,EAAE,yBAAyB;aACxC,CAAC,CAAC;YACH,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;YAC5B,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YACtB,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;YAClC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACpC,CAAC;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,IAAI,CAAC,wFAAwF,CAAC,CAAC;YAC/F,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,gDAAgD,CAAC,CAAC;YACvD,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,MAAM,CAAC,KAAK,IAAI,KAAK,KAAK,kBAAkB,EAAE,CAAC;YACjD,IAAI,CAAC,sDAAsD,CAAC,CAAC;YAC7D,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;QACtE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACzD,IAAI,QAAuC,CAAC;QAC5C,IAAI,SAA+B,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,CAAC;YACjF,IAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACtD,IAAI,CAAC,0CAA0C,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACxE,OAAO,CAAC,CAAC;YACX,CAAC;YACD,SAAS,GAAG,oBAAoB,CAAC,YAAY,EAAE,MAAM,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;YACjF,QAAQ,GAAG,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7D,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,0CAA0C,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;YACpE,OAAO,CAAC,CAAC;QACX,CAAC;QAED,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QACzB,IAAI,aAAa,IAAI,KAAK,KAAK,kBAAkB,EAAE,CAAC;YAClD,MAAM,iBAAiB,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACrE,MAAO,CAAC,GAAG,CACT,iBAAiB;gBACf,CAAC,CAAC,4EAA4E;gBAC9E,CAAC,CAAC,4FAA4F,CACjG,CAAC;YACF,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,KAAK,GAAG,MAAM,iBAAiB,CAC7B,MAAO,EACP,2CAA2C,EAC3C,iBAAiB,CAClB,CAAC;YACJ,CAAC;QACH,CAAC;QACD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACrE,MAAM,OAAO,GAAG,gBAAgB,CAC9B,KAAK,EACL,QAAQ,CAAC,QAAQ,EACjB,WAAW,EACX,MAAM,EACN,SAAS,EACT,SAAS,EACT,WAAW,CACZ,CAAC;QAEF,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YACtB,IAAI,MAAM,CAAC,IAAI;gBAAE,IAAI,CAAC,OAAO,CAAC,CAAC;;gBAC1B,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAChC,OAAO,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;YACnC,IAAI,MAAM,CAAC,IAAI;gBAAE,IAAI,CAAC,OAAO,CAAC,CAAC;;gBAC1B,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAChC,IAAI,CAAC,2DAA2D,CAAC,CAAC;YAClE,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,aAAa,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;YACvC,iBAAiB,CAAC,OAAO,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC;YACvD,MAAM,SAAS,GAAG,MAAM,iBAAiB,CACvC,MAAO,EACP,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,2BAA2B,EACpF,CAAC,SAAS,CAAC,OAAO,CACnB,CAAC;YACF,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC,CAAC;gBAC1F,OAAO,CAAC,CAAC;YACX,CAAC;QACH,CAAC;aAAM,IAAI,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACnE,IAAI,MAAM,CAAC,IAAI;gBAAE,IAAI,CAAC,OAAO,CAAC,CAAC;;gBAC1B,iBAAiB,CAAC,OAAO,CAAC,CAAC;YAChC,IAAI,CACF,mCAAmC,SAAS,CAAC,UAAU,2CAA2C,CACnG,CAAC;YACF,OAAO,CAAC,CAAC;QACX,CAAC;QAED,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,qBAAqB,CAAC,SAAS,CAAC,CAAC;YACrD,MAAM,MAAM,GAAG,EAAE,GAAG,OAAO,EAAE,IAAI,EAAE,cAAuB,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC;YACrF,IAAI,MAAM,CAAC,IAAI;gBAAE,IAAI,CAAC,MAAM,CAAC,CAAC;;gBACzB,gBAAgB,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC,CAAC;YAClE,IAAI,CAAC,aAAa;gBAAE,OAAO,CAAC,CAAC;YAC7B,qFAAqF;YACrF,wFAAwF;YACxF,OAAO,MAAM,iBAAiB,CAC5B,MAAO,EACP,KAAK,EACL;gBACE,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,aAAa,EACX,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,oBAAoB,KAAK,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,aAAa;aACjG,EACD,OAAO,CACR,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7D,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;YAAS,CAAC;QACT,IAAI,UAAU;YAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAClC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,QAAgB,EAChB,WAAiC,EACjC,MAA2C,EAC3C,SAA2C,EAC3C,YAAyC,IAAI;IAE7C,OAAO,gBAAgB,CAAC,kBAAkB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;AACnG,CAAC;AAED,SAAS,gBAAgB,CACvB,KAAsB,EACtB,QAAgB,EAChB,WAAiC,EACjC,MAA2C,EAC3C,SAA2C,EAC3C,YAAyC,IAAI,EAC7C,WAAoC;IAEpC,OAAO;QACL,IAAI,EAAE,eAAwB;QAC9B,MAAM,EAAE,KAAK;QACb,YAAY,EACV,KAAK,KAAK,kBAAkB;YAC1B,CAAC,CAAC,yBAAyB;YAC3B,CAAC,CAAC,KAAK,KAAK,iBAAiB;gBAC3B,CAAC,CAAC,wBAAwB;gBAC1B,CAAC,CAAE,QAAkB;QAC3B,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,IAAI;QAClG,OAAO,EAAE,KAAK;QACd,aAAa,EAAE;YACb,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,KAAK;SAClB;QACD,WAAW;QACX,oBAAoB,EAAE,wBAAwB,CAAC,KAAK,EAAE,WAAW,CAAC;QAClE,YAAY,EAAE,WAAW;YACvB,CAAC,CAAC;gBACE,MAAM,EAAE,YAAqB;gBAC7B,GAAG,WAAW,CAAC,MAAM;gBACrB,YAAY,EAAE,WAAW,CAAC,YAAY;aACvC;YACH,CAAC,CAAC,EAAE,MAAM,EAAE,WAAoB,EAAE;QACpC,aAAa,EAAE,KAAK,KAAK,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;QACxF,UAAU,EAAE,KAAK,KAAK,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;QACrF,UAAU,EACR,KAAK,KAAK,kBAAkB;YAC1B,CAAC,CAAC,EAAE,GAAG,EAAE,qBAAqB,EAAE,OAAO,EAAE,SAAS,EAAE,iBAAiB,IAAI,IAAI,EAAE;YAC/E,CAAC,CAAC,IAAI;QACV,SAAS;QACT,KAAK,EAAE,SAAS;YACd,CAAC,CAAC;gBACE,IAAI,EAAE,SAAS,CAAC,UAAU;gBAC1B,MAAM,EAAE,SAAS,CAAC,OAAO;gBACzB,OAAO,EAAE,SAAS,CAAC,OAAO;gBAC1B,aAAa,EAAE,SAAS,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO;gBACrD,oBAAoB,EAAE,IAAI;gBAC1B,OAAO,EAAE,SAAS,CAAC,OAAO;aAC3B;YACH,CAAC,CAAC,IAAI;QACR,MAAM;KACP,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CACxB,OAA4C,EAC5C,UAA0C,EAAE;IAE5C,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpB,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1B,IAAI,CAAC,4BAA4B,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/D,IAAI,CAAC,4BAA4B,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACxD,IAAI,CAAC,4BAA4B,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;IACjE,IAAI,CACF,4BACE,OAAO,CAAC,YAAY,CAAC,MAAM,KAAK,YAAY;QAC1C,CAAC,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,aAAa,OAAO,CAAC,YAAY,CAAC,QAAQ,eAAe,OAAO,CAAC,YAAY,CAAC,MAAM,SAAS;QAC9H,CAAC,CAAC,WACN,EAAE,CACH,CAAC;IACF,IAAI,CACF,4BACE,OAAO,CAAC,YAAY,CAAC,MAAM,KAAK,YAAY;QAC1C,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,IAAI,KAAK,CAAC;QAC9C,CAAC,CAAC,WACN,EAAE,CACH,CAAC;IACF,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,IAAI,CAAC,4BAA4B,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACvD,IAAI,CACF,4BACE,OAAO,CAAC,KAAK,CAAC,OAAO;YACnB,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM;gBACpB,CAAC,CAAC,KAAK,CAAC,MAAM,CACV,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,0BAA0B,CACxF;gBACH,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC;YACzB,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,CACnC,EAAE,CACH,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,4BAA4B,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACxD,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,OAAO,CAAC,oCAAoC,CAAC,CAAC;QAC9C,IAAI,CACF,4BAA4B,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG;YAC5E,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,CACzC,CAAC;QACF,IAAI,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;YACtC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC/D,CAAC;QACD,IAAI,CACF,4BAA4B,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG;YAC7E,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,CAC1C,CAAC;QACF,IAAI,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;QAClC,OAAO,CAAC,qCAAqC,CAAC,CAAC;QAC/C,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YAC3C,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IACD,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACjC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACrB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAC,CAAC;AACxG,CAAC;AAED,SAAS,gBAAgB,CACvB,MAGC,EACD,UAAyC,EAAE;IAE3C,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpB,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1B,IAAI,CAAC,4BAA4B,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9D,IAAI,CAAC,4BAA4B,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IACvD,IAAI,CAAC,4BAA4B,MAAM,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAChE,IAAI,CACF,4BACE,MAAM,CAAC,YAAY,CAAC,MAAM,KAAK,YAAY;QACzC,CAAC,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,aAAa,MAAM,CAAC,YAAY,CAAC,QAAQ,eAAe,MAAM,CAAC,YAAY,CAAC,MAAM,SAAS;QAC3H,CAAC,CAAC,WACN,EAAE,CACH,CAAC;IACF,IAAI,CACF,4BACE,MAAM,CAAC,YAAY,CAAC,MAAM,KAAK,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,WAC9F,EAAE,CACH,CAAC;IACF,IAAI,CAAC,4BAA4B,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;IAC9D,IAAI,CACF,4BAA4B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,CAClH,CAAC;IACF,IAAI,CAAC,6BAA6B,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACzD,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAC,CAAC;QACtG,OAAO;IACT,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC,CAAC;IACtD,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC,CAAC;IACpE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,MAAyB,EACzB,KAAsB,EACtB,MAAsE,EACtE,OAA2B;IAE3B,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,oBAAoB,EAAE,CAAC;IAC9D,2FAA2F;IAC3F,6FAA6F;IAC7F,MAAM,UAAU,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpF,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC9B,MAAM,CAAC,GAAG,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;IAC5D,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,iCAAiC,EAAE,KAAK,CAAC,CAAC;IAC9F,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,gBAAgB,GAAG,KAAK,CAAC;IAE7B,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;QACnF,IAAI,QAAQ,KAAK,CAAC;YAAE,OAAO,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QACjE,OAAO,GAAG,IAAI,CAAC;QAEf,MAAM,CAAC,GAAG,CAAC,wFAAwF,CAAC,CAAC;QACrG,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,yBAAyB,EAAE,KAAK,CAAC,CAAC;QACvF,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,MAAM,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAC7C,MAAM,cAAc,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YACvG,IAAI,cAAc,KAAK,CAAC;gBAAE,OAAO,cAAc,CAAC,QAAQ,EAAE,6BAA6B,CAAC,CAAC;YACzF,QAAQ,GAAG,IAAI,CAAC;QAClB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC;IACzF,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,QAAQ,EAAE,CAAC;QACxD,MAAM,CAAC,GAAG,CACR,yGAAyG,CAC1G,CAAC;QACF,MAAM,oBAAoB,GAAG,MAAM,iBAAiB,CAClD,MAAM,EACN,0DAA0D,EAC1D,KAAK,CACN,CAAC;QACF,IAAI,oBAAoB,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAClE,SAAS,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,GAAG,UAAU,CAAC,CAAC,CAC9C,CAAC;YACF,IAAI,QAAQ,KAAK,CAAC;gBAAE,OAAO,cAAc,CAAC,sBAAsB,EAAE,sBAAsB,CAAC,CAAC;YAC1F,gBAAgB,GAAG,IAAI,CAAC;QAC1B,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAC;IACtF,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,CAAC;IACjB,IAAI,CAAC,OAAO;QAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;SAC9C,IAAI,CAAC,QAAQ;QAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC,CAAC;IACzE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC,CAAC;IACpE,IAAI,CAAC,gBAAgB,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC7E,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,oBAAoB;IAC3B,OAAO;QACL,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;QAC1E,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC;QAC7E,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC;KAC/E,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,KAAa,EAAE,MAA6B;IACzE,IAAI,CAAC;QACH,OAAO,MAAM,MAAM,EAAE,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,CAAC,GAAG,KAAK,YAAY,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACnF,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,MAAc,EAAE,KAAa;IACnD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,iDAAiD,MAAM,oBAAoB,CAAC,CAAC,CAAC;IAChG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC;IACpC,OAAO,CAAC,CAAC;AACX,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,MAAyB;IACvD,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,KAAK,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1D,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;QACxB,MAAM,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;IAC5C,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAsB,EAAE,QAAiB;IACnE,MAAM,aAAa,GAAG,QAAQ;QAC5B,CAAC,CAAC,oEAAoE;QACtE,CAAC,CAAC,oFAAoF,CAAC;IACzF,IAAI,KAAK,KAAK,kBAAkB,EAAE,CAAC;QACjC,OAAO,qHAAqH,aAAa,EAAE,CAAC;IAC9I,CAAC;IACD,IAAI,KAAK,KAAK,iBAAiB,EAAE,CAAC;QAChC,OAAO,6EAA6E,aAAa,EAAE,CAAC;IACtG,CAAC;IACD,OAAO,wEAAwE,aAAa,EAAE,CAAC;AACjG,CAAC;AAED,SAAS,WAAW,CAClB,KAAsB,EACtB,QAAgB,EAChB,WAAiC,EACjC,WAAoC;IAEpC,MAAM,IAAI,GACR,KAAK,KAAK,kBAAkB;QAC1B,CAAC,CAAC,gBAAgB,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;QAC7C,CAAC,CAAC,KAAK,KAAK,iBAAiB;YAC3B,CAAC,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;YAC5C,CAAC,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,CAAC;IACvE,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAC9B,OAAO;QACL,GAAG,IAAI;QACP,OAAO,EAAE,WAAW,CAAC,KAAK;QAC1B,WAAW,EAAE;YACX,GAAG,IAAI,CAAC,WAAW;YACnB,MAAM,EAAE,EAAE,aAAa,EAAE,WAAW,CAAC,YAAY,EAAE;SACpD;KACF,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAsB;IAC/C,IAAI,KAAK,KAAK,kBAAkB,EAAE,CAAC;QACjC,OAAO,EAAE,YAAY,EAAE,CAAC,WAAW,EAAE,QAAQ,EAAE,mBAAmB,CAAC,EAAE,CAAC;IACxE,CAAC;IACD,IAAI,KAAK,KAAK,iBAAiB;QAAE,OAAO,EAAE,YAAY,EAAE,CAAC,QAAQ,EAAE,mBAAmB,CAAC,EAAE,CAAC;IAC1F,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;AAC9B,CAAC;AAED,SAAS,SAAS,CAAC,KAAsB;IACvC,IAAI,KAAK,KAAK,kBAAkB,EAAE,CAAC;QACjC,OAAO;YACL,KAAK,EAAE,oCAAoC;YAC3C,OAAO,EAAE,kEAAkE;SAC5E,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,KAAK,iBAAiB,EAAE,CAAC;QAChC,OAAO;YACL,KAAK,EAAE,kBAAkB;YACzB,OAAO,EAAE,sFAAsF;SAChG,CAAC;IACJ,CAAC;IACD,OAAO;QACL,KAAK,EAAE,yBAAyB;QAChC,OAAO,EAAE,0FAA0F;KACpG,CAAC;AACJ,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAsB,EAAE,WAAiC;IACzF,IAAI,KAAK,KAAK,iBAAiB,EAAE,CAAC;QAChC,IAAI,WAAW,KAAK,OAAO;YAAE,OAAO,sDAAsD,CAAC;QAC3F,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;YAC7B,OAAO,mFAAmF,CAAC;QAC7F,CAAC;QACD,OAAO,+EAA+E,CAAC;IACzF,CAAC;IACD,IAAI,WAAW,KAAK,OAAO;QAAE,OAAO,+CAA+C,CAAC;IACpF,IAAI,WAAW,KAAK,QAAQ;QAAE,OAAO,8CAA8C,CAAC;IACpF,OAAO,4EAA4E,CAAC;AACtF,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAyB;IACrD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IACxC,OAAO,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC1F,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAc;IACtD,IAAI,CAAC;QACH,MAAM,QAAQ,GACZ,MAAM,KAAK,GAAG;YACZ,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE;YACd,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;gBACvB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC1C,CAAC,CAAC,MAAM,CAAC;QACf,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxC,OAAO,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,SAAS,CAAC;IACzG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,51 @@
1
+ import type { Readable, Writable } from 'node:stream';
2
+ import type { SetupMaintenanceMode } from '@tenphi/akno-core';
3
+ export interface InitPromptSession {
4
+ ask(question: string): Promise<string>;
5
+ say(message: string): void;
6
+ close(): void;
7
+ }
8
+ export interface InteractiveInitAnswers {
9
+ aknoPath: string;
10
+ setup: InitSetupChoice;
11
+ maintenance: SetupMaintenanceMode;
12
+ folderSetup?: InteractiveFolderSetup;
13
+ }
14
+ export type InitSetupChoice = 'openai-luna' | 'no-model' | 'manual';
15
+ type SetupFolderRule = {
16
+ role: 'knowledge' | 'source';
17
+ remember: 'integrate' | 'deny';
18
+ };
19
+ export interface InteractiveFolderSetup {
20
+ rules: Record<string, SetupFolderRule>;
21
+ fallbackPage: string | null;
22
+ counts: {
23
+ managed: number;
24
+ readOnly: number;
25
+ source: number;
26
+ };
27
+ }
28
+ interface InteractiveInitOptions {
29
+ aknoPath?: string;
30
+ setup?: InitSetupChoice;
31
+ maintenance?: SetupMaintenanceMode;
32
+ configExists?: boolean;
33
+ readablePath(target: string): boolean;
34
+ }
35
+ export declare function terminalInitPrompt(input?: Readable, output?: Writable): InitPromptSession;
36
+ export declare function collectInteractiveInitAnswers(prompt: InitPromptSession, options: InteractiveInitOptions): Promise<InteractiveInitAnswers>;
37
+ interface InteractiveFolderSetupOptions {
38
+ aknoPath: string;
39
+ maintenance: SetupMaintenanceMode;
40
+ configExists: boolean;
41
+ }
42
+ /**
43
+ * Make fact-injection authority an explicit setup choice. Discovery reads only immediate directory names;
44
+ * it does not inspect page text, and setup writes only the machine configuration.
45
+ */
46
+ export declare function collectInteractiveFolderSetup(prompt: InitPromptSession, options: InteractiveFolderSetupOptions): Promise<InteractiveFolderSetup | undefined>;
47
+ export declare function confirmInitAction(prompt: InitPromptSession, question: string, defaultValue: boolean): Promise<boolean>;
48
+ /** Immediate visible directories only; hidden and Akno-owned operational paths are not policy candidates. */
49
+ export declare function discoverSetupFolders(aknoPath: string): string[];
50
+ export {};
51
+ //# sourceMappingURL=init-prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init-prompts.d.ts","sourceRoot":"","sources":["../../src/commands/init-prompts.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAI9D,MAAM,WAAW,iBAAiB;IAChC,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,KAAK,IAAI,IAAI,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,eAAe,CAAC;IACvB,WAAW,EAAE,oBAAoB,CAAC;IAClC,WAAW,CAAC,EAAE,sBAAsB,CAAC;CACtC;AAED,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEpE,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,WAAW,GAAG,QAAQ,CAAC;IAC7B,QAAQ,EAAE,WAAW,GAAG,MAAM,CAAC;CAChC,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACvC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,MAAM,EAAE;QACN,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;QACjB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,UAAU,sBAAsB;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;CACvC;AAED,wBAAgB,kBAAkB,CAChC,KAAK,GAAE,QAAwB,EAC/B,MAAM,GAAE,QAAyB,GAChC,iBAAiB,CAOnB;AAED,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,sBAAsB,CAAC,CAuCjC;AAED,UAAU,6BAA6B;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,oBAAoB,CAAC;IAClC,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAsB,6BAA6B,CACjD,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,sBAAsB,GAAG,SAAS,CAAC,CAqE7C;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,iBAAiB,EACzB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,OAAO,GACpB,OAAO,CAAC,OAAO,CAAC,CASlB;AA+BD,6GAA6G;AAC7G,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAW/D"}