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
package/dist/dobbie.txt DELETED
@@ -1,55 +0,0 @@
1
- .......
2
- .:------::::...
3
- .-==------::::::..
4
- ..:==---------::::--:...
5
- ....::::-=+++====-----====-------:.....
6
- .-=+***++=++++***++=:=+***=+====****+=-..
7
- .:=+===++***++++*#*++-::-+*+-===+##*+==++=:.
8
- .:==++++++****+++++==+=::::----===*#*+*+++++:.
9
- ..--===++++++*+++===++++==-==--===+**++++-::=-.
10
- .:==++++++===++++++++========--=-:........
11
- ..::..:==+++++==+--=+==:......
12
- .. ..-=+++*****+++=:.
13
- ..-=========-....
14
- ..+*++++++==:.....
15
- .....=*+++++++==-=+:....
16
- .:::---=+======-:::-:.::..
17
- -=-:---======---::::...:....
18
- ..-==::::::--==---::...:.:--:..
19
- .:==-::::::::::::..:-=-:::-=-:.
20
- .-==:::::::::::::-=#%%*-::==--..
21
- ..==+:::::::::::-+%@@%+*#*-++=-:..
22
- .:=-=:::::::::-*%@@@%*+=--:-==--..
23
- .=--=:::::::::-#%@@@*=--:---:-=-:..
24
- .----=--::::::-::=%%%*+=====-:--==:.
25
- :=---+---::-::--:--==+====--===----.
26
- -==--==------::------=%@@@%#+=====-..
27
- :===---::-----------=*#%%%%%*..---:.
28
- ..:-==---::::-===========--=-......
29
- ..:-===-------======---=++-......
30
- .:-==--===========-=+*+-:......
31
- .-::::--====-====+*+==--:......
32
- .-----:::--===-=****+=::.......
33
- .:--::::::-----------:::...
34
- ..::::::---------::::::...
35
- ..::::::---:..:======-.
36
- ..::::::::....-==--=-.
37
- ..:::::-:.....:==----...
38
- .-==--=:. .==----...
39
- .-====-.. .===-=-...
40
- .-====-.. .-=====..
41
- .:=====.. :=====:....
42
- .:=====:. -==---...
43
- .:-=--=:. :==---....
44
- .:==-=-.. :==---...
45
- .:====:.. .====-...
46
- :====:. ..-===:...
47
- .:====... .:==-:...
48
- ..-====:.... .:==--...
49
- .-=====:......-===-::..
50
- .:==---==:.... .====-:::...
51
- .:-=-----==:.... .=====-::::::...
52
- ..-====-----:..... .:-===--:-----:..
53
- .=======---:...... ..:-=---=--==:.
54
- .:====----....... .-==--=--:..
55
- .....::.. ..::......
@@ -1,11 +0,0 @@
1
- import type { Context } from '../../context/context.js';
2
- import type { Result } from '../../result/result.js';
3
- import type { ConfigurationDescription, ResultDescription } from '../../configuration/configuration-description.js';
4
- import { AbstractNodeCode } from '../abstract-node-code.js';
5
- export declare class DobbaiSpeakNodeCode extends AbstractNodeCode {
6
- static readonly configDescriptions: ConfigurationDescription[];
7
- static readonly resultDescriptions: ResultDescription[];
8
- constructor();
9
- process(context: Context): Promise<Result>;
10
- }
11
- //# sourceMappingURL=dobbai-speak-node-code.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dobbai-speak-node-code.d.ts","sourceRoot":"","sources":["../../../../src/feral/node-code/output/dobbai-speak-node-code.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,KAAK,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,kDAAkD,CAAC;AACpH,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAI5D,qBAAa,mBAAoB,SAAQ,gBAAgB;IACrD,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,wBAAwB,EAAE,CAI5D;IACF,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,CAGrD;;IAMI,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;CAqCnD"}
@@ -1,56 +0,0 @@
1
- // ─────────────────────────────────────────────────────────────────────────────
2
- // Feral CCF — Dobbai Speak NodeCode
3
- // ─────────────────────────────────────────────────────────────────────────────
4
- import { ResultStatus } from '../../result/result.js';
5
- import { AbstractNodeCode } from '../abstract-node-code.js';
6
- import { NodeCodeCategory } from '../node-code.js';
7
- import { getResponseWith } from '../../../responses.js';
8
- export class DobbaiSpeakNodeCode extends AbstractNodeCode {
9
- static configDescriptions = [
10
- { key: 'response_key', name: 'Response Key', description: 'Key from the Dobbai response catalog (e.g. greeting, task_saved, error).', type: 'string' },
11
- { key: 'context_path', name: 'Context Path', description: 'Where to store the rendered message.', type: 'string', default: 'output', isOptional: true },
12
- { key: 'extra_tokens', name: 'Extra Tokens', description: 'Comma-separated key=context_path mappings for custom token replacement.', type: 'string', isOptional: true },
13
- ];
14
- static resultDescriptions = [
15
- { status: ResultStatus.OK, description: 'Message rendered and stored in context.' },
16
- { status: ResultStatus.ERROR, description: 'Invalid response key or rendering failure.' },
17
- ];
18
- constructor() {
19
- super('dobbai_speak', 'Dobbai Speak', 'Picks a random response from the catalog, replaces tokens with context values, and stores the result.', NodeCodeCategory.WORK);
20
- }
21
- async process(context) {
22
- const responseKey = this.getRequiredConfigValue('response_key');
23
- const contextPath = this.getOptionalConfigValue('context_path', 'output');
24
- const extraTokens = this.getOptionalConfigValue('extra_tokens', '');
25
- try {
26
- // {name} is auto-substituted by getResponseWith
27
- // Build replacement map for any extra tokens
28
- const replacements = {};
29
- // Parse extra_tokens: "title=entity_title,count=item_count"
30
- if (extraTokens) {
31
- for (const pair of extraTokens.split(',')) {
32
- const [tokenName, ctxKey] = pair.split('=').map(s => s.trim());
33
- if (tokenName && ctxKey) {
34
- replacements[tokenName] = String(context.get(ctxKey) ?? '');
35
- }
36
- }
37
- }
38
- // Also pull any {key} tokens from context directly
39
- const message = getResponseWith(responseKey, replacements);
40
- // Do a second pass to replace any remaining {key} tokens with context values
41
- const finalMessage = message.replace(/\{(\w+)\}/g, (_match, key) => {
42
- if (key in replacements)
43
- return replacements[key];
44
- const ctxVal = context.get(key);
45
- return ctxVal != null ? String(ctxVal) : _match;
46
- });
47
- context.set(contextPath, finalMessage);
48
- return this.result(ResultStatus.OK, finalMessage);
49
- }
50
- catch (error) {
51
- const msg = error instanceof Error ? error.message : String(error);
52
- return this.result(ResultStatus.ERROR, `Dobbai speak failed for "${responseKey}": ${msg}`);
53
- }
54
- }
55
- }
56
- //# sourceMappingURL=dobbai-speak-node-code.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dobbai-speak-node-code.js","sourceRoot":"","sources":["../../../../src/feral/node-code/output/dobbai-speak-node-code.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,oCAAoC;AACpC,gFAAgF;AAIhF,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAoB,MAAM,uBAAuB,CAAC;AAE1E,MAAM,OAAO,mBAAoB,SAAQ,gBAAgB;IACrD,MAAM,CAAU,kBAAkB,GAA+B;QAC7D,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,0EAA0E,EAAE,IAAI,EAAE,QAAQ,EAAE;QACtJ,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,sCAAsC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE;QACvJ,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,yEAAyE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE;KAC1K,CAAC;IACF,MAAM,CAAU,kBAAkB,GAAwB;QACtD,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,EAAE,WAAW,EAAE,yCAAyC,EAAE;QACnF,EAAE,MAAM,EAAE,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,4CAA4C,EAAE;KAC5F,CAAC;IAEF;QACI,KAAK,CAAC,cAAc,EAAE,cAAc,EAAE,uGAAuG,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC1K,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAgB;QAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAW,CAAC;QAC1E,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE,QAAQ,CAAW,CAAC;QACpF,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE,EAAE,CAAW,CAAC;QAE9E,IAAI,CAAC;YACD,gDAAgD;YAChD,6CAA6C;YAC7C,MAAM,YAAY,GAA2B,EAAE,CAAC;YAEhD,4DAA4D;YAC5D,IAAI,WAAW,EAAE,CAAC;gBACd,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;oBACxC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC/D,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;wBACtB,YAAY,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;oBAChE,CAAC;gBACL,CAAC;YACL,CAAC;YAED,mDAAmD;YACnD,MAAM,OAAO,GAAG,eAAe,CAAC,WAA0B,EAAE,YAAY,CAAC,CAAC;YAE1E,6EAA6E;YAC7E,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,MAAc,EAAE,GAAW,EAAE,EAAE;gBAC/E,IAAI,GAAG,IAAI,YAAY;oBAAE,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;gBAClD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAChC,OAAO,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACpD,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;YACvC,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnE,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,4BAA4B,WAAW,MAAM,GAAG,EAAE,CAAC,CAAC;QAC/F,CAAC;IACL,CAAC"}
@@ -1,15 +0,0 @@
1
- import type { Context } from '../../context/context.js';
2
- import type { Result } from '../../result/result.js';
3
- import type { ConfigurationDescription, ResultDescription } from '../../configuration/configuration-description.js';
4
- import { AbstractNodeCode } from '../abstract-node-code.js';
5
- export declare class AgentSpeakNodeCode extends AbstractNodeCode {
6
- static readonly configDescriptions: ConfigurationDescription[];
7
- static readonly resultDescriptions: ResultDescription[];
8
- constructor();
9
- process(context: Context): Promise<Result>;
10
- }
11
- /**
12
- * @deprecated Use AgentSpeakNodeCode instead
13
- */
14
- export declare const DobbiSpeakNodeCode: typeof AgentSpeakNodeCode;
15
- //# sourceMappingURL=dobbi-speak-node-code.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dobbi-speak-node-code.d.ts","sourceRoot":"","sources":["../../../../src/feral/node-code/output/dobbi-speak-node-code.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,KAAK,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,kDAAkD,CAAC;AACpH,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAI5D,qBAAa,kBAAmB,SAAQ,gBAAgB;IACpD,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,wBAAwB,EAAE,CAI5D;IACF,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,CAGrD;;IAMI,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;CAqCnD;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB,2BAAqB,CAAC"}
@@ -1,60 +0,0 @@
1
- // ─────────────────────────────────────────────────────────────────────────────
2
- // Feral CCF — Agent Speak NodeCode
3
- // ─────────────────────────────────────────────────────────────────────────────
4
- import { ResultStatus } from '../../result/result.js';
5
- import { AbstractNodeCode } from '../abstract-node-code.js';
6
- import { NodeCodeCategory } from '../node-code.js';
7
- import { getResponseWith } from '../../../responses.js';
8
- export class AgentSpeakNodeCode extends AbstractNodeCode {
9
- static configDescriptions = [
10
- { key: 'response_key', name: 'Response Key', description: 'Key from the response catalog (e.g. greeting, task_saved, error).', type: 'string' },
11
- { key: 'context_path', name: 'Context Path', description: 'Where to store the rendered message.', type: 'string', default: 'output', isOptional: true },
12
- { key: 'extra_tokens', name: 'Extra Tokens', description: 'Comma-separated key=context_path mappings for custom token replacement.', type: 'string', isOptional: true },
13
- ];
14
- static resultDescriptions = [
15
- { status: ResultStatus.OK, description: 'Message rendered and stored in context.' },
16
- { status: ResultStatus.ERROR, description: 'Invalid response key or rendering failure.' },
17
- ];
18
- constructor() {
19
- super('agent_speak', 'Agent Speak', 'Picks a random response from the catalog, replaces tokens with context values, and stores the result.', NodeCodeCategory.WORK);
20
- }
21
- async process(context) {
22
- const responseKey = this.getRequiredConfigValue('response_key');
23
- const contextPath = this.getOptionalConfigValue('context_path', 'output');
24
- const extraTokens = this.getOptionalConfigValue('extra_tokens', '');
25
- try {
26
- // {name} is auto-substituted by getResponseWith
27
- // Build replacement map for any extra tokens
28
- const replacements = {};
29
- // Parse extra_tokens: "title=entity_title,count=item_count"
30
- if (extraTokens) {
31
- for (const pair of extraTokens.split(',')) {
32
- const [tokenName, ctxKey] = pair.split('=').map(s => s.trim());
33
- if (tokenName && ctxKey) {
34
- replacements[tokenName] = String(context.get(ctxKey) ?? '');
35
- }
36
- }
37
- }
38
- // Also pull any {key} tokens from context directly
39
- const message = getResponseWith(responseKey, replacements);
40
- // Do a second pass to replace any remaining {key} tokens with context values
41
- const finalMessage = message.replace(/\{(\w+)\}/g, (_match, key) => {
42
- if (key in replacements)
43
- return replacements[key];
44
- const ctxVal = context.get(key);
45
- return ctxVal != null ? String(ctxVal) : _match;
46
- });
47
- context.set(contextPath, finalMessage);
48
- return this.result(ResultStatus.OK, finalMessage);
49
- }
50
- catch (error) {
51
- const msg = error instanceof Error ? error.message : String(error);
52
- return this.result(ResultStatus.ERROR, `Agent speak failed for "${responseKey}": ${msg}`);
53
- }
54
- }
55
- }
56
- /**
57
- * @deprecated Use AgentSpeakNodeCode instead
58
- */
59
- export const DobbiSpeakNodeCode = AgentSpeakNodeCode;
60
- //# sourceMappingURL=dobbi-speak-node-code.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dobbi-speak-node-code.js","sourceRoot":"","sources":["../../../../src/feral/node-code/output/dobbi-speak-node-code.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,mCAAmC;AACnC,gFAAgF;AAIhF,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAoB,MAAM,uBAAuB,CAAC;AAE1E,MAAM,OAAO,kBAAmB,SAAQ,gBAAgB;IACpD,MAAM,CAAU,kBAAkB,GAA+B;QAC7D,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,mEAAmE,EAAE,IAAI,EAAE,QAAQ,EAAE;QAC/I,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,sCAAsC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE;QACvJ,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,yEAAyE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE;KAC1K,CAAC;IACF,MAAM,CAAU,kBAAkB,GAAwB;QACtD,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,EAAE,WAAW,EAAE,yCAAyC,EAAE;QACnF,EAAE,MAAM,EAAE,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,4CAA4C,EAAE;KAC5F,CAAC;IAEF;QACI,KAAK,CAAC,aAAa,EAAE,aAAa,EAAE,uGAAuG,EAAE,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACxK,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAgB;QAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,cAAc,CAAW,CAAC;QAC1E,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE,QAAQ,CAAW,CAAC;QACpF,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,cAAc,EAAE,EAAE,CAAW,CAAC;QAE9E,IAAI,CAAC;YACD,gDAAgD;YAChD,6CAA6C;YAC7C,MAAM,YAAY,GAA2B,EAAE,CAAC;YAEhD,4DAA4D;YAC5D,IAAI,WAAW,EAAE,CAAC;gBACd,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;oBACxC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;oBAC/D,IAAI,SAAS,IAAI,MAAM,EAAE,CAAC;wBACtB,YAAY,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;oBAChE,CAAC;gBACL,CAAC;YACL,CAAC;YAED,mDAAmD;YACnD,MAAM,OAAO,GAAG,eAAe,CAAC,WAA0B,EAAE,YAAY,CAAC,CAAC;YAE1E,6EAA6E;YAC7E,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,MAAc,EAAE,GAAW,EAAE,EAAE;gBAC/E,IAAI,GAAG,IAAI,YAAY;oBAAE,OAAO,YAAY,CAAC,GAAG,CAAC,CAAC;gBAClD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBAChC,OAAO,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACpD,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;YACvC,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACnE,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,2BAA2B,WAAW,MAAM,GAAG,EAAE,CAAC,CAAC;QAC9F,CAAC;IACL,CAAC;;AAGL;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,kBAAkB,CAAC"}
@@ -1,11 +0,0 @@
1
- import type { Context } from '../../context/context.js';
2
- import type { Result } from '../../result/result.js';
3
- import type { ConfigurationDescription, ResultDescription } from '../../configuration/configuration-description.js';
4
- import { AbstractNodeCode } from '../abstract-node-code.js';
5
- export declare class DobbieSpeakNodeCode extends AbstractNodeCode {
6
- static readonly configDescriptions: ConfigurationDescription[];
7
- static readonly resultDescriptions: ResultDescription[];
8
- constructor();
9
- process(context: Context): Promise<Result>;
10
- }
11
- //# sourceMappingURL=dobbie-speak-node-code.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dobbie-speak-node-code.d.ts","sourceRoot":"","sources":["../../../../src/feral/node-code/output/dobbie-speak-node-code.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAErD,OAAO,KAAK,EAAE,wBAAwB,EAAE,iBAAiB,EAAE,MAAM,kDAAkD,CAAC;AACpH,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAI5D,qBAAa,mBAAoB,SAAQ,gBAAgB;IACrD,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,wBAAwB,EAAE,CAI5D;IACF,MAAM,CAAC,QAAQ,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,CAGrD;;IAMI,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;CAqCnD"}
@@ -1,56 +0,0 @@
1
- // ─────────────────────────────────────────────────────────────────────────────
2
- // Feral CCF — Dobbie Speak NodeCode
3
- // ─────────────────────────────────────────────────────────────────────────────
4
- import { ResultStatus } from '../../result/result.js';
5
- import { AbstractNodeCode } from '../abstract-node-code.js';
6
- import { NodeCodeCategory } from '../node-code.js';
7
- import { getResponseWith } from '../../../responses.js';
8
- export class DobbieSpeakNodeCode extends AbstractNodeCode {
9
- static configDescriptions = [
10
- { key: 'response_key', name: 'Response Key', description: 'Key from the Dobbie response catalog (e.g. greeting, task_saved, error).', type: 'string' },
11
- { key: 'context_path', name: 'Context Path', description: 'Where to store the rendered message.', type: 'string', default: 'output', isOptional: true },
12
- { key: 'extra_tokens', name: 'Extra Tokens', description: 'Comma-separated key=context_path mappings for custom token replacement.', type: 'string', isOptional: true },
13
- ];
14
- static resultDescriptions = [
15
- { status: ResultStatus.OK, description: 'Message rendered and stored in context.' },
16
- { status: ResultStatus.ERROR, description: 'Invalid response key or rendering failure.' },
17
- ];
18
- constructor() {
19
- super('dobbie_speak', 'Dobbie Speak', 'Picks a random response from the catalog, replaces tokens with context values, and stores the result.', NodeCodeCategory.WORK);
20
- }
21
- async process(context) {
22
- const responseKey = this.getRequiredConfigValue('response_key');
23
- const contextPath = this.getOptionalConfigValue('context_path', 'output');
24
- const extraTokens = this.getOptionalConfigValue('extra_tokens', '');
25
- try {
26
- // {name} is auto-substituted by getResponseWith
27
- // Build replacement map for any extra tokens
28
- const replacements = {};
29
- // Parse extra_tokens: "title=entity_title,count=item_count"
30
- if (extraTokens) {
31
- for (const pair of extraTokens.split(',')) {
32
- const [tokenName, ctxKey] = pair.split('=').map(s => s.trim());
33
- if (tokenName && ctxKey) {
34
- replacements[tokenName] = String(context.get(ctxKey) ?? '');
35
- }
36
- }
37
- }
38
- // Also pull any {key} tokens from context directly
39
- const message = getResponseWith(responseKey, replacements);
40
- // Do a second pass to replace any remaining {key} tokens with context values
41
- const finalMessage = message.replace(/\{(\w+)\}/g, (_match, key) => {
42
- if (key in replacements)
43
- return replacements[key];
44
- const ctxVal = context.get(key);
45
- return ctxVal != null ? String(ctxVal) : _match;
46
- });
47
- context.set(contextPath, finalMessage);
48
- return this.result(ResultStatus.OK, finalMessage);
49
- }
50
- catch (error) {
51
- const msg = error instanceof Error ? error.message : String(error);
52
- return this.result(ResultStatus.ERROR, `Dobbie speak failed for "${responseKey}": ${msg}`);
53
- }
54
- }
55
- }
56
- //# sourceMappingURL=dobbie-speak-node-code.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dobbie-speak-node-code.js","sourceRoot":"","sources":["../../../../src/feral/node-code/output/dobbie-speak-node-code.ts"],"names":[],"mappings":"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"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Analyze recent execution logs to find patterns and create reusable processes.
3
- * Intended to be run as a cron job.
4
- */
5
- export declare function evaluateProcesses(): Promise<string>;
6
- //# sourceMappingURL=process-evaluator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"process-evaluator.d.ts","sourceRoot":"","sources":["../../../src/service/cron/process-evaluator.ts"],"names":[],"mappings":"AAYA;;;GAGG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAkIzD"}
@@ -1,126 +0,0 @@
1
- // ─────────────────────────────────────────────────────────────────────────────
2
- // Process Evaluator — background learner that synthesizes reusable processes
3
- // from execution logs.
4
- // ─────────────────────────────────────────────────────────────────────────────
5
- import { promises as fs } from 'fs';
6
- import path from 'path';
7
- import { findVaultRoot } from '../../state/manager.js';
8
- import { readRecentExecutionLogs } from '../../utils/execution-logger.js';
9
- import { parseJsonResponse } from '../../utils/json-parser.js';
10
- import { getModelForCapability } from '../../llm/router.js';
11
- /**
12
- * Analyze recent execution logs to find patterns and create reusable processes.
13
- * Intended to be run as a cron job.
14
- */
15
- export async function evaluateProcesses() {
16
- const vaultRoot = await findVaultRoot();
17
- if (!vaultRoot) {
18
- return 'No vault found — skipping process evaluation';
19
- }
20
- const logs = await readRecentExecutionLogs(7);
21
- const customSuccessLogs = logs.filter(l => l.process_source === 'custom' && l.success);
22
- if (customSuccessLogs.length < 3) {
23
- return `Only ${customSuccessLogs.length} successful custom executions in last 7 days — need at least 3`;
24
- }
25
- // Read existing vault processes for dedup
26
- const processDir = path.join(vaultRoot, 'processes');
27
- let existingProcessKeys = [];
28
- let existingProcessSummary = 'None';
29
- try {
30
- const files = await fs.readdir(processDir);
31
- const processes = [];
32
- for (const file of files) {
33
- if (!file.endsWith('.json'))
34
- continue;
35
- try {
36
- const raw = await fs.readFile(path.join(processDir, file), 'utf-8');
37
- const parsed = JSON.parse(raw);
38
- processes.push({ key: parsed.key, description: parsed.description || '' });
39
- }
40
- catch {
41
- // skip invalid files
42
- }
43
- }
44
- existingProcessKeys = processes.map(p => p.key);
45
- if (processes.length > 0) {
46
- existingProcessSummary = processes.map(p => `- ${p.key}: ${p.description}`).join('\n');
47
- }
48
- }
49
- catch {
50
- // Directory doesn't exist yet — that's fine
51
- }
52
- // Build log summaries for the LLM
53
- const logSummaries = customSuccessLogs.map(l => ({
54
- user_input: l.user_input,
55
- process_key: l.process_key,
56
- outcome_summary: l.outcome_summary,
57
- process_json: l.process_json,
58
- }));
59
- const llm = await getModelForCapability('reason');
60
- const response = await llm.chat([{
61
- role: 'user',
62
- content: `RECENT CUSTOM EXECUTIONS (${customSuccessLogs.length} total):
63
- ${JSON.stringify(logSummaries, null, 2)}
64
-
65
- EXISTING REUSABLE PROCESSES:
66
- ${existingProcessSummary}
67
-
68
- RULES:
69
- - Only create a process if you see 2+ similar executions with a clear, repeatable pattern
70
- - Use {context_key} interpolation for variable parts (e.g. {user_input}, {entity_title})
71
- - Don't duplicate existing processes
72
- - Prefer simple, focused processes (5-8 nodes max)
73
- - Process key should be descriptive (e.g. "create-task-with-tag", "list-events-today")
74
- - Every process must start with a "start" node and end with a "stop" node
75
-
76
- Return a JSON object:
77
- {
78
- "reasoning": "Your analysis of patterns found",
79
- "new_processes": [
80
- {
81
- "key": "process.key",
82
- "description": "What this process does",
83
- "process": { ... valid process JSON ... }
84
- }
85
- ]
86
- }
87
-
88
- If no clear patterns, return { "reasoning": "...", "new_processes": [] }.
89
- Return ONLY the JSON object, no markdown fences.`,
90
- }], {
91
- systemPrompt: 'You are the process learning engine for Dobbi, a Personal Digital Agent. Analyze execution logs to find patterns and create reusable Feral processes. Only create processes when you see a clear, repeatable pattern across multiple executions. Quality over quantity.',
92
- temperature: 0.3,
93
- });
94
- let result;
95
- try {
96
- result = parseJsonResponse(response);
97
- }
98
- catch {
99
- return 'Failed to parse LLM response for process evaluation';
100
- }
101
- if (!result.new_processes || result.new_processes.length === 0) {
102
- return `No new patterns found: ${result.reasoning}`;
103
- }
104
- // Write new processes to vault
105
- await fs.mkdir(processDir, { recursive: true });
106
- let created = 0;
107
- for (const np of result.new_processes) {
108
- if (existingProcessKeys.includes(np.key)) {
109
- continue; // skip duplicates
110
- }
111
- const filename = `${np.key.replace(/\./g, '-')}.json`;
112
- const filepath = path.join(processDir, filename);
113
- // Don't overwrite existing files
114
- try {
115
- await fs.access(filepath);
116
- continue; // file exists, skip
117
- }
118
- catch {
119
- // file doesn't exist, proceed
120
- }
121
- await fs.writeFile(filepath, JSON.stringify(np.process, null, 2));
122
- created++;
123
- }
124
- return `Evaluated ${customSuccessLogs.length} logs → created ${created} new process(es). ${result.reasoning}`;
125
- }
126
- //# sourceMappingURL=process-evaluator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"process-evaluator.js","sourceRoot":"","sources":["../../../src/service/cron/process-evaluator.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=project.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/tools/project.ts"],"names":[],"mappings":""}
@@ -1,112 +0,0 @@
1
- import { getActiveProject, setActiveProject, listProjects, createProject, projectExists, } from '../state/manager.js';
2
- import { registerServiceTool } from './types.js';
3
- // ─────────────────────────────────────────────────────────────────────────────
4
- // PROJECT.CREATE - Create a new project
5
- // ─────────────────────────────────────────────────────────────────────────────
6
- registerServiceTool({
7
- name: 'project.create',
8
- description: 'Create a new project and optionally switch to it',
9
- type: 'deterministic',
10
- inputSchema: {
11
- type: 'object',
12
- properties: {
13
- name: { type: 'string', description: 'Project name', required: true },
14
- switchTo: { type: 'boolean', description: 'Switch to the new project after creation' },
15
- },
16
- required: ['name'],
17
- },
18
- execute: async (input, context) => {
19
- const { name, switchTo = true } = input;
20
- context.log.info(`Creating project: ${name}`);
21
- const exists = await projectExists(name);
22
- if (exists) {
23
- context.log.warn(`Project already exists: ${name}`);
24
- return {
25
- success: false,
26
- output: null,
27
- error: `Project "${name}" already exists`,
28
- };
29
- }
30
- await createProject(name);
31
- context.log.info(`Project created: ${name}`);
32
- if (switchTo) {
33
- await setActiveProject(name);
34
- context.log.info(`Switched to project: ${name}`);
35
- }
36
- return {
37
- success: true,
38
- output: { projectName: name, isActive: switchTo },
39
- tokensToSet: switchTo ? { project_name: name } : undefined,
40
- };
41
- },
42
- });
43
- // ─────────────────────────────────────────────────────────────────────────────
44
- // PROJECT.USE - Switch to an existing project
45
- // ─────────────────────────────────────────────────────────────────────────────
46
- registerServiceTool({
47
- name: 'project.use',
48
- description: 'Switch to an existing project',
49
- type: 'deterministic',
50
- inputSchema: {
51
- type: 'object',
52
- properties: {
53
- name: { type: 'string', description: 'Project name', required: true },
54
- },
55
- required: ['name'],
56
- },
57
- execute: async (input, context) => {
58
- const { name } = input;
59
- context.log.info(`Switching to project: ${name}`);
60
- const exists = await projectExists(name);
61
- if (!exists) {
62
- context.log.error(`Project not found: ${name}`);
63
- return {
64
- success: false,
65
- output: null,
66
- error: `Project "${name}" does not exist`,
67
- };
68
- }
69
- await setActiveProject(name);
70
- return {
71
- success: true,
72
- output: { projectName: name },
73
- tokensToSet: { project_name: name },
74
- };
75
- },
76
- });
77
- // ─────────────────────────────────────────────────────────────────────────────
78
- // PROJECT.LIST - List all projects
79
- // ─────────────────────────────────────────────────────────────────────────────
80
- registerServiceTool({
81
- name: 'project.list',
82
- description: 'List all projects',
83
- type: 'deterministic',
84
- execute: async (input, context) => {
85
- context.log.info('Listing projects');
86
- const projects = await listProjects();
87
- const activeProject = await getActiveProject();
88
- return {
89
- success: true,
90
- output: {
91
- projects,
92
- activeProject,
93
- },
94
- };
95
- },
96
- });
97
- // ─────────────────────────────────────────────────────────────────────────────
98
- // PROJECT.CURRENT - Get current active project
99
- // ─────────────────────────────────────────────────────────────────────────────
100
- registerServiceTool({
101
- name: 'project.current',
102
- description: 'Get the currently active project',
103
- type: 'deterministic',
104
- execute: async (input, context) => {
105
- const activeProject = await getActiveProject();
106
- return {
107
- success: true,
108
- output: { projectName: activeProject },
109
- };
110
- },
111
- });
112
- //# sourceMappingURL=project.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/tools/project.ts"],"names":[],"mappings":"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"}