@useactor/core 0.1.0 → 0.2.3

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 (380) hide show
  1. package/dist/auth/google-auth.d.ts +75 -0
  2. package/dist/auth/google-auth.d.ts.map +1 -0
  3. package/dist/auth/google-auth.js +447 -0
  4. package/dist/auth/google-auth.js.map +1 -0
  5. package/dist/auth/oauth-callback-page.d.ts +4 -0
  6. package/dist/auth/oauth-callback-page.d.ts.map +1 -0
  7. package/dist/auth/oauth-callback-page.js +131 -0
  8. package/dist/auth/oauth-callback-page.js.map +1 -0
  9. package/dist/auth/openai-auth.d.ts +48 -0
  10. package/dist/auth/openai-auth.d.ts.map +1 -0
  11. package/dist/auth/openai-auth.js +350 -0
  12. package/dist/auth/openai-auth.js.map +1 -0
  13. package/dist/{artifacts.d.ts → events/artifacts.d.ts} +1 -1
  14. package/dist/events/artifacts.d.ts.map +1 -0
  15. package/dist/events/artifacts.js.map +1 -0
  16. package/dist/{events.d.ts → events/events.d.ts} +16 -2
  17. package/dist/events/events.d.ts.map +1 -0
  18. package/dist/{events.js → events/events.js} +3 -0
  19. package/dist/events/events.js.map +1 -0
  20. package/dist/{feedback.d.ts → events/feedback.d.ts} +1 -1
  21. package/dist/events/feedback.d.ts.map +1 -0
  22. package/dist/events/feedback.js.map +1 -0
  23. package/dist/{local-event-logger.d.ts → events/local-event-logger.d.ts} +1 -1
  24. package/dist/events/local-event-logger.d.ts.map +1 -0
  25. package/dist/{local-event-logger.js → events/local-event-logger.js} +11 -0
  26. package/dist/events/local-event-logger.js.map +1 -0
  27. package/dist/{local-event-schema.d.ts → events/local-event-schema.d.ts} +10 -3
  28. package/dist/events/local-event-schema.d.ts.map +1 -0
  29. package/dist/events/local-event-schema.js.map +1 -0
  30. package/dist/index.d.ts +59 -35
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +59 -35
  33. package/dist/index.js.map +1 -1
  34. package/dist/integrations/built-in-integrations.d.ts +2 -0
  35. package/dist/integrations/built-in-integrations.d.ts.map +1 -0
  36. package/dist/integrations/built-in-integrations.js +2 -0
  37. package/dist/integrations/built-in-integrations.js.map +1 -0
  38. package/dist/integrations/first-party-cli-integration.d.ts +2 -0
  39. package/dist/integrations/first-party-cli-integration.d.ts.map +1 -0
  40. package/dist/integrations/first-party-cli-integration.js +2 -0
  41. package/dist/integrations/first-party-cli-integration.js.map +1 -0
  42. package/dist/integrations/google-workspace-integration.d.ts +2 -0
  43. package/dist/integrations/google-workspace-integration.d.ts.map +1 -0
  44. package/dist/integrations/google-workspace-integration.js +2 -0
  45. package/dist/integrations/google-workspace-integration.js.map +1 -0
  46. package/dist/integrations/integrations.d.ts +2 -0
  47. package/dist/integrations/integrations.d.ts.map +1 -0
  48. package/dist/integrations/integrations.js +2 -0
  49. package/dist/integrations/integrations.js.map +1 -0
  50. package/dist/integrations/monoid-integration.d.ts +2 -0
  51. package/dist/integrations/monoid-integration.d.ts.map +1 -0
  52. package/dist/integrations/monoid-integration.js +2 -0
  53. package/dist/integrations/monoid-integration.js.map +1 -0
  54. package/dist/integrations/pilfer-integration.d.ts +2 -0
  55. package/dist/integrations/pilfer-integration.d.ts.map +1 -0
  56. package/dist/integrations/pilfer-integration.js +2 -0
  57. package/dist/integrations/pilfer-integration.js.map +1 -0
  58. package/dist/integrations/wyrdos-integration.d.ts +2 -0
  59. package/dist/integrations/wyrdos-integration.d.ts.map +1 -0
  60. package/dist/integrations/wyrdos-integration.js +2 -0
  61. package/dist/integrations/wyrdos-integration.js.map +1 -0
  62. package/dist/keybindings/shell-keybindings.d.ts +139 -0
  63. package/dist/keybindings/shell-keybindings.d.ts.map +1 -0
  64. package/dist/keybindings/shell-keybindings.js +453 -0
  65. package/dist/keybindings/shell-keybindings.js.map +1 -0
  66. package/dist/plugins/built-in-integrations.d.ts +3 -0
  67. package/dist/plugins/built-in-integrations.d.ts.map +1 -0
  68. package/dist/plugins/built-in-integrations.js +13 -0
  69. package/dist/plugins/built-in-integrations.js.map +1 -0
  70. package/dist/plugins/first-party-cli-integration.d.ts +62 -0
  71. package/dist/plugins/first-party-cli-integration.d.ts.map +1 -0
  72. package/dist/plugins/first-party-cli-integration.js +524 -0
  73. package/dist/plugins/first-party-cli-integration.js.map +1 -0
  74. package/dist/plugins/google-docs.d.ts +30 -0
  75. package/dist/plugins/google-docs.d.ts.map +1 -0
  76. package/dist/plugins/google-docs.js +487 -0
  77. package/dist/plugins/google-docs.js.map +1 -0
  78. package/dist/plugins/google-drive.d.ts +84 -0
  79. package/dist/plugins/google-drive.d.ts.map +1 -0
  80. package/dist/plugins/google-drive.js +307 -0
  81. package/dist/plugins/google-drive.js.map +1 -0
  82. package/dist/plugins/google-sheets.d.ts +122 -0
  83. package/dist/plugins/google-sheets.d.ts.map +1 -0
  84. package/dist/plugins/google-sheets.js +290 -0
  85. package/dist/plugins/google-sheets.js.map +1 -0
  86. package/dist/plugins/google-slides.d.ts +125 -0
  87. package/dist/plugins/google-slides.d.ts.map +1 -0
  88. package/dist/plugins/google-slides.js +285 -0
  89. package/dist/plugins/google-slides.js.map +1 -0
  90. package/dist/plugins/google-workspace-api.d.ts +16 -0
  91. package/dist/plugins/google-workspace-api.d.ts.map +1 -0
  92. package/dist/plugins/google-workspace-api.js +42 -0
  93. package/dist/plugins/google-workspace-api.js.map +1 -0
  94. package/dist/plugins/google-workspace-integration.d.ts +22 -0
  95. package/dist/plugins/google-workspace-integration.d.ts.map +1 -0
  96. package/dist/plugins/google-workspace-integration.js +1353 -0
  97. package/dist/plugins/google-workspace-integration.js.map +1 -0
  98. package/dist/plugins/google-workspace-oauth.d.ts +80 -0
  99. package/dist/plugins/google-workspace-oauth.d.ts.map +1 -0
  100. package/dist/plugins/google-workspace-oauth.js +187 -0
  101. package/dist/plugins/google-workspace-oauth.js.map +1 -0
  102. package/dist/plugins/monoid-integration.d.ts +11 -0
  103. package/dist/plugins/monoid-integration.d.ts.map +1 -0
  104. package/dist/plugins/monoid-integration.js +14 -0
  105. package/dist/plugins/monoid-integration.js.map +1 -0
  106. package/dist/plugins/pilfer-integration.d.ts +10 -0
  107. package/dist/plugins/pilfer-integration.d.ts.map +1 -0
  108. package/dist/plugins/pilfer-integration.js +13 -0
  109. package/dist/plugins/pilfer-integration.js.map +1 -0
  110. package/dist/plugins/plugins.d.ts +78 -0
  111. package/dist/plugins/plugins.d.ts.map +1 -0
  112. package/dist/plugins/plugins.js +81 -0
  113. package/dist/plugins/plugins.js.map +1 -0
  114. package/dist/plugins/wyrdos-integration.d.ts +11 -0
  115. package/dist/plugins/wyrdos-integration.d.ts.map +1 -0
  116. package/dist/plugins/wyrdos-integration.js +14 -0
  117. package/dist/plugins/wyrdos-integration.js.map +1 -0
  118. package/dist/{ai-sdk-provider.d.ts → providers/ai-sdk-provider.d.ts} +2 -2
  119. package/dist/providers/ai-sdk-provider.d.ts.map +1 -0
  120. package/dist/{ai-sdk-provider.js → providers/ai-sdk-provider.js} +132 -37
  121. package/dist/providers/ai-sdk-provider.js.map +1 -0
  122. package/dist/providers/api-key-providers.d.ts +25 -0
  123. package/dist/providers/api-key-providers.d.ts.map +1 -0
  124. package/dist/providers/api-key-providers.js +67 -0
  125. package/dist/providers/api-key-providers.js.map +1 -0
  126. package/dist/providers/definitions/anthropic-provider.d.ts +421 -0
  127. package/dist/providers/definitions/anthropic-provider.d.ts.map +1 -0
  128. package/dist/providers/definitions/anthropic-provider.js +204 -0
  129. package/dist/providers/definitions/anthropic-provider.js.map +1 -0
  130. package/dist/{codex-oauth-provider.d.ts → providers/definitions/codex-oauth-provider.d.ts} +2 -2
  131. package/dist/providers/definitions/codex-oauth-provider.d.ts.map +1 -0
  132. package/dist/{codex-oauth-provider.js → providers/definitions/codex-oauth-provider.js} +1 -1
  133. package/dist/providers/definitions/codex-oauth-provider.js.map +1 -0
  134. package/dist/providers/definitions/deepseek-provider.d.ts +25 -0
  135. package/dist/providers/definitions/deepseek-provider.d.ts.map +1 -0
  136. package/dist/providers/definitions/deepseek-provider.js +28 -0
  137. package/dist/providers/definitions/deepseek-provider.js.map +1 -0
  138. package/dist/providers/definitions/google-ai-oauth.d.ts +79 -0
  139. package/dist/providers/definitions/google-ai-oauth.d.ts.map +1 -0
  140. package/dist/providers/definitions/google-ai-oauth.js +177 -0
  141. package/dist/providers/definitions/google-ai-oauth.js.map +1 -0
  142. package/dist/providers/definitions/google-provider.d.ts +166 -0
  143. package/dist/providers/definitions/google-provider.d.ts.map +1 -0
  144. package/dist/providers/definitions/google-provider.js +93 -0
  145. package/dist/providers/definitions/google-provider.js.map +1 -0
  146. package/dist/providers/definitions/moonshot-provider.d.ts +28 -0
  147. package/dist/providers/definitions/moonshot-provider.d.ts.map +1 -0
  148. package/dist/providers/definitions/moonshot-provider.js +34 -0
  149. package/dist/providers/definitions/moonshot-provider.js.map +1 -0
  150. package/dist/{openai-oauth.d.ts → providers/definitions/openai-oauth.d.ts} +1 -1
  151. package/dist/providers/definitions/openai-oauth.d.ts.map +1 -0
  152. package/dist/providers/definitions/openai-oauth.js.map +1 -0
  153. package/dist/providers/definitions/openai-provider.d.ts +177 -0
  154. package/dist/providers/definitions/openai-provider.d.ts.map +1 -0
  155. package/dist/{model-catalog.js → providers/definitions/openai-provider.js} +33 -21
  156. package/dist/providers/definitions/openai-provider.js.map +1 -0
  157. package/dist/providers/definitions/perplexity-provider.d.ts +34 -0
  158. package/dist/providers/definitions/perplexity-provider.d.ts.map +1 -0
  159. package/dist/providers/definitions/perplexity-provider.js +46 -0
  160. package/dist/providers/definitions/perplexity-provider.js.map +1 -0
  161. package/dist/providers/definitions/xai-provider.d.ts +68 -0
  162. package/dist/providers/definitions/xai-provider.d.ts.map +1 -0
  163. package/dist/providers/definitions/xai-provider.js +102 -0
  164. package/dist/providers/definitions/xai-provider.js.map +1 -0
  165. package/dist/{mock-provider.d.ts → providers/mock-provider.d.ts} +1 -1
  166. package/dist/providers/mock-provider.d.ts.map +1 -0
  167. package/dist/providers/mock-provider.js.map +1 -0
  168. package/dist/{model-catalog.d.ts → providers/model-catalog.d.ts} +2 -2
  169. package/dist/providers/model-catalog.d.ts.map +1 -0
  170. package/dist/providers/model-catalog.js +31 -0
  171. package/dist/providers/model-catalog.js.map +1 -0
  172. package/dist/providers/provider-failures.d.ts +14 -0
  173. package/dist/providers/provider-failures.d.ts.map +1 -0
  174. package/dist/providers/provider-failures.js +146 -0
  175. package/dist/providers/provider-failures.js.map +1 -0
  176. package/dist/providers/provider-status.d.ts +24 -0
  177. package/dist/providers/provider-status.d.ts.map +1 -0
  178. package/dist/providers/provider-status.js +63 -0
  179. package/dist/providers/provider-status.js.map +1 -0
  180. package/dist/{providers.d.ts → providers/providers.d.ts} +1 -1
  181. package/dist/providers/providers.d.ts.map +1 -0
  182. package/dist/providers/providers.js.map +1 -0
  183. package/dist/{secrets.d.ts → providers/secrets.d.ts} +24 -0
  184. package/dist/providers/secrets.d.ts.map +1 -0
  185. package/dist/{secrets.js → providers/secrets.js} +82 -2
  186. package/dist/providers/secrets.js.map +1 -0
  187. package/dist/{app-runtime.d.ts → runtime/app-runtime.d.ts} +8 -7
  188. package/dist/runtime/app-runtime.d.ts.map +1 -0
  189. package/dist/{app-runtime.js → runtime/app-runtime.js} +58 -28
  190. package/dist/runtime/app-runtime.js.map +1 -0
  191. package/dist/runtime/in-memory-runtime.d.ts +15 -0
  192. package/dist/runtime/in-memory-runtime.d.ts.map +1 -0
  193. package/dist/{in-memory-runtime.js → runtime/in-memory-runtime.js} +135 -29
  194. package/dist/runtime/in-memory-runtime.js.map +1 -0
  195. package/dist/runtime/renderer-api.d.ts +123 -0
  196. package/dist/runtime/renderer-api.d.ts.map +1 -0
  197. package/dist/{renderer-api.js.map → runtime/renderer-api.js.map} +1 -1
  198. package/dist/{runtime-tool-execution.d.ts → runtime/runtime-tool-execution.d.ts} +8 -3
  199. package/dist/runtime/runtime-tool-execution.d.ts.map +1 -0
  200. package/dist/runtime/runtime-tool-execution.js +733 -0
  201. package/dist/runtime/runtime-tool-execution.js.map +1 -0
  202. package/dist/{runtime.d.ts → runtime/runtime.d.ts} +31 -4
  203. package/dist/runtime/runtime.d.ts.map +1 -0
  204. package/dist/{runtime.js → runtime/runtime.js} +24 -0
  205. package/dist/runtime/runtime.js.map +1 -0
  206. package/dist/{history.d.ts → sessions/history.d.ts} +3 -2
  207. package/dist/sessions/history.d.ts.map +1 -0
  208. package/dist/{history.js → sessions/history.js} +55 -1
  209. package/dist/sessions/history.js.map +1 -0
  210. package/dist/{session-actions.d.ts → sessions/session-actions.d.ts} +2 -2
  211. package/dist/sessions/session-actions.d.ts.map +1 -0
  212. package/dist/{session-actions.js → sessions/session-actions.js} +2 -2
  213. package/dist/sessions/session-actions.js.map +1 -0
  214. package/dist/{cli-defined-tools.d.ts → tools/cli-defined-tools.d.ts} +2 -2
  215. package/dist/tools/cli-defined-tools.d.ts.map +1 -0
  216. package/dist/tools/cli-defined-tools.js.map +1 -0
  217. package/dist/tools/document-tools.d.ts +92 -0
  218. package/dist/tools/document-tools.d.ts.map +1 -0
  219. package/dist/tools/document-tools.js +430 -0
  220. package/dist/tools/document-tools.js.map +1 -0
  221. package/dist/{local-tools.d.ts → tools/local-tools.d.ts} +25 -0
  222. package/dist/tools/local-tools.d.ts.map +1 -0
  223. package/dist/tools/local-tools.js +944 -0
  224. package/dist/tools/local-tools.js.map +1 -0
  225. package/dist/tools/mcp-server-config.d.ts.map +1 -0
  226. package/dist/tools/mcp-server-config.js.map +1 -0
  227. package/dist/tools/permission-grant-store.d.ts.map +1 -0
  228. package/dist/tools/permission-grant-store.js.map +1 -0
  229. package/dist/{permission-grants.d.ts → tools/permission-grants.d.ts} +1 -1
  230. package/dist/tools/permission-grants.d.ts.map +1 -0
  231. package/dist/{permission-grants.js → tools/permission-grants.js} +31 -1
  232. package/dist/tools/permission-grants.js.map +1 -0
  233. package/dist/tools/project-app-defaults-tool.d.ts +4 -0
  234. package/dist/tools/project-app-defaults-tool.d.ts.map +1 -0
  235. package/dist/tools/project-app-defaults-tool.js +135 -0
  236. package/dist/tools/project-app-defaults-tool.js.map +1 -0
  237. package/dist/{project-tool-registry.d.ts → tools/project-tool-registry.d.ts} +2 -2
  238. package/dist/tools/project-tool-registry.d.ts.map +1 -0
  239. package/dist/{project-tool-registry.js → tools/project-tool-registry.js} +47 -9
  240. package/dist/tools/project-tool-registry.js.map +1 -0
  241. package/dist/{question-requests.d.ts → tools/question-requests.d.ts} +2 -2
  242. package/dist/tools/question-requests.d.ts.map +1 -0
  243. package/dist/{question-requests.js → tools/question-requests.js} +3 -2
  244. package/dist/tools/question-requests.js.map +1 -0
  245. package/dist/tools/subagent-task-tool.d.ts +8 -0
  246. package/dist/tools/subagent-task-tool.d.ts.map +1 -0
  247. package/dist/tools/subagent-task-tool.js +38 -0
  248. package/dist/tools/subagent-task-tool.js.map +1 -0
  249. package/dist/{tool-requests.d.ts → tools/tool-requests.d.ts} +4 -3
  250. package/dist/tools/tool-requests.d.ts.map +1 -0
  251. package/dist/{tool-requests.js → tools/tool-requests.js} +15 -4
  252. package/dist/tools/tool-requests.js.map +1 -0
  253. package/dist/{tools.d.ts → tools/tools.d.ts} +7 -1
  254. package/dist/tools/tools.d.ts.map +1 -0
  255. package/dist/{tools.js → tools/tools.js} +21 -0
  256. package/dist/tools/tools.js.map +1 -0
  257. package/dist/tools/update-plan-tool.d.ts +14 -0
  258. package/dist/tools/update-plan-tool.d.ts.map +1 -0
  259. package/dist/tools/update-plan-tool.js +83 -0
  260. package/dist/tools/update-plan-tool.js.map +1 -0
  261. package/dist/{personas.d.ts → workspace/personas.d.ts} +42 -1
  262. package/dist/workspace/personas.d.ts.map +1 -0
  263. package/dist/workspace/personas.js +457 -0
  264. package/dist/workspace/personas.js.map +1 -0
  265. package/dist/{projects.d.ts → workspace/projects.d.ts} +35 -5
  266. package/dist/workspace/projects.d.ts.map +1 -0
  267. package/dist/{projects.js → workspace/projects.js} +111 -3
  268. package/dist/workspace/projects.js.map +1 -0
  269. package/dist/{prompt-context.d.ts → workspace/prompt-context.d.ts} +5 -2
  270. package/dist/workspace/prompt-context.d.ts.map +1 -0
  271. package/dist/workspace/prompt-context.js +406 -0
  272. package/dist/workspace/prompt-context.js.map +1 -0
  273. package/dist/workspace/proposed-plan.d.ts.map +1 -0
  274. package/dist/workspace/proposed-plan.js.map +1 -0
  275. package/dist/workspace/repository-instructions.d.ts +20 -0
  276. package/dist/workspace/repository-instructions.d.ts.map +1 -0
  277. package/dist/workspace/repository-instructions.js +111 -0
  278. package/dist/workspace/repository-instructions.js.map +1 -0
  279. package/dist/{skills.d.ts → workspace/skills.d.ts} +23 -2
  280. package/dist/workspace/skills.d.ts.map +1 -0
  281. package/dist/{skills.js → workspace/skills.js} +129 -5
  282. package/dist/workspace/skills.js.map +1 -0
  283. package/package.json +15 -2
  284. package/dist/ai-sdk-provider.d.ts.map +0 -1
  285. package/dist/ai-sdk-provider.js.map +0 -1
  286. package/dist/app-runtime.d.ts.map +0 -1
  287. package/dist/app-runtime.js.map +0 -1
  288. package/dist/artifacts.d.ts.map +0 -1
  289. package/dist/artifacts.js.map +0 -1
  290. package/dist/cli-defined-tools.d.ts.map +0 -1
  291. package/dist/cli-defined-tools.js.map +0 -1
  292. package/dist/codex-oauth-provider.d.ts.map +0 -1
  293. package/dist/codex-oauth-provider.js.map +0 -1
  294. package/dist/events.d.ts.map +0 -1
  295. package/dist/events.js.map +0 -1
  296. package/dist/feedback.d.ts.map +0 -1
  297. package/dist/feedback.js.map +0 -1
  298. package/dist/history.d.ts.map +0 -1
  299. package/dist/history.js.map +0 -1
  300. package/dist/in-memory-runtime.d.ts +0 -12
  301. package/dist/in-memory-runtime.d.ts.map +0 -1
  302. package/dist/in-memory-runtime.js.map +0 -1
  303. package/dist/integrations.d.ts +0 -37
  304. package/dist/integrations.d.ts.map +0 -1
  305. package/dist/integrations.js +0 -48
  306. package/dist/integrations.js.map +0 -1
  307. package/dist/local-event-logger.d.ts.map +0 -1
  308. package/dist/local-event-logger.js.map +0 -1
  309. package/dist/local-event-schema.d.ts.map +0 -1
  310. package/dist/local-event-schema.js.map +0 -1
  311. package/dist/local-tools.d.ts.map +0 -1
  312. package/dist/local-tools.js +0 -418
  313. package/dist/local-tools.js.map +0 -1
  314. package/dist/mcp-server-config.d.ts.map +0 -1
  315. package/dist/mcp-server-config.js.map +0 -1
  316. package/dist/mock-provider.d.ts.map +0 -1
  317. package/dist/mock-provider.js.map +0 -1
  318. package/dist/model-catalog.d.ts.map +0 -1
  319. package/dist/model-catalog.js.map +0 -1
  320. package/dist/monoid-integration.d.ts +0 -33
  321. package/dist/monoid-integration.d.ts.map +0 -1
  322. package/dist/monoid-integration.js +0 -184
  323. package/dist/monoid-integration.js.map +0 -1
  324. package/dist/openai-oauth.d.ts.map +0 -1
  325. package/dist/openai-oauth.js.map +0 -1
  326. package/dist/permission-grant-store.d.ts.map +0 -1
  327. package/dist/permission-grant-store.js.map +0 -1
  328. package/dist/permission-grants.d.ts.map +0 -1
  329. package/dist/permission-grants.js.map +0 -1
  330. package/dist/personas.d.ts.map +0 -1
  331. package/dist/personas.js +0 -137
  332. package/dist/personas.js.map +0 -1
  333. package/dist/project-tool-registry.d.ts.map +0 -1
  334. package/dist/project-tool-registry.js.map +0 -1
  335. package/dist/projects.d.ts.map +0 -1
  336. package/dist/projects.js.map +0 -1
  337. package/dist/prompt-context.d.ts.map +0 -1
  338. package/dist/prompt-context.js +0 -170
  339. package/dist/prompt-context.js.map +0 -1
  340. package/dist/proposed-plan.d.ts.map +0 -1
  341. package/dist/proposed-plan.js.map +0 -1
  342. package/dist/providers.d.ts.map +0 -1
  343. package/dist/providers.js.map +0 -1
  344. package/dist/question-requests.d.ts.map +0 -1
  345. package/dist/question-requests.js.map +0 -1
  346. package/dist/renderer-api.d.ts +0 -52
  347. package/dist/renderer-api.d.ts.map +0 -1
  348. package/dist/runtime-tool-execution.d.ts.map +0 -1
  349. package/dist/runtime-tool-execution.js +0 -245
  350. package/dist/runtime-tool-execution.js.map +0 -1
  351. package/dist/runtime.d.ts.map +0 -1
  352. package/dist/runtime.js.map +0 -1
  353. package/dist/secrets.d.ts.map +0 -1
  354. package/dist/secrets.js.map +0 -1
  355. package/dist/session-actions.d.ts.map +0 -1
  356. package/dist/session-actions.js.map +0 -1
  357. package/dist/skills.d.ts.map +0 -1
  358. package/dist/skills.js.map +0 -1
  359. package/dist/tool-requests.d.ts.map +0 -1
  360. package/dist/tool-requests.js.map +0 -1
  361. package/dist/tools.d.ts.map +0 -1
  362. package/dist/tools.js.map +0 -1
  363. package/dist/wyrdos-integration.d.ts +0 -32
  364. package/dist/wyrdos-integration.d.ts.map +0 -1
  365. package/dist/wyrdos-integration.js +0 -183
  366. package/dist/wyrdos-integration.js.map +0 -1
  367. /package/dist/{artifacts.js → events/artifacts.js} +0 -0
  368. /package/dist/{feedback.js → events/feedback.js} +0 -0
  369. /package/dist/{local-event-schema.js → events/local-event-schema.js} +0 -0
  370. /package/dist/{openai-oauth.js → providers/definitions/openai-oauth.js} +0 -0
  371. /package/dist/{mock-provider.js → providers/mock-provider.js} +0 -0
  372. /package/dist/{providers.js → providers/providers.js} +0 -0
  373. /package/dist/{renderer-api.js → runtime/renderer-api.js} +0 -0
  374. /package/dist/{cli-defined-tools.js → tools/cli-defined-tools.js} +0 -0
  375. /package/dist/{mcp-server-config.d.ts → tools/mcp-server-config.d.ts} +0 -0
  376. /package/dist/{mcp-server-config.js → tools/mcp-server-config.js} +0 -0
  377. /package/dist/{permission-grant-store.d.ts → tools/permission-grant-store.d.ts} +0 -0
  378. /package/dist/{permission-grant-store.js → tools/permission-grant-store.js} +0 -0
  379. /package/dist/{proposed-plan.d.ts → workspace/proposed-plan.d.ts} +0 -0
  380. /package/dist/{proposed-plan.js → workspace/proposed-plan.js} +0 -0
@@ -8,8 +8,13 @@ export function createProjectRecord(input, options) {
8
8
  createdAt: options.now,
9
9
  updatedAt: options.now,
10
10
  ...(input.wyrdosContainerId ? { wyrdosContainerId: normalizeOptionalString(input.wyrdosContainerId) } : {}),
11
+ ...(input.wyrdosContainerName ? { wyrdosContainerName: normalizeOptionalString(input.wyrdosContainerName) } : {}),
11
12
  ...(input.monoidContainerId ? { monoidContainerId: normalizeOptionalString(input.monoidContainerId) } : {}),
13
+ ...(input.monoidContainerName ? { monoidContainerName: normalizeOptionalString(input.monoidContainerName) } : {}),
14
+ ...(input.pilferProjectId ? { pilferProjectId: normalizeOptionalString(input.pilferProjectId) } : {}),
15
+ ...(input.pilferProjectName ? { pilferProjectName: normalizeOptionalString(input.pilferProjectName) } : {}),
12
16
  ...(input.githubRepoUrl ? { githubRepoUrl: normalizeUrl(input.githubRepoUrl, "GitHub repo URL") } : {}),
17
+ ...(input.color ? { color: normalizeColor(input.color) } : {}),
13
18
  ...(input.desktopFolder ? { desktopFolder: normalizeOptionalString(input.desktopFolder) } : {}),
14
19
  ...(input.rootPath ? { rootPath: normalizeOptionalString(input.rootPath) } : {}),
15
20
  ...(input.links ? { links: normalizeLinks(input.links) } : {}),
@@ -28,12 +33,25 @@ export function updateProjectRecord(existing, input, options) {
28
33
  ...(input.wyrdosContainerId !== undefined
29
34
  ? { wyrdosContainerId: normalizeOptionalString(input.wyrdosContainerId) }
30
35
  : {}),
36
+ ...(input.wyrdosContainerName !== undefined
37
+ ? { wyrdosContainerName: normalizeOptionalString(input.wyrdosContainerName) }
38
+ : {}),
31
39
  ...(input.monoidContainerId !== undefined
32
40
  ? { monoidContainerId: normalizeOptionalString(input.monoidContainerId) }
33
41
  : {}),
42
+ ...(input.monoidContainerName !== undefined
43
+ ? { monoidContainerName: normalizeOptionalString(input.monoidContainerName) }
44
+ : {}),
45
+ ...(input.pilferProjectId !== undefined
46
+ ? { pilferProjectId: normalizeOptionalString(input.pilferProjectId) }
47
+ : {}),
48
+ ...(input.pilferProjectName !== undefined
49
+ ? { pilferProjectName: normalizeOptionalString(input.pilferProjectName) }
50
+ : {}),
34
51
  ...(input.githubRepoUrl !== undefined
35
52
  ? { githubRepoUrl: normalizeUrl(input.githubRepoUrl, "GitHub repo URL") }
36
53
  : {}),
54
+ ...(input.color !== undefined ? { color: normalizeColor(input.color) } : {}),
37
55
  ...(input.desktopFolder !== undefined
38
56
  ? { desktopFolder: normalizeOptionalString(input.desktopFolder) }
39
57
  : {}),
@@ -62,6 +80,9 @@ export function validateProjectRecord(record) {
62
80
  if (record.githubRepoUrl) {
63
81
  normalizeUrl(record.githubRepoUrl, "GitHub repo URL");
64
82
  }
83
+ if (record.color) {
84
+ normalizeColor(record.color);
85
+ }
65
86
  if (record.links) {
66
87
  normalizeLinks(record.links);
67
88
  }
@@ -104,6 +125,34 @@ export async function listProjects(options) {
104
125
  const config = await readActorConfig(options);
105
126
  return Object.values(getProjectMap(config)).sort((a, b) => a.name.localeCompare(b.name));
106
127
  }
128
+ export async function getCwdProjectPreferences(options) {
129
+ const config = await readActorConfig(options);
130
+ return normalizeCwdProjectPreferences(getCwdProjectPreferencesFromConfig(config));
131
+ }
132
+ export async function updateCwdProjectPreferences(options) {
133
+ let nextPreferences;
134
+ await updateActorConfig({
135
+ ...options,
136
+ update(config) {
137
+ const existing = normalizeCwdProjectPreferences(getCwdProjectPreferencesFromConfig(config));
138
+ nextPreferences = normalizeCwdProjectPreferences({
139
+ ...existing,
140
+ ...options.input
141
+ });
142
+ return {
143
+ ...config,
144
+ cli: {
145
+ ...(config.cli ?? {}),
146
+ cwdProject: nextPreferences
147
+ }
148
+ };
149
+ }
150
+ });
151
+ if (!nextPreferences) {
152
+ throw new Error("Cwd project preferences were not updated.");
153
+ }
154
+ return nextPreferences;
155
+ }
107
156
  export async function getProject(projectId, options) {
108
157
  const config = await readActorConfig(options);
109
158
  return getProjectMap(config)[projectId];
@@ -138,13 +187,44 @@ export async function updateProject(options) {
138
187
  }
139
188
  return nextProject;
140
189
  }
190
+ export async function deleteProject(options) {
191
+ await updateActorConfig({
192
+ ...options,
193
+ update(config) {
194
+ const projects = getProjectMap(config);
195
+ if (!projects[options.projectId]) {
196
+ throw new Error(`Project not found: ${options.projectId}`);
197
+ }
198
+ const { [options.projectId]: _deleted, ...remainingProjects } = projects;
199
+ const { defaults: _defaults, ...configWithoutDefaults } = config;
200
+ const nextDefaults = config.defaults?.projectId === options.projectId
201
+ ? omitProjectDefault(config.defaults)
202
+ : config.defaults;
203
+ return {
204
+ ...configWithoutDefaults,
205
+ ...(nextDefaults ? { defaults: nextDefaults } : {}),
206
+ cli: {
207
+ ...(config.cli ?? {}),
208
+ projects: remainingProjects
209
+ }
210
+ };
211
+ }
212
+ });
213
+ }
214
+ function omitProjectDefault(defaults) {
215
+ const { projectId: _projectId, ...remainingDefaults } = defaults;
216
+ return Object.keys(remainingDefaults).length > 0
217
+ ? remainingDefaults
218
+ : undefined;
219
+ }
141
220
  export async function enableProjectIntegration(options) {
142
221
  const existing = await getProject(options.projectId, options);
143
222
  if (!existing) {
144
223
  throw new Error(`Project not found: ${options.projectId}`);
145
224
  }
146
225
  const integrations = normalizeIntegrations([
147
- ...(existing.integrations ?? []),
226
+ ...(existing.integrations ?? []).filter((integration) => integration.providerId !== options.providerId ||
227
+ integration.resourceId !== options.resourceId),
148
228
  { providerId: options.providerId, ...(options.resourceId ? { resourceId: options.resourceId } : {}) }
149
229
  ]);
150
230
  const deduped = dedupeIntegrations(integrations);
@@ -162,8 +242,14 @@ export async function disableProjectIntegration(options) {
162
242
  if (!existing) {
163
243
  throw new Error(`Project not found: ${options.projectId}`);
164
244
  }
165
- const integrations = (existing.integrations ?? []).filter((integration) => integration.providerId !== options.providerId ||
245
+ const remainingIntegrations = (existing.integrations ?? []).filter((integration) => integration.providerId !== options.providerId ||
166
246
  (options.resourceId !== undefined && integration.resourceId !== options.resourceId));
247
+ const integrations = !options.resourceId && defaultEnabledProjectIntegrationIds.has(options.providerId)
248
+ ? normalizeIntegrations([
249
+ ...remainingIntegrations,
250
+ { providerId: options.providerId, disabled: true }
251
+ ])
252
+ : remainingIntegrations;
167
253
  return updateProject({
168
254
  projectId: options.projectId,
169
255
  input: { integrations },
@@ -190,6 +276,19 @@ function getProjectMap(config) {
190
276
  validateProjectRecord(project)
191
277
  ]));
192
278
  }
279
+ function getCwdProjectPreferencesFromConfig(config) {
280
+ const cwdProject = config.cli?.cwdProject;
281
+ if (!cwdProject || typeof cwdProject !== "object" || Array.isArray(cwdProject)) {
282
+ return {};
283
+ }
284
+ return cwdProject;
285
+ }
286
+ function normalizeCwdProjectPreferences(input) {
287
+ return {
288
+ ...(input.enabledTools ? { enabledTools: normalizeStringList(input.enabledTools, "enabled tool") } : {}),
289
+ ...(input.integrations ? { integrations: normalizeIntegrations(input.integrations) } : {})
290
+ };
291
+ }
193
292
  function normalizeRequiredString(value, label) {
194
293
  const normalized = value.trim();
195
294
  if (!normalized) {
@@ -213,6 +312,13 @@ function normalizeUrl(value, label) {
213
312
  throw new Error(`${label} must be an http(s) URL.`);
214
313
  }
215
314
  }
315
+ function normalizeColor(value) {
316
+ const normalized = normalizeRequiredString(value, "Project color");
317
+ if (!/^#[0-9a-fA-F]{6}$/.test(normalized)) {
318
+ throw new Error("Project color must be a hex color.");
319
+ }
320
+ return normalized.toUpperCase();
321
+ }
216
322
  function normalizeLinks(links) {
217
323
  return links.map((link) => ({
218
324
  label: normalizeRequiredString(link.label, "Project link label"),
@@ -225,7 +331,8 @@ function normalizeStringList(values, label) {
225
331
  function normalizeIntegrations(integrations) {
226
332
  return integrations.map((integration) => ({
227
333
  providerId: normalizeRequiredString(integration.providerId, "Project integration providerId"),
228
- ...(integration.resourceId ? { resourceId: normalizeOptionalString(integration.resourceId) } : {})
334
+ ...(integration.resourceId ? { resourceId: normalizeOptionalString(integration.resourceId) } : {}),
335
+ ...(integration.disabled ? { disabled: true } : {})
229
336
  }));
230
337
  }
231
338
  function dedupeIntegrations(integrations) {
@@ -240,4 +347,5 @@ function dedupeIntegrations(integrations) {
240
347
  return left.localeCompare(right);
241
348
  });
242
349
  }
350
+ const defaultEnabledProjectIntegrationIds = new Set(["wyrdos", "monoid", "pilfer"]);
243
351
  //# sourceMappingURL=projects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/workspace/projects.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,15 @@
1
- import type { CollaborationMode, ModelRef, PersonaRef, ProjectRef, SessionMessage } from "./runtime.js";
1
+ import type { CollaborationMode, ModelRef, PersonaRef, ProjectRef, SessionMessage } from "../runtime/runtime.js";
2
2
  import { type SkillMetadata } from "./skills.js";
3
- import type { ToolDescriptor } from "./tools.js";
3
+ import type { ToolDescriptor } from "../tools/tools.js";
4
+ import type { RepositoryInstruction, RepositoryInstructionLoadError } from "./repository-instructions.js";
4
5
  export interface PromptContextOptions {
5
6
  readonly now?: () => Date;
6
7
  readonly platform?: NodeJS.Platform;
7
8
  readonly model?: ModelRef;
8
9
  readonly tools?: readonly ToolDescriptor[];
9
10
  readonly skills?: readonly SkillMetadata[];
11
+ readonly repositoryInstructions?: readonly RepositoryInstruction[];
12
+ readonly repositoryInstructionErrors?: readonly RepositoryInstructionLoadError[];
10
13
  readonly collaborationMode?: CollaborationMode;
11
14
  }
12
15
  export declare function buildPromptContextMessages(messages: readonly SessionMessage[], persona: PersonaRef | undefined, project: ProjectRef | undefined, options?: PromptContextOptions): readonly SessionMessage[];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-context.d.ts","sourceRoot":"","sources":["../../src/workspace/prompt-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EACjB,QAAQ,EACR,UAAU,EACV,UAAU,EACV,cAAc,EACf,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAA4B,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,KAAK,EACV,qBAAqB,EACrB,8BAA8B,EAC/B,MAAM,8BAA8B,CAAC;AAEtC,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;IACpC,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;IAC3C,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,aAAa,EAAE,CAAC;IAC3C,QAAQ,CAAC,sBAAsB,CAAC,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACnE,QAAQ,CAAC,2BAA2B,CAAC,EAAE,SAAS,8BAA8B,EAAE,CAAC;IACjF,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;CAChD;AAED,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,SAAS,cAAc,EAAE,EACnC,OAAO,EAAE,UAAU,GAAG,SAAS,EAC/B,OAAO,EAAE,UAAU,GAAG,SAAS,EAC/B,OAAO,GAAE,oBAAyB,GACjC,SAAS,cAAc,EAAE,CA4F3B"}
@@ -0,0 +1,406 @@
1
+ import { createSessionMessage } from "../runtime/runtime.js";
2
+ import { buildSkillsPromptSection } from "./skills.js";
3
+ export function buildPromptContextMessages(messages, persona, project, options = {}) {
4
+ const contextMessages = [actorHarnessContext(messages, options)];
5
+ if (options.collaborationMode === "plan") {
6
+ contextMessages.push(planModeContext(messages));
7
+ }
8
+ const repositoryContext = repositoryInstructionsContext(options);
9
+ if (repositoryContext) {
10
+ contextMessages.push(repositoryContext);
11
+ }
12
+ const skillsContext = buildSkillsPromptSection(options.skills ?? []);
13
+ if (skillsContext) {
14
+ contextMessages.push(createSessionMessage({
15
+ id: "actor_skills_context",
16
+ message: { role: "system", content: skillsContext },
17
+ createdAt: new Date(0).toISOString(),
18
+ }));
19
+ }
20
+ if (persona) {
21
+ contextMessages.push(createSessionMessage({
22
+ id: `persona_context_${persona.id}`,
23
+ message: {
24
+ role: "system",
25
+ content: [
26
+ `Persona: ${persona.name}`,
27
+ persona.instructions,
28
+ !project ? runtimeEnvironmentContext(project, options) : undefined,
29
+ ]
30
+ .filter(Boolean)
31
+ .join("\n"),
32
+ },
33
+ createdAt: new Date(0).toISOString(),
34
+ persona,
35
+ }));
36
+ }
37
+ if (project) {
38
+ const context = [
39
+ `Project: ${project.name}`,
40
+ project.rootPath ? `Root: ${project.rootPath}` : undefined,
41
+ project.githubRepoUrl ? `GitHub: ${project.githubRepoUrl}` : undefined,
42
+ projectAppDefaultsContext(project),
43
+ project.enabledTools?.length
44
+ ? `Enabled tools: ${project.enabledTools.join(", ")}`
45
+ : undefined,
46
+ project.integrations?.filter((plugin) => !plugin.disabled)
47
+ .length
48
+ ? `Enabled plugins: ${project.integrations
49
+ .filter((plugin) => !plugin.disabled)
50
+ .map((plugin) => plugin.providerId)
51
+ .join(", ")}`
52
+ : undefined,
53
+ project.instructions
54
+ ? `Instructions:\n${project.instructions}`
55
+ : undefined,
56
+ "Project app behavior: when the user asks to use MONOid, WyrdOS, or Pilfer without naming a target, use the project app defaults above. When the user asks to connect/link this project to app containers or projects, use the `project_app_defaults` tool instead of editing Actor config files or running shell commands. For open-ended project requests that would benefit from business/product/task context, read relevant enabled app context first instead of answering from generic assumptions.",
57
+ runtimeEnvironmentContext(project, options),
58
+ ]
59
+ .filter(Boolean)
60
+ .join("\n");
61
+ contextMessages.push(createSessionMessage({
62
+ id: `project_context_${project.id}`,
63
+ message: { role: "system", content: context },
64
+ createdAt: new Date(0).toISOString(),
65
+ project,
66
+ }));
67
+ }
68
+ if (!persona && !project) {
69
+ contextMessages.push(createSessionMessage({
70
+ id: "runtime_environment_context",
71
+ message: {
72
+ role: "system",
73
+ content: runtimeEnvironmentContext(project, options),
74
+ },
75
+ createdAt: new Date(0).toISOString(),
76
+ }));
77
+ }
78
+ return [...contextMessages, ...messages];
79
+ }
80
+ function projectAppDefaultsContext(project) {
81
+ const defaults = [
82
+ project.wyrdosContainerId
83
+ ? `WyrdOS container: ${formatAppDefaultTarget(project.wyrdosContainerId, project.wyrdosContainerName)}`
84
+ : undefined,
85
+ project.monoidContainerId
86
+ ? `MONOid container: ${formatAppDefaultTarget(project.monoidContainerId, project.monoidContainerName)}`
87
+ : undefined,
88
+ project.pilferProjectId
89
+ ? `Pilfer project: ${formatAppDefaultTarget(project.pilferProjectId, project.pilferProjectName)}`
90
+ : undefined,
91
+ ...(project.integrations ?? [])
92
+ .filter((integration) => integration.resourceId && !integration.disabled)
93
+ .map((integration) => `${integration.providerId} resource: ${integration.resourceId}`),
94
+ ].filter(Boolean);
95
+ return defaults.length ? `Project app defaults:\n${defaults.join("\n")}` : undefined;
96
+ }
97
+ function formatAppDefaultTarget(id, label) {
98
+ return label ? `${label} (${id})` : id;
99
+ }
100
+ function repositoryInstructionsContext(options) {
101
+ const instructions = options.repositoryInstructions ?? [];
102
+ const errors = options.repositoryInstructionErrors ?? [];
103
+ if (instructions.length === 0 && errors.length === 0) {
104
+ return undefined;
105
+ }
106
+ const content = [
107
+ "Repository instructions:",
108
+ "AGENTS.md files are human repository instructions. Each scope applies to the directory tree rooted at that scope. More specific scopes override broader scopes for files they cover.",
109
+ ...instructions.flatMap((instruction) => [
110
+ "",
111
+ `Source: ${instruction.path}`,
112
+ `Scope: ${instruction.scope}`,
113
+ instruction.content,
114
+ ]),
115
+ ...(errors.length
116
+ ? [
117
+ "",
118
+ "Repository instruction load errors:",
119
+ ...errors.map((error) => `- ${error.path}: ${error.message}`),
120
+ ]
121
+ : []),
122
+ ].join("\n");
123
+ return createSessionMessage({
124
+ id: "actor_repository_instructions_context",
125
+ message: { role: "system", content },
126
+ createdAt: new Date(0).toISOString(),
127
+ });
128
+ }
129
+ function planModeContext(messages) {
130
+ const hasPriorPlan = messages.some((message) => message.role === "assistant" && message.content.includes("<proposed_plan>"));
131
+ const postPlanGuidance = hasPriorPlan
132
+ ? [
133
+ "",
134
+ "Post-plan follow-ups:",
135
+ "- A previous assistant message already contains a `<proposed_plan>` block.",
136
+ "- If the latest user message asks a question about the plan, asks whether you have questions, asks for an explanation, or gives feedback, answer directly in normal assistant prose.",
137
+ "- If no material unresolved decision remains, say `No questions.` or an equivalently brief answer. Do not repeat the plan.",
138
+ "- Do not emit another `<proposed_plan>` unless the latest user message explicitly asks to revise, replace, regenerate, or update the plan.",
139
+ "- Use `request_user_input` only when the follow-up introduces one to three material unresolved decisions.",
140
+ ]
141
+ : [
142
+ "",
143
+ "When the plan is complete, output exactly one final plan wrapped in tags:",
144
+ "<proposed_plan>",
145
+ "Markdown plan content here.",
146
+ "</proposed_plan>",
147
+ "",
148
+ "The `<proposed_plan>` block should include a title, concise summary, implementation changes, tests, and assumptions/defaults. Do not ask whether to proceed in the final plan.",
149
+ "",
150
+ "After emitting a `<proposed_plan>` block, do not emit another `<proposed_plan>` unless the user asks to revise, replace, or regenerate the plan.",
151
+ ];
152
+ return {
153
+ id: "actor_plan_mode_context",
154
+ role: "system",
155
+ content: [
156
+ "# Collaboration Mode: Plan",
157
+ "",
158
+ "You work in 3 phases, and you should chat your way to a decision-complete execution plan before implementation. A decision-complete plan leaves no material decisions for the implementer.",
159
+ "",
160
+ "## Mode rules",
161
+ "",
162
+ "You are in Plan Mode. User wording such as \"go ahead\" or \"implement\" does not change the mode; treat execution requests as requests to plan the execution.",
163
+ "",
164
+ "Do not edit files, write repo-tracked files, run migrations/codegen, or carry out implementation work in Plan Mode. You may inspect files, search the repo, and run non-mutating checks that help produce the plan.",
165
+ "",
166
+ "## Phase 1: Ground in the environment",
167
+ "",
168
+ "Before asking the user questions, first ground yourself in the environment through non-mutating exploration when repo context is available. Resolve discoverable facts by inspecting files, configs, schemas, types, tests, and docs.",
169
+ "",
170
+ "Do not ask questions that can be answered from the repo or system. Ask only after reasonable exploration, and only for preferences, tradeoffs, or missing intent that cannot be discovered.",
171
+ "",
172
+ "## Phase 2: Intent chat",
173
+ "",
174
+ "Keep asking until you can clearly state the goal, success criteria, audience, in/out of scope, constraints, current state, and key preferences/tradeoffs.",
175
+ "Bias toward questions over guessing: if any high-impact ambiguity remains, do not emit `<proposed_plan>`. Ask first.",
176
+ "",
177
+ "## Phase 3: Implementation chat",
178
+ "",
179
+ "Once intent is stable, keep asking until the plan is decision-complete: approach, interfaces, data flow, edge cases/failure modes, tests, acceptance criteria, and compatibility constraints.",
180
+ "Before finalizing a plan, identify conflicts with existing behavior, shortcuts, APIs, schemas, config, permissions, and UX conventions. If the requested behavior would replace or break an existing workflow, call out the tradeoff and ask or record the chosen default.",
181
+ "",
182
+ "## Asking questions",
183
+ "",
184
+ "Strongly prefer using `request_user_input` to ask any material questions.",
185
+ "Ask at most one to three questions at a time. If more uncertainties remain, ask only the highest-impact one to three questions first, then continue after the answers.",
186
+ "Offer only meaningful multiple-choice options. Do not include filler choices that are obviously wrong or irrelevant.",
187
+ "Do not write numbered or bulleted prose question lists in Plan Mode when `request_user_input` is available.",
188
+ "Each question must materially change the plan, confirm or lock an important assumption, choose between meaningful tradeoffs, or request missing intent that cannot be discovered through non-mutating exploration.",
189
+ "",
190
+ "For discoverable facts, explore first. For preferences or tradeoffs that cannot be derived from the repo, ask early with concrete options and a recommended default.",
191
+ "",
192
+ "## Finalization rule",
193
+ "",
194
+ "Only output the final plan when it is decision-complete and leaves no material decisions to the implementer.",
195
+ "Decision-complete plans must include compatibility notes when relevant, and success criteria should preserve unaffected workflows.",
196
+ ...postPlanGuidance,
197
+ ].join("\n"),
198
+ createdAt: new Date(0).toISOString(),
199
+ };
200
+ }
201
+ function actorHarnessContext(messages, options) {
202
+ return createSessionMessage({
203
+ id: "actor_harness_context",
204
+ message: {
205
+ role: "system",
206
+ content: [
207
+ "Actor harness contract:",
208
+ "- You are running inside Actor, a local-first agent workbench for CLI and desktop sessions.",
209
+ "- Treat @useactor/core as the authority for runtime behavior, tool execution, approvals, and session history.",
210
+ "- You are a coding agent. If the user asks for implementation, keep working until the requested task is genuinely handled. Do not stop at analysis or a proposal unless the user asks for planning only.",
211
+ "- Inspect relevant project files before changing them. Prefer existing project patterns and helper APIs over inventing new structure. Keep edits scoped to the user's request and existing project conventions.",
212
+ "- Before proposing or implementing a user-visible change, check for conflicts with existing behavior, shortcuts, APIs, schemas, config, permissions, and UX conventions. Surface material tradeoffs or regressions before changing behavior.",
213
+ "- Preserve existing workflows unless the user clearly asks to replace them. If a request would overwrite an existing shortcut or contract, ask or explicitly state the compatibility impact before proceeding.",
214
+ "- You may be in a dirty worktree. Never revert, overwrite, or tidy unrelated changes you did not make. If user changes touch files you must edit, read them carefully and work with the current contents.",
215
+ "- Prefer structured file edit tools for manual code changes. Do not create files through shell heredocs when an Actor write/edit/patch tool is available. Use shell commands for builds, tests, package scripts, and other terminal operations.",
216
+ "- Read-only local inspection tools may run directly and can read absolute paths outside the project root when OS permissions allow it. File writes, edits, shell commands, and external service mutations are approval-gated by Actor.",
217
+ "- Never claim local files are inaccessible when read/search tools are available.",
218
+ "- For Office files such as .docx and .xlsx, use document_inspect for reading and document_apply_operations for edits. Do not use read_file, edit_file, or write_file on Office binaries.",
219
+ "- When editing Word or Excel documents, preserve the original file by writing an edited copy/artifact, then summarize the changes and output path.",
220
+ googleWorkspaceAvailabilityContext(messages, options.tools),
221
+ "- When you need to ask the user one to three material clarification questions, use `request_user_input` with two or three meaningful multiple-choice options per question instead of writing a prose question list.",
222
+ "- Ask only when a choice materially changes the result, is destructive or security-sensitive, or requires a secret or fact that cannot be discovered from the repo. Otherwise choose the most reasonable default and continue.",
223
+ "- If a tool is denied, redirected, malformed, unavailable, or fails, continue from the visible result instead of assuming it executed.",
224
+ taskProgressContext(options.tools),
225
+ "- After code changes, verify from the most focused relevant test or typecheck outward as risk warrants. Do not fix unrelated failures unless the user asks.",
226
+ "- Report verification honestly. Mention checks that passed, failed, or could not run. If work is incomplete, name the blocker and the exact next step.",
227
+ "- If the user asks to resume, continue, or try again, inspect prior messages, tool results, and any visible plan/progress state. Continue from the next incomplete or blocked step instead of restarting from scratch.",
228
+ "- Do not mark work complete because you described a plan, said you would do something, or started a command. Completion requires the requested change to exist and relevant verification to be attempted or explicitly impossible.",
229
+ "- Final answers should be concise and concrete: what changed, where it changed, what was verified, and any residual risk or follow-up.",
230
+ modelContext(options.model),
231
+ toolContext(options.tools),
232
+ shellSandboxContext(options.tools),
233
+ subagentTaskContext(options.tools),
234
+ skillLoadingContext(options.tools),
235
+ skillCreationContext(options.tools),
236
+ ]
237
+ .filter(Boolean)
238
+ .join("\n"),
239
+ },
240
+ createdAt: new Date(0).toISOString(),
241
+ });
242
+ }
243
+ function subagentTaskContext(tools) {
244
+ if (!tools?.some((tool) => tool.id === "task")) {
245
+ return undefined;
246
+ }
247
+ return [
248
+ "Read-only subagents:",
249
+ "- Use `task` to delegate a focused, independent analysis question when parallel review would reduce risk or clarify a complex codebase decision.",
250
+ "- Subagents are read-only and cannot use tools or mutate state. Give them enough specific context, file names, constraints, and the exact question to answer.",
251
+ "- Do not delegate implementation, approvals, external service mutations, or broad open-ended work.",
252
+ ].join("\n");
253
+ }
254
+ function shellSandboxContext(tools) {
255
+ if (!tools?.some((tool) => tool.id === "bash")) {
256
+ return undefined;
257
+ }
258
+ return [
259
+ "Shell sandbox profiles:",
260
+ "- Bash requests are approval-gated and classified before execution as `read-only`, `workspace-write`, `network`, `external-write`, or `destructive`.",
261
+ "- Prefer read-only commands for inspection. Use workspace-write commands only for requested project changes.",
262
+ "- Ask or rely on explicit approval before network, external-write, or destructive shell work; do not hide those effects inside broad commands.",
263
+ ].join("\n");
264
+ }
265
+ function skillLoadingContext(tools) {
266
+ if (!tools?.some((tool) => tool.id === "read_skill")) {
267
+ return undefined;
268
+ }
269
+ return [
270
+ "Skill usage:",
271
+ "- Skill metadata in context is a routing hint, not the full workflow. When a file-backed skill applies, call `read_skill` to load its full `SKILL.md` before following it.",
272
+ "- Built-in and app skills may include inline instructions; use `read_skill` when the inline instruction is absent or insufficient.",
273
+ "- Do not infer detailed skill workflows from the name and description alone.",
274
+ ].join("\n");
275
+ }
276
+ function modelContext(model) {
277
+ if (!model) {
278
+ return undefined;
279
+ }
280
+ return [
281
+ "Selected model:",
282
+ `provider: ${model.providerId}`,
283
+ `model: ${model.modelId}`,
284
+ model.variantId ? `variant: ${model.variantId}` : undefined,
285
+ ]
286
+ .filter(Boolean)
287
+ .join("\n");
288
+ }
289
+ function toolContext(tools) {
290
+ if (!tools?.length) {
291
+ return "Available tools: none registered for this session.";
292
+ }
293
+ return [
294
+ "Available Actor tools:",
295
+ ...tools.map((tool) => [
296
+ `- ${tool.id}`,
297
+ `name: ${tool.name}`,
298
+ `permission: ${tool.permissionPolicy}`,
299
+ `description: ${tool.description}`,
300
+ `params: ${toolParamsSummary(tool.inputSchema)}`,
301
+ ].join(" | ")),
302
+ ].join("\n");
303
+ }
304
+ function toolParamsSummary(inputSchema) {
305
+ if (!isSchemaObject(inputSchema) || inputSchema.type !== "object") {
306
+ return "schema unavailable";
307
+ }
308
+ const properties = isSchemaObject(inputSchema.properties) ? inputSchema.properties : {};
309
+ const entries = Object.entries(properties);
310
+ if (entries.length === 0) {
311
+ return "none";
312
+ }
313
+ const required = Array.isArray(inputSchema.required)
314
+ ? new Set(inputSchema.required.filter((value) => typeof value === "string"))
315
+ : new Set();
316
+ return entries
317
+ .map(([name, propertySchema]) => {
318
+ const marker = required.has(name) ? "*" : "";
319
+ const description = schemaDescription(propertySchema);
320
+ const type = schemaType(propertySchema);
321
+ return `${name}${marker}: ${type}${description ? ` - ${description}` : ""}`;
322
+ })
323
+ .join("; ");
324
+ }
325
+ function schemaType(schema) {
326
+ if (!isSchemaObject(schema)) {
327
+ return "unknown";
328
+ }
329
+ if (typeof schema.type === "string") {
330
+ if (schema.type === "array" && isSchemaObject(schema.items)) {
331
+ return `${schemaType(schema.items)}[]`;
332
+ }
333
+ return schema.type;
334
+ }
335
+ if (Array.isArray(schema.type)) {
336
+ return schema.type.filter((value) => typeof value === "string").join("|") || "unknown";
337
+ }
338
+ if (Array.isArray(schema.enum)) {
339
+ return schema.enum
340
+ .filter((value) => ["string", "number", "boolean"].includes(typeof value))
341
+ .map(String)
342
+ .join("|") || "enum";
343
+ }
344
+ return "unknown";
345
+ }
346
+ function schemaDescription(schema) {
347
+ if (!isSchemaObject(schema) || typeof schema.description !== "string") {
348
+ return undefined;
349
+ }
350
+ return schema.description.replace(/\s+/gu, " ").trim();
351
+ }
352
+ function isSchemaObject(value) {
353
+ return Boolean(value && typeof value === "object" && !Array.isArray(value));
354
+ }
355
+ function googleWorkspaceAvailabilityContext(messages, tools) {
356
+ if (!latestUserMessageMentionsGoogleWorkspace(messages)) {
357
+ return undefined;
358
+ }
359
+ if (tools?.some((tool) => tool.id.startsWith("google_"))) {
360
+ return undefined;
361
+ }
362
+ return "- If the user asks for Google Drive, Google Docs, Google Sheets, Google Slides, or Google Workspace but no google_* tools are available, do not use Pilfer, MONOid, WyrdOS, shell commands, or other connector tools as a fallback. Tell the user to enable and log in to the Google Workspace plugin first.";
363
+ }
364
+ function taskProgressContext(tools) {
365
+ if (!tools?.some((tool) => tool.id === "update_plan")) {
366
+ return undefined;
367
+ }
368
+ return [
369
+ "Task progress:",
370
+ "- Use `update_plan` for non-trivial tasks with multiple meaningful steps, when the user asks for a todo/checklist, or when new instructions change the work.",
371
+ "- Keep exactly one item `in_progress` while work remains. Mark items `completed` only after that step is actually done.",
372
+ "- Skip `update_plan` for one-step informational or trivial requests where tracking adds no value.",
373
+ ].join("\n");
374
+ }
375
+ function latestUserMessageMentionsGoogleWorkspace(messages) {
376
+ const latestUserMessage = [...messages].reverse().find((message) => message.role === "user");
377
+ if (!latestUserMessage) {
378
+ return false;
379
+ }
380
+ return /\bgoogle(?:\s+(?:drive|docs|sheets|slides|workspace))?\b|\bdrive\b|\bdocs\b|\bsheets\b|\bslides\b/iu.test(latestUserMessage.content);
381
+ }
382
+ function skillCreationContext(tools) {
383
+ if (!tools?.some((tool) => tool.id === "skill")) {
384
+ return undefined;
385
+ }
386
+ return [
387
+ "Skill creation:",
388
+ "- When the user asks to create a skill and does not specify scope, ask whether it should be project-specific or global before writing it.",
389
+ "- Use the skill tool for skill creation. Project-specific saves to the project .actor/skills directory. Global saves to ACTOR_HOME/skills, not Codex.",
390
+ "- If the skill already exists, ask before overwriting and only set overwrite after explicit user confirmation.",
391
+ ].join("\n");
392
+ }
393
+ function runtimeEnvironmentContext(project, options) {
394
+ const now = options.now ?? (() => new Date());
395
+ return [
396
+ "Environment:",
397
+ project?.rootPath ? `cwd: ${project.rootPath}` : undefined,
398
+ project?.rootPath ? `root: ${project.rootPath}` : undefined,
399
+ `platform: ${options.platform ?? process.platform}`,
400
+ `date: ${now().toISOString().slice(0, 10)}`,
401
+ "Use list/read/grep/glob-style tools for inspection before editing when they are available.",
402
+ ]
403
+ .filter(Boolean)
404
+ .join("\n");
405
+ }
406
+ //# sourceMappingURL=prompt-context.js.map