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,323 +0,0 @@
1
- // ─────────────────────────────────────────────────────────────────────────────
2
- // CLI Command — pamp
3
- // ─────────────────────────────────────────────────────────────────────────────
4
- import { Command } from 'commander';
5
- import chalk from 'chalk';
6
- import inquirer from 'inquirer';
7
- import { getUserName, getUserHonorific } from '../state/manager.js';
8
- import { PampClient } from '../pamp/client.js';
9
- import { requireIdentity, loadIdentity, listContacts, listSessions, listMessages, loadMessage, loadThread, } from '../pamp/storage.js';
10
- export const pampCommand = new Command('pamp')
11
- .description('PAMP messaging — exchange encrypted messages with other Phaibel instances');
12
- // Default action — show status if set up, otherwise hint at setup
13
- pampCommand
14
- .action(async () => {
15
- const identity = await loadIdentity();
16
- if (!identity) {
17
- console.log(chalk.yellow(`PAMP not set up yet. Run ${chalk.bold('phaibel pamp setup')} to register a mailbox.`));
18
- return;
19
- }
20
- // Delegate to status
21
- await showStatus();
22
- });
23
- // ── pamp setup ──────────────────────────────────────────────────────────────
24
- pampCommand
25
- .command('setup')
26
- .description('Register a mailbox at a Post Office')
27
- .option('--post-office <url>', 'Post Office URL')
28
- .option('--name <name>', 'Display name for mailbox')
29
- .option('--id <id>', 'Preferred mailbox ID (8 chars, uppercase alphanumeric)')
30
- .action(async (opts) => {
31
- const hon = await getUserHonorific();
32
- const existing = await loadIdentity();
33
- if (existing) {
34
- console.log(chalk.yellow(`Already registered as ${chalk.bold(existing.address)}, ${hon}.`));
35
- console.log(chalk.gray('To re-register, remove ~/.phaibel/pamp/identity.json first.'));
36
- return;
37
- }
38
- let postOffice = opts.postOffice;
39
- if (!postOffice) {
40
- const answers = await inquirer.prompt([{
41
- type: 'input',
42
- name: 'postOffice',
43
- message: 'Post Office URL:',
44
- default: 'https://relay.phaibel.dev',
45
- }]);
46
- postOffice = answers.postOffice;
47
- }
48
- const userName = await getUserName();
49
- let displayName = opts.name;
50
- if (!displayName) {
51
- const answers = await inquirer.prompt([{
52
- type: 'input',
53
- name: 'displayName',
54
- message: 'Display name:',
55
- default: `${userName}'s Agent`,
56
- }]);
57
- displayName = answers.displayName;
58
- }
59
- const preferredId = opts.id ?? undefined;
60
- console.log(chalk.gray('Registering mailbox...'));
61
- try {
62
- const identity = await PampClient.register(postOffice, displayName, preferredId);
63
- console.log(chalk.green(`\nRegistered successfully, ${hon}!`));
64
- console.log(chalk.cyan(` Address: ${chalk.bold(identity.address)}`));
65
- console.log(chalk.gray(` Mailbox: ${identity.mailboxId}`));
66
- console.log(chalk.gray(` Post Office: ${identity.postOffice}`));
67
- console.log(chalk.gray(` Registered: ${identity.registeredAt}`));
68
- }
69
- catch (err) {
70
- console.log(chalk.red(`Registration failed: ${err instanceof Error ? err.message : err}`));
71
- }
72
- });
73
- // ── pamp status ─────────────────────────────────────────────────────────────
74
- pampCommand
75
- .command('status')
76
- .description('Show mailbox info, active agreements, unread count')
77
- .action(showStatus);
78
- async function showStatus() {
79
- const hon = await getUserHonorific();
80
- const identity = await requireIdentity();
81
- const client = new PampClient(identity);
82
- console.log(chalk.cyan(`\nPAMP Mailbox, ${hon}:\n`));
83
- console.log(` ${chalk.bold('Address:')} ${identity.address}`);
84
- console.log(` ${chalk.bold('Name:')} ${identity.displayName}`);
85
- console.log(` ${chalk.bold('Registered:')} ${identity.registeredAt}`);
86
- try {
87
- const unread = await client.listMessages({ unread: true });
88
- console.log(` ${chalk.bold('Unread:')} ${unread.length}`);
89
- }
90
- catch {
91
- console.log(chalk.gray(' (Could not reach Post Office for unread count)'));
92
- }
93
- try {
94
- const pending = await client.listPendingAgreements();
95
- if (pending.length > 0) {
96
- console.log(` ${chalk.bold('Pending:')} ${pending.length} agreement(s) waiting`);
97
- }
98
- }
99
- catch {
100
- // Silently skip
101
- }
102
- console.log('');
103
- }
104
- // ── pamp agree ──────────────────────────────────────────────────────────────
105
- pampCommand
106
- .command('agree <address>')
107
- .description('Initiate an agreement with another mailbox')
108
- .option('--type <type>', 'Agreement type', 'bilateral')
109
- .action(async (address, opts) => {
110
- const hon = await getUserHonorific();
111
- const identity = await requireIdentity();
112
- const client = new PampClient(identity);
113
- const type = opts.type;
114
- console.log(chalk.gray(`Requesting ${type} agreement with ${address}...`));
115
- try {
116
- const agreement = await client.requestAgreement(address, type);
117
- console.log(chalk.green(`\nAgreement requested, ${hon}!`));
118
- console.log(chalk.gray(` ID: ${agreement.agreementId}`));
119
- console.log(chalk.gray(` Status: ${agreement.status}`));
120
- console.log(chalk.gray(' Waiting for the other party to accept.'));
121
- }
122
- catch (err) {
123
- console.log(chalk.red(`Failed: ${err instanceof Error ? err.message : err}`));
124
- }
125
- });
126
- // ── pamp agreements ─────────────────────────────────────────────────────────
127
- pampCommand
128
- .command('agreements')
129
- .alias('agr')
130
- .description('List all agreements')
131
- .action(async () => {
132
- const contacts = await listContacts();
133
- const sessions = await listSessions();
134
- if (contacts.length === 0) {
135
- console.log(chalk.yellow('No agreements yet.'));
136
- return;
137
- }
138
- console.log(chalk.cyan('\nAgreements:\n'));
139
- for (const contact of contacts) {
140
- const session = sessions.find(s => s.agreementId === contact.agreementId);
141
- const status = session?.contactPublicKey ? chalk.green('active') : chalk.yellow('pending');
142
- const name = contact.displayName ? ` (${contact.displayName})` : '';
143
- console.log(` ${contact.address}${chalk.gray(name)}`);
144
- console.log(chalk.gray(` Agreement: ${contact.agreementId} Status: ${status}`));
145
- }
146
- console.log('');
147
- });
148
- // ── pamp accept ─────────────────────────────────────────────────────────────
149
- pampCommand
150
- .command('accept <agreement_id>')
151
- .description('Accept a pending agreement')
152
- .action(async (agreementId) => {
153
- const hon = await getUserHonorific();
154
- const identity = await requireIdentity();
155
- const client = new PampClient(identity);
156
- console.log(chalk.gray(`Accepting agreement ${agreementId}...`));
157
- try {
158
- const agreement = await client.acceptAgreement(agreementId);
159
- console.log(chalk.green(`\nAgreement accepted, ${hon}!`));
160
- console.log(chalk.gray(` With: ${agreement.initiator}`));
161
- console.log(chalk.gray(` Type: ${agreement.type}`));
162
- }
163
- catch (err) {
164
- console.log(chalk.red(`Failed: ${err instanceof Error ? err.message : err}`));
165
- }
166
- });
167
- // ── pamp revoke ─────────────────────────────────────────────────────────────
168
- pampCommand
169
- .command('revoke <agreement_id>')
170
- .description('Revoke an agreement (permanent)')
171
- .action(async (agreementId) => {
172
- const hon = await getUserHonorific();
173
- const identity = await requireIdentity();
174
- const client = new PampClient(identity);
175
- try {
176
- await client.revokeAgreement(agreementId);
177
- console.log(chalk.green(`Agreement ${agreementId} revoked, ${hon}.`));
178
- }
179
- catch (err) {
180
- console.log(chalk.red(`Failed: ${err instanceof Error ? err.message : err}`));
181
- }
182
- });
183
- // ── pamp send ───────────────────────────────────────────────────────────────
184
- pampCommand
185
- .command('send <address> [message]')
186
- .description('Send an encrypted message')
187
- .option('--reply-to <msg_id>', 'Reply to a message (threading)')
188
- .option('--content-type <type>', 'Content type', 'text/plain')
189
- .action(async (address, message, opts) => {
190
- const hon = await getUserHonorific();
191
- const identity = await requireIdentity();
192
- const client = new PampClient(identity);
193
- let body = message ?? '';
194
- if (!body) {
195
- const answers = await inquirer.prompt([{
196
- type: 'input',
197
- name: 'body',
198
- message: 'Message:',
199
- }]);
200
- body = answers.body;
201
- }
202
- console.log(chalk.gray('Sending...'));
203
- try {
204
- const msg = await client.sendMessage(address, body, opts.contentType, opts.replyTo);
205
- console.log(chalk.green(`\nMessage sent, ${hon}!`));
206
- console.log(chalk.gray(` ID: ${msg.header.message_id}`));
207
- console.log(chalk.gray(` To: ${address}`));
208
- }
209
- catch (err) {
210
- console.log(chalk.red(`Failed: ${err instanceof Error ? err.message : err}`));
211
- }
212
- });
213
- // ── pamp inbox ──────────────────────────────────────────────────────────────
214
- pampCommand
215
- .command('inbox')
216
- .description('List received messages')
217
- .option('--local', 'Show only locally stored messages')
218
- .action(async (opts) => {
219
- const identity = await requireIdentity();
220
- if (opts.local) {
221
- const messages = await listMessages('inbox');
222
- displayMessageList(messages);
223
- return;
224
- }
225
- const client = new PampClient(identity);
226
- try {
227
- const headers = await client.listMessages();
228
- if (headers.length === 0) {
229
- console.log(chalk.yellow('\nInbox is empty.'));
230
- return;
231
- }
232
- console.log(chalk.cyan(`\nInbox (${headers.length} message(s)):\n`));
233
- for (const h of headers) {
234
- const read = h.read_at ? chalk.gray('read') : chalk.green('new');
235
- const id = h.message_id.substring(0, 12);
236
- console.log(` ${read} ${chalk.bold(id)} from ${h.from} ${chalk.gray(h.created_at)}`);
237
- }
238
- console.log('');
239
- }
240
- catch (err) {
241
- console.log(chalk.red(`Failed to fetch inbox: ${err instanceof Error ? err.message : err}`));
242
- // Fall back to local
243
- const messages = await listMessages('inbox');
244
- displayMessageList(messages);
245
- }
246
- });
247
- function displayMessageList(messages) {
248
- if (messages.length === 0) {
249
- console.log(chalk.yellow('\nNo messages.'));
250
- return;
251
- }
252
- console.log(chalk.cyan(`\nMessages (${messages.length}):\n`));
253
- const sorted = [...messages].sort((a, b) => new Date(b.header.created_at).getTime() - new Date(a.header.created_at).getTime());
254
- for (const msg of sorted) {
255
- const read = msg.header.read_at ? chalk.gray('read') : chalk.green('new');
256
- const id = msg.header.message_id.substring(0, 12);
257
- console.log(` ${read} ${chalk.bold(id)} from ${msg.header.from} ${chalk.gray(msg.header.created_at)}`);
258
- }
259
- console.log('');
260
- }
261
- // ── pamp read ───────────────────────────────────────────────────────────────
262
- pampCommand
263
- .command('read <msg_id>')
264
- .description('Read and decrypt a message')
265
- .action(async (msgId) => {
266
- const identity = await requireIdentity();
267
- const client = new PampClient(identity);
268
- // Check local first
269
- let message = await loadMessage(msgId, 'inbox');
270
- if (!message) {
271
- console.log(chalk.gray('Fetching from Post Office...'));
272
- try {
273
- message = await client.fetchAndDecryptMessage(msgId);
274
- await client.markRead(msgId);
275
- }
276
- catch (err) {
277
- console.log(chalk.red(`Failed: ${err instanceof Error ? err.message : err}`));
278
- return;
279
- }
280
- }
281
- console.log(chalk.cyan('\n── Message ──────────────────────────────'));
282
- console.log(` ${chalk.bold('ID:')} ${message.header.message_id}`);
283
- console.log(` ${chalk.bold('From:')} ${message.header.from}`);
284
- console.log(` ${chalk.bold('To:')} ${message.header.to}`);
285
- console.log(` ${chalk.bold('Date:')} ${message.header.created_at}`);
286
- console.log(` ${chalk.bold('Type:')} ${message.header.content_type}`);
287
- if (message.header.chain.length > 0) {
288
- console.log(` ${chalk.bold('Chain:')} ${message.header.chain.join(' → ')}`);
289
- }
290
- console.log(chalk.cyan('─────────────────────────────────────────'));
291
- console.log(`\n${message.body}\n`);
292
- });
293
- // ── pamp thread ─────────────────────────────────────────────────────────────
294
- pampCommand
295
- .command('thread <msg_id>')
296
- .description('Show conversation thread')
297
- .action(async (msgId) => {
298
- const identity = await requireIdentity();
299
- const messageIds = await loadThread(msgId);
300
- if (!messageIds || messageIds.length === 0) {
301
- console.log(chalk.yellow(`No thread found for ${msgId}.`));
302
- return;
303
- }
304
- console.log(chalk.cyan(`\nThread (${messageIds.length} message(s)):\n`));
305
- for (const id of messageIds) {
306
- const inboxMsg = await loadMessage(id, 'inbox');
307
- const sentMsg = await loadMessage(id, 'sent');
308
- const msg = inboxMsg ?? sentMsg;
309
- if (!msg) {
310
- console.log(chalk.gray(` ? ${id} (not found locally)`));
311
- continue;
312
- }
313
- const isSent = msg.header.from === identity.address;
314
- const arrow = isSent ? chalk.blue('→') : chalk.green('←');
315
- const peer = isSent ? msg.header.to : msg.header.from;
316
- const preview = msg.body.length > 80 ? msg.body.substring(0, 77) + '...' : msg.body;
317
- console.log(` ${arrow} ${chalk.gray(msg.header.created_at)} ${peer}`);
318
- console.log(` ${preview}`);
319
- console.log('');
320
- }
321
- });
322
- export default pampCommand;
323
- //# sourceMappingURL=pamp.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pamp.js","sourceRoot":"","sources":["../../src/commands/pamp.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare const personCommand: Command;
3
- export default personCommand;
4
- //# sourceMappingURL=person.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"person.d.ts","sourceRoot":"","sources":["../../src/commands/person.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqJpC,eAAO,MAAM,aAAa,SAyFpB,CAAC;AAEP,eAAe,aAAa,CAAC"}
@@ -1,185 +0,0 @@
1
- import { Command } from 'commander';
2
- import chalk from 'chalk';
3
- import inquirer from 'inquirer';
4
- import path from 'path';
5
- import { getResponse } from '../responses.js';
6
- import { createEntityMeta, ensureEntityDir, writeEntity, findEntityByTitle, trashEntity, entityFilename, } from '../entities/entity.js';
7
- import { listEntities } from './list.js';
8
- import { getEntityIndex } from '../entities/entity-index.js';
9
- async function savePerson(state) {
10
- const dir = await ensureEntityDir('person');
11
- const meta = createEntityMeta('person', state.name, {
12
- tags: state.tags,
13
- });
14
- const id = meta.id;
15
- const filepath = state.filepath ?? path.join(dir, entityFilename(state.name, id));
16
- const fullMeta = {
17
- ...meta,
18
- id,
19
- company: state.company || undefined,
20
- group: state.group || undefined,
21
- phone: state.phone || undefined,
22
- email: state.email || undefined,
23
- handle: state.handle || undefined,
24
- };
25
- await writeEntity(filepath, fullMeta, state.content);
26
- // Update entity index
27
- const index = getEntityIndex();
28
- if (index.isBuilt) {
29
- await index.addOrUpdate('person', id, state.name, filepath);
30
- }
31
- return filepath;
32
- }
33
- // ─────────────────────────────────────────────────────────────────────────────
34
- // EDIT
35
- // ─────────────────────────────────────────────────────────────────────────────
36
- async function editPerson(titleOrFilename) {
37
- const found = await findEntityByTitle('person', titleOrFilename);
38
- if (!found) {
39
- console.log(chalk.red(`Person not found: ${titleOrFilename}`));
40
- return;
41
- }
42
- const { filepath, meta, content } = found;
43
- const answers = await inquirer.prompt([
44
- { type: 'input', name: 'name', message: 'Name:', default: meta.title },
45
- { type: 'input', name: 'company', message: 'Company:', default: meta.company ?? '' },
46
- { type: 'input', name: 'group', message: 'Group:', default: meta.group ?? '' },
47
- { type: 'input', name: 'phone', message: 'Phone:', default: meta.phone ?? '' },
48
- { type: 'input', name: 'email', message: 'Email:', default: meta.email ?? '' },
49
- { type: 'input', name: 'handle', message: 'Handle (@):', default: meta.handle ?? '' },
50
- { type: 'input', name: 'tags', message: 'Tags (comma-separated):', default: Array.isArray(meta.tags) ? meta.tags.join(', ') : '' },
51
- { type: 'editor', name: 'content', message: 'Notes about this person:', default: content },
52
- ]);
53
- const updatedMeta = {
54
- ...meta,
55
- title: answers.name,
56
- company: answers.company || undefined,
57
- group: answers.group || undefined,
58
- phone: answers.phone || undefined,
59
- email: answers.email || undefined,
60
- handle: answers.handle || undefined,
61
- tags: answers.tags ? answers.tags.split(',').map((t) => t.trim()).filter(Boolean) : [],
62
- };
63
- await writeEntity(filepath, updatedMeta, answers.content);
64
- // Update entity index
65
- const index = getEntityIndex();
66
- if (index.isBuilt) {
67
- const personId = updatedMeta.id;
68
- await index.addOrUpdate('person', personId, answers.name, filepath);
69
- }
70
- console.log(chalk.green(`\nāœ“ Person updated: ${answers.name}`));
71
- }
72
- // ─────────────────────────────────────────────────────────────────────────────
73
- // DELETE
74
- // ─────────────────────────────────────────────────────────────────────────────
75
- async function deletePerson(titleOrFilename) {
76
- const found = await findEntityByTitle('person', titleOrFilename);
77
- if (!found) {
78
- console.log(chalk.red(`Person not found: ${titleOrFilename}`));
79
- return;
80
- }
81
- const { confirm } = await inquirer.prompt([{
82
- type: 'confirm',
83
- name: 'confirm',
84
- message: `Delete "${found.meta.title}"?`,
85
- default: false,
86
- }]);
87
- if (confirm) {
88
- const trashPath = await trashEntity(found.filepath);
89
- // Update entity index
90
- const index = getEntityIndex();
91
- if (index.isBuilt) {
92
- index.remove('person', found.meta.id);
93
- }
94
- console.log(chalk.green(`šŸ—‘ Moved to trash: ${found.meta.title}`));
95
- console.log(chalk.gray(` ${trashPath}`));
96
- }
97
- }
98
- // ─────────────────────────────────────────────────────────────────────────────
99
- // COMMAND
100
- // ─────────────────────────────────────────────────────────────────────────────
101
- export const personCommand = new Command('person')
102
- .description('Manage people / contacts')
103
- .argument('[action]', 'Action: create (default), list, edit, delete')
104
- .argument('[name...]', 'Person name or identifier')
105
- .action(async (action, nameWords) => {
106
- try {
107
- // Route to subcommands
108
- if (action === 'list') {
109
- await listEntities('people');
110
- return;
111
- }
112
- if (action === 'edit') {
113
- const name = nameWords?.join(' ');
114
- if (!name) {
115
- console.log(chalk.red('Please provide a name: person edit <name>'));
116
- return;
117
- }
118
- await editPerson(name);
119
- return;
120
- }
121
- if (action === 'delete' || action === 'remove') {
122
- const name = nameWords?.join(' ');
123
- if (!name) {
124
- console.log(chalk.red('Please provide a name: person delete <name>'));
125
- return;
126
- }
127
- await deletePerson(name);
128
- return;
129
- }
130
- // ── Create (default action) ─────────────────────────────────────
131
- let personName = action;
132
- if (nameWords && nameWords.length > 0 && action && action !== 'create') {
133
- personName = [action, ...nameWords].join(' ');
134
- }
135
- else if (action === 'create') {
136
- personName = nameWords?.join(' ') || undefined;
137
- }
138
- if (!personName) {
139
- const { inputName } = await inquirer.prompt([{
140
- type: 'input',
141
- name: 'inputName',
142
- message: 'Person\'s name:',
143
- validate: (input) => input.trim().length > 0 || 'Name is required',
144
- }]);
145
- personName = inputName;
146
- }
147
- // Check if person already exists
148
- const existing = await findEntityByTitle('person', personName);
149
- if (existing) {
150
- console.log(chalk.yellow(`\nPerson "${existing.meta.title}" already exists. Use 'person edit ${personName}' to update.`));
151
- return;
152
- }
153
- // Prompt for fields
154
- const answers = await inquirer.prompt([
155
- { type: 'input', name: 'company', message: 'Company:' },
156
- { type: 'input', name: 'group', message: 'Group/Team:' },
157
- { type: 'input', name: 'phone', message: 'Phone:' },
158
- { type: 'input', name: 'email', message: 'Email:' },
159
- { type: 'input', name: 'handle', message: 'Handle (@ Slack/Teams):' },
160
- { type: 'input', name: 'tags', message: 'Tags (comma-separated):' },
161
- { type: 'input', name: 'content', message: 'Notes (optional):' },
162
- ]);
163
- const state = {
164
- name: personName,
165
- company: answers.company,
166
- group: answers.group,
167
- phone: answers.phone,
168
- email: answers.email,
169
- handle: answers.handle,
170
- tags: answers.tags ? answers.tags.split(',').map((t) => t.trim()).filter(Boolean) : [],
171
- content: answers.content || '',
172
- isExisting: false,
173
- };
174
- const filepath = await savePerson(state);
175
- const msg = getResponse('task_saved');
176
- console.log(chalk.green(`\n${msg}`));
177
- console.log(chalk.gray(` šŸ‘¤ ${personName} → ${path.basename(filepath)}`));
178
- }
179
- catch (error) {
180
- const errMsg = getResponse('error');
181
- console.error(chalk.red(`\n${errMsg}`), error);
182
- }
183
- });
184
- export default personCommand;
185
- //# sourceMappingURL=person.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"person.js","sourceRoot":"","sources":["../../src/commands/person.ts"],"names":[],"mappings":"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"}
@@ -1,4 +0,0 @@
1
- import { Command } from 'commander';
2
- export declare const projectCommand: Command;
3
- export default projectCommand;
4
- //# sourceMappingURL=project.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/commands/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,eAAO,MAAM,cAAc,SACQ,CAAC;AAyEpC,eAAe,cAAc,CAAC"}
@@ -1,70 +0,0 @@
1
- import { Command } from 'commander';
2
- import chalk from 'chalk';
3
- import { getActiveProject, setActiveProject, listProjects, createProject, projectExists, } from '../state/manager.js';
4
- export const projectCommand = new Command('project')
5
- .description('Manage projects');
6
- // Default action - show current project
7
- projectCommand
8
- .action(async () => {
9
- const active = await getActiveProject();
10
- if (active) {
11
- console.log(chalk.cyan(`šŸŽÆ Active project: ${chalk.bold(active)}`));
12
- }
13
- else {
14
- console.log(chalk.yellow('No active project, sir. Use `dobbi project switch <name>` to set one.'));
15
- }
16
- });
17
- // List projects
18
- projectCommand
19
- .command('list')
20
- .alias('ls')
21
- .description('List all projects')
22
- .action(async () => {
23
- const projects = await listProjects();
24
- const active = await getActiveProject();
25
- if (projects.length === 0) {
26
- console.log(chalk.yellow('No projects yet, sir. Create one with `dobbi project new <name>`'));
27
- return;
28
- }
29
- console.log(chalk.cyan('\nšŸ“ Projects:\n'));
30
- for (const project of projects) {
31
- if (project === active) {
32
- console.log(chalk.green(` ā— ${project} (active)`));
33
- }
34
- else {
35
- console.log(chalk.gray(` ā—‹ ${project}`));
36
- }
37
- }
38
- console.log('');
39
- });
40
- // Switch project
41
- projectCommand
42
- .command('switch <name>')
43
- .description('Switch to a project')
44
- .action(async (name) => {
45
- const exists = await projectExists(name);
46
- if (!exists) {
47
- console.log(chalk.red(`Project "${name}" does not exist, sir.`));
48
- console.log(chalk.gray(`Create it with: dobbi project new ${name}`));
49
- return;
50
- }
51
- await setActiveProject(name);
52
- console.log(chalk.green(`āœ“ Switched to project "${name}", sir!`));
53
- });
54
- // Create new project
55
- projectCommand
56
- .command('new <name>')
57
- .description('Create a new project')
58
- .action(async (name) => {
59
- const exists = await projectExists(name);
60
- if (exists) {
61
- console.log(chalk.yellow(`Project "${name}" already exists, sir.`));
62
- return;
63
- }
64
- console.log(chalk.gray(`Creating project "${name}"...`));
65
- await createProject(name);
66
- await setActiveProject(name);
67
- console.log(chalk.green(`āœ“ Created and switched to project "${name}", sir!`));
68
- });
69
- export default projectCommand;
70
- //# sourceMappingURL=project.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/commands/project.ts"],"names":[],"mappings":"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"}