@xopcai/xopc 0.0.89 → 0.0.90

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 (384) hide show
  1. package/dist/browser-ext/manifest.json +1 -1
  2. package/dist/extensions/feishu/src/outbound/media-load.js +1 -1
  3. package/dist/extensions/feishu/src/workflow-progress.js +1 -1
  4. package/dist/extensions/telegram/src/plugin.js +1 -1
  5. package/dist/extensions/telegram/src/routing-integration.js +2 -2
  6. package/dist/extensions/telegram/src/workflow-progress.js +1 -1
  7. package/dist/extensions/telegram/xopc.extension.json +1 -1
  8. package/dist/extensions/weixin/src/api/api.js +2 -2
  9. package/dist/extensions/weixin/src/auth/accounts.js +1 -1
  10. package/dist/extensions/weixin/src/cdn/upload.js +1 -1
  11. package/dist/extensions/weixin/src/media/data-url.js +1 -1
  12. package/dist/extensions/weixin/src/messaging/debug-mode.js +1 -1
  13. package/dist/extensions/weixin/src/messaging/inbound.js +1 -1
  14. package/dist/extensions/weixin/src/messaging/process-message.js +1 -1
  15. package/dist/extensions/weixin/src/plugin.js +1 -1
  16. package/dist/extensions/weixin/src/storage/sync-buf.js +1 -1
  17. package/dist/extensions/weixin/src/workflow-progress.js +1 -1
  18. package/dist/gateway/static/root/assets/agents-cPvvYLXo.js +222 -0
  19. package/dist/gateway/static/root/assets/apps-page-Bk1_P5FJ.js +1 -0
  20. package/dist/gateway/static/root/assets/channels-settings-CZoeQwHz.js +1 -0
  21. package/dist/gateway/static/root/assets/{channels-status-swr-DaHGkRF1.js → channels-status-swr-BrtH2VzC.js} +1 -1
  22. package/dist/gateway/static/root/assets/circle-check-C23XjkUj.js +1 -0
  23. package/dist/gateway/static/root/assets/cron-api-CyqbgfHM.js +1 -0
  24. package/dist/gateway/static/root/assets/cron-dreaming-jobs-Ip703-qM.js +2 -0
  25. package/dist/gateway/static/root/assets/cron-page-BpLdiQN8.js +1 -0
  26. package/dist/gateway/static/root/assets/dist-BpAiK86n.js +1 -0
  27. package/dist/gateway/static/root/assets/{extension-debug-page-CtuKJ9tE.js → extension-debug-page-D6Ak0STa.js} +1 -1
  28. package/dist/gateway/static/root/assets/{extension-page-ykzjOkR5.js → extension-page-Q0P3d6DW.js} +1 -1
  29. package/dist/gateway/static/root/assets/{extension-settings-page-Ce2qrdpO.js → extension-settings-page-CL55LwU_.js} +1 -1
  30. package/dist/gateway/static/root/assets/eye-DAfL1U7M.js +1 -0
  31. package/dist/gateway/static/root/assets/{fetch-C9FFJjuH.js → fetch-Dqa9iTWl.js} +1 -1
  32. package/dist/gateway/static/root/assets/{field-primitives-BFcrNeTU.js → field-primitives-HUR6JElP.js} +1 -1
  33. package/dist/gateway/static/root/assets/{heartbeat-config-api-CEg4Vr9R.js → heartbeat-config-api-DusckjUX.js} +1 -1
  34. package/dist/gateway/static/root/assets/{index-CZfy9oxs.js → index-BYcGfwcE.js} +97 -97
  35. package/dist/gateway/static/root/assets/index-V7MQ7834.css +1 -0
  36. package/dist/gateway/static/root/assets/logs-page-_HcZ2fgK.js +1 -0
  37. package/dist/gateway/static/root/assets/sessions-page-iezSMjho.js +1 -0
  38. package/dist/gateway/static/root/assets/{settings-form-section-BqdzA28u.js → settings-form-section-a0qGVOlr.js} +1 -1
  39. package/dist/gateway/static/root/assets/settings-page-C9_nYQwM.js +3 -0
  40. package/dist/gateway/static/root/assets/{share-preview-page-Di5Bzh4g.js → share-preview-page-DExl7CJy.js} +1 -1
  41. package/dist/gateway/static/root/assets/skills-page-BlgGD93t.js +2 -0
  42. package/dist/gateway/static/root/assets/{theme-store-CNqbmTNV.js → theme-store-C0Ehmdo5.js} +1 -1
  43. package/dist/gateway/static/root/assets/url-fxyYANfA.js +3 -0
  44. package/dist/gateway/static/root/assets/{utils-BWm2tG2w.js → utils-DRQryzdn.js} +1 -1
  45. package/dist/gateway/static/root/assets/voice-api-key-field-D0viACE2.js +1 -0
  46. package/dist/gateway/static/root/assets/workflow-page.utils-DnG8JBhV.js +1 -0
  47. package/dist/gateway/static/root/assets/workflows-page-BvMobnJP.js +27 -0
  48. package/dist/gateway/static/root/index.html +7 -5
  49. package/dist/package.js +1 -1
  50. package/dist/src/agent/agent-manager.js +7 -7
  51. package/dist/src/agent/agent-scope.js +1 -1
  52. package/dist/src/agent/bootstrap/load-bootstrap-files.js +1 -1
  53. package/dist/src/agent/context/workspace-seed.js +2 -2
  54. package/dist/src/agent/goals/goal-run-store.js +4 -4
  55. package/dist/src/agent/goals/persistent-goal-service.js +1 -1
  56. package/dist/src/agent/goals/post-turn.js +2 -2
  57. package/dist/src/agent/image/load-image-media.js +2 -2
  58. package/dist/src/agent/ipc/bus.js +1 -1
  59. package/dist/src/agent/ipc/inbox.js +2 -2
  60. package/dist/src/agent/ipc/socket.js +1 -1
  61. package/dist/src/agent/mcp/bundle-mcp-materialize.js +1 -1
  62. package/dist/src/agent/mcp/bundle-mcp-runtime.js +1 -1
  63. package/dist/src/agent/mcp/mcp-transport-config.js +1 -1
  64. package/dist/src/agent/mcp/mcp-transport.js +1 -1
  65. package/dist/src/agent/memory/builtin-memory-store.js +1 -1
  66. package/dist/src/agent/memory/dreaming/deep-promotion.js +1 -1
  67. package/dist/src/agent/memory/dreaming/events.js +1 -1
  68. package/dist/src/agent/memory/dreaming/last-run.js +1 -1
  69. package/dist/src/agent/memory/dreaming/light-sweep.js +1 -1
  70. package/dist/src/agent/memory/dreaming/preview.js +1 -1
  71. package/dist/src/agent/memory/dreaming/rem-patterns.js +1 -1
  72. package/dist/src/agent/memory/dreaming/short-term-store.js +1 -1
  73. package/dist/src/agent/memory/dreaming/utils.js +1 -1
  74. package/dist/src/agent/memory/plugin-discovery.js +1 -1
  75. package/dist/src/agent/models/manager.js +1 -1
  76. package/dist/src/agent/prompt/service-prompt-builder.js +2 -2
  77. package/dist/src/agent/reply/post-compaction-context.js +1 -1
  78. package/dist/src/agent/reply/workspace-boundary-read.js +1 -1
  79. package/dist/src/agent/sandbox/path-policy.js +2 -2
  80. package/dist/src/agent/service/build-direct-message-content.js +1 -1
  81. package/dist/src/agent/service.js +4 -4
  82. package/dist/src/agent/session/session-inspector.js +1 -1
  83. package/dist/src/agent/skills/config.js +1 -1
  84. package/dist/src/agent/skills/hub-hash.js +2 -2
  85. package/dist/src/agent/skills/hub-lock.js +1 -1
  86. package/dist/src/agent/skills/hub-pull.js +2 -2
  87. package/dist/src/agent/skills/index.js +1 -1
  88. package/dist/src/agent/skills/managed-store.js +1 -1
  89. package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js +20 -18
  90. package/dist/src/agent/skills/marketplace/adapters/skillhub/adapter.js.map +1 -1
  91. package/dist/src/agent/skills/scanner.js +1 -1
  92. package/dist/src/agent/skills/skill-manage-ops.js +1 -1
  93. package/dist/src/agent/skills/skill-manager.js +1 -1
  94. package/dist/src/agent/tools/cronjob-tool.d.ts +6 -0
  95. package/dist/src/agent/tools/cronjob-tool.js +74 -9
  96. package/dist/src/agent/tools/cronjob-tool.js.map +1 -1
  97. package/dist/src/agent/tools/dreaming-tool.js +1 -1
  98. package/dist/src/agent/tools/edit.d.ts +5 -1
  99. package/dist/src/agent/tools/edit.js +7 -5
  100. package/dist/src/agent/tools/edit.js.map +1 -1
  101. package/dist/src/agent/tools/factory.js +3 -3
  102. package/dist/src/agent/tools/factory.js.map +1 -1
  103. package/dist/src/agent/tools/image-generate-tool.js +1 -1
  104. package/dist/src/agent/tools/send-media.js +1 -1
  105. package/dist/src/agent/tools/skill-manage-tool.js +1 -1
  106. package/dist/src/agent/tools/workflow-tool.js +1 -1
  107. package/dist/src/agent/tools/write.d.ts +5 -1
  108. package/dist/src/agent/tools/write.js +8 -6
  109. package/dist/src/agent/tools/write.js.map +1 -1
  110. package/dist/src/agent/workflow/agent-progress.js +2 -0
  111. package/dist/src/agent/workflow/agent-progress.js.map +1 -1
  112. package/dist/src/agent/workflow/builtins/client-proposal.d.ts +12 -0
  113. package/dist/src/agent/workflow/builtins/client-proposal.js +155 -0
  114. package/dist/src/agent/workflow/builtins/client-proposal.js.map +1 -0
  115. package/dist/src/agent/workflow/builtins/competitor-scan.d.ts +12 -0
  116. package/dist/src/agent/workflow/builtins/competitor-scan.js +150 -0
  117. package/dist/src/agent/workflow/builtins/competitor-scan.js.map +1 -0
  118. package/dist/src/agent/workflow/builtins/content-draft.d.ts +13 -0
  119. package/dist/src/agent/workflow/builtins/content-draft.js +146 -0
  120. package/dist/src/agent/workflow/builtins/content-draft.js.map +1 -0
  121. package/dist/src/agent/workflow/builtins/content-repurpose.d.ts +11 -0
  122. package/dist/src/agent/workflow/builtins/content-repurpose.js +137 -0
  123. package/dist/src/agent/workflow/builtins/content-repurpose.js.map +1 -0
  124. package/dist/src/agent/workflow/builtins/decision-compare.d.ts +13 -0
  125. package/dist/src/agent/workflow/builtins/decision-compare.js +173 -0
  126. package/dist/src/agent/workflow/builtins/decision-compare.js.map +1 -0
  127. package/dist/src/agent/workflow/builtins/inbox-triage.d.ts +11 -0
  128. package/dist/src/agent/workflow/builtins/inbox-triage.js +148 -0
  129. package/dist/src/agent/workflow/builtins/inbox-triage.js.map +1 -0
  130. package/dist/src/agent/workflow/builtins/index.d.ts +10 -1
  131. package/dist/src/agent/workflow/builtins/index.js +46 -1
  132. package/dist/src/agent/workflow/builtins/index.js.map +1 -1
  133. package/dist/src/agent/workflow/builtins/meeting-prep.d.ts +12 -0
  134. package/dist/src/agent/workflow/builtins/meeting-prep.js +144 -0
  135. package/dist/src/agent/workflow/builtins/meeting-prep.js.map +1 -0
  136. package/dist/src/agent/workflow/builtins/offer-design.d.ts +12 -0
  137. package/dist/src/agent/workflow/builtins/offer-design.js +161 -0
  138. package/dist/src/agent/workflow/builtins/offer-design.js.map +1 -0
  139. package/dist/src/agent/workflow/builtins/weekly-review.d.ts +12 -0
  140. package/dist/src/agent/workflow/builtins/weekly-review.js +131 -0
  141. package/dist/src/agent/workflow/builtins/weekly-review.js.map +1 -0
  142. package/dist/src/agent/workflow/catalog.js +1 -1
  143. package/dist/src/agent/workflow/step-labels.js +2 -2
  144. package/dist/src/agent/workflow/step-labels.js.map +1 -1
  145. package/dist/src/agent/workflow/subagent-runner.js +3 -1
  146. package/dist/src/agent/workflow/subagent-runner.js.map +1 -1
  147. package/dist/src/agent/workflow/types.d.ts +4 -0
  148. package/dist/src/auth/credentials.js +3 -3
  149. package/dist/src/auth/profiles/store.js +1 -1
  150. package/dist/src/auth/sync-provider-auth.js +1 -1
  151. package/dist/src/browser/cache-dir-policy.js +1 -1
  152. package/dist/src/browser/cdp-local-launcher.js +2 -2
  153. package/dist/src/browser/providers/browser-ext-install.js +3 -3
  154. package/dist/src/browser/providers/cloakbrowser.js +4 -4
  155. package/dist/src/browser/providers/playwright-doctor.js +1 -1
  156. package/dist/src/browser/stealth.js +1 -1
  157. package/dist/src/channels/attachments/inbound-persist.js +1 -1
  158. package/dist/src/channels/attachments/outbound-tts-persist.js +1 -1
  159. package/dist/src/channels/outbound/persist-store.js +1 -1
  160. package/dist/src/channels/pairing/allow-from-file.js +1 -1
  161. package/dist/src/channels/pairing/pairing-store.js +2 -2
  162. package/dist/src/chat-commands/agent-edit.d.ts +4 -0
  163. package/dist/src/chat-commands/agent-edit.js +136 -0
  164. package/dist/src/chat-commands/agent-edit.js.map +1 -0
  165. package/dist/src/chat-commands/builtins/config.js +2 -2
  166. package/dist/src/chat-commands/context.js +1 -1
  167. package/dist/src/chat-commands/index.d.ts +1 -0
  168. package/dist/src/chat-commands/index.js +3 -1
  169. package/dist/src/chat-commands/index.js.map +1 -1
  170. package/dist/src/cli/bin.js +2 -0
  171. package/dist/src/cli/bin.js.map +1 -1
  172. package/dist/src/cli/commands/config.js +1 -1
  173. package/dist/src/cli/commands/cron.js +42 -3
  174. package/dist/src/cli/commands/cron.js.map +1 -1
  175. package/dist/src/cli/commands/doctor/checks/config-health.js +1 -1
  176. package/dist/src/cli/commands/doctor/checks/provider-auth.js +1 -1
  177. package/dist/src/cli/commands/doctor/checks/session-integrity.js +79 -56
  178. package/dist/src/cli/commands/doctor/checks/session-integrity.js.map +1 -1
  179. package/dist/src/cli/commands/doctor/checks/state-integrity.js +1 -1
  180. package/dist/src/cli/commands/doctor/checks/workspace-status.js +1 -1
  181. package/dist/src/cli/commands/extension-dev.js +1 -1
  182. package/dist/src/cli/commands/extension-marketplace.js +1 -1
  183. package/dist/src/cli/commands/extension-pack.js +1 -1
  184. package/dist/src/cli/commands/gateway/lifecycle.js +1 -1
  185. package/dist/src/cli/commands/gateway/logs.js +1 -1
  186. package/dist/src/cli/commands/image.js +1 -1
  187. package/dist/src/cli/commands/init.js +4 -4
  188. package/dist/src/cli/commands/onboard.js +1 -1
  189. package/dist/src/cli/commands/update.js +86 -79
  190. package/dist/src/cli/commands/update.js.map +1 -1
  191. package/dist/src/cli/utils/init-workspace-core.js +2 -2
  192. package/dist/src/commands/agents.config.d.ts +3 -2
  193. package/dist/src/commands/agents.config.js +5 -2
  194. package/dist/src/commands/agents.config.js.map +1 -1
  195. package/dist/src/config/agent-profile.js +1 -1
  196. package/dist/src/config/agent-typed-models.d.ts +2 -7
  197. package/dist/src/config/agent-typed-models.js +3 -14
  198. package/dist/src/config/agent-typed-models.js.map +1 -1
  199. package/dist/src/config/gateway-bind.js +1 -1
  200. package/dist/src/config/index.js +5 -5
  201. package/dist/src/config/loader.js +2 -2
  202. package/dist/src/config/localized-text.d.ts +6 -0
  203. package/dist/src/config/localized-text.js +42 -0
  204. package/dist/src/config/localized-text.js.map +1 -0
  205. package/dist/src/config/models-json.d.ts +6 -6
  206. package/dist/src/config/models-json.js +2 -2
  207. package/dist/src/config/paths-state.js +1 -1
  208. package/dist/src/config/profile.js +2 -2
  209. package/dist/src/config/schema.d.ts +6 -21
  210. package/dist/src/config/schema.js +4 -4
  211. package/dist/src/config/schema.js.map +1 -1
  212. package/dist/src/config/workspace-path.js +1 -1
  213. package/dist/src/cron/executor.d.ts +2 -0
  214. package/dist/src/cron/executor.js +113 -3
  215. package/dist/src/cron/executor.js.map +1 -1
  216. package/dist/src/cron/persistence.js +1 -1
  217. package/dist/src/cron/run-log-store.js +1 -1
  218. package/dist/src/cron/types.d.ts +8 -1
  219. package/dist/src/cron/validation.d.ts +4 -0
  220. package/dist/src/cron/validation.js +4 -3
  221. package/dist/src/cron/validation.js.map +1 -1
  222. package/dist/src/cron/workflow-run-completion.d.ts +23 -0
  223. package/dist/src/cron/workflow-run-completion.js +72 -0
  224. package/dist/src/cron/workflow-run-completion.js.map +1 -0
  225. package/dist/src/daemon/constants.js +1 -1
  226. package/dist/src/daemon/install-plan.js +2 -2
  227. package/dist/src/daemon/launchd.js +2 -2
  228. package/dist/src/daemon/schtasks.js +2 -2
  229. package/dist/src/daemon/systemd.js +2 -2
  230. package/dist/src/extensions/bundle-mcp.js +1 -1
  231. package/dist/src/extensions/discover-extensions.js +1 -1
  232. package/dist/src/extensions/health.js +1 -1
  233. package/dist/src/extensions/loader.js +1 -1
  234. package/dist/src/extensions/lockfile.js +2 -2
  235. package/dist/src/extensions/update.d.ts +51 -0
  236. package/dist/src/extensions/update.js +260 -0
  237. package/dist/src/extensions/update.js.map +1 -0
  238. package/dist/src/gateway/agents-admin.d.ts +15 -8
  239. package/dist/src/gateway/agents-admin.js +78 -29
  240. package/dist/src/gateway/agents-admin.js.map +1 -1
  241. package/dist/src/gateway/file-path-classifier.js +2 -2
  242. package/dist/src/gateway/heartbeat/service.js +1 -1
  243. package/dist/src/gateway/hono/lib/config-payload.d.ts +5 -0
  244. package/dist/src/gateway/hono/lib/config-payload.js +3 -2
  245. package/dist/src/gateway/hono/lib/config-payload.js.map +1 -1
  246. package/dist/src/gateway/hono/lib/extension-store.js +2 -2
  247. package/dist/src/gateway/hono/lib/static-ui.js +2 -2
  248. package/dist/src/gateway/hono/middleware/auth.d.ts +2 -0
  249. package/dist/src/gateway/hono/middleware/auth.js +12 -7
  250. package/dist/src/gateway/hono/middleware/auth.js.map +1 -1
  251. package/dist/src/gateway/hono/oauth.js +1 -1
  252. package/dist/src/gateway/hono/routes/agents.js +56 -13
  253. package/dist/src/gateway/hono/routes/agents.js.map +1 -1
  254. package/dist/src/gateway/hono/routes/auth-registry-extensions.js +1 -1
  255. package/dist/src/gateway/hono/routes/config-patch/agents.js +1 -1
  256. package/dist/src/gateway/hono/routes/config-patch/misc.js +1 -1
  257. package/dist/src/gateway/hono/routes/dreaming.js +1 -1
  258. package/dist/src/gateway/hono/routes/host-fs.js +2 -2
  259. package/dist/src/gateway/hono/routes/models.js +1 -1
  260. package/dist/src/gateway/hono/routes/shares.js +1 -1
  261. package/dist/src/gateway/hono/routes/update.js +55 -107
  262. package/dist/src/gateway/hono/routes/update.js.map +1 -1
  263. package/dist/src/gateway/hono/routes/workflows.js +3 -1
  264. package/dist/src/gateway/hono/routes/workflows.js.map +1 -1
  265. package/dist/src/gateway/hono/routes/workspace.js +4 -4
  266. package/dist/src/gateway/lock.js +3 -3
  267. package/dist/src/gateway/ports.js +1 -1
  268. package/dist/src/gateway/server.js +2 -0
  269. package/dist/src/gateway/server.js.map +1 -1
  270. package/dist/src/gateway/service/agent-runner.js +2 -2
  271. package/dist/src/gateway/service/marketplace-service.js +2 -2
  272. package/dist/src/gateway/service.js +3 -2
  273. package/dist/src/gateway/service.js.map +1 -1
  274. package/dist/src/gateway/workspace-fs-file-list.js +1 -1
  275. package/dist/src/heartbeat/index.js +1 -1
  276. package/dist/src/infra/brew.d.ts +4 -0
  277. package/dist/src/infra/brew.js +20 -0
  278. package/dist/src/infra/brew.js.map +1 -0
  279. package/dist/src/infra/package-json.d.ts +2 -0
  280. package/dist/src/infra/package-json.js +23 -0
  281. package/dist/src/infra/package-json.js.map +1 -0
  282. package/dist/src/infra/package-update-steps.d.ts +35 -0
  283. package/dist/src/infra/package-update-steps.js +304 -0
  284. package/dist/src/infra/package-update-steps.js.map +1 -0
  285. package/dist/src/infra/path-env.d.ts +11 -0
  286. package/dist/src/infra/path-env.js +90 -0
  287. package/dist/src/infra/path-env.js.map +1 -0
  288. package/dist/src/infra/path-prepend.d.ts +7 -0
  289. package/dist/src/infra/path-prepend.js +44 -0
  290. package/dist/src/infra/path-prepend.js.map +1 -0
  291. package/dist/src/infra/restart.js +2 -2
  292. package/dist/src/infra/stable-node-path.d.ts +2 -0
  293. package/dist/src/infra/stable-node-path.js +28 -0
  294. package/dist/src/infra/stable-node-path.js.map +1 -0
  295. package/dist/src/infra/update-check.js +1 -1
  296. package/dist/src/infra/update-global.d.ts +30 -23
  297. package/dist/src/infra/update-global.js +114 -65
  298. package/dist/src/infra/update-global.js.map +1 -1
  299. package/dist/src/infra/update-lock.js +3 -3
  300. package/dist/src/infra/update-log.d.ts +1 -0
  301. package/dist/src/infra/update-log.js +12 -0
  302. package/dist/src/infra/update-log.js.map +1 -0
  303. package/dist/src/infra/update-restart.d.ts +20 -0
  304. package/dist/src/infra/update-restart.js +165 -0
  305. package/dist/src/infra/update-restart.js.map +1 -0
  306. package/dist/src/infra/update-runner.d.ts +89 -1
  307. package/dist/src/infra/update-runner.js +604 -173
  308. package/dist/src/infra/update-runner.js.map +1 -1
  309. package/dist/src/infra/update-startup.d.ts +3 -0
  310. package/dist/src/infra/update-startup.js +10 -6
  311. package/dist/src/infra/update-startup.js.map +1 -1
  312. package/dist/src/infra/write-file-atomic.js +2 -2
  313. package/dist/src/providers/auth-runtime/auth-profile-store.js +1 -1
  314. package/dist/src/providers/index.js +2 -2
  315. package/dist/src/providers/model-registry.js +1 -1
  316. package/dist/src/routing/resolve-route.d.ts +3 -1
  317. package/dist/src/routing/resolve-route.js.map +1 -1
  318. package/dist/src/session/config-store.js +2 -2
  319. package/dist/src/session/init-session-turn.js +2 -2
  320. package/dist/src/session/parity/jsonl-transcript-io.js +2 -2
  321. package/dist/src/session/parity/sessions-json-file.js +1 -1
  322. package/dist/src/session/parity/transcript-file-lock.js +2 -2
  323. package/dist/src/session/parity/transcript-paths.js +1 -1
  324. package/dist/src/session/resolve-session.js +4 -4
  325. package/dist/src/session/search-index-cache.js +1 -1
  326. package/dist/src/session/search-index.js +1 -1
  327. package/dist/src/session/session-title.js +2 -2
  328. package/dist/src/session/store.d.ts +5 -3
  329. package/dist/src/session/store.js +71 -25
  330. package/dist/src/session/store.js.map +1 -1
  331. package/dist/src/share/share-auto.js +2 -2
  332. package/dist/src/share/share-store.js +3 -3
  333. package/dist/src/share/share-thumbnail.js +2 -2
  334. package/dist/src/share/share-zip.js +1 -1
  335. package/dist/src/share/site-share-store.js +3 -3
  336. package/dist/src/share/site-static-serve.js +1 -1
  337. package/dist/src/tui/clipboard-image.js +3 -3
  338. package/dist/src/tui/theme-manager.js +1 -1
  339. package/dist/src/tui/tui-keybindings-file.js +1 -1
  340. package/dist/src/tui/tui-scoped-models.js +2 -2
  341. package/dist/src/tui/tui-settings.js +1 -1
  342. package/dist/src/tui/tui.js +3 -3
  343. package/dist/src/tunnel/frpc-binary.js +3 -3
  344. package/dist/src/tunnel/frpc-config.js +1 -1
  345. package/dist/src/tunnel/frpc-extract.js +1 -1
  346. package/dist/src/tunnel/tunnel-state.js +1 -1
  347. package/dist/src/utils/logger/audit.js +1 -1
  348. package/dist/src/utils/logger/log-store.js +1 -1
  349. package/dist/src/utils/logger/rotation.js +1 -1
  350. package/dist/src/utils/logger/stats.d.ts +1 -1
  351. package/dist/src/voice/tts/audio.js +1 -1
  352. package/dist/src/voice/tts/providers/edge-speech.js +2 -2
  353. package/dist/src/workflows/domain/event.d.ts +3 -0
  354. package/dist/src/workflows/domain/run.d.ts +3 -0
  355. package/dist/src/workflows/domain/run.js.map +1 -1
  356. package/dist/src/workflows/engine/projector.js +17 -0
  357. package/dist/src/workflows/engine/projector.js.map +1 -1
  358. package/dist/src/workflows/engine/workflow-engine.js +127 -0
  359. package/dist/src/workflows/engine/workflow-engine.js.map +1 -1
  360. package/dist/src/workflows/index.js +1 -1
  361. package/dist/src/workflows/service/run-view-to-snapshot.js +3 -1
  362. package/dist/src/workflows/service/run-view-to-snapshot.js.map +1 -1
  363. package/dist/src/workflows/service/workflow-run-service.d.ts +1 -0
  364. package/dist/src/workflows/service/workflow-run-service.js +4 -1
  365. package/dist/src/workflows/service/workflow-run-service.js.map +1 -1
  366. package/dist/src/workflows/service/workflow-session-bridge.js +1 -1
  367. package/dist/src/workflows/store/event-store.js +1 -1
  368. package/dist/src/workflows/store/run-store.js +1 -1
  369. package/package.json +1 -1
  370. package/dist/gateway/static/root/assets/agents-B6PJB07W.js +0 -222
  371. package/dist/gateway/static/root/assets/apps-page-BOr0B1wv.js +0 -1
  372. package/dist/gateway/static/root/assets/channels-settings-BelUKggl.js +0 -1
  373. package/dist/gateway/static/root/assets/cron-api-CjOg-BIj.js +0 -1
  374. package/dist/gateway/static/root/assets/cron-dreaming-jobs-DueM3rBz.js +0 -2
  375. package/dist/gateway/static/root/assets/cron-page-DhoZmZXb.js +0 -1
  376. package/dist/gateway/static/root/assets/dist-6LecgDx5.js +0 -1
  377. package/dist/gateway/static/root/assets/index-CiN1cQiQ.css +0 -1
  378. package/dist/gateway/static/root/assets/logs-page-BwWLfqvd.js +0 -1
  379. package/dist/gateway/static/root/assets/sessions-page-DV5WN8uk.js +0 -1
  380. package/dist/gateway/static/root/assets/settings-page-CfOBRbPX.js +0 -3
  381. package/dist/gateway/static/root/assets/skills-page-D0H5Kaxg.js +0 -2
  382. package/dist/gateway/static/root/assets/url-aYn-Rj1C.js +0 -7
  383. package/dist/gateway/static/root/assets/voice-api-key-field-X2UfnHeq.js +0 -1
  384. package/dist/gateway/static/root/assets/workflows-page-BOPpO3NG.js +0 -27
@@ -1,10 +1,19 @@
1
1
  import { AUDIT_REPO_SCRIPT } from "./audit-repo.js";
2
+ import { CLIENT_PROPOSAL_SCRIPT } from "./client-proposal.js";
3
+ import { COMPETITOR_SCAN_SCRIPT } from "./competitor-scan.js";
4
+ import { CONTENT_DRAFT_SCRIPT } from "./content-draft.js";
5
+ import { CONTENT_REPURPOSE_SCRIPT } from "./content-repurpose.js";
2
6
  import { DEBUG_INCIDENT_SCRIPT } from "./debug-incident.js";
7
+ import { DECISION_COMPARE_SCRIPT } from "./decision-compare.js";
3
8
  import { IMPLEMENTATION_PLAN_SCRIPT } from "./implementation-plan.js";
9
+ import { INBOX_TRIAGE_SCRIPT } from "./inbox-triage.js";
10
+ import { MEETING_PREP_SCRIPT } from "./meeting-prep.js";
4
11
  import { MULTI_PERSPECTIVE_REVIEW_SCRIPT } from "./multi-perspective-review.js";
12
+ import { OFFER_DESIGN_SCRIPT } from "./offer-design.js";
5
13
  import { PR_REVIEW_SCRIPT } from "./pr-review.js";
6
14
  import { RELEASE_CHECK_SCRIPT } from "./release-check.js";
7
15
  import { RESEARCH_SCRIPT } from "./research.js";
16
+ import { WEEKLY_REVIEW_SCRIPT } from "./weekly-review.js";
8
17
  //#region src/agent/workflow/builtins/index.ts
9
18
  /**
10
19
  * Bundled workflow templates. These are shipped with xopc and discoverable
@@ -17,18 +26,50 @@ const BUILTIN_WORKFLOWS = Object.freeze([
17
26
  name: "audit_repo",
18
27
  script: AUDIT_REPO_SCRIPT
19
28
  },
29
+ {
30
+ name: "client_proposal",
31
+ script: CLIENT_PROPOSAL_SCRIPT
32
+ },
33
+ {
34
+ name: "competitor_scan",
35
+ script: COMPETITOR_SCAN_SCRIPT
36
+ },
37
+ {
38
+ name: "content_draft",
39
+ script: CONTENT_DRAFT_SCRIPT
40
+ },
41
+ {
42
+ name: "content_repurpose",
43
+ script: CONTENT_REPURPOSE_SCRIPT
44
+ },
20
45
  {
21
46
  name: "debug_incident",
22
47
  script: DEBUG_INCIDENT_SCRIPT
23
48
  },
49
+ {
50
+ name: "decision_compare",
51
+ script: DECISION_COMPARE_SCRIPT
52
+ },
24
53
  {
25
54
  name: "implementation_plan",
26
55
  script: IMPLEMENTATION_PLAN_SCRIPT
27
56
  },
57
+ {
58
+ name: "inbox_triage",
59
+ script: INBOX_TRIAGE_SCRIPT
60
+ },
61
+ {
62
+ name: "meeting_prep",
63
+ script: MEETING_PREP_SCRIPT
64
+ },
28
65
  {
29
66
  name: "multi_perspective_review",
30
67
  script: MULTI_PERSPECTIVE_REVIEW_SCRIPT
31
68
  },
69
+ {
70
+ name: "offer_design",
71
+ script: OFFER_DESIGN_SCRIPT
72
+ },
32
73
  {
33
74
  name: "pr_review",
34
75
  script: PR_REVIEW_SCRIPT
@@ -40,9 +81,13 @@ const BUILTIN_WORKFLOWS = Object.freeze([
40
81
  {
41
82
  name: "research",
42
83
  script: RESEARCH_SCRIPT
84
+ },
85
+ {
86
+ name: "weekly_review",
87
+ script: WEEKLY_REVIEW_SCRIPT
43
88
  }
44
89
  ]);
45
90
  //#endregion
46
- export { AUDIT_REPO_SCRIPT, BUILTIN_WORKFLOWS, DEBUG_INCIDENT_SCRIPT, IMPLEMENTATION_PLAN_SCRIPT, MULTI_PERSPECTIVE_REVIEW_SCRIPT, PR_REVIEW_SCRIPT, RELEASE_CHECK_SCRIPT, RESEARCH_SCRIPT };
91
+ export { AUDIT_REPO_SCRIPT, BUILTIN_WORKFLOWS, CLIENT_PROPOSAL_SCRIPT, COMPETITOR_SCAN_SCRIPT, CONTENT_DRAFT_SCRIPT, CONTENT_REPURPOSE_SCRIPT, DEBUG_INCIDENT_SCRIPT, DECISION_COMPARE_SCRIPT, IMPLEMENTATION_PLAN_SCRIPT, INBOX_TRIAGE_SCRIPT, MEETING_PREP_SCRIPT, MULTI_PERSPECTIVE_REVIEW_SCRIPT, OFFER_DESIGN_SCRIPT, PR_REVIEW_SCRIPT, RELEASE_CHECK_SCRIPT, RESEARCH_SCRIPT, WEEKLY_REVIEW_SCRIPT };
47
92
 
48
93
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../../../../../src/agent/workflow/builtins/index.ts"],"sourcesContent":["/**\n * Bundled workflow templates. These are shipped with xopc and discoverable\n * via the catalog alongside user workflows in `~/.xopc/workflows/`. A user\n * workflow with the same `name` always wins — built-ins are starting points,\n * not authority.\n */\n\nimport { AUDIT_REPO_SCRIPT } from './audit-repo.js';\nimport { DEBUG_INCIDENT_SCRIPT } from './debug-incident.js';\nimport { IMPLEMENTATION_PLAN_SCRIPT } from './implementation-plan.js';\nimport { MULTI_PERSPECTIVE_REVIEW_SCRIPT } from './multi-perspective-review.js';\nimport { PR_REVIEW_SCRIPT } from './pr-review.js';\nimport { RELEASE_CHECK_SCRIPT } from './release-check.js';\nimport { RESEARCH_SCRIPT } from './research.js';\n\nexport interface BuiltinWorkflow {\n name: string;\n script: string;\n}\n\nexport const BUILTIN_WORKFLOWS: readonly BuiltinWorkflow[] = Object.freeze([\n { name: 'audit_repo', script: AUDIT_REPO_SCRIPT },\n { name: 'debug_incident', script: DEBUG_INCIDENT_SCRIPT },\n { name: 'implementation_plan', script: IMPLEMENTATION_PLAN_SCRIPT },\n { name: 'multi_perspective_review', script: MULTI_PERSPECTIVE_REVIEW_SCRIPT },\n { name: 'pr_review', script: PR_REVIEW_SCRIPT },\n { name: 'release_check', script: RELEASE_CHECK_SCRIPT },\n { name: 'research', script: RESEARCH_SCRIPT },\n]);\n\nexport {\n AUDIT_REPO_SCRIPT,\n DEBUG_INCIDENT_SCRIPT,\n IMPLEMENTATION_PLAN_SCRIPT,\n MULTI_PERSPECTIVE_REVIEW_SCRIPT,\n PR_REVIEW_SCRIPT,\n RELEASE_CHECK_SCRIPT,\n RESEARCH_SCRIPT,\n};\n"],"mappings":";;;;;;;;;;;;;;AAoBA,MAAa,oBAAgD,OAAO,OAAO;CACzE;EAAE,MAAM;EAAc,QAAQ;EAAmB;CACjD;EAAE,MAAM;EAAkB,QAAQ;EAAuB;CACzD;EAAE,MAAM;EAAuB,QAAQ;EAA4B;CACnE;EAAE,MAAM;EAA4B,QAAQ;EAAiC;CAC7E;EAAE,MAAM;EAAa,QAAQ;EAAkB;CAC/C;EAAE,MAAM;EAAiB,QAAQ;EAAsB;CACvD;EAAE,MAAM;EAAY,QAAQ;EAAiB;CAC9C,CAAC"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../../../../../src/agent/workflow/builtins/index.ts"],"sourcesContent":["/**\n * Bundled workflow templates. These are shipped with xopc and discoverable\n * via the catalog alongside user workflows in `~/.xopc/workflows/`. A user\n * workflow with the same `name` always wins — built-ins are starting points,\n * not authority.\n */\n\nimport { AUDIT_REPO_SCRIPT } from './audit-repo.js';\nimport { CLIENT_PROPOSAL_SCRIPT } from './client-proposal.js';\nimport { COMPETITOR_SCAN_SCRIPT } from './competitor-scan.js';\nimport { CONTENT_DRAFT_SCRIPT } from './content-draft.js';\nimport { CONTENT_REPURPOSE_SCRIPT } from './content-repurpose.js';\nimport { DEBUG_INCIDENT_SCRIPT } from './debug-incident.js';\nimport { DECISION_COMPARE_SCRIPT } from './decision-compare.js';\nimport { IMPLEMENTATION_PLAN_SCRIPT } from './implementation-plan.js';\nimport { INBOX_TRIAGE_SCRIPT } from './inbox-triage.js';\nimport { MEETING_PREP_SCRIPT } from './meeting-prep.js';\nimport { MULTI_PERSPECTIVE_REVIEW_SCRIPT } from './multi-perspective-review.js';\nimport { OFFER_DESIGN_SCRIPT } from './offer-design.js';\nimport { PR_REVIEW_SCRIPT } from './pr-review.js';\nimport { RELEASE_CHECK_SCRIPT } from './release-check.js';\nimport { RESEARCH_SCRIPT } from './research.js';\nimport { WEEKLY_REVIEW_SCRIPT } from './weekly-review.js';\n\nexport interface BuiltinWorkflow {\n name: string;\n script: string;\n}\n\nexport const BUILTIN_WORKFLOWS: readonly BuiltinWorkflow[] = Object.freeze([\n { name: 'audit_repo', script: AUDIT_REPO_SCRIPT },\n { name: 'client_proposal', script: CLIENT_PROPOSAL_SCRIPT },\n { name: 'competitor_scan', script: COMPETITOR_SCAN_SCRIPT },\n { name: 'content_draft', script: CONTENT_DRAFT_SCRIPT },\n { name: 'content_repurpose', script: CONTENT_REPURPOSE_SCRIPT },\n { name: 'debug_incident', script: DEBUG_INCIDENT_SCRIPT },\n { name: 'decision_compare', script: DECISION_COMPARE_SCRIPT },\n { name: 'implementation_plan', script: IMPLEMENTATION_PLAN_SCRIPT },\n { name: 'inbox_triage', script: INBOX_TRIAGE_SCRIPT },\n { name: 'meeting_prep', script: MEETING_PREP_SCRIPT },\n { name: 'multi_perspective_review', script: MULTI_PERSPECTIVE_REVIEW_SCRIPT },\n { name: 'offer_design', script: OFFER_DESIGN_SCRIPT },\n { name: 'pr_review', script: PR_REVIEW_SCRIPT },\n { name: 'release_check', script: RELEASE_CHECK_SCRIPT },\n { name: 'research', script: RESEARCH_SCRIPT },\n { name: 'weekly_review', script: WEEKLY_REVIEW_SCRIPT },\n]);\n\nexport {\n AUDIT_REPO_SCRIPT,\n CLIENT_PROPOSAL_SCRIPT,\n COMPETITOR_SCAN_SCRIPT,\n CONTENT_DRAFT_SCRIPT,\n CONTENT_REPURPOSE_SCRIPT,\n DEBUG_INCIDENT_SCRIPT,\n DECISION_COMPARE_SCRIPT,\n IMPLEMENTATION_PLAN_SCRIPT,\n INBOX_TRIAGE_SCRIPT,\n MEETING_PREP_SCRIPT,\n MULTI_PERSPECTIVE_REVIEW_SCRIPT,\n OFFER_DESIGN_SCRIPT,\n PR_REVIEW_SCRIPT,\n RELEASE_CHECK_SCRIPT,\n RESEARCH_SCRIPT,\n WEEKLY_REVIEW_SCRIPT,\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AA6BA,MAAa,oBAAgD,OAAO,OAAO;CACzE;EAAE,MAAM;EAAc,QAAQ;EAAmB;CACjD;EAAE,MAAM;EAAmB,QAAQ;EAAwB;CAC3D;EAAE,MAAM;EAAmB,QAAQ;EAAwB;CAC3D;EAAE,MAAM;EAAiB,QAAQ;EAAsB;CACvD;EAAE,MAAM;EAAqB,QAAQ;EAA0B;CAC/D;EAAE,MAAM;EAAkB,QAAQ;EAAuB;CACzD;EAAE,MAAM;EAAoB,QAAQ;EAAyB;CAC7D;EAAE,MAAM;EAAuB,QAAQ;EAA4B;CACnE;EAAE,MAAM;EAAgB,QAAQ;EAAqB;CACrD;EAAE,MAAM;EAAgB,QAAQ;EAAqB;CACrD;EAAE,MAAM;EAA4B,QAAQ;EAAiC;CAC7E;EAAE,MAAM;EAAgB,QAAQ;EAAqB;CACrD;EAAE,MAAM;EAAa,QAAQ;EAAkB;CAC/C;EAAE,MAAM;EAAiB,QAAQ;EAAsB;CACvD;EAAE,MAAM;EAAY,QAAQ;EAAiB;CAC7C;EAAE,MAAM;EAAiB,QAAQ;EAAsB;CACxD,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Built-in workflow: `meeting_prep`
3
+ *
4
+ * Prepares for a meeting by building context, an agenda, and talking points.
5
+ * Useful for 1:1s, client calls, interviews, or team syncs — no code required.
6
+ *
7
+ * Args:
8
+ * - meeting_topic: what the meeting is about
9
+ * - attendees: who is involved (optional)
10
+ * - goal: desired outcome (optional)
11
+ */
12
+ export declare const MEETING_PREP_SCRIPT = "export const meta = {\n name: 'meeting_prep',\n description: 'Build meeting context, a tight agenda, and prioritized talking points.',\n whenToUse: 'User has an upcoming meeting and wants prep \u2014 agenda, questions, and key messages.',\n examplePrompts: [\n { field: 'meeting_topic', text: 'Prep for a quarterly business review with leadership' },\n { field: 'meeting_topic', text: 'Prepare talking points for a vendor negotiation call' },\n ],\n i18n: {\n zh: {\n description: '\u6574\u7406\u4F1A\u8BAE\u80CC\u666F\u3001\u7D27\u51D1\u8BAE\u7A0B\u4E0E\u4F18\u5148\u53D1\u8A00\u8981\u70B9\u3002',\n whenToUse: '\u7528\u6237\u5373\u5C06\u53C2\u52A0\u4F1A\u8BAE\uFF0C\u9700\u8981\u8BAE\u7A0B\u3001\u63D0\u95EE\u4E0E\u5173\u952E\u4FE1\u606F\u51C6\u5907\u65F6\u3002',\n examplePrompts: [\n { field: 'meeting_topic', text: '\u51C6\u5907\u4E0E\u9886\u5BFC\u5C42\u7684\u5B63\u5EA6\u4E1A\u52A1\u590D\u76D8\u4F1A' },\n { field: 'meeting_topic', text: '\u51C6\u5907\u4F9B\u5E94\u5546\u8C08\u5224\u7535\u8BDD\u7684\u53D1\u8A00\u8981\u70B9' },\n ],\n },\n },\n tags: ['meeting', 'productivity'],\n estimatedAgents: { min: 3, max: 5 },\n phases: [\n { title: 'Context' },\n { title: 'Agenda' },\n { title: 'Talking points' },\n ],\n}\n\nconst meetingTopic = args && typeof args === 'object' && args.meeting_topic\n ? String(args.meeting_topic)\n : 'Infer the meeting topic from the most recent user turn.'\n\nconst attendees = args && typeof args === 'object' && args.attendees\n ? String(args.attendees)\n : 'not specified'\n\nconst goal = args && typeof args === 'object' && args.goal\n ? String(args.goal)\n : 'achieve a clear outcome and aligned next steps'\n\nphase('Context')\nconst context = await agent(\n 'Summarize meeting context. Identify stakeholder interests, likely tensions, information gaps, and success criteria.\\n\\n' +\n 'MEETING:\\n' + meetingTopic + '\\nATTENDEES:\\n' + attendees + '\\nGOAL:\\n' + goal,\n {\n label: 'context',\n schema: {\n type: 'object',\n properties: {\n summary: { type: 'string' },\n stakeholderInterests: { type: 'array', items: { type: 'string' } },\n tensions: { type: 'array', items: { type: 'string' } },\n informationGaps: { type: 'array', items: { type: 'string' } },\n successCriteria: { type: 'array', items: { type: 'string' } },\n },\n required: ['summary', 'successCriteria'],\n },\n },\n)\n\nphase('Agenda')\nconst agenda = await agent(\n 'Draft a time-boxed agenda (30\u201360 min unless context suggests otherwise). Each item needs an owner hint and desired output. Prioritize decisions over status updates.\\n\\n' +\n JSON.stringify({ meetingTopic, attendees, goal, context }, null, 2),\n {\n label: 'agenda',\n schema: {\n type: 'object',\n properties: {\n durationMin: { type: 'number' },\n items: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n title: { type: 'string' },\n minutes: { type: 'number' },\n owner: { type: 'string' },\n output: { type: 'string' },\n },\n required: ['title', 'minutes', 'output'],\n },\n },\n },\n required: ['items'],\n },\n },\n)\n\nphase('Talking points')\nconst talkingPoints = await agent(\n 'Produce prioritized talking points: opening line, 3\u20135 key messages, smart questions to ask, objections to anticipate with responses, and a crisp closing ask.\\n\\n' +\n JSON.stringify({ meetingTopic, context, agenda }, null, 2),\n {\n label: 'talking points',\n schema: {\n type: 'object',\n properties: {\n openingLine: { type: 'string' },\n keyMessages: { type: 'array', items: { type: 'string' } },\n questionsToAsk: { type: 'array', items: { type: 'string' } },\n objections: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n objection: { type: 'string' },\n response: { type: 'string' },\n },\n required: ['objection', 'response'],\n },\n },\n closingAsk: { type: 'string' },\n },\n required: ['keyMessages', 'closingAsk'],\n },\n },\n)\n\nreturn {\n ok: true,\n meetingTopic,\n attendees,\n goal,\n context,\n agenda,\n talkingPoints,\n}\n";
@@ -0,0 +1,144 @@
1
+ //#region src/agent/workflow/builtins/meeting-prep.ts
2
+ /**
3
+ * Built-in workflow: `meeting_prep`
4
+ *
5
+ * Prepares for a meeting by building context, an agenda, and talking points.
6
+ * Useful for 1:1s, client calls, interviews, or team syncs — no code required.
7
+ *
8
+ * Args:
9
+ * - meeting_topic: what the meeting is about
10
+ * - attendees: who is involved (optional)
11
+ * - goal: desired outcome (optional)
12
+ */
13
+ const MEETING_PREP_SCRIPT = `export const meta = {
14
+ name: 'meeting_prep',
15
+ description: 'Build meeting context, a tight agenda, and prioritized talking points.',
16
+ whenToUse: 'User has an upcoming meeting and wants prep — agenda, questions, and key messages.',
17
+ examplePrompts: [
18
+ { field: 'meeting_topic', text: 'Prep for a quarterly business review with leadership' },
19
+ { field: 'meeting_topic', text: 'Prepare talking points for a vendor negotiation call' },
20
+ ],
21
+ i18n: {
22
+ zh: {
23
+ description: '整理会议背景、紧凑议程与优先发言要点。',
24
+ whenToUse: '用户即将参加会议,需要议程、提问与关键信息准备时。',
25
+ examplePrompts: [
26
+ { field: 'meeting_topic', text: '准备与领导层的季度业务复盘会' },
27
+ { field: 'meeting_topic', text: '准备供应商谈判电话的发言要点' },
28
+ ],
29
+ },
30
+ },
31
+ tags: ['meeting', 'productivity'],
32
+ estimatedAgents: { min: 3, max: 5 },
33
+ phases: [
34
+ { title: 'Context' },
35
+ { title: 'Agenda' },
36
+ { title: 'Talking points' },
37
+ ],
38
+ }
39
+
40
+ const meetingTopic = args && typeof args === 'object' && args.meeting_topic
41
+ ? String(args.meeting_topic)
42
+ : 'Infer the meeting topic from the most recent user turn.'
43
+
44
+ const attendees = args && typeof args === 'object' && args.attendees
45
+ ? String(args.attendees)
46
+ : 'not specified'
47
+
48
+ const goal = args && typeof args === 'object' && args.goal
49
+ ? String(args.goal)
50
+ : 'achieve a clear outcome and aligned next steps'
51
+
52
+ phase('Context')
53
+ const context = await agent(
54
+ 'Summarize meeting context. Identify stakeholder interests, likely tensions, information gaps, and success criteria.\\n\\n' +
55
+ 'MEETING:\\n' + meetingTopic + '\\nATTENDEES:\\n' + attendees + '\\nGOAL:\\n' + goal,
56
+ {
57
+ label: 'context',
58
+ schema: {
59
+ type: 'object',
60
+ properties: {
61
+ summary: { type: 'string' },
62
+ stakeholderInterests: { type: 'array', items: { type: 'string' } },
63
+ tensions: { type: 'array', items: { type: 'string' } },
64
+ informationGaps: { type: 'array', items: { type: 'string' } },
65
+ successCriteria: { type: 'array', items: { type: 'string' } },
66
+ },
67
+ required: ['summary', 'successCriteria'],
68
+ },
69
+ },
70
+ )
71
+
72
+ phase('Agenda')
73
+ const agenda = await agent(
74
+ 'Draft a time-boxed agenda (30–60 min unless context suggests otherwise). Each item needs an owner hint and desired output. Prioritize decisions over status updates.\\n\\n' +
75
+ JSON.stringify({ meetingTopic, attendees, goal, context }, null, 2),
76
+ {
77
+ label: 'agenda',
78
+ schema: {
79
+ type: 'object',
80
+ properties: {
81
+ durationMin: { type: 'number' },
82
+ items: {
83
+ type: 'array',
84
+ items: {
85
+ type: 'object',
86
+ properties: {
87
+ title: { type: 'string' },
88
+ minutes: { type: 'number' },
89
+ owner: { type: 'string' },
90
+ output: { type: 'string' },
91
+ },
92
+ required: ['title', 'minutes', 'output'],
93
+ },
94
+ },
95
+ },
96
+ required: ['items'],
97
+ },
98
+ },
99
+ )
100
+
101
+ phase('Talking points')
102
+ const talkingPoints = await agent(
103
+ 'Produce prioritized talking points: opening line, 3–5 key messages, smart questions to ask, objections to anticipate with responses, and a crisp closing ask.\\n\\n' +
104
+ JSON.stringify({ meetingTopic, context, agenda }, null, 2),
105
+ {
106
+ label: 'talking points',
107
+ schema: {
108
+ type: 'object',
109
+ properties: {
110
+ openingLine: { type: 'string' },
111
+ keyMessages: { type: 'array', items: { type: 'string' } },
112
+ questionsToAsk: { type: 'array', items: { type: 'string' } },
113
+ objections: {
114
+ type: 'array',
115
+ items: {
116
+ type: 'object',
117
+ properties: {
118
+ objection: { type: 'string' },
119
+ response: { type: 'string' },
120
+ },
121
+ required: ['objection', 'response'],
122
+ },
123
+ },
124
+ closingAsk: { type: 'string' },
125
+ },
126
+ required: ['keyMessages', 'closingAsk'],
127
+ },
128
+ },
129
+ )
130
+
131
+ return {
132
+ ok: true,
133
+ meetingTopic,
134
+ attendees,
135
+ goal,
136
+ context,
137
+ agenda,
138
+ talkingPoints,
139
+ }
140
+ `;
141
+ //#endregion
142
+ export { MEETING_PREP_SCRIPT };
143
+
144
+ //# sourceMappingURL=meeting-prep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meeting-prep.js","names":[],"sources":["../../../../../src/agent/workflow/builtins/meeting-prep.ts"],"sourcesContent":["/**\n * Built-in workflow: `meeting_prep`\n *\n * Prepares for a meeting by building context, an agenda, and talking points.\n * Useful for 1:1s, client calls, interviews, or team syncs — no code required.\n *\n * Args:\n * - meeting_topic: what the meeting is about\n * - attendees: who is involved (optional)\n * - goal: desired outcome (optional)\n */\n\nexport const MEETING_PREP_SCRIPT = `export const meta = {\n name: 'meeting_prep',\n description: 'Build meeting context, a tight agenda, and prioritized talking points.',\n whenToUse: 'User has an upcoming meeting and wants prep — agenda, questions, and key messages.',\n examplePrompts: [\n { field: 'meeting_topic', text: 'Prep for a quarterly business review with leadership' },\n { field: 'meeting_topic', text: 'Prepare talking points for a vendor negotiation call' },\n ],\n i18n: {\n zh: {\n description: '整理会议背景、紧凑议程与优先发言要点。',\n whenToUse: '用户即将参加会议,需要议程、提问与关键信息准备时。',\n examplePrompts: [\n { field: 'meeting_topic', text: '准备与领导层的季度业务复盘会' },\n { field: 'meeting_topic', text: '准备供应商谈判电话的发言要点' },\n ],\n },\n },\n tags: ['meeting', 'productivity'],\n estimatedAgents: { min: 3, max: 5 },\n phases: [\n { title: 'Context' },\n { title: 'Agenda' },\n { title: 'Talking points' },\n ],\n}\n\nconst meetingTopic = args && typeof args === 'object' && args.meeting_topic\n ? String(args.meeting_topic)\n : 'Infer the meeting topic from the most recent user turn.'\n\nconst attendees = args && typeof args === 'object' && args.attendees\n ? String(args.attendees)\n : 'not specified'\n\nconst goal = args && typeof args === 'object' && args.goal\n ? String(args.goal)\n : 'achieve a clear outcome and aligned next steps'\n\nphase('Context')\nconst context = await agent(\n 'Summarize meeting context. Identify stakeholder interests, likely tensions, information gaps, and success criteria.\\\\n\\\\n' +\n 'MEETING:\\\\n' + meetingTopic + '\\\\nATTENDEES:\\\\n' + attendees + '\\\\nGOAL:\\\\n' + goal,\n {\n label: 'context',\n schema: {\n type: 'object',\n properties: {\n summary: { type: 'string' },\n stakeholderInterests: { type: 'array', items: { type: 'string' } },\n tensions: { type: 'array', items: { type: 'string' } },\n informationGaps: { type: 'array', items: { type: 'string' } },\n successCriteria: { type: 'array', items: { type: 'string' } },\n },\n required: ['summary', 'successCriteria'],\n },\n },\n)\n\nphase('Agenda')\nconst agenda = await agent(\n 'Draft a time-boxed agenda (30–60 min unless context suggests otherwise). Each item needs an owner hint and desired output. Prioritize decisions over status updates.\\\\n\\\\n' +\n JSON.stringify({ meetingTopic, attendees, goal, context }, null, 2),\n {\n label: 'agenda',\n schema: {\n type: 'object',\n properties: {\n durationMin: { type: 'number' },\n items: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n title: { type: 'string' },\n minutes: { type: 'number' },\n owner: { type: 'string' },\n output: { type: 'string' },\n },\n required: ['title', 'minutes', 'output'],\n },\n },\n },\n required: ['items'],\n },\n },\n)\n\nphase('Talking points')\nconst talkingPoints = await agent(\n 'Produce prioritized talking points: opening line, 3–5 key messages, smart questions to ask, objections to anticipate with responses, and a crisp closing ask.\\\\n\\\\n' +\n JSON.stringify({ meetingTopic, context, agenda }, null, 2),\n {\n label: 'talking points',\n schema: {\n type: 'object',\n properties: {\n openingLine: { type: 'string' },\n keyMessages: { type: 'array', items: { type: 'string' } },\n questionsToAsk: { type: 'array', items: { type: 'string' } },\n objections: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n objection: { type: 'string' },\n response: { type: 'string' },\n },\n required: ['objection', 'response'],\n },\n },\n closingAsk: { type: 'string' },\n },\n required: ['keyMessages', 'closingAsk'],\n },\n },\n)\n\nreturn {\n ok: true,\n meetingTopic,\n attendees,\n goal,\n context,\n agenda,\n talkingPoints,\n}\n`\n"],"mappings":";;;;;;;;;;;;AAYA,MAAa,sBAAsB"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Built-in workflow: `offer_design`
3
+ *
4
+ * Package skills and time into sellable offers — tiers, pricing, delivery
5
+ * boundaries, and positioning for solopreneurs.
6
+ *
7
+ * Args:
8
+ * - skills: what you can do
9
+ * - audience: target customers
10
+ * - constraints: time or revenue goals (optional)
11
+ */
12
+ export declare const OFFER_DESIGN_SCRIPT = "export const meta = {\n name: 'offer_design',\n description: 'Package your skills into sellable offers with tiers, pricing, boundaries, and positioning.',\n whenToUse: 'Solo operator turning expertise into productized services or subscription offers.',\n examplePrompts: [\n { field: 'skills', text: 'Notion systems, light automations, async consulting for creators' },\n { field: 'audience', text: 'Solo creators doing $3k\u201315k/month' },\n ],\n i18n: {\n zh: {\n description: '\u5C06\u4E2A\u4EBA\u80FD\u529B\u6253\u5305\u4E3A\u53EF\u552E\u5356\u7684\u4EA7\u54C1/\u670D\u52A1\uFF1A\u5C42\u7EA7\u3001\u5B9A\u4EF7\u3001\u4EA4\u4ED8\u8FB9\u754C\u4E0E\u5B9A\u4F4D\u3002',\n whenToUse: '\u8D85\u7EA7\u4E2A\u4F53\u60F3\u628A\u4E13\u957F\u4EA7\u54C1\u5316\u3001\u8BBE\u8BA1\u62A5\u4EF7\u4E0E\u5957\u9910\u65F6\u3002',\n examplePrompts: [\n { field: 'skills', text: 'Notion \u7CFB\u7EDF\u642D\u5EFA\u3001\u8F7B\u91CF\u81EA\u52A8\u5316\u3001\u9762\u5411\u521B\u4F5C\u8005\u7684\u5F02\u6B65\u54A8\u8BE2' },\n { field: 'audience', text: '\u6708\u5165 2\u201310 \u4E07\u7684\u72EC\u7ACB\u521B\u4F5C\u8005' },\n ],\n },\n },\n tags: ['planning', 'architecture'],\n estimatedAgents: { min: 4, max: 5 },\n phases: [\n { title: 'Inventory' },\n { title: 'Package' },\n { title: 'Price' },\n { title: 'Position' },\n ],\n}\n\nconst skills = args && typeof args === 'object' && args.skills\n ? String(args.skills)\n : 'Infer your skills from the most recent user turn.'\n\nconst audience = args && typeof args === 'object' && args.audience\n ? String(args.audience)\n : 'Infer target audience from context.'\n\nconst constraints = args && typeof args === 'object' && args.constraints\n ? String(args.constraints)\n : ''\n\nphase('Inventory')\nconst inventory = await agent(\n 'Inventory sellable capabilities for a solo operator. Separate high-leverage repeatable work from custom work. Note time sinks to avoid.\\n\\n' +\n 'SKILLS:\\n' + skills + '\\nAUDIENCE:\\n' + audience +\n (constraints ? '\\nCONSTRAINTS:\\n' + constraints : ''),\n {\n label: 'inventory',\n schema: {\n type: 'object',\n properties: {\n coreCapabilities: { type: 'array', items: { type: 'string' } },\n repeatable: { type: 'array', items: { type: 'string' } },\n customOnly: { type: 'array', items: { type: 'string' } },\n avoid: { type: 'array', items: { type: 'string' } },\n },\n required: ['coreCapabilities', 'repeatable'],\n },\n },\n)\n\nphase('Package')\nconst packages = await agent(\n 'Design 2\u20133 offer tiers (e.g. starter / core / premium) with clear deliverables, boundaries, and who each tier is for. Fit solo capacity \u2014 no fake scale.\\n\\n' +\n JSON.stringify({ skills, audience, constraints, inventory }, null, 2),\n {\n label: 'package',\n schema: {\n type: 'object',\n properties: {\n tiers: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n name: { type: 'string' },\n forWho: { type: 'string' },\n deliverables: { type: 'array', items: { type: 'string' } },\n boundaries: { type: 'array', items: { type: 'string' } },\n timeCommitment: { type: 'string' },\n },\n required: ['name', 'deliverables', 'boundaries'],\n },\n },\n },\n required: ['tiers'],\n },\n },\n)\n\nphase('Price')\nconst pricing = await agent(\n 'Recommend pricing for each tier: price range, pricing model (fixed / retainer / subscription), rationale, and upsell path. Be realistic for solo operators.\\n\\n' +\n JSON.stringify({ audience, constraints, packages }, null, 2),\n {\n label: 'price',\n schema: {\n type: 'object',\n properties: {\n tiers: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n name: { type: 'string' },\n priceRange: { type: 'string' },\n model: { type: 'string' },\n rationale: { type: 'string' },\n },\n required: ['name', 'priceRange', 'model'],\n },\n },\n upsellPath: { type: 'string' },\n },\n required: ['tiers'],\n },\n },\n)\n\nphase('Position')\nconst positioning = await agent(\n 'Write positioning: one-line value prop, differentiation vs DIY and vs agencies, ideal customer profile, and launch checklist (first 3 steps).\\n\\n' +\n JSON.stringify({ inventory, packages, pricing }, null, 2),\n {\n label: 'position',\n schema: {\n type: 'object',\n properties: {\n valueProp: { type: 'string' },\n differentiation: { type: 'array', items: { type: 'string' } },\n idealCustomer: { type: 'string' },\n launchChecklist: { type: 'array', items: { type: 'string' } },\n },\n required: ['valueProp', 'idealCustomer', 'launchChecklist'],\n },\n },\n)\n\nreturn {\n ok: true,\n inventory,\n packages,\n pricing,\n ...(positioning ?? { valueProp: 'positioning failed', launchChecklist: [] }),\n}\n";
@@ -0,0 +1,161 @@
1
+ //#region src/agent/workflow/builtins/offer-design.ts
2
+ /**
3
+ * Built-in workflow: `offer_design`
4
+ *
5
+ * Package skills and time into sellable offers — tiers, pricing, delivery
6
+ * boundaries, and positioning for solopreneurs.
7
+ *
8
+ * Args:
9
+ * - skills: what you can do
10
+ * - audience: target customers
11
+ * - constraints: time or revenue goals (optional)
12
+ */
13
+ const OFFER_DESIGN_SCRIPT = `export const meta = {
14
+ name: 'offer_design',
15
+ description: 'Package your skills into sellable offers with tiers, pricing, boundaries, and positioning.',
16
+ whenToUse: 'Solo operator turning expertise into productized services or subscription offers.',
17
+ examplePrompts: [
18
+ { field: 'skills', text: 'Notion systems, light automations, async consulting for creators' },
19
+ { field: 'audience', text: 'Solo creators doing $3k–15k/month' },
20
+ ],
21
+ i18n: {
22
+ zh: {
23
+ description: '将个人能力打包为可售卖的产品/服务:层级、定价、交付边界与定位。',
24
+ whenToUse: '超级个体想把专长产品化、设计报价与套餐时。',
25
+ examplePrompts: [
26
+ { field: 'skills', text: 'Notion 系统搭建、轻量自动化、面向创作者的异步咨询' },
27
+ { field: 'audience', text: '月入 2–10 万的独立创作者' },
28
+ ],
29
+ },
30
+ },
31
+ tags: ['planning', 'architecture'],
32
+ estimatedAgents: { min: 4, max: 5 },
33
+ phases: [
34
+ { title: 'Inventory' },
35
+ { title: 'Package' },
36
+ { title: 'Price' },
37
+ { title: 'Position' },
38
+ ],
39
+ }
40
+
41
+ const skills = args && typeof args === 'object' && args.skills
42
+ ? String(args.skills)
43
+ : 'Infer your skills from the most recent user turn.'
44
+
45
+ const audience = args && typeof args === 'object' && args.audience
46
+ ? String(args.audience)
47
+ : 'Infer target audience from context.'
48
+
49
+ const constraints = args && typeof args === 'object' && args.constraints
50
+ ? String(args.constraints)
51
+ : ''
52
+
53
+ phase('Inventory')
54
+ const inventory = await agent(
55
+ 'Inventory sellable capabilities for a solo operator. Separate high-leverage repeatable work from custom work. Note time sinks to avoid.\\n\\n' +
56
+ 'SKILLS:\\n' + skills + '\\nAUDIENCE:\\n' + audience +
57
+ (constraints ? '\\nCONSTRAINTS:\\n' + constraints : ''),
58
+ {
59
+ label: 'inventory',
60
+ schema: {
61
+ type: 'object',
62
+ properties: {
63
+ coreCapabilities: { type: 'array', items: { type: 'string' } },
64
+ repeatable: { type: 'array', items: { type: 'string' } },
65
+ customOnly: { type: 'array', items: { type: 'string' } },
66
+ avoid: { type: 'array', items: { type: 'string' } },
67
+ },
68
+ required: ['coreCapabilities', 'repeatable'],
69
+ },
70
+ },
71
+ )
72
+
73
+ phase('Package')
74
+ const packages = await agent(
75
+ 'Design 2–3 offer tiers (e.g. starter / core / premium) with clear deliverables, boundaries, and who each tier is for. Fit solo capacity — no fake scale.\\n\\n' +
76
+ JSON.stringify({ skills, audience, constraints, inventory }, null, 2),
77
+ {
78
+ label: 'package',
79
+ schema: {
80
+ type: 'object',
81
+ properties: {
82
+ tiers: {
83
+ type: 'array',
84
+ items: {
85
+ type: 'object',
86
+ properties: {
87
+ name: { type: 'string' },
88
+ forWho: { type: 'string' },
89
+ deliverables: { type: 'array', items: { type: 'string' } },
90
+ boundaries: { type: 'array', items: { type: 'string' } },
91
+ timeCommitment: { type: 'string' },
92
+ },
93
+ required: ['name', 'deliverables', 'boundaries'],
94
+ },
95
+ },
96
+ },
97
+ required: ['tiers'],
98
+ },
99
+ },
100
+ )
101
+
102
+ phase('Price')
103
+ const pricing = await agent(
104
+ 'Recommend pricing for each tier: price range, pricing model (fixed / retainer / subscription), rationale, and upsell path. Be realistic for solo operators.\\n\\n' +
105
+ JSON.stringify({ audience, constraints, packages }, null, 2),
106
+ {
107
+ label: 'price',
108
+ schema: {
109
+ type: 'object',
110
+ properties: {
111
+ tiers: {
112
+ type: 'array',
113
+ items: {
114
+ type: 'object',
115
+ properties: {
116
+ name: { type: 'string' },
117
+ priceRange: { type: 'string' },
118
+ model: { type: 'string' },
119
+ rationale: { type: 'string' },
120
+ },
121
+ required: ['name', 'priceRange', 'model'],
122
+ },
123
+ },
124
+ upsellPath: { type: 'string' },
125
+ },
126
+ required: ['tiers'],
127
+ },
128
+ },
129
+ )
130
+
131
+ phase('Position')
132
+ const positioning = await agent(
133
+ 'Write positioning: one-line value prop, differentiation vs DIY and vs agencies, ideal customer profile, and launch checklist (first 3 steps).\\n\\n' +
134
+ JSON.stringify({ inventory, packages, pricing }, null, 2),
135
+ {
136
+ label: 'position',
137
+ schema: {
138
+ type: 'object',
139
+ properties: {
140
+ valueProp: { type: 'string' },
141
+ differentiation: { type: 'array', items: { type: 'string' } },
142
+ idealCustomer: { type: 'string' },
143
+ launchChecklist: { type: 'array', items: { type: 'string' } },
144
+ },
145
+ required: ['valueProp', 'idealCustomer', 'launchChecklist'],
146
+ },
147
+ },
148
+ )
149
+
150
+ return {
151
+ ok: true,
152
+ inventory,
153
+ packages,
154
+ pricing,
155
+ ...(positioning ?? { valueProp: 'positioning failed', launchChecklist: [] }),
156
+ }
157
+ `;
158
+ //#endregion
159
+ export { OFFER_DESIGN_SCRIPT };
160
+
161
+ //# sourceMappingURL=offer-design.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"offer-design.js","names":[],"sources":["../../../../../src/agent/workflow/builtins/offer-design.ts"],"sourcesContent":["/**\n * Built-in workflow: `offer_design`\n *\n * Package skills and time into sellable offers — tiers, pricing, delivery\n * boundaries, and positioning for solopreneurs.\n *\n * Args:\n * - skills: what you can do\n * - audience: target customers\n * - constraints: time or revenue goals (optional)\n */\n\nexport const OFFER_DESIGN_SCRIPT = `export const meta = {\n name: 'offer_design',\n description: 'Package your skills into sellable offers with tiers, pricing, boundaries, and positioning.',\n whenToUse: 'Solo operator turning expertise into productized services or subscription offers.',\n examplePrompts: [\n { field: 'skills', text: 'Notion systems, light automations, async consulting for creators' },\n { field: 'audience', text: 'Solo creators doing $3k–15k/month' },\n ],\n i18n: {\n zh: {\n description: '将个人能力打包为可售卖的产品/服务:层级、定价、交付边界与定位。',\n whenToUse: '超级个体想把专长产品化、设计报价与套餐时。',\n examplePrompts: [\n { field: 'skills', text: 'Notion 系统搭建、轻量自动化、面向创作者的异步咨询' },\n { field: 'audience', text: '月入 2–10 万的独立创作者' },\n ],\n },\n },\n tags: ['planning', 'architecture'],\n estimatedAgents: { min: 4, max: 5 },\n phases: [\n { title: 'Inventory' },\n { title: 'Package' },\n { title: 'Price' },\n { title: 'Position' },\n ],\n}\n\nconst skills = args && typeof args === 'object' && args.skills\n ? String(args.skills)\n : 'Infer your skills from the most recent user turn.'\n\nconst audience = args && typeof args === 'object' && args.audience\n ? String(args.audience)\n : 'Infer target audience from context.'\n\nconst constraints = args && typeof args === 'object' && args.constraints\n ? String(args.constraints)\n : ''\n\nphase('Inventory')\nconst inventory = await agent(\n 'Inventory sellable capabilities for a solo operator. Separate high-leverage repeatable work from custom work. Note time sinks to avoid.\\\\n\\\\n' +\n 'SKILLS:\\\\n' + skills + '\\\\nAUDIENCE:\\\\n' + audience +\n (constraints ? '\\\\nCONSTRAINTS:\\\\n' + constraints : ''),\n {\n label: 'inventory',\n schema: {\n type: 'object',\n properties: {\n coreCapabilities: { type: 'array', items: { type: 'string' } },\n repeatable: { type: 'array', items: { type: 'string' } },\n customOnly: { type: 'array', items: { type: 'string' } },\n avoid: { type: 'array', items: { type: 'string' } },\n },\n required: ['coreCapabilities', 'repeatable'],\n },\n },\n)\n\nphase('Package')\nconst packages = await agent(\n 'Design 2–3 offer tiers (e.g. starter / core / premium) with clear deliverables, boundaries, and who each tier is for. Fit solo capacity — no fake scale.\\\\n\\\\n' +\n JSON.stringify({ skills, audience, constraints, inventory }, null, 2),\n {\n label: 'package',\n schema: {\n type: 'object',\n properties: {\n tiers: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n name: { type: 'string' },\n forWho: { type: 'string' },\n deliverables: { type: 'array', items: { type: 'string' } },\n boundaries: { type: 'array', items: { type: 'string' } },\n timeCommitment: { type: 'string' },\n },\n required: ['name', 'deliverables', 'boundaries'],\n },\n },\n },\n required: ['tiers'],\n },\n },\n)\n\nphase('Price')\nconst pricing = await agent(\n 'Recommend pricing for each tier: price range, pricing model (fixed / retainer / subscription), rationale, and upsell path. Be realistic for solo operators.\\\\n\\\\n' +\n JSON.stringify({ audience, constraints, packages }, null, 2),\n {\n label: 'price',\n schema: {\n type: 'object',\n properties: {\n tiers: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n name: { type: 'string' },\n priceRange: { type: 'string' },\n model: { type: 'string' },\n rationale: { type: 'string' },\n },\n required: ['name', 'priceRange', 'model'],\n },\n },\n upsellPath: { type: 'string' },\n },\n required: ['tiers'],\n },\n },\n)\n\nphase('Position')\nconst positioning = await agent(\n 'Write positioning: one-line value prop, differentiation vs DIY and vs agencies, ideal customer profile, and launch checklist (first 3 steps).\\\\n\\\\n' +\n JSON.stringify({ inventory, packages, pricing }, null, 2),\n {\n label: 'position',\n schema: {\n type: 'object',\n properties: {\n valueProp: { type: 'string' },\n differentiation: { type: 'array', items: { type: 'string' } },\n idealCustomer: { type: 'string' },\n launchChecklist: { type: 'array', items: { type: 'string' } },\n },\n required: ['valueProp', 'idealCustomer', 'launchChecklist'],\n },\n },\n)\n\nreturn {\n ok: true,\n inventory,\n packages,\n pricing,\n ...(positioning ?? { valueProp: 'positioning failed', launchChecklist: [] }),\n}\n`\n"],"mappings":";;;;;;;;;;;;AAYA,MAAa,sBAAsB"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Built-in workflow: `weekly_review`
3
+ *
4
+ * Weekly retrospective for solopreneurs — collect wins, blockers, and carryover,
5
+ * then synthesize next-week priorities.
6
+ *
7
+ * Args:
8
+ * - wins: what went well this week
9
+ * - blockers: what stalled or frustrated progress
10
+ * - carryover: unfinished items (optional)
11
+ */
12
+ export declare const WEEKLY_REVIEW_SCRIPT = "export const meta = {\n name: 'weekly_review',\n description: 'Review the week and produce 3\u20135 prioritized actions for next week.',\n whenToUse: 'Solo founder or super-individual doing a weekly retrospective and planning session.',\n examplePrompts: [\n { field: 'wins', text: 'Shipped landing page, got 2 demo calls, published one newsletter' },\n { field: 'blockers', text: 'Pricing still unclear, one client ghosted, distracted by side tasks' },\n ],\n i18n: {\n zh: {\n description: '\u590D\u76D8\u672C\u5468\u5E76\u4EA7\u51FA\u4E0B\u5468 3\u20135 \u9879\u4F18\u5148\u884C\u52A8\u3002',\n whenToUse: '\u4E00\u4EBA\u516C\u53F8\u6216\u8D85\u7EA7\u4E2A\u4F53\u505A\u5468\u590D\u76D8\u4E0E\u4E0B\u5468\u89C4\u5212\u65F6\u3002',\n examplePrompts: [\n { field: 'wins', text: '\u4E0A\u7EBF\u4E86\u843D\u5730\u9875\u3001\u62FF\u5230 2 \u4E2A demo\u3001\u53D1\u4E86\u4E00\u671F newsletter' },\n { field: 'blockers', text: '\u5B9A\u4EF7\u8FD8\u4E0D\u6E05\u6670\u3001\u4E00\u4E2A\u5BA2\u6237\u5931\u8054\u3001\u88AB\u6742\u4E8B\u5206\u5FC3' },\n ],\n },\n },\n tags: ['productivity', 'brainstorm'],\n estimatedAgents: { min: 3, max: 4 },\n phases: [\n { title: 'Collect' },\n { title: 'Analyze' },\n { title: 'Plan' },\n ],\n}\n\nconst wins = args && typeof args === 'object' && args.wins\n ? String(args.wins)\n : 'Infer wins from the most recent user turn.'\n\nconst blockers = args && typeof args === 'object' && args.blockers\n ? String(args.blockers)\n : 'None specified \u2014 infer from context if possible.'\n\nconst carryover = args && typeof args === 'object' && args.carryover\n ? String(args.carryover)\n : ''\n\nphase('Collect')\nconst collected = await agent(\n 'Normalize this weekly input into structured facts: wins, blockers, carryover, energy level signals, and revenue/impact signals if mentioned. Be concise.\\n\\n' +\n 'WINS:\\n' + wins + '\\nBLOCKERS:\\n' + blockers + '\\nCARRYOVER:\\n' + (carryover || '(none)'),\n {\n label: 'collect',\n schema: {\n type: 'object',\n properties: {\n wins: { type: 'array', items: { type: 'string' } },\n blockers: { type: 'array', items: { type: 'string' } },\n carryover: { type: 'array', items: { type: 'string' } },\n themes: { type: 'array', items: { type: 'string' } },\n },\n required: ['wins', 'blockers'],\n },\n },\n)\n\nphase('Analyze')\nconst analysis = await agent(\n 'Analyze this week for a solo operator. Identify patterns, root causes of blockers, what to stop doing, what to double down on, and one honest lesson.\\n\\n' +\n JSON.stringify(collected, null, 2),\n {\n label: 'analyze',\n schema: {\n type: 'object',\n properties: {\n patterns: { type: 'array', items: { type: 'string' } },\n rootCauses: { type: 'array', items: { type: 'string' } },\n stopDoing: { type: 'array', items: { type: 'string' } },\n doubleDown: { type: 'array', items: { type: 'string' } },\n lesson: { type: 'string' },\n },\n required: ['patterns', 'lesson'],\n },\n },\n)\n\nphase('Plan')\nconst plan = await agent(\n 'Produce next week plan for a solo founder: exactly 3\u20135 prioritized actions (each with why, estimated effort, and success signal), plus one optional stretch goal. Be realistic for ~20\u201330 focused hours.\\n\\n' +\n JSON.stringify({ collected, analysis }, null, 2),\n {\n label: 'plan',\n schema: {\n type: 'object',\n properties: {\n priorities: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n action: { type: 'string' },\n why: { type: 'string' },\n effort: { type: 'string', enum: ['low', 'med', 'high'] },\n successSignal: { type: 'string' },\n },\n required: ['action', 'why', 'successSignal'],\n },\n },\n stretchGoal: { type: 'string' },\n weeklyTheme: { type: 'string' },\n },\n required: ['priorities', 'weeklyTheme'],\n },\n },\n)\n\nreturn {\n ok: true,\n collected,\n analysis,\n ...(plan ?? { priorities: [], weeklyTheme: 'planning failed' }),\n}\n";
@@ -0,0 +1,131 @@
1
+ //#region src/agent/workflow/builtins/weekly-review.ts
2
+ /**
3
+ * Built-in workflow: `weekly_review`
4
+ *
5
+ * Weekly retrospective for solopreneurs — collect wins, blockers, and carryover,
6
+ * then synthesize next-week priorities.
7
+ *
8
+ * Args:
9
+ * - wins: what went well this week
10
+ * - blockers: what stalled or frustrated progress
11
+ * - carryover: unfinished items (optional)
12
+ */
13
+ const WEEKLY_REVIEW_SCRIPT = `export const meta = {
14
+ name: 'weekly_review',
15
+ description: 'Review the week and produce 3–5 prioritized actions for next week.',
16
+ whenToUse: 'Solo founder or super-individual doing a weekly retrospective and planning session.',
17
+ examplePrompts: [
18
+ { field: 'wins', text: 'Shipped landing page, got 2 demo calls, published one newsletter' },
19
+ { field: 'blockers', text: 'Pricing still unclear, one client ghosted, distracted by side tasks' },
20
+ ],
21
+ i18n: {
22
+ zh: {
23
+ description: '复盘本周并产出下周 3–5 项优先行动。',
24
+ whenToUse: '一人公司或超级个体做周复盘与下周规划时。',
25
+ examplePrompts: [
26
+ { field: 'wins', text: '上线了落地页、拿到 2 个 demo、发了一期 newsletter' },
27
+ { field: 'blockers', text: '定价还不清晰、一个客户失联、被杂事分心' },
28
+ ],
29
+ },
30
+ },
31
+ tags: ['productivity', 'brainstorm'],
32
+ estimatedAgents: { min: 3, max: 4 },
33
+ phases: [
34
+ { title: 'Collect' },
35
+ { title: 'Analyze' },
36
+ { title: 'Plan' },
37
+ ],
38
+ }
39
+
40
+ const wins = args && typeof args === 'object' && args.wins
41
+ ? String(args.wins)
42
+ : 'Infer wins from the most recent user turn.'
43
+
44
+ const blockers = args && typeof args === 'object' && args.blockers
45
+ ? String(args.blockers)
46
+ : 'None specified — infer from context if possible.'
47
+
48
+ const carryover = args && typeof args === 'object' && args.carryover
49
+ ? String(args.carryover)
50
+ : ''
51
+
52
+ phase('Collect')
53
+ const collected = await agent(
54
+ 'Normalize this weekly input into structured facts: wins, blockers, carryover, energy level signals, and revenue/impact signals if mentioned. Be concise.\\n\\n' +
55
+ 'WINS:\\n' + wins + '\\nBLOCKERS:\\n' + blockers + '\\nCARRYOVER:\\n' + (carryover || '(none)'),
56
+ {
57
+ label: 'collect',
58
+ schema: {
59
+ type: 'object',
60
+ properties: {
61
+ wins: { type: 'array', items: { type: 'string' } },
62
+ blockers: { type: 'array', items: { type: 'string' } },
63
+ carryover: { type: 'array', items: { type: 'string' } },
64
+ themes: { type: 'array', items: { type: 'string' } },
65
+ },
66
+ required: ['wins', 'blockers'],
67
+ },
68
+ },
69
+ )
70
+
71
+ phase('Analyze')
72
+ const analysis = await agent(
73
+ 'Analyze this week for a solo operator. Identify patterns, root causes of blockers, what to stop doing, what to double down on, and one honest lesson.\\n\\n' +
74
+ JSON.stringify(collected, null, 2),
75
+ {
76
+ label: 'analyze',
77
+ schema: {
78
+ type: 'object',
79
+ properties: {
80
+ patterns: { type: 'array', items: { type: 'string' } },
81
+ rootCauses: { type: 'array', items: { type: 'string' } },
82
+ stopDoing: { type: 'array', items: { type: 'string' } },
83
+ doubleDown: { type: 'array', items: { type: 'string' } },
84
+ lesson: { type: 'string' },
85
+ },
86
+ required: ['patterns', 'lesson'],
87
+ },
88
+ },
89
+ )
90
+
91
+ phase('Plan')
92
+ const plan = await agent(
93
+ 'Produce next week plan for a solo founder: exactly 3–5 prioritized actions (each with why, estimated effort, and success signal), plus one optional stretch goal. Be realistic for ~20–30 focused hours.\\n\\n' +
94
+ JSON.stringify({ collected, analysis }, null, 2),
95
+ {
96
+ label: 'plan',
97
+ schema: {
98
+ type: 'object',
99
+ properties: {
100
+ priorities: {
101
+ type: 'array',
102
+ items: {
103
+ type: 'object',
104
+ properties: {
105
+ action: { type: 'string' },
106
+ why: { type: 'string' },
107
+ effort: { type: 'string', enum: ['low', 'med', 'high'] },
108
+ successSignal: { type: 'string' },
109
+ },
110
+ required: ['action', 'why', 'successSignal'],
111
+ },
112
+ },
113
+ stretchGoal: { type: 'string' },
114
+ weeklyTheme: { type: 'string' },
115
+ },
116
+ required: ['priorities', 'weeklyTheme'],
117
+ },
118
+ },
119
+ )
120
+
121
+ return {
122
+ ok: true,
123
+ collected,
124
+ analysis,
125
+ ...(plan ?? { priorities: [], weeklyTheme: 'planning failed' }),
126
+ }
127
+ `;
128
+ //#endregion
129
+ export { WEEKLY_REVIEW_SCRIPT };
130
+
131
+ //# sourceMappingURL=weekly-review.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weekly-review.js","names":[],"sources":["../../../../../src/agent/workflow/builtins/weekly-review.ts"],"sourcesContent":["/**\n * Built-in workflow: `weekly_review`\n *\n * Weekly retrospective for solopreneurs — collect wins, blockers, and carryover,\n * then synthesize next-week priorities.\n *\n * Args:\n * - wins: what went well this week\n * - blockers: what stalled or frustrated progress\n * - carryover: unfinished items (optional)\n */\n\nexport const WEEKLY_REVIEW_SCRIPT = `export const meta = {\n name: 'weekly_review',\n description: 'Review the week and produce 3–5 prioritized actions for next week.',\n whenToUse: 'Solo founder or super-individual doing a weekly retrospective and planning session.',\n examplePrompts: [\n { field: 'wins', text: 'Shipped landing page, got 2 demo calls, published one newsletter' },\n { field: 'blockers', text: 'Pricing still unclear, one client ghosted, distracted by side tasks' },\n ],\n i18n: {\n zh: {\n description: '复盘本周并产出下周 3–5 项优先行动。',\n whenToUse: '一人公司或超级个体做周复盘与下周规划时。',\n examplePrompts: [\n { field: 'wins', text: '上线了落地页、拿到 2 个 demo、发了一期 newsletter' },\n { field: 'blockers', text: '定价还不清晰、一个客户失联、被杂事分心' },\n ],\n },\n },\n tags: ['productivity', 'brainstorm'],\n estimatedAgents: { min: 3, max: 4 },\n phases: [\n { title: 'Collect' },\n { title: 'Analyze' },\n { title: 'Plan' },\n ],\n}\n\nconst wins = args && typeof args === 'object' && args.wins\n ? String(args.wins)\n : 'Infer wins from the most recent user turn.'\n\nconst blockers = args && typeof args === 'object' && args.blockers\n ? String(args.blockers)\n : 'None specified — infer from context if possible.'\n\nconst carryover = args && typeof args === 'object' && args.carryover\n ? String(args.carryover)\n : ''\n\nphase('Collect')\nconst collected = await agent(\n 'Normalize this weekly input into structured facts: wins, blockers, carryover, energy level signals, and revenue/impact signals if mentioned. Be concise.\\\\n\\\\n' +\n 'WINS:\\\\n' + wins + '\\\\nBLOCKERS:\\\\n' + blockers + '\\\\nCARRYOVER:\\\\n' + (carryover || '(none)'),\n {\n label: 'collect',\n schema: {\n type: 'object',\n properties: {\n wins: { type: 'array', items: { type: 'string' } },\n blockers: { type: 'array', items: { type: 'string' } },\n carryover: { type: 'array', items: { type: 'string' } },\n themes: { type: 'array', items: { type: 'string' } },\n },\n required: ['wins', 'blockers'],\n },\n },\n)\n\nphase('Analyze')\nconst analysis = await agent(\n 'Analyze this week for a solo operator. Identify patterns, root causes of blockers, what to stop doing, what to double down on, and one honest lesson.\\\\n\\\\n' +\n JSON.stringify(collected, null, 2),\n {\n label: 'analyze',\n schema: {\n type: 'object',\n properties: {\n patterns: { type: 'array', items: { type: 'string' } },\n rootCauses: { type: 'array', items: { type: 'string' } },\n stopDoing: { type: 'array', items: { type: 'string' } },\n doubleDown: { type: 'array', items: { type: 'string' } },\n lesson: { type: 'string' },\n },\n required: ['patterns', 'lesson'],\n },\n },\n)\n\nphase('Plan')\nconst plan = await agent(\n 'Produce next week plan for a solo founder: exactly 3–5 prioritized actions (each with why, estimated effort, and success signal), plus one optional stretch goal. Be realistic for ~20–30 focused hours.\\\\n\\\\n' +\n JSON.stringify({ collected, analysis }, null, 2),\n {\n label: 'plan',\n schema: {\n type: 'object',\n properties: {\n priorities: {\n type: 'array',\n items: {\n type: 'object',\n properties: {\n action: { type: 'string' },\n why: { type: 'string' },\n effort: { type: 'string', enum: ['low', 'med', 'high'] },\n successSignal: { type: 'string' },\n },\n required: ['action', 'why', 'successSignal'],\n },\n },\n stretchGoal: { type: 'string' },\n weeklyTheme: { type: 'string' },\n },\n required: ['priorities', 'weeklyTheme'],\n },\n },\n)\n\nreturn {\n ok: true,\n collected,\n analysis,\n ...(plan ?? { priorities: [], weeklyTheme: 'planning failed' }),\n}\n`\n"],"mappings":";;;;;;;;;;;;AAYA,MAAa,uBAAuB"}