phaibel 4.0.7 → 4.0.21

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 (150) hide show
  1. package/README.md +229 -245
  2. package/dist/commands/chat.d.ts +5 -2
  3. package/dist/commands/chat.d.ts.map +1 -1
  4. package/dist/commands/chat.js +168 -172
  5. package/dist/commands/chat.js.map +1 -1
  6. package/dist/commands/cron.d.ts.map +1 -1
  7. package/dist/commands/cron.js +1 -0
  8. package/dist/commands/cron.js.map +1 -1
  9. package/dist/commands/init.d.ts.map +1 -1
  10. package/dist/commands/init.js +54 -52
  11. package/dist/commands/init.js.map +1 -1
  12. package/dist/config.js +2 -2
  13. package/dist/config.js.map +1 -1
  14. package/dist/entities/entity-summary.js +3 -3
  15. package/dist/entities/entity-type-config.d.ts +3 -0
  16. package/dist/entities/entity-type-config.d.ts.map +1 -1
  17. package/dist/entities/entity-type-config.js +67 -1
  18. package/dist/entities/entity-type-config.js.map +1 -1
  19. package/dist/entities/entity-types-defaults.d.ts.map +1 -1
  20. package/dist/entities/entity-types-defaults.js +2 -0
  21. package/dist/entities/entity-types-defaults.js.map +1 -1
  22. package/dist/entities/spawner.d.ts.map +1 -1
  23. package/dist/entities/spawner.js +4 -2
  24. package/dist/entities/spawner.js.map +1 -1
  25. package/dist/feral/catalog/entity-catalog-source.js +31 -31
  26. package/dist/feral/node-code/abstract-node-code.js +1 -1
  27. package/dist/feral/node-code/abstract-node-code.js.map +1 -1
  28. package/dist/feral/node-code/data/set-context-value-node-code.d.ts.map +1 -1
  29. package/dist/feral/node-code/data/set-context-value-node-code.js +10 -1
  30. package/dist/feral/node-code/data/set-context-value-node-code.js.map +1 -1
  31. package/dist/feral/node-code/entity/create-entity-type-node-code.js +20 -20
  32. package/dist/feral/node-code/entity/load-vault-context-node-code.d.ts.map +1 -1
  33. package/dist/feral/node-code/entity/load-vault-context-node-code.js +7 -15
  34. package/dist/feral/node-code/entity/load-vault-context-node-code.js.map +1 -1
  35. package/dist/feral/node-code/entity/update-entity-type-node-code.js +20 -20
  36. package/dist/feral/node-code/input/prompt-input-node-code.d.ts.map +1 -1
  37. package/dist/feral/node-code/input/prompt-input-node-code.js +6 -0
  38. package/dist/feral/node-code/input/prompt-input-node-code.js.map +1 -1
  39. package/dist/feral/node-code/input/prompt-select-node-code.d.ts.map +1 -1
  40. package/dist/feral/node-code/input/prompt-select-node-code.js +6 -0
  41. package/dist/feral/node-code/input/prompt-select-node-code.js.map +1 -1
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +5 -39
  44. package/dist/index.js.map +1 -1
  45. package/dist/llm/router.js +27 -27
  46. package/dist/personalities.js +4 -4
  47. package/dist/phaibel.txt +81 -81
  48. package/dist/service/api-router.d.ts.map +1 -1
  49. package/dist/service/api-router.js +42 -2
  50. package/dist/service/api-router.js.map +1 -1
  51. package/dist/service/cron/feedback-analysis.js +14 -14
  52. package/dist/service/cron/innovate.d.ts +2 -0
  53. package/dist/service/cron/innovate.d.ts.map +1 -0
  54. package/dist/service/cron/innovate.js +354 -0
  55. package/dist/service/cron/innovate.js.map +1 -0
  56. package/dist/service/cron/process-lifecycle.js +36 -36
  57. package/dist/service/cron/scheduler.d.ts.map +1 -1
  58. package/dist/service/cron/scheduler.js +8 -0
  59. package/dist/service/cron/scheduler.js.map +1 -1
  60. package/dist/service/index.d.ts.map +1 -1
  61. package/dist/service/index.js +27 -20
  62. package/dist/service/index.js.map +1 -1
  63. package/dist/service/web-client.html +1984 -1569
  64. package/dist/service/web-server.d.ts +1 -0
  65. package/dist/service/web-server.d.ts.map +1 -1
  66. package/dist/service/web-server.js +188 -6
  67. package/dist/service/web-server.js.map +1 -1
  68. package/dist/tools/daily.js +2 -2
  69. package/package.json +69 -66
  70. package/dist/agentary.txt +0 -82
  71. package/dist/commands/event.d.ts +0 -4
  72. package/dist/commands/event.d.ts.map +0 -1
  73. package/dist/commands/event.js +0 -515
  74. package/dist/commands/event.js.map +0 -1
  75. package/dist/commands/goal.d.ts +0 -4
  76. package/dist/commands/goal.d.ts.map +0 -1
  77. package/dist/commands/goal.js +0 -14
  78. package/dist/commands/goal.js.map +0 -1
  79. package/dist/commands/interview.d.ts +0 -14
  80. package/dist/commands/interview.d.ts.map +0 -1
  81. package/dist/commands/interview.js +0 -343
  82. package/dist/commands/interview.js.map +0 -1
  83. package/dist/commands/note.d.ts +0 -4
  84. package/dist/commands/note.d.ts.map +0 -1
  85. package/dist/commands/note.js +0 -548
  86. package/dist/commands/note.js.map +0 -1
  87. package/dist/commands/pamp.d.ts +0 -4
  88. package/dist/commands/pamp.d.ts.map +0 -1
  89. package/dist/commands/pamp.js +0 -323
  90. package/dist/commands/pamp.js.map +0 -1
  91. package/dist/commands/person.d.ts +0 -4
  92. package/dist/commands/person.d.ts.map +0 -1
  93. package/dist/commands/person.js +0 -185
  94. package/dist/commands/person.js.map +0 -1
  95. package/dist/commands/project.d.ts +0 -4
  96. package/dist/commands/project.d.ts.map +0 -1
  97. package/dist/commands/project.js +0 -70
  98. package/dist/commands/project.js.map +0 -1
  99. package/dist/commands/remember.d.ts +0 -4
  100. package/dist/commands/remember.d.ts.map +0 -1
  101. package/dist/commands/remember.js +0 -70
  102. package/dist/commands/remember.js.map +0 -1
  103. package/dist/commands/research.d.ts +0 -4
  104. package/dist/commands/research.d.ts.map +0 -1
  105. package/dist/commands/research.js +0 -14
  106. package/dist/commands/research.js.map +0 -1
  107. package/dist/commands/shell.d.ts +0 -3
  108. package/dist/commands/shell.d.ts.map +0 -1
  109. package/dist/commands/shell.js +0 -346
  110. package/dist/commands/shell.js.map +0 -1
  111. package/dist/commands/today.d.ts +0 -4
  112. package/dist/commands/today.d.ts.map +0 -1
  113. package/dist/commands/today.js +0 -112
  114. package/dist/commands/today.js.map +0 -1
  115. package/dist/commands/todo.d.ts +0 -4
  116. package/dist/commands/todo.d.ts.map +0 -1
  117. package/dist/commands/todo.js +0 -678
  118. package/dist/commands/todo.js.map +0 -1
  119. package/dist/commands/todont.d.ts +0 -19
  120. package/dist/commands/todont.d.ts.map +0 -1
  121. package/dist/commands/todont.js +0 -209
  122. package/dist/commands/todont.js.map +0 -1
  123. package/dist/commands/week.d.ts +0 -4
  124. package/dist/commands/week.d.ts.map +0 -1
  125. package/dist/commands/week.js +0 -267
  126. package/dist/commands/week.js.map +0 -1
  127. package/dist/dobbai.txt +0 -55
  128. package/dist/dobbi.txt +0 -55
  129. package/dist/dobbie-bundle.cjs +0 -73313
  130. package/dist/dobbie.txt +0 -55
  131. package/dist/feral/node-code/output/dobbai-speak-node-code.d.ts +0 -11
  132. package/dist/feral/node-code/output/dobbai-speak-node-code.d.ts.map +0 -1
  133. package/dist/feral/node-code/output/dobbai-speak-node-code.js +0 -56
  134. package/dist/feral/node-code/output/dobbai-speak-node-code.js.map +0 -1
  135. package/dist/feral/node-code/output/dobbi-speak-node-code.d.ts +0 -15
  136. package/dist/feral/node-code/output/dobbi-speak-node-code.d.ts.map +0 -1
  137. package/dist/feral/node-code/output/dobbi-speak-node-code.js +0 -60
  138. package/dist/feral/node-code/output/dobbi-speak-node-code.js.map +0 -1
  139. package/dist/feral/node-code/output/dobbie-speak-node-code.d.ts +0 -11
  140. package/dist/feral/node-code/output/dobbie-speak-node-code.d.ts.map +0 -1
  141. package/dist/feral/node-code/output/dobbie-speak-node-code.js +0 -56
  142. package/dist/feral/node-code/output/dobbie-speak-node-code.js.map +0 -1
  143. package/dist/service/cron/process-evaluator.d.ts +0 -6
  144. package/dist/service/cron/process-evaluator.d.ts.map +0 -1
  145. package/dist/service/cron/process-evaluator.js +0 -126
  146. package/dist/service/cron/process-evaluator.js.map +0 -1
  147. package/dist/tools/project.d.ts +0 -2
  148. package/dist/tools/project.d.ts.map +0 -1
  149. package/dist/tools/project.js +0 -112
  150. package/dist/tools/project.js.map +0 -1
@@ -1,4 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare const rememberCommand: Command;
3
- export default rememberCommand;
4
- //# sourceMappingURL=remember.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"remember.d.ts","sourceRoot":"","sources":["../../src/commands/remember.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,eAAO,MAAM,eAAe,SAqEtB,CAAC;AAEP,eAAe,eAAe,CAAC"}
@@ -1,70 +0,0 @@
1
- import { Command } from 'commander';
2
- import chalk from 'chalk';
3
- import ora from 'ora';
4
- import { promises as fs } from 'fs';
5
- import path from 'path';
6
- import { getVaultRoot } from '../state/manager.js';
7
- import { getContextString } from '../context/reader.js';
8
- import { getModelForCapability, createSystemPrompt } from '../llm/router.js';
9
- import { appendToMarkdown } from '../markdown/parser.js';
10
- import { getResponse } from '../responses.js';
11
- import { debug } from '../utils/debug.js';
12
- export const rememberCommand = new Command('remember')
13
- .description('Add something to context or notes')
14
- .argument('<text>', 'What to remember')
15
- .action(async (text) => {
16
- try {
17
- const vaultRoot = await getVaultRoot();
18
- const today = new Date().toISOString().split('T')[0];
19
- const targetPath = path.join(vaultRoot, '.vault.md');
20
- console.log(chalk.gray('Adding to vault context, sir.'));
21
- const spinner = ora(getResponse('processing')).start();
22
- try {
23
- // Try to use AI to format the note
24
- const context = await getContextString(vaultRoot);
25
- const llm = await getModelForCapability('format');
26
- const systemPrompt = createSystemPrompt(context);
27
- const prompt = `The user wants to remember the following. Format it nicely as a markdown note with an appropriate heading. Keep it concise but clear. Add relevant tags if appropriate.
28
-
29
- User input: ${text}
30
-
31
- Format the response as markdown that can be appended to an existing document.`;
32
- const formattedNote = await llm.chat([{ role: 'user', content: prompt }], { systemPrompt });
33
- spinner.stop();
34
- // Append to the target file
35
- const noteWithDate = `\n## Note - ${today}\n\n${formattedNote}`;
36
- try {
37
- await appendToMarkdown(targetPath, noteWithDate);
38
- }
39
- catch (err) {
40
- debug('remember', err);
41
- // File doesn't exist or can't be parsed, just append
42
- await fs.appendFile(targetPath, noteWithDate);
43
- }
44
- console.log(chalk.green('āœ“ ' + getResponse('remember_saved')));
45
- console.log(chalk.gray(formattedNote));
46
- }
47
- catch (err) {
48
- console.debug('[phaibel:commands:remember]', err);
49
- spinner.stop();
50
- // Fall back to simple append without AI
51
- const simpleNote = `\n## Note - ${today}\n\n${text}\n`;
52
- try {
53
- await fs.appendFile(targetPath, simpleNote);
54
- }
55
- catch (err) {
56
- debug('remember', err);
57
- // Create the directory and file if needed
58
- await fs.mkdir(path.dirname(targetPath), { recursive: true });
59
- await fs.writeFile(targetPath, simpleNote);
60
- }
61
- console.log(chalk.green('āœ“ Noted!'));
62
- console.log(chalk.gray('(Configure AI with `phaibel config add-provider anthropic` for smart formatting)'));
63
- }
64
- }
65
- catch (error) {
66
- console.error(chalk.red(getResponse('error')), error);
67
- }
68
- });
69
- export default rememberCommand;
70
- //# sourceMappingURL=remember.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"remember.js","sourceRoot":"","sources":["../../src/commands/remember.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare const researchCommand: Command;
3
- export default researchCommand;
4
- //# sourceMappingURL=research.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"research.d.ts","sourceRoot":"","sources":["../../src/commands/research.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,eAAO,MAAM,eAAe,SAUtB,CAAC;AAEP,eAAe,eAAe,CAAC"}
@@ -1,14 +0,0 @@
1
- import { Command } from 'commander';
2
- import { listEntities } from './list.js';
3
- export const researchCommand = new Command('research')
4
- .description('Research management')
5
- .argument('[action]', 'Action to perform (list)')
6
- .action(async (action) => {
7
- if (!action || action === 'list') {
8
- await listEntities('research');
9
- return;
10
- }
11
- console.log(`Unknown action: ${action}. Available: list`);
12
- });
13
- export default researchCommand;
14
- //# sourceMappingURL=research.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"research.js","sourceRoot":"","sources":["../../src/commands/research.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC;KACjD,WAAW,CAAC,qBAAqB,CAAC;KAClC,QAAQ,CAAC,UAAU,EAAE,0BAA0B,CAAC;KAChD,MAAM,CAAC,KAAK,EAAE,MAAe,EAAE,EAAE;IAC9B,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QAC/B,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;QAC/B,OAAO;IACX,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,mBAAmB,MAAM,mBAAmB,CAAC,CAAC;AAC9D,CAAC,CAAC,CAAC;AAEP,eAAe,eAAe,CAAC"}
@@ -1,3 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare function createShellCommand(_program: Command): Command;
3
- //# sourceMappingURL=shell.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shell.d.ts","sourceRoot":"","sources":["../../src/commands/shell.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6MpC,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAqJ7D"}
@@ -1,346 +0,0 @@
1
- import { Command } from 'commander';
2
- import chalk from 'chalk';
3
- import readline from 'readline';
4
- import { spawn } from 'child_process';
5
- import { listServiceTools } from '../tools/index.js';
6
- import { getResponse } from '../responses.js';
7
- import { StatusBar } from '../shell/tui.js';
8
- import { StatusPoller } from '../shell/status-poller.js';
9
- import { breadcrumbPrompt } from '../ui/breadcrumb.js';
10
- import { isInterviewComplete, isInVault } from '../state/manager.js';
11
- import { runInterview } from './interview.js';
12
- import { getEntityIndex } from '../entities/entity-index.js';
13
- import { loadEntityTypes } from '../entities/entity-type-config.js';
14
- import { feralChat } from './chat.js';
15
- // ── Dynamic entity type names (loaded once at shell startup) ─────────────────
16
- let _dynamicEntityTypes = new Set();
17
- async function loadDynamicEntityTypes() {
18
- const types = await loadEntityTypes();
19
- _dynamicEntityTypes = new Set(types.map(t => t.name));
20
- // Also add to COMMAND_TREE for tab-completion
21
- for (const t of types) {
22
- if (!COMMAND_TREE[t.name]) {
23
- COMMAND_TREE[t.name] = ['list', 'add', 'remove', 'show'];
24
- }
25
- }
26
- }
27
- // ─────────────────────────────────────────────────────────────────────────────
28
- // COMMAND TREE (for tab-completion)
29
- // ─────────────────────────────────────────────────────────────────────────────
30
- const COMMAND_TREE = {
31
- init: [],
32
- today: [],
33
- remember: ['-g'],
34
- project: ['list', 'switch', 'new'],
35
- config: ['add-provider', 'set-capability', 'reset-capability', 'list-capabilities', 'list-providers', 'set-name'],
36
- sync: [],
37
- week: ['--next'],
38
- note: ['list', 'remove'],
39
- todo: ['list', 'done', 'remove'],
40
- event: ['list', 'remove'],
41
- research: ['list'],
42
- goal: ['list'],
43
- todont: ['list', 'remove'],
44
- cal: ['add', 'remove', 'list', 'sync', 'set-url'],
45
- cron: ['list', 'enable', 'disable', 'set-interval', 'status', 'run'],
46
- time: [],
47
- recurrence: ['create', 'list', 'edit', 'delete', 'remove', 'generate'],
48
- person: ['list', 'edit', 'delete', 'remove'],
49
- inbox: ['add'],
50
- service: ['start', 'stop', 'status'],
51
- queue: ['size', 'status', 'clear', 'pause', 'resume'],
52
- index: ['stats', 'graph', 'neighbors', 'rebuild'],
53
- tools: [],
54
- tool: [], // dynamically completed with tool names
55
- feral: ['nodes', 'catalog', 'process'],
56
- interview: [],
57
- setup: [],
58
- type: ['list', 'add', 'edit', 'remove'],
59
- shell: [],
60
- help: [],
61
- clear: [],
62
- exit: [],
63
- };
64
- const TOP_LEVEL_COMMANDS = Object.keys(COMMAND_TREE);
65
- const ENTITY_COMPLETIONS = [
66
- { command: 'todo', subcommand: 'done', entityType: 'task' },
67
- { command: 'todo', subcommand: 'remove', entityType: 'task' },
68
- { command: 'todo', subcommand: null, entityType: 'task' },
69
- { command: 'note', subcommand: 'remove', entityType: 'note' },
70
- { command: 'note', subcommand: null, entityType: 'note' },
71
- { command: 'event', subcommand: 'remove', entityType: 'event' },
72
- { command: 'event', subcommand: null, entityType: 'event' },
73
- { command: 'person', subcommand: 'edit', entityType: 'person' },
74
- { command: 'person', subcommand: 'delete', entityType: 'person' },
75
- { command: 'person', subcommand: 'remove', entityType: 'person' },
76
- { command: 'recurrence', subcommand: 'edit', entityType: 'recurrence' },
77
- { command: 'recurrence', subcommand: 'delete', entityType: 'recurrence' },
78
- { command: 'recurrence', subcommand: 'remove', entityType: 'recurrence' },
79
- { command: 'todont', subcommand: 'remove', entityType: 'todont' },
80
- { command: 'todont', subcommand: null, entityType: 'todont' },
81
- { command: 'index', subcommand: 'neighbors', entityType: 'task' },
82
- ];
83
- function getEntityNames(entityType) {
84
- const index = getEntityIndex();
85
- if (!index.isBuilt)
86
- return [];
87
- return index.getNodes(entityType).map(n => n.id);
88
- }
89
- /**
90
- * Build a completer function for readline.
91
- */
92
- function buildCompleter() {
93
- return (line) => {
94
- const trimmed = line.trimStart();
95
- const parts = trimmed.split(/\s+/);
96
- if (parts.length <= 1) {
97
- const partial = parts[0] || '';
98
- const hits = TOP_LEVEL_COMMANDS.filter(c => c.startsWith(partial));
99
- return [hits.map(h => h + ' '), partial];
100
- }
101
- const command = parts[0];
102
- const partial = parts[parts.length - 1] || '';
103
- if (command === 'tool') {
104
- if (parts.length === 2) {
105
- const toolNames = listServiceTools().map(t => t.name);
106
- const hits = toolNames.filter(t => t.startsWith(partial));
107
- return [hits.map(h => h + ' '), partial];
108
- }
109
- return [[], partial];
110
- }
111
- // Subcommand completion (arg position 2)
112
- const subcommands = COMMAND_TREE[command];
113
- if (subcommands && subcommands.length > 0 && parts.length === 2) {
114
- // Mix subcommands with entity names where applicable
115
- const hits = subcommands.filter(s => s.startsWith(partial));
116
- // Also complete entity names at arg 2 for commands with null subcommand
117
- const directCompletion = ENTITY_COMPLETIONS.find(ec => ec.command === command && ec.subcommand === null);
118
- if (directCompletion) {
119
- const names = getEntityNames(directCompletion.entityType);
120
- hits.push(...names.filter(n => n.startsWith(partial) && !hits.includes(n)));
121
- }
122
- return [hits.map(h => h + ' '), partial];
123
- }
124
- // Entity name completion at arg position 3+ (after subcommand)
125
- if (parts.length >= 3) {
126
- const sub = parts[1];
127
- const completion = ENTITY_COMPLETIONS.find(ec => ec.command === command && ec.subcommand === sub);
128
- if (completion) {
129
- const names = getEntityNames(completion.entityType);
130
- const hits = names.filter(n => n.startsWith(partial));
131
- return [hits.map(h => h + ' '), partial];
132
- }
133
- }
134
- return [[], partial];
135
- };
136
- }
137
- // ─────────────────────────────────────────────────────────────────────────────
138
- // COMMAND DISPATCH
139
- // ─────────────────────────────────────────────────────────────────────────────
140
- /**
141
- * Run a command in a subprocess.
142
- *
143
- * This completely isolates Commander from readline — the child process has its
144
- * own stdin/stdout and can never interfere with the shell's character echo.
145
- */
146
- function runCommand(args) {
147
- return new Promise((resolve) => {
148
- // Spawn as a subprocess: node <script> <args...>
149
- const child = spawn(process.argv[0], [process.argv[1], ...args], {
150
- stdio: 'inherit',
151
- cwd: process.cwd(),
152
- env: process.env,
153
- });
154
- child.on('close', (code) => resolve(code === 42 ? 'quit' : 'continue'));
155
- child.on('error', (err) => {
156
- console.log(chalk.red(`Failed to run command: ${err.message}`));
157
- resolve('continue');
158
- });
159
- });
160
- }
161
- // ─────────────────────────────────────────────────────────────────────────────
162
- // SHELL COMMAND
163
- // ─────────────────────────────────────────────────────────────────────────────
164
- /**
165
- * Helper: print status bar then show prompt.
166
- */
167
- function showPrompt(rl, bar) {
168
- bar.print();
169
- rl.prompt();
170
- }
171
- export function createShellCommand(_program) {
172
- return new Command('shell')
173
- .alias('sh')
174
- .description('Start interactive shell mode with tab-completion')
175
- .action(async () => {
176
- // Guard: vault must exist
177
- if (!(await isInVault())) {
178
- console.log(chalk.red('\nCannot find a vault here.'));
179
- console.log(chalk.gray('No .vault.md found in this directory or any parent.'));
180
- console.log(chalk.gray('\nTo create a vault, run: phaibel init\n'));
181
- process.exit(1);
182
- }
183
- const bar = new StatusBar();
184
- const poller = new StatusPoller(bar);
185
- // Start background polling (updates bar data silently)
186
- poller.start();
187
- // Build entity index for tab-completion (fire-and-forget)
188
- const entityIndex = getEntityIndex();
189
- entityIndex.build().catch(() => { });
190
- // Load custom entity types for dynamic command routing + tab-completion
191
- loadDynamicEntityTypes().catch(() => { });
192
- await bar.printWelcome();
193
- // First-run interview
194
- const interviewed = await isInterviewComplete();
195
- if (!interviewed) {
196
- await runInterview();
197
- }
198
- const prompt = breadcrumbPrompt();
199
- const rl = readline.createInterface({
200
- input: process.stdin,
201
- output: process.stdout,
202
- completer: buildCompleter(),
203
- prompt,
204
- terminal: true,
205
- });
206
- // Show initial status + prompt
207
- showPrompt(rl, bar);
208
- rl.on('line', (line) => {
209
- const handleLine = async () => {
210
- const input = line.trim();
211
- if (!input) {
212
- showPrompt(rl, bar);
213
- return;
214
- }
215
- // Built-in shell commands
216
- if (input === 'exit' || input === 'quit') {
217
- poller.stop();
218
- const msg = getResponse('farewell');
219
- console.log(chalk.cyan(`\n${msg}\n`));
220
- process.exit(0);
221
- return; // unreachable, but makes intent clear
222
- }
223
- if (input === 'clear') {
224
- console.clear();
225
- showPrompt(rl, bar);
226
- return;
227
- }
228
- if (input === 'help all' || input === 'help') {
229
- await printHelp();
230
- showPrompt(rl, bar);
231
- return;
232
- }
233
- // Dispatch via subprocess — keeps readline completely isolated
234
- const args = input.split(/\s+/);
235
- // Unknown command? Check dynamic entity types first, then fall through
236
- const command = args[0];
237
- if (command && !TOP_LEVEL_COMMANDS.includes(command)) {
238
- // Dynamic entity type: `car add` → `entity car add`
239
- if (_dynamicEntityTypes.has(command)) {
240
- rl.pause();
241
- const result = await runCommand(['entity', ...args]);
242
- rl.resume();
243
- if (result === 'quit') {
244
- poller.stop();
245
- rl.close();
246
- return;
247
- }
248
- await poller.pollNow();
249
- console.log('');
250
- showPrompt(rl, bar);
251
- return;
252
- }
253
- // Any unrecognised input → autonomous chat
254
- rl.pause();
255
- try {
256
- await feralChat(input);
257
- }
258
- finally {
259
- if (process.stdin.isTTY)
260
- process.stdin.setRawMode(true);
261
- rl.resume();
262
- }
263
- await poller.pollNow();
264
- console.log('');
265
- showPrompt(rl, bar);
266
- return;
267
- }
268
- rl.pause();
269
- const result = await runCommand(args);
270
- rl.resume();
271
- if (result === 'quit') {
272
- poller.stop();
273
- rl.close();
274
- return;
275
- }
276
- // Refresh status bar data immediately (command may have
277
- // started/stopped the service or changed queue state).
278
- await poller.pollNow();
279
- console.log('');
280
- showPrompt(rl, bar);
281
- };
282
- handleLine().catch((err) => {
283
- console.log(chalk.red(`Unexpected error: ${err instanceof Error ? err.message : err}`));
284
- showPrompt(rl, bar);
285
- });
286
- });
287
- // Ctrl+D closes the readline — show farewell and exit
288
- rl.on('close', async () => {
289
- poller.stop();
290
- const msg = getResponse('farewell');
291
- console.log(chalk.cyan(`\n${msg}\n`));
292
- process.exit(0);
293
- });
294
- // Handle Ctrl+C — don't exit, just clear the line
295
- rl.on('SIGINT', () => {
296
- process.stdout.write('\n');
297
- showPrompt(rl, bar);
298
- });
299
- // Keep the process alive
300
- await new Promise(() => { });
301
- });
302
- }
303
- async function printHelp() {
304
- const b = chalk.bold;
305
- const g = chalk.gray;
306
- // Load entity types dynamically
307
- const types = await loadEntityTypes().catch(() => []);
308
- const COL = 14; // width of name column
309
- const PAD = ' '.repeat(4 + COL + 2); // indent for continuation lines
310
- const entityLines = types.map(t => {
311
- const label = b(t.plural.padEnd(COL));
312
- const desc = t.description ?? '';
313
- const fields = t.fields.length > 0
314
- ? t.fields.map(f => f.key).join(g(' Ā· '))
315
- : '';
316
- const parts = [desc, fields].filter(Boolean);
317
- return ` ${label} ${parts.join(g('\n' + PAD))}`;
318
- }).join('\n');
319
- const typesSuggestion = types.length < 5
320
- ? g(`\n Tip: "${b('type add')}" to track something new (cars, books, recipes…)`)
321
- : '';
322
- console.log(chalk.cyan(`
323
- ${b('Just tell me what you need.')}
324
-
325
- Examples:
326
- "remind me to call the dentist on Friday"
327
- "note that the API key expires in 30 days"
328
- "what's on my plate this week?"
329
- "add a goal to run a 5k by June"
330
- "mark the dentist task as done"
331
-
332
- ${b('Things I\'m tracking:')}
333
-
334
- ${entityLines || g(' (no entity types yet — try "type add")')}
335
- ${typesSuggestion}
336
-
337
- ${b('Vault & system:')}
338
- ${g('today Ā· week Ā· sync Ā· cal Ā· time Ā· project')}
339
- ${g('service Ā· queue Ā· index Ā· cron Ā· config Ā· setup')}
340
- ${g('type [list|add|edit|remove] — manage what I track')}
341
- ${g('feral [nodes|catalog|process] — flow engine')}
342
-
343
- ${g('clear Ā· exit')}
344
- `));
345
- }
346
- //# sourceMappingURL=shell.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"shell.js","sourceRoot":"","sources":["../../src/commands/shell.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare const todayCommand: Command;
3
- export default todayCommand;
4
- //# sourceMappingURL=today.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"today.d.ts","sourceRoot":"","sources":["../../src/commands/today.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,eAAO,MAAM,YAAY,SA8GnB,CAAC;AAEP,eAAe,YAAY,CAAC"}
@@ -1,112 +0,0 @@
1
- import { Command } from 'commander';
2
- import chalk from 'chalk';
3
- import ora from 'ora';
4
- import { promises as fs } from 'fs';
5
- import path from 'path';
6
- import { getVaultRoot } from '../state/manager.js';
7
- import { getContextString } from '../context/reader.js';
8
- import { getModelForCapability, createSystemPrompt } from '../llm/router.js';
9
- import { getResponse } from '../responses.js';
10
- import { debug } from '../utils/debug.js';
11
- import { getActiveTodonts } from './todont.js';
12
- export const todayCommand = new Command('today')
13
- .description('Show daily todos and notes')
14
- .action(async () => {
15
- const spinner = ora(getResponse('processing')).start();
16
- try {
17
- const vaultRoot = await getVaultRoot();
18
- const today = new Date().toISOString().split('T')[0];
19
- const dayName = new Date().toLocaleDateString('en-US', { weekday: 'long' });
20
- // Gather todos
21
- const todosPath = path.join(vaultRoot, 'todos');
22
- let allTodos = '';
23
- try {
24
- const files = await fs.readdir(todosPath);
25
- for (const file of files) {
26
- if (file.endsWith('.md') && !file.startsWith('.')) {
27
- const content = await fs.readFile(path.join(todosPath, file), 'utf-8');
28
- allTodos += content + '\n\n';
29
- }
30
- }
31
- }
32
- catch (err) {
33
- debug('today', err);
34
- // No todos folder or empty
35
- }
36
- // Gather events
37
- const eventsPath = path.join(vaultRoot, 'events');
38
- let schedule = '';
39
- try {
40
- const files = await fs.readdir(eventsPath);
41
- for (const file of files) {
42
- if (file.endsWith('.md') && !file.startsWith('.')) {
43
- const content = await fs.readFile(path.join(eventsPath, file), 'utf-8');
44
- schedule += content + '\n\n';
45
- }
46
- }
47
- }
48
- catch (err) {
49
- debug('today', err);
50
- // No events folder or empty
51
- }
52
- // Gather active todonts
53
- const activeTodonts = await getActiveTodonts(today);
54
- let todontSection = '';
55
- for (const t of activeTodonts) {
56
- const window = t.startDate && t.endDate ? ` (${t.startDate} → ${t.endDate})` : '';
57
- todontSection += `- 🚫 ${t.title}${window}\n`;
58
- if (t.content)
59
- todontSection += ` ${t.content}\n`;
60
- }
61
- spinner.stop();
62
- // Display header
63
- console.log(chalk.bold.cyan(`\nšŸ“‹ Today - ${dayName}, ${today}\n`));
64
- // Try to use AI to summarize
65
- try {
66
- const context = await getContextString(vaultRoot);
67
- const llm = await getModelForCapability('summarize');
68
- const systemPrompt = createSystemPrompt(context);
69
- const prompt = `Please provide a helpful summary of today's tasks and schedule for the user. Be concise and prioritize the most important items.
70
-
71
- Today's Date: ${today}
72
-
73
- Todos:
74
- ${allTodos || '(No todos)'}
75
-
76
- Schedule:
77
- ${schedule || '(No scheduled events)'}
78
-
79
- ${todontSection ? `🚫 Things to AVOID today:\n${todontSection}` : ''}
80
-
81
- Provide a prioritized summary of what the user should focus on today. If there are todonts (things to avoid), remind the user about them.`;
82
- const spinner2 = ora(getResponse('thinking')).start();
83
- const response = await llm.chat([{ role: 'user', content: prompt }], { systemPrompt });
84
- spinner2.stop();
85
- console.log(response);
86
- }
87
- catch (error) {
88
- // Fall back to simple display if AI not configured
89
- console.log(chalk.bold('šŸ“ Todos:'));
90
- console.log(allTodos || chalk.gray(' No todos yet.\n'));
91
- if (schedule) {
92
- console.log(chalk.bold('šŸ“… Schedule:'));
93
- console.log(schedule);
94
- }
95
- if (activeTodonts.length > 0) {
96
- console.log(chalk.bold.red('🚫 Todonts (avoid today):'));
97
- for (const t of activeTodonts) {
98
- const window = t.startDate && t.endDate ? chalk.gray(` ${t.startDate} → ${t.endDate}`) : chalk.gray(' always');
99
- console.log(` 🚫 ${chalk.red(t.title)}${window}`);
100
- }
101
- console.log('');
102
- }
103
- console.log(chalk.gray('\n(Configure AI with `phaibel config add-provider anthropic` for smart summaries)'));
104
- }
105
- }
106
- catch (error) {
107
- spinner.stop();
108
- console.error(chalk.red(getResponse('error')), error);
109
- }
110
- });
111
- export default todayCommand;
112
- //# sourceMappingURL=today.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"today.js","sourceRoot":"","sources":["../../src/commands/today.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;KAC3C,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,KAAK,IAAI,EAAE;IACf,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;IAEvD,IAAI,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,YAAY,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAE5E,eAAe;QACf,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAChD,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACvB,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAChD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;oBACvE,QAAQ,IAAI,OAAO,GAAG,MAAM,CAAC;gBACjC,CAAC;YACL,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACpB,2BAA2B;QAC/B,CAAC;QAED,gBAAgB;QAChB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAClD,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC;YACD,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC3C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACvB,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAChD,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;oBACxE,QAAQ,IAAI,OAAO,GAAG,MAAM,CAAC;gBACjC,CAAC;YACL,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;YACpB,4BAA4B;QAChC,CAAC;QAED,wBAAwB;QACxB,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,aAAa,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAClF,aAAa,IAAI,QAAQ,CAAC,CAAC,KAAK,GAAG,MAAM,IAAI,CAAC;YAC9C,IAAI,CAAC,CAAC,OAAO;gBAAE,aAAa,IAAI,KAAK,CAAC,CAAC,OAAO,IAAI,CAAC;QACvD,CAAC;QAED,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,iBAAiB;QACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC;QAEpE,6BAA6B;QAC7B,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAClD,MAAM,GAAG,GAAG,MAAM,qBAAqB,CAAC,WAAW,CAAC,CAAC;YACrD,MAAM,YAAY,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAEjD,MAAM,MAAM,GAAG;;gBAEf,KAAK;;;EAGnB,QAAQ,IAAI,YAAY;;;EAGxB,QAAQ,IAAI,uBAAuB;;EAEnC,aAAa,CAAC,CAAC,CAAC,8BAA8B,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE;;0IAEsE,CAAC;YAE3H,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;YACtD,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,IAAI,CAC3B,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EACnC,EAAE,YAAY,EAAE,CACnB,CAAC;YACF,QAAQ,CAAC,IAAI,EAAE,CAAC;YAEhB,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,mDAAmD;YACnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAEzD,IAAI,QAAQ,EAAE,CAAC;gBACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;gBACxC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC1B,CAAC;YAED,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC,CAAC;gBACzD,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;oBAC5B,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,SAAS,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAC/G,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC;gBACvD,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACpB,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAC,CAAC;QACjH,CAAC;IAEL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC1D,CAAC;AACL,CAAC,CAAC,CAAC;AAEP,eAAe,YAAY,CAAC"}
@@ -1,4 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare const todoCommand: Command;
3
- export default todoCommand;
4
- //# sourceMappingURL=todo.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"todo.d.ts","sourceRoot":"","sources":["../../src/commands/todo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkTpC,eAAO,MAAM,WAAW,SA6alB,CAAC;AAEP,eAAe,WAAW,CAAC"}