xibecode 1.0.3 → 1.0.6

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 (268) hide show
  1. package/dist/commands/chat.d.ts.map +1 -1
  2. package/dist/commands/chat.js +10 -7
  3. package/dist/commands/chat.js.map +1 -1
  4. package/dist/commands/diagnostics.js +1 -1
  5. package/dist/commands/diagnostics.js.map +1 -1
  6. package/dist/commands/mcp.js +1 -1
  7. package/dist/commands/mcp.js.map +1 -1
  8. package/dist/commands/resume.js +1 -1
  9. package/dist/commands/resume.js.map +1 -1
  10. package/dist/commands/run-pr.d.ts.map +1 -1
  11. package/dist/commands/run-pr.js +10 -9
  12. package/dist/commands/run-pr.js.map +1 -1
  13. package/dist/commands/run.d.ts.map +1 -1
  14. package/dist/commands/run.js +14 -13
  15. package/dist/commands/run.js.map +1 -1
  16. package/dist/commands/skills.d.ts.map +1 -1
  17. package/dist/commands/skills.js +3 -2
  18. package/dist/commands/skills.js.map +1 -1
  19. package/dist/components/AssistantMarkdown.js +1 -1
  20. package/dist/components/AssistantMarkdown.js.map +1 -1
  21. package/dist/ui/claude-style-chat.d.ts.map +1 -1
  22. package/dist/ui/claude-style-chat.js +12 -10
  23. package/dist/ui/claude-style-chat.js.map +1 -1
  24. package/dist/utils/built-in-skills-dir.d.ts +7 -0
  25. package/dist/utils/built-in-skills-dir.d.ts.map +1 -0
  26. package/dist/utils/built-in-skills-dir.js +11 -0
  27. package/dist/utils/built-in-skills-dir.js.map +1 -0
  28. package/dist/utils/config.d.ts +2 -119
  29. package/dist/utils/config.d.ts.map +1 -1
  30. package/dist/utils/config.js +3 -88
  31. package/dist/utils/config.js.map +1 -1
  32. package/package.json +11 -17
  33. package/dist/commands/punycode.d.ts +0 -5
  34. package/dist/commands/punycode.d.ts.map +0 -1
  35. package/dist/commands/punycode.js +0 -48
  36. package/dist/commands/punycode.js.map +0 -1
  37. package/dist/commands/tui.d.ts +0 -9
  38. package/dist/commands/tui.d.ts.map +0 -1
  39. package/dist/commands/tui.js +0 -83
  40. package/dist/commands/tui.js.map +0 -1
  41. package/dist/core/agent-tool-policies.d.ts +0 -5
  42. package/dist/core/agent-tool-policies.d.ts.map +0 -1
  43. package/dist/core/agent-tool-policies.js +0 -18
  44. package/dist/core/agent-tool-policies.js.map +0 -1
  45. package/dist/core/agent.d.ts +0 -181
  46. package/dist/core/agent.d.ts.map +0 -1
  47. package/dist/core/agent.js +0 -1777
  48. package/dist/core/agent.js.map +0 -1
  49. package/dist/core/background-agent.d.ts +0 -23
  50. package/dist/core/background-agent.d.ts.map +0 -1
  51. package/dist/core/background-agent.js +0 -175
  52. package/dist/core/background-agent.js.map +0 -1
  53. package/dist/core/code-graph.d.ts +0 -18
  54. package/dist/core/code-graph.d.ts.map +0 -1
  55. package/dist/core/code-graph.js +0 -105
  56. package/dist/core/code-graph.js.map +0 -1
  57. package/dist/core/conflict-solver.d.ts +0 -26
  58. package/dist/core/conflict-solver.d.ts.map +0 -1
  59. package/dist/core/conflict-solver.js +0 -108
  60. package/dist/core/conflict-solver.js.map +0 -1
  61. package/dist/core/context-compactor.d.ts +0 -10
  62. package/dist/core/context-compactor.d.ts.map +0 -1
  63. package/dist/core/context-compactor.js +0 -158
  64. package/dist/core/context-compactor.js.map +0 -1
  65. package/dist/core/context-pruner.d.ts +0 -19
  66. package/dist/core/context-pruner.d.ts.map +0 -1
  67. package/dist/core/context-pruner.js +0 -103
  68. package/dist/core/context-pruner.js.map +0 -1
  69. package/dist/core/context.d.ts +0 -82
  70. package/dist/core/context.d.ts.map +0 -1
  71. package/dist/core/context.js +0 -273
  72. package/dist/core/context.js.map +0 -1
  73. package/dist/core/conversation-recovery.d.ts +0 -9
  74. package/dist/core/conversation-recovery.d.ts.map +0 -1
  75. package/dist/core/conversation-recovery.js +0 -15
  76. package/dist/core/conversation-recovery.js.map +0 -1
  77. package/dist/core/debug-workflow.d.ts +0 -9
  78. package/dist/core/debug-workflow.d.ts.map +0 -1
  79. package/dist/core/debug-workflow.js +0 -19
  80. package/dist/core/debug-workflow.js.map +0 -1
  81. package/dist/core/docs-scraper.d.ts +0 -40
  82. package/dist/core/docs-scraper.d.ts.map +0 -1
  83. package/dist/core/docs-scraper.js +0 -386
  84. package/dist/core/docs-scraper.js.map +0 -1
  85. package/dist/core/editor.d.ts +0 -87
  86. package/dist/core/editor.d.ts.map +0 -1
  87. package/dist/core/editor.js +0 -377
  88. package/dist/core/editor.js.map +0 -1
  89. package/dist/core/export.d.ts +0 -11
  90. package/dist/core/export.d.ts.map +0 -1
  91. package/dist/core/export.js +0 -54
  92. package/dist/core/export.js.map +0 -1
  93. package/dist/core/history-manager.d.ts +0 -75
  94. package/dist/core/history-manager.d.ts.map +0 -1
  95. package/dist/core/history-manager.js +0 -146
  96. package/dist/core/history-manager.js.map +0 -1
  97. package/dist/core/marketplace-client.d.ts +0 -52
  98. package/dist/core/marketplace-client.d.ts.map +0 -1
  99. package/dist/core/marketplace-client.js +0 -71
  100. package/dist/core/marketplace-client.js.map +0 -1
  101. package/dist/core/mcp/mcp-config.d.ts +0 -10
  102. package/dist/core/mcp/mcp-config.d.ts.map +0 -1
  103. package/dist/core/mcp/mcp-config.js +0 -70
  104. package/dist/core/mcp/mcp-config.js.map +0 -1
  105. package/dist/core/mcp/mcp-policy.d.ts +0 -17
  106. package/dist/core/mcp/mcp-policy.d.ts.map +0 -1
  107. package/dist/core/mcp/mcp-policy.js +0 -56
  108. package/dist/core/mcp/mcp-policy.js.map +0 -1
  109. package/dist/core/mcp/oauth-flow.d.ts +0 -30
  110. package/dist/core/mcp/oauth-flow.d.ts.map +0 -1
  111. package/dist/core/mcp/oauth-flow.js +0 -230
  112. package/dist/core/mcp/oauth-flow.js.map +0 -1
  113. package/dist/core/mcp/oauth-store.d.ts +0 -13
  114. package/dist/core/mcp/oauth-store.d.ts.map +0 -1
  115. package/dist/core/mcp/oauth-store.js +0 -68
  116. package/dist/core/mcp/oauth-store.js.map +0 -1
  117. package/dist/core/mcp/resolve-mcp-servers.d.ts +0 -16
  118. package/dist/core/mcp/resolve-mcp-servers.d.ts.map +0 -1
  119. package/dist/core/mcp/resolve-mcp-servers.js +0 -83
  120. package/dist/core/mcp/resolve-mcp-servers.js.map +0 -1
  121. package/dist/core/mcp-client.d.ts +0 -99
  122. package/dist/core/mcp-client.d.ts.map +0 -1
  123. package/dist/core/mcp-client.js +0 -317
  124. package/dist/core/mcp-client.js.map +0 -1
  125. package/dist/core/memory-promotions.d.ts +0 -15
  126. package/dist/core/memory-promotions.d.ts.map +0 -1
  127. package/dist/core/memory-promotions.js +0 -38
  128. package/dist/core/memory-promotions.js.map +0 -1
  129. package/dist/core/memory.d.ts +0 -32
  130. package/dist/core/memory.d.ts.map +0 -1
  131. package/dist/core/memory.js +0 -121
  132. package/dist/core/memory.js.map +0 -1
  133. package/dist/core/modes.d.ts +0 -432
  134. package/dist/core/modes.d.ts.map +0 -1
  135. package/dist/core/modes.js +0 -1094
  136. package/dist/core/modes.js.map +0 -1
  137. package/dist/core/pattern-miner.d.ts +0 -43
  138. package/dist/core/pattern-miner.d.ts.map +0 -1
  139. package/dist/core/pattern-miner.js +0 -123
  140. package/dist/core/pattern-miner.js.map +0 -1
  141. package/dist/core/permission-store.d.ts +0 -15
  142. package/dist/core/permission-store.d.ts.map +0 -1
  143. package/dist/core/permission-store.js +0 -30
  144. package/dist/core/permission-store.js.map +0 -1
  145. package/dist/core/permissions.d.ts +0 -33
  146. package/dist/core/permissions.d.ts.map +0 -1
  147. package/dist/core/permissions.js +0 -141
  148. package/dist/core/permissions.js.map +0 -1
  149. package/dist/core/plan-artifacts.d.ts +0 -10
  150. package/dist/core/plan-artifacts.d.ts.map +0 -1
  151. package/dist/core/plan-artifacts.js +0 -60
  152. package/dist/core/plan-artifacts.js.map +0 -1
  153. package/dist/core/plan-session.d.ts +0 -25
  154. package/dist/core/plan-session.d.ts.map +0 -1
  155. package/dist/core/plan-session.js +0 -99
  156. package/dist/core/plan-session.js.map +0 -1
  157. package/dist/core/planMode.d.ts +0 -51
  158. package/dist/core/planMode.d.ts.map +0 -1
  159. package/dist/core/planMode.js +0 -245
  160. package/dist/core/planMode.js.map +0 -1
  161. package/dist/core/plugins.d.ts +0 -96
  162. package/dist/core/plugins.d.ts.map +0 -1
  163. package/dist/core/plugins.js +0 -204
  164. package/dist/core/plugins.js.map +0 -1
  165. package/dist/core/session-bridge.d.ts +0 -128
  166. package/dist/core/session-bridge.d.ts.map +0 -1
  167. package/dist/core/session-bridge.js +0 -328
  168. package/dist/core/session-bridge.js.map +0 -1
  169. package/dist/core/session-manager.d.ts +0 -80
  170. package/dist/core/session-manager.d.ts.map +0 -1
  171. package/dist/core/session-manager.js +0 -166
  172. package/dist/core/session-manager.js.map +0 -1
  173. package/dist/core/session-memory.d.ts +0 -45
  174. package/dist/core/session-memory.d.ts.map +0 -1
  175. package/dist/core/session-memory.js +0 -103
  176. package/dist/core/session-memory.js.map +0 -1
  177. package/dist/core/skill-selection.d.ts +0 -36
  178. package/dist/core/skill-selection.d.ts.map +0 -1
  179. package/dist/core/skill-selection.js +0 -172
  180. package/dist/core/skill-selection.js.map +0 -1
  181. package/dist/core/skills-sh-client.d.ts +0 -19
  182. package/dist/core/skills-sh-client.d.ts.map +0 -1
  183. package/dist/core/skills-sh-client.js +0 -75
  184. package/dist/core/skills-sh-client.js.map +0 -1
  185. package/dist/core/skills.d.ts +0 -97
  186. package/dist/core/skills.d.ts.map +0 -1
  187. package/dist/core/skills.js +0 -339
  188. package/dist/core/skills.js.map +0 -1
  189. package/dist/core/swarm.d.ts +0 -34
  190. package/dist/core/swarm.d.ts.map +0 -1
  191. package/dist/core/swarm.js +0 -111
  192. package/dist/core/swarm.js.map +0 -1
  193. package/dist/core/task-status.d.ts +0 -13
  194. package/dist/core/task-status.d.ts.map +0 -1
  195. package/dist/core/task-status.js +0 -17
  196. package/dist/core/task-status.js.map +0 -1
  197. package/dist/core/tool-orchestrator.d.ts +0 -30
  198. package/dist/core/tool-orchestrator.d.ts.map +0 -1
  199. package/dist/core/tool-orchestrator.js +0 -89
  200. package/dist/core/tool-orchestrator.js.map +0 -1
  201. package/dist/core/tools.d.ts +0 -462
  202. package/dist/core/tools.d.ts.map +0 -1
  203. package/dist/core/tools.js +0 -2916
  204. package/dist/core/tools.js.map +0 -1
  205. package/dist/core/transcript-cleanup.d.ts +0 -8
  206. package/dist/core/transcript-cleanup.d.ts.map +0 -1
  207. package/dist/core/transcript-cleanup.js +0 -52
  208. package/dist/core/transcript-cleanup.js.map +0 -1
  209. package/dist/core/visual-feedback.d.ts +0 -20
  210. package/dist/core/visual-feedback.d.ts.map +0 -1
  211. package/dist/core/visual-feedback.js +0 -117
  212. package/dist/core/visual-feedback.js.map +0 -1
  213. package/dist/tools/browser.d.ts +0 -120
  214. package/dist/tools/browser.d.ts.map +0 -1
  215. package/dist/tools/browser.js +0 -439
  216. package/dist/tools/browser.js.map +0 -1
  217. package/dist/tools/test-generator.d.ts +0 -157
  218. package/dist/tools/test-generator.d.ts.map +0 -1
  219. package/dist/tools/test-generator.js +0 -893
  220. package/dist/tools/test-generator.js.map +0 -1
  221. package/dist/tui/InkApp.d.ts +0 -21
  222. package/dist/tui/InkApp.d.ts.map +0 -1
  223. package/dist/tui/InkApp.js +0 -146
  224. package/dist/tui/InkApp.js.map +0 -1
  225. package/dist/tui/MarkdownMessage.d.ts +0 -16
  226. package/dist/tui/MarkdownMessage.d.ts.map +0 -1
  227. package/dist/tui/MarkdownMessage.js +0 -63
  228. package/dist/tui/MarkdownMessage.js.map +0 -1
  229. package/dist/tui/blessed-chat.d.ts +0 -9
  230. package/dist/tui/blessed-chat.d.ts.map +0 -1
  231. package/dist/tui/blessed-chat.js +0 -887
  232. package/dist/tui/blessed-chat.js.map +0 -1
  233. package/dist/tui/markdown-to-blessed.d.ts +0 -6
  234. package/dist/tui/markdown-to-blessed.d.ts.map +0 -1
  235. package/dist/tui/markdown-to-blessed.js +0 -26
  236. package/dist/tui/markdown-to-blessed.js.map +0 -1
  237. package/dist/ui/ink/App.d.ts +0 -25
  238. package/dist/ui/ink/App.d.ts.map +0 -1
  239. package/dist/ui/ink/App.js +0 -372
  240. package/dist/ui/ink/App.js.map +0 -1
  241. package/dist/utils/at-references.d.ts +0 -14
  242. package/dist/utils/at-references.d.ts.map +0 -1
  243. package/dist/utils/at-references.js +0 -47
  244. package/dist/utils/at-references.js.map +0 -1
  245. package/dist/utils/auto-memory.d.ts +0 -24
  246. package/dist/utils/auto-memory.d.ts.map +0 -1
  247. package/dist/utils/auto-memory.js +0 -153
  248. package/dist/utils/auto-memory.js.map +0 -1
  249. package/dist/utils/git.d.ts +0 -89
  250. package/dist/utils/git.d.ts.map +0 -1
  251. package/dist/utils/git.js +0 -444
  252. package/dist/utils/git.js.map +0 -1
  253. package/dist/utils/mcp-servers-file.d.ts +0 -46
  254. package/dist/utils/mcp-servers-file.d.ts.map +0 -1
  255. package/dist/utils/mcp-servers-file.js +0 -212
  256. package/dist/utils/mcp-servers-file.js.map +0 -1
  257. package/dist/utils/safety.d.ts +0 -60
  258. package/dist/utils/safety.d.ts.map +0 -1
  259. package/dist/utils/safety.js +0 -254
  260. package/dist/utils/safety.js.map +0 -1
  261. package/dist/utils/smithery.d.ts +0 -25
  262. package/dist/utils/smithery.d.ts.map +0 -1
  263. package/dist/utils/smithery.js +0 -50
  264. package/dist/utils/smithery.js.map +0 -1
  265. package/dist/utils/testRunner.d.ts +0 -44
  266. package/dist/utils/testRunner.d.ts.map +0 -1
  267. package/dist/utils/testRunner.js +0 -270
  268. package/dist/utils/testRunner.js.map +0 -1
@@ -1,80 +0,0 @@
1
- import type { MessageParam } from '@anthropic-ai/sdk/resources/messages';
2
- export interface SessionStats {
3
- iterations: number;
4
- toolCalls: number;
5
- filesChanged: number;
6
- changedFiles?: string[];
7
- }
8
- export interface SessionMetadata {
9
- id: string;
10
- title: string;
11
- model: string;
12
- cwd: string;
13
- parentSessionId?: string;
14
- created: string;
15
- updated: string;
16
- }
17
- export interface ChatSession extends SessionMetadata {
18
- messages: MessageParam[];
19
- stats?: SessionStats;
20
- }
21
- /**
22
- * JSON-based session persistence for chat conversations.
23
- *
24
- * Sessions are stored under:
25
- * ~/.xibecode/sessions/<session-id>.json
26
- */
27
- export declare class SessionManager {
28
- private readonly sessionsDir;
29
- constructor(baseDir?: string);
30
- /**
31
- * Ensure the sessions directory exists.
32
- */
33
- private ensureDir;
34
- /**
35
- * Generate a stable path for a given session id.
36
- */
37
- private getSessionPath;
38
- /**
39
- * Create a new session with an optional title.
40
- */
41
- createSession(options: {
42
- title?: string;
43
- model: string;
44
- cwd?: string;
45
- parentSessionId?: string;
46
- }): Promise<ChatSession>;
47
- /**
48
- * Load a full session by id.
49
- */
50
- loadSession(id: string): Promise<ChatSession | null>;
51
- /**
52
- * Save an existing session (updates timestamp automatically).
53
- */
54
- saveSession(session: ChatSession): Promise<void>;
55
- /**
56
- * Update a session's messages and stats in one call.
57
- */
58
- saveMessagesAndStats(params: {
59
- id: string;
60
- messages: MessageParam[];
61
- stats?: SessionStats;
62
- titleFromFirstMessage?: boolean;
63
- }): Promise<ChatSession | null>;
64
- /**
65
- * List all sessions (metadata only), sorted by most recently updated.
66
- */
67
- listSessions(): Promise<SessionMetadata[]>;
68
- /**
69
- * Delete a session permanently.
70
- */
71
- deleteSession(id: string): Promise<boolean>;
72
- /**
73
- * Utility for callers that want to know where sessions live.
74
- */
75
- getSessionsDirectory(): string;
76
- private writeSessionFile;
77
- private generateId;
78
- private deriveTitleFromText;
79
- }
80
- //# sourceMappingURL=session-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/core/session-manager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAGzE,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAY,SAAQ,eAAe;IAClD,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,YAAY,CAAC;CACtB;AAED;;;;;GAKG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAEzB,OAAO,CAAC,EAAE,MAAM;IAK5B;;OAEG;YACW,SAAS;IAIvB;;OAEG;IACH,OAAO,CAAC,cAAc;IAItB;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE;QAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,GAAG,OAAO,CAAC,WAAW,CAAC;IAqBxB;;OAEG;IACG,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAU1D;;OAEG;IACG,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAQtD;;OAEG;IACG,oBAAoB,CAAC,MAAM,EAAE;QACjC,EAAE,EAAE,MAAM,CAAC;QACX,QAAQ,EAAE,YAAY,EAAE,CAAC;QACzB,KAAK,CAAC,EAAE,YAAY,CAAC;QACrB,qBAAqB,CAAC,EAAE,OAAO,CAAC;KACjC,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAsB/B;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAqChD;;OAEG;IACG,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASjD;;OAEG;IACH,oBAAoB,IAAI,MAAM;YAMhB,gBAAgB;IAO9B,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,mBAAmB;CAM5B"}
@@ -1,166 +0,0 @@
1
- import * as fs from 'fs/promises';
2
- import * as path from 'path';
3
- import * as os from 'os';
4
- import { recoverConversation } from './conversation-recovery.js';
5
- /**
6
- * JSON-based session persistence for chat conversations.
7
- *
8
- * Sessions are stored under:
9
- * ~/.xibecode/sessions/<session-id>.json
10
- */
11
- export class SessionManager {
12
- sessionsDir;
13
- constructor(baseDir) {
14
- const defaultDir = path.join(os.homedir(), '.xibecode', 'sessions');
15
- this.sessionsDir = baseDir || defaultDir;
16
- }
17
- /**
18
- * Ensure the sessions directory exists.
19
- */
20
- async ensureDir() {
21
- await fs.mkdir(this.sessionsDir, { recursive: true });
22
- }
23
- /**
24
- * Generate a stable path for a given session id.
25
- */
26
- getSessionPath(id) {
27
- return path.join(this.sessionsDir, `${id}.json`);
28
- }
29
- /**
30
- * Create a new session with an optional title.
31
- */
32
- async createSession(options) {
33
- await this.ensureDir();
34
- const now = new Date().toISOString();
35
- const id = this.generateId();
36
- const session = {
37
- id,
38
- title: options.title?.trim() || 'Untitled Session',
39
- model: options.model,
40
- cwd: options.cwd || process.cwd(),
41
- parentSessionId: options.parentSessionId,
42
- created: now,
43
- updated: now,
44
- messages: [],
45
- };
46
- await this.writeSessionFile(session);
47
- return session;
48
- }
49
- /**
50
- * Load a full session by id.
51
- */
52
- async loadSession(id) {
53
- try {
54
- const raw = await fs.readFile(this.getSessionPath(id), 'utf-8');
55
- const data = JSON.parse(raw);
56
- return recoverConversation(data).session;
57
- }
58
- catch {
59
- return null;
60
- }
61
- }
62
- /**
63
- * Save an existing session (updates timestamp automatically).
64
- */
65
- async saveSession(session) {
66
- const updated = {
67
- ...session,
68
- updated: new Date().toISOString(),
69
- };
70
- await this.writeSessionFile(updated);
71
- }
72
- /**
73
- * Update a session's messages and stats in one call.
74
- */
75
- async saveMessagesAndStats(params) {
76
- const existing = await this.loadSession(params.id);
77
- if (!existing)
78
- return null;
79
- const updated = {
80
- ...existing,
81
- messages: params.messages,
82
- stats: params.stats ?? existing.stats,
83
- };
84
- // Optionally derive title from the very first user message
85
- if (params.titleFromFirstMessage && updated.messages.length > 0) {
86
- const first = updated.messages[0];
87
- if (first.role === 'user' && typeof first.content === 'string') {
88
- updated.title = this.deriveTitleFromText(first.content, existing.title);
89
- }
90
- }
91
- await this.saveSession(updated);
92
- return updated;
93
- }
94
- /**
95
- * List all sessions (metadata only), sorted by most recently updated.
96
- */
97
- async listSessions() {
98
- await this.ensureDir();
99
- let files;
100
- try {
101
- files = await fs.readdir(this.sessionsDir);
102
- }
103
- catch {
104
- return [];
105
- }
106
- const metas = [];
107
- const jsonFiles = files.filter((file) => file.endsWith('.json'));
108
- // Bounded concurrency (chunks of 20) to prevent EMFILE errors while speeding up IO
109
- const CONCURRENCY_LIMIT = 20;
110
- for (let i = 0; i < jsonFiles.length; i += CONCURRENCY_LIMIT) {
111
- const chunk = jsonFiles.slice(i, i + CONCURRENCY_LIMIT);
112
- await Promise.all(chunk.map(async (file) => {
113
- const fullPath = path.join(this.sessionsDir, file);
114
- try {
115
- const raw = await fs.readFile(fullPath, 'utf-8');
116
- const data = JSON.parse(raw);
117
- const { messages: _messages, stats: _stats, ...meta } = data;
118
- metas.push(meta);
119
- }
120
- catch {
121
- // Ignore malformed files
122
- }
123
- }));
124
- }
125
- metas.sort((a, b) => b.updated.localeCompare(a.updated));
126
- return metas;
127
- }
128
- /**
129
- * Delete a session permanently.
130
- */
131
- async deleteSession(id) {
132
- try {
133
- await fs.unlink(this.getSessionPath(id));
134
- return true;
135
- }
136
- catch {
137
- return false;
138
- }
139
- }
140
- /**
141
- * Utility for callers that want to know where sessions live.
142
- */
143
- getSessionsDirectory() {
144
- return this.sessionsDir;
145
- }
146
- // ─── Internal helpers ─────────────────────────────────────────
147
- async writeSessionFile(session) {
148
- await this.ensureDir();
149
- const filePath = this.getSessionPath(session.id);
150
- const payload = JSON.stringify(session, null, 2);
151
- await fs.writeFile(filePath, payload, 'utf-8');
152
- }
153
- generateId() {
154
- const ts = Date.now().toString(36);
155
- const rnd = Math.random().toString(36).slice(2, 8);
156
- return `session-${ts}-${rnd}`;
157
- }
158
- deriveTitleFromText(text, fallback) {
159
- const cleaned = text.trim().replace(/\s+/g, ' ');
160
- if (!cleaned)
161
- return fallback;
162
- const maxLen = 80;
163
- return cleaned.length <= maxLen ? cleaned : cleaned.slice(0, maxLen - 1) + '…';
164
- }
165
- }
166
- //# sourceMappingURL=session-manager.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../src/core/session-manager.ts"],"names":[],"mappings":"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"}
@@ -1,45 +0,0 @@
1
- /**
2
- * Persistent session memory for a single run (and optionally across runs).
3
- * Records tool attempts, failures, and "what we learned" to avoid repeating mistakes.
4
- * Used by the agent to inject a compact summary into the system prompt.
5
- */
6
- export interface AttemptRecord {
7
- tool: string;
8
- success: boolean;
9
- message?: string;
10
- ts: number;
11
- }
12
- export interface SessionMemoryData {
13
- sessionId: string;
14
- startedAt: number;
15
- attempts: AttemptRecord[];
16
- learnings: string[];
17
- }
18
- /**
19
- * Session memory: persists for the run and optionally to .xibecode/sessions/
20
- * so future runs can load "what we learned" and recent failures.
21
- */
22
- export declare class SessionMemory {
23
- private workingDir;
24
- private sessionId;
25
- private startedAt;
26
- private attempts;
27
- private learnings;
28
- private persistDir;
29
- constructor(workingDir: string, sessionId?: string);
30
- getSessionId(): string;
31
- /** Record a tool attempt (success or failure). */
32
- recordAttempt(tool: string, success: boolean, message?: string): void;
33
- /** Record a short "what we learned" note (e.g. after a failure or retry). */
34
- recordLearning(summary: string): void;
35
- /**
36
- * Compact summary for the system prompt: recent failures + learnings
37
- * so the agent can avoid repeating the same mistakes.
38
- */
39
- getSummary(): string;
40
- /** Persist session to .xibecode/sessions/<sessionId>.json for optional cross-run loading. */
41
- persist(): Promise<void>;
42
- /** Load a previous session's learnings (e.g. last run) to prime this run. */
43
- loadPreviousLearnings(limit?: number): Promise<void>;
44
- }
45
- //# sourceMappingURL=session-memory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-memory.d.ts","sourceRoot":"","sources":["../../src/core/session-memory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAMD;;;GAGG;AACH,qBAAa,aAAa;IAQtB,OAAO,CAAC,UAAU;IAPpB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,UAAU,CAAS;gBAGjB,UAAU,EAAE,MAAM,EAC1B,SAAS,CAAC,EAAE,MAAM;IAOpB,YAAY,IAAI,MAAM;IAItB,kDAAkD;IAClD,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;IASrE,6EAA6E;IAC7E,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKrC;;;OAGG;IACH,UAAU,IAAI,MAAM;IAmBpB,6FAA6F;IACvF,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB9B,6EAA6E;IACvE,qBAAqB,CAAC,KAAK,GAAE,MAAiC,GAAG,OAAO,CAAC,IAAI,CAAC;CAgBrF"}
@@ -1,103 +0,0 @@
1
- /**
2
- * Persistent session memory for a single run (and optionally across runs).
3
- * Records tool attempts, failures, and "what we learned" to avoid repeating mistakes.
4
- * Used by the agent to inject a compact summary into the system prompt.
5
- */
6
- import * as fs from 'fs/promises';
7
- import * as path from 'path';
8
- const MAX_ATTEMPTS_IN_SUMMARY = 15;
9
- const MAX_LEARNINGS_IN_SUMMARY = 5;
10
- const SUMMARY_FAILURE_CAP = 8;
11
- /**
12
- * Session memory: persists for the run and optionally to .xibecode/sessions/
13
- * so future runs can load "what we learned" and recent failures.
14
- */
15
- export class SessionMemory {
16
- workingDir;
17
- sessionId;
18
- startedAt;
19
- attempts = [];
20
- learnings = [];
21
- persistDir;
22
- constructor(workingDir, sessionId) {
23
- this.workingDir = workingDir;
24
- this.sessionId = sessionId ?? `run_${Date.now()}`;
25
- this.startedAt = Date.now();
26
- this.persistDir = path.join(workingDir, '.xibecode', 'sessions');
27
- }
28
- getSessionId() {
29
- return this.sessionId;
30
- }
31
- /** Record a tool attempt (success or failure). */
32
- recordAttempt(tool, success, message) {
33
- this.attempts.push({
34
- tool,
35
- success,
36
- message: message && message.slice(0, 500),
37
- ts: Date.now(),
38
- });
39
- }
40
- /** Record a short "what we learned" note (e.g. after a failure or retry). */
41
- recordLearning(summary) {
42
- const s = summary.trim().slice(0, 500);
43
- if (s)
44
- this.learnings.push(s);
45
- }
46
- /**
47
- * Compact summary for the system prompt: recent failures + learnings
48
- * so the agent can avoid repeating the same mistakes.
49
- */
50
- getSummary() {
51
- const failures = this.attempts
52
- .filter(a => !a.success)
53
- .slice(-SUMMARY_FAILURE_CAP)
54
- .map(a => `- ${a.tool}${a.message ? `: ${a.message}` : ''}`);
55
- const recentLearnings = this.learnings.slice(-MAX_LEARNINGS_IN_SUMMARY);
56
- const parts = [];
57
- if (failures.length > 0) {
58
- parts.push('Recent failures to avoid repeating:\n' + failures.join('\n'));
59
- }
60
- if (recentLearnings.length > 0) {
61
- parts.push('Session learnings:\n' + recentLearnings.map(l => `- ${l}`).join('\n'));
62
- }
63
- if (parts.length === 0)
64
- return '';
65
- return '\n## Session memory (this run)\n\n' + parts.join('\n\n') + '\n';
66
- }
67
- /** Persist session to .xibecode/sessions/<sessionId>.json for optional cross-run loading. */
68
- async persist() {
69
- try {
70
- await fs.mkdir(this.persistDir, { recursive: true });
71
- const data = {
72
- sessionId: this.sessionId,
73
- startedAt: this.startedAt,
74
- attempts: this.attempts.slice(-MAX_ATTEMPTS_IN_SUMMARY * 2),
75
- learnings: this.learnings,
76
- };
77
- const file = path.join(this.persistDir, `${this.sessionId}.json`);
78
- await fs.writeFile(file, JSON.stringify(data, null, 2), 'utf-8');
79
- }
80
- catch {
81
- // Non-fatal
82
- }
83
- }
84
- /** Load a previous session's learnings (e.g. last run) to prime this run. */
85
- async loadPreviousLearnings(limit = MAX_LEARNINGS_IN_SUMMARY) {
86
- try {
87
- const entries = await fs.readdir(this.persistDir).catch(() => []);
88
- const jsonFiles = entries.filter(f => f.endsWith('.json')).sort().reverse();
89
- for (const f of jsonFiles.slice(0, 3)) {
90
- const content = await fs.readFile(path.join(this.persistDir, f), 'utf-8');
91
- const data = JSON.parse(content);
92
- if (data.learnings?.length) {
93
- this.learnings.push(...data.learnings.slice(-limit));
94
- break;
95
- }
96
- }
97
- }
98
- catch {
99
- // Non-fatal
100
- }
101
- }
102
- }
103
- //# sourceMappingURL=session-memory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session-memory.js","sourceRoot":"","sources":["../../src/core/session-memory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAgB7B,MAAM,uBAAuB,GAAG,EAAE,CAAC;AACnC,MAAM,wBAAwB,GAAG,CAAC,CAAC;AACnC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B;;;GAGG;AACH,MAAM,OAAO,aAAa;IAQd;IAPF,SAAS,CAAS;IAClB,SAAS,CAAS;IAClB,QAAQ,GAAoB,EAAE,CAAC;IAC/B,SAAS,GAAa,EAAE,CAAC;IACzB,UAAU,CAAS;IAE3B,YACU,UAAkB,EAC1B,SAAkB;QADV,eAAU,GAAV,UAAU,CAAQ;QAG1B,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC;QAClD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;IACnE,CAAC;IAED,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,kDAAkD;IAClD,aAAa,CAAC,IAAY,EAAE,OAAgB,EAAE,OAAgB;QAC5D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;YACjB,IAAI;YACJ,OAAO;YACP,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;YACzC,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE;SACf,CAAC,CAAC;IACL,CAAC;IAED,6EAA6E;IAC7E,cAAc,CAAC,OAAe;QAC5B,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC;YAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IAED;;;OAGG;IACH,UAAU;QACR,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ;aAC3B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;aACvB,KAAK,CAAC,CAAC,mBAAmB,CAAC;aAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAE/D,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,wBAAwB,CAAC,CAAC;QAExE,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,KAAK,CAAC,IAAI,CAAC,uCAAuC,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,sBAAsB,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACrF,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAClC,OAAO,oCAAoC,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;IAC1E,CAAC;IAED,6FAA6F;IAC7F,KAAK,CAAC,OAAO;QACX,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACrD,MAAM,IAAI,GAAsB;gBAC9B,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,uBAAuB,GAAG,CAAC,CAAC;gBAC3D,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B,CAAC;YACF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,OAAO,CAAC,CAAC;YAClE,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACnE,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,KAAK,CAAC,qBAAqB,CAAC,QAAgB,wBAAwB;QAClE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YAClE,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;YAC5E,KAAK,MAAM,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACtC,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBAC1E,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAsB,CAAC;gBACtD,IAAI,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;oBAC3B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;oBACrD,MAAM;gBACR,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,YAAY;QACd,CAAC;IACH,CAAC;CACF"}
@@ -1,36 +0,0 @@
1
- /** Minimal skill shape for selection (matches `Skill` from skills.ts). */
2
- export interface SkillLike {
3
- name: string;
4
- description: string;
5
- tags?: string[];
6
- instructions: string;
7
- }
8
- /** Always injected — safe CLI/automation habits regardless of task wording. */
9
- export declare const CORE_BUNDLED_SKILL_NAMES: readonly ["sandbox-autonomous"];
10
- export interface SkillSelectionOptions {
11
- /** Max skills including core (default 12). */
12
- maxSkills?: number;
13
- /** Minimum skills when the catalog has enough entries (pads with next-best scores). Default 5. */
14
- minSkills?: number;
15
- /** Include skills at or above this relevance score before padding (default 2). */
16
- minScore?: number;
17
- }
18
- export declare function tokenizeTaskPrompt(taskPrompt: string): string[];
19
- /** dependency + devDependency names (and scoped short names) from package.json */
20
- export declare function extractDepTokens(pkg: {
21
- dependencies?: Record<string, string>;
22
- devDependencies?: Record<string, string>;
23
- peerDependencies?: Record<string, string>;
24
- optionalDependencies?: Record<string, string>;
25
- }): Set<string>;
26
- /**
27
- * Score how relevant a bundled skill is to the task prompt and dependency tokens.
28
- */
29
- export declare function scoreSkillRelevance(skill: SkillLike, promptTokens: string[], depTokens: Set<string>): number;
30
- /**
31
- * Pick a subset of bundled skills: core names first, then prompt/dependency matches (score ≥ threshold),
32
- * then pad to minSkills with next-best entries. Does not fill to maxSkills with unrelated skills.
33
- */
34
- export declare function selectRelevantBuiltInSkills(builtInSkills: SkillLike[], taskPrompt: string, depTokens: Set<string>, options?: SkillSelectionOptions): SkillLike[];
35
- export declare function formatSelectionSummary(selected: SkillLike[], totalBundled: number): string;
36
- //# sourceMappingURL=skill-selection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill-selection.d.ts","sourceRoot":"","sources":["../../src/core/skill-selection.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,MAAM,WAAW,SAAS;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,+EAA+E;AAC/E,eAAO,MAAM,wBAAwB,iCAAkC,CAAC;AAqDxE,MAAM,WAAW,qBAAqB;IAClC,8CAA8C;IAC9C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kGAAkG;IAClG,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAK/D;AAED,kFAAkF;AAClF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1C,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjD,GAAG,GAAG,CAAC,MAAM,CAAC,CAqBd;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,CAwB5G;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CACvC,aAAa,EAAE,SAAS,EAAE,EAC1B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,EACtB,OAAO,CAAC,EAAE,qBAAqB,GAChC,SAAS,EAAE,CAgDb;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAG1F"}
@@ -1,172 +0,0 @@
1
- /** Always injected — safe CLI/automation habits regardless of task wording. */
2
- export const CORE_BUNDLED_SKILL_NAMES = ['sandbox-autonomous'];
3
- const PROMPT_STOPWORDS = new Set([
4
- 'the',
5
- 'and',
6
- 'for',
7
- 'with',
8
- 'this',
9
- 'that',
10
- 'from',
11
- 'your',
12
- 'have',
13
- 'has',
14
- 'are',
15
- 'was',
16
- 'were',
17
- 'will',
18
- 'can',
19
- 'not',
20
- 'you',
21
- 'into',
22
- 'about',
23
- 'when',
24
- 'what',
25
- 'which',
26
- 'their',
27
- 'them',
28
- 'then',
29
- 'than',
30
- 'also',
31
- 'just',
32
- 'add',
33
- 'all',
34
- 'get',
35
- 'use',
36
- 'using',
37
- 'new',
38
- 'how',
39
- 'out',
40
- 'our',
41
- 'but',
42
- 'any',
43
- 'its',
44
- 'may',
45
- 'now',
46
- 'one',
47
- 'two',
48
- 'way',
49
- 'who',
50
- 'did',
51
- 'let',
52
- ]);
53
- export function tokenizeTaskPrompt(taskPrompt) {
54
- const lower = taskPrompt.toLowerCase();
55
- return lower
56
- .split(/[^a-z0-9]+/g)
57
- .filter((t) => t.length >= 3 && !PROMPT_STOPWORDS.has(t));
58
- }
59
- /** dependency + devDependency names (and scoped short names) from package.json */
60
- export function extractDepTokens(pkg) {
61
- const out = new Set();
62
- const addKey = (k) => {
63
- const key = k.toLowerCase();
64
- out.add(key);
65
- if (key.startsWith('@')) {
66
- const parts = key.split('/');
67
- const short = parts[parts.length - 1];
68
- if (short && short.length > 1)
69
- out.add(short);
70
- if (parts.length >= 2)
71
- out.add(parts.slice(0, 2).join('/'));
72
- }
73
- };
74
- const merge = (obj) => {
75
- if (!obj)
76
- return;
77
- for (const k of Object.keys(obj))
78
- addKey(k);
79
- };
80
- merge(pkg.dependencies);
81
- merge(pkg.devDependencies);
82
- merge(pkg.peerDependencies);
83
- merge(pkg.optionalDependencies);
84
- return out;
85
- }
86
- /**
87
- * Score how relevant a bundled skill is to the task prompt and dependency tokens.
88
- */
89
- export function scoreSkillRelevance(skill, promptTokens, depTokens) {
90
- const text = [skill.name, skill.description, ...(skill.tags || [])].join(' ').toLowerCase();
91
- const nameLower = skill.name.toLowerCase().replace(/-/g, ' ');
92
- let score = 0;
93
- for (const t of promptTokens) {
94
- if (t.length < 3)
95
- continue;
96
- if (text.includes(t) || nameLower.includes(t))
97
- score += 3;
98
- }
99
- for (const d of depTokens) {
100
- if (d.length < 2)
101
- continue;
102
- if (text.includes(d))
103
- score += 5;
104
- if (skill.name.toLowerCase().includes(d.replace(/[@/]/g, '-')))
105
- score += 4;
106
- }
107
- // Light synonym hints when deps are empty but prompt mentions stacks
108
- if (depTokens.size === 0 && promptTokens.length > 0) {
109
- const joined = promptTokens.join(' ');
110
- if (joined.includes('react') && (skill.name.includes('react') || text.includes('react')))
111
- score += 2;
112
- if (joined.includes('next') && skill.name.includes('next'))
113
- score += 2;
114
- }
115
- return score;
116
- }
117
- /**
118
- * Pick a subset of bundled skills: core names first, then prompt/dependency matches (score ≥ threshold),
119
- * then pad to minSkills with next-best entries. Does not fill to maxSkills with unrelated skills.
120
- */
121
- export function selectRelevantBuiltInSkills(builtInSkills, taskPrompt, depTokens, options) {
122
- const maxSkills = Math.max(1, options?.maxSkills ?? 12);
123
- const minSkills = Math.min(maxSkills, Math.max(1, options?.minSkills ?? 5));
124
- const minScore = options?.minScore ?? 2;
125
- if (builtInSkills.length === 0)
126
- return [];
127
- const byName = new Map(builtInSkills.map((s) => [s.name, s]));
128
- const promptTokens = tokenizeTaskPrompt(taskPrompt);
129
- const scored = builtInSkills.map((s) => ({
130
- skill: s,
131
- score: scoreSkillRelevance(s, promptTokens, depTokens),
132
- }));
133
- scored.sort((a, b) => {
134
- if (b.score !== a.score)
135
- return b.score - a.score;
136
- return a.skill.name.localeCompare(b.skill.name);
137
- });
138
- const selected = [];
139
- const seen = new Set();
140
- for (const name of CORE_BUNDLED_SKILL_NAMES) {
141
- const sk = byName.get(name);
142
- if (sk && !seen.has(sk.name)) {
143
- selected.push(sk);
144
- seen.add(sk.name);
145
- }
146
- }
147
- for (const { skill, score } of scored) {
148
- if (seen.has(skill.name))
149
- continue;
150
- if (selected.length >= maxSkills)
151
- break;
152
- if (score >= minScore) {
153
- selected.push(skill);
154
- seen.add(skill.name);
155
- }
156
- }
157
- for (const { skill } of scored) {
158
- if (selected.length >= minSkills || selected.length >= maxSkills)
159
- break;
160
- if (seen.has(skill.name))
161
- continue;
162
- selected.push(skill);
163
- seen.add(skill.name);
164
- }
165
- return selected.slice(0, maxSkills);
166
- }
167
- export function formatSelectionSummary(selected, totalBundled) {
168
- if (totalBundled === 0)
169
- return '';
170
- return `Selected **${selected.length}** of **${totalBundled}** bundled skills for this run (from your task wording and \`package.json\` dependencies).`;
171
- }
172
- //# sourceMappingURL=skill-selection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skill-selection.js","sourceRoot":"","sources":["../../src/core/skill-selection.ts"],"names":[],"mappings":"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"}
@@ -1,19 +0,0 @@
1
- export interface SkillsShResult {
2
- id: string;
3
- url: string;
4
- }
5
- export declare class SkillsShClient {
6
- /**
7
- * Search for skills using `npx skills find`
8
- */
9
- search(query: string): Promise<SkillsShResult[]>;
10
- /**
11
- * Install a skill using `npx skills add`
12
- * Note: This CLI installs skills to the local project or global scope.
13
- * We'll try to detect where it went or just let it install to the cwd by default
14
- * and then move it if necessary, but for now we trust `npx skills add` to do its thing.
15
- */
16
- install(skillId: string, targetDir: string): Promise<string | null>;
17
- private parseSearchResults;
18
- }
19
- //# sourceMappingURL=skills-sh-client.d.ts.map