create-workframe 0.1.0

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 (415) hide show
  1. package/.dockerignore +22 -0
  2. package/.gitignore +73 -0
  3. package/LICENSE +201 -0
  4. package/NOTICE +12 -0
  5. package/README.md +111 -0
  6. package/SECURITY.md +40 -0
  7. package/bin/create-workframe.js +2814 -0
  8. package/bin/workframe.js +329 -0
  9. package/docs/workspace-instructions/WORKFRAME_DISCORD.md +20 -0
  10. package/docs/workspace-instructions/WORKFRAME_DOCUMENTS_AND_ARTIFACTS.md +20 -0
  11. package/docs/workspace-instructions/WORKFRAME_KANBAN.md +20 -0
  12. package/docs/workspace-instructions/WORKFRAME_ONBOARDING.md +21 -0
  13. package/docs/workspace-instructions/WORKFRAME_ROUTING.md +29 -0
  14. package/docs/workspace-instructions/WORKFRAME_TELEGRAM.md +19 -0
  15. package/package.json +67 -0
  16. package/profiles/README.md +15 -0
  17. package/profiles/architect/AGENTS.md +29 -0
  18. package/profiles/architect/SOUL.md +44 -0
  19. package/profiles/architect/skills/devops/kanban-worker/SKILL.md +27 -0
  20. package/profiles/designer/AGENTS.md +26 -0
  21. package/profiles/designer/SOUL.md +31 -0
  22. package/profiles/designer/skills/devops/kanban-worker/SKILL.md +27 -0
  23. package/profiles/dev/AGENTS.md +28 -0
  24. package/profiles/dev/SOUL.md +31 -0
  25. package/profiles/dev/skills/devops/kanban-worker/SKILL.md +27 -0
  26. package/profiles/docs/AGENTS.md +27 -0
  27. package/profiles/docs/SOUL.md +30 -0
  28. package/profiles/docs/skills/devops/kanban-worker/SKILL.md +27 -0
  29. package/profiles/research/AGENTS.md +26 -0
  30. package/profiles/research/SOUL.md +31 -0
  31. package/profiles/research/skills/devops/kanban-worker/SKILL.md +27 -0
  32. package/profiles/visionary/AGENTS.md +25 -0
  33. package/profiles/visionary/SOUL.md +31 -0
  34. package/profiles/visionary/skills/devops/kanban-worker/SKILL.md +27 -0
  35. package/profiles/workframe-agent/AGENTS.md +37 -0
  36. package/profiles/workframe-agent/SETUP.md +185 -0
  37. package/profiles/workframe-agent/SOUL.md +61 -0
  38. package/profiles/workframe-agent/skills/devops/botfather/SKILL.md +85 -0
  39. package/profiles/workframe-agent/skills/devops/kanban-handoff-pattern/SKILL.md +58 -0
  40. package/profiles/workframe-agent/skills/devops/workframe-cohort/SKILL.md +54 -0
  41. package/prompts/WORKFRAME_PROMPT_TEMPLATES.md +16 -0
  42. package/rules/.hermes.md +11 -0
  43. package/rules/AGENTS.md +22 -0
  44. package/rules/workspace-README.md +5 -0
  45. package/scripts/apply-update-hermes.sh +17 -0
  46. package/scripts/apply-update-workframe.sh +77 -0
  47. package/scripts/bootstrap-workspace-link.sh +8 -0
  48. package/scripts/bundle-workframe-ui.mjs +77 -0
  49. package/scripts/compose-docker-host.sh +37 -0
  50. package/scripts/create_workframe_scaffold.py +648 -0
  51. package/scripts/ensure-compose-host-paths.mjs +51 -0
  52. package/scripts/fix-zk-encryption-key.sh +35 -0
  53. package/scripts/lib/install-identity.mjs +212 -0
  54. package/scripts/lib/workframe-registry.mjs +290 -0
  55. package/scripts/new-project.mjs +68 -0
  56. package/scripts/restart-gateway-hermes.sh +12 -0
  57. package/scripts/security_audit.py +156 -0
  58. package/scripts/select_agent_pack.py +31 -0
  59. package/scripts/set-compose-public-url.mjs +92 -0
  60. package/scripts/setup-stack-secrets.sh +50 -0
  61. package/scripts/sync-canonical-to-package.mjs +146 -0
  62. package/scripts/test-scaffold.mjs +390 -0
  63. package/scripts/verify-public-deploy.sh +105 -0
  64. package/shared/WORKFRAME_AGENT_LIBRARY.md +31 -0
  65. package/shared/WORKFRAME_AGENT_OPERATIONS.md +29 -0
  66. package/shared/WORKFRAME_AGENT_PACKS.json +64 -0
  67. package/shared/WORKFRAME_AGENT_PACKS.yaml +20 -0
  68. package/shared/WORKFRAME_CHAT_PERMISSION_MODEL.md +20 -0
  69. package/shared/WORKFRAME_HANDOFF_SCHEMA.md +25 -0
  70. package/shared/WORKFRAME_SKILL_CURATION.md +27 -0
  71. package/shared/agent-avatars/ada.png +0 -0
  72. package/shared/agent-avatars/aibert.png +0 -0
  73. package/shared/agent-avatars/amelia.png +0 -0
  74. package/shared/agent-avatars/andy.png +0 -0
  75. package/shared/agent-avatars/arc.png +0 -0
  76. package/shared/agent-avatars/bob.png +0 -0
  77. package/shared/agent-avatars/buzz.png +0 -0
  78. package/shared/agent-avatars/carl.png +0 -0
  79. package/shared/agent-avatars/catalog.json +171 -0
  80. package/shared/agent-avatars/corbu.png +0 -0
  81. package/shared/agent-avatars/diana.png +0 -0
  82. package/shared/agent-avatars/ella.png +0 -0
  83. package/shared/agent-avatars/elvis.png +0 -0
  84. package/shared/agent-avatars/f1.png +0 -0
  85. package/shared/agent-avatars/f2.png +0 -0
  86. package/shared/agent-avatars/f3.png +0 -0
  87. package/shared/agent-avatars/f4.png +0 -0
  88. package/shared/agent-avatars/f5.png +0 -0
  89. package/shared/agent-avatars/f6.png +0 -0
  90. package/shared/agent-avatars/frida.png +0 -0
  91. package/shared/agent-avatars/george.png +0 -0
  92. package/shared/agent-avatars/grace.png +0 -0
  93. package/shared/agent-avatars/hedy.png +0 -0
  94. package/shared/agent-avatars/hermes.png +0 -0
  95. package/shared/agent-avatars/isaac.png +0 -0
  96. package/shared/agent-avatars/jes.png +0 -0
  97. package/shared/agent-avatars/john.png +0 -0
  98. package/shared/agent-avatars/joni.png +0 -0
  99. package/shared/agent-avatars/leo.png +0 -0
  100. package/shared/agent-avatars/louis.png +0 -0
  101. package/shared/agent-avatars/ludwig.png +0 -0
  102. package/shared/agent-avatars/m1.png +0 -0
  103. package/shared/agent-avatars/m2.png +0 -0
  104. package/shared/agent-avatars/m3.png +0 -0
  105. package/shared/agent-avatars/m4.png +0 -0
  106. package/shared/agent-avatars/m5.png +0 -0
  107. package/shared/agent-avatars/m6.png +0 -0
  108. package/shared/agent-avatars/marie.png +0 -0
  109. package/shared/agent-avatars/marilyn.png +0 -0
  110. package/shared/agent-avatars/neil.png +0 -0
  111. package/shared/agent-avatars/nikola.png +0 -0
  112. package/shared/agent-avatars/nina.png +0 -0
  113. package/shared/agent-avatars/paul.png +0 -0
  114. package/shared/agent-avatars/ringo.png +0 -0
  115. package/shared/agent-avatars/rosie.png +0 -0
  116. package/shared/agent-avatars/ste.png +0 -0
  117. package/shared/agent-avatars/steve.png +0 -0
  118. package/shared/agent-avatars/sun.png +0 -0
  119. package/shared/agent-avatars/tom.png +0 -0
  120. package/shared/agent-avatars/warren.png +0 -0
  121. package/shared/agent-avatars/woz.png +0 -0
  122. package/shared/agent-avatars/zaha.png +0 -0
  123. package/workframe-api/Dockerfile +14 -0
  124. package/workframe-api/README.md +28 -0
  125. package/workframe-api/action_proxy.py +131 -0
  126. package/workframe-api/auth_rate_limit.py +49 -0
  127. package/workframe-api/catalog/avatar-catalog.json +171 -0
  128. package/workframe-api/catalog/logo-catalog.json +86 -0
  129. package/workframe-api/catalog/user-avatar-catalog.json +171 -0
  130. package/workframe-api/credential_vault.py +445 -0
  131. package/workframe-api/data/.gitkeep +0 -0
  132. package/workframe-api/data/avatar-catalog.json +41 -0
  133. package/workframe-api/data/logo-catalog.json +14 -0
  134. package/workframe-api/data/user-avatar-catalog.json +18 -0
  135. package/workframe-api/email_sender.py +220 -0
  136. package/workframe-api/google_auth.py +90 -0
  137. package/workframe-api/install_api.py +359 -0
  138. package/workframe-api/internal_proxy_auth.py +150 -0
  139. package/workframe-api/llm_proxy.py +277 -0
  140. package/workframe-api/oidc_jwt.py +108 -0
  141. package/workframe-api/package.json +13 -0
  142. package/workframe-api/platform_auth.py +194 -0
  143. package/workframe-api/profile_secret_policy.py +86 -0
  144. package/workframe-api/public/assets/index-DPXu_lGn.css +1 -0
  145. package/workframe-api/public/assets/index-DYnLrCZZ.js +9 -0
  146. package/workframe-api/public/assets/index-DglUqFB_.js +9 -0
  147. package/workframe-api/public/index.html +12 -0
  148. package/workframe-api/requirements.txt +2 -0
  149. package/workframe-api/server.py +19646 -0
  150. package/workframe-api/site_meta.py +271 -0
  151. package/workframe-api/stack_config.py +427 -0
  152. package/workframe-api/tests/__init__.py +0 -0
  153. package/workframe-api/tests/db_setup.py +13 -0
  154. package/workframe-api/tests/test_admin_updates_gated.py +30 -0
  155. package/workframe-api/tests/test_agent_dm_bootstrap.py +196 -0
  156. package/workframe-api/tests/test_agent_profile_sync.py +76 -0
  157. package/workframe-api/tests/test_auth_email.py +222 -0
  158. package/workframe-api/tests/test_auth_hole_fix_selfcheck.py +99 -0
  159. package/workframe-api/tests/test_auth_rate_limit.py +19 -0
  160. package/workframe-api/tests/test_avatar_resolve.py +77 -0
  161. package/workframe-api/tests/test_child_soul_template.py +71 -0
  162. package/workframe-api/tests/test_credential_canary.py +135 -0
  163. package/workframe-api/tests/test_credential_isolation.py +448 -0
  164. package/workframe-api/tests/test_credential_resolution.py +206 -0
  165. package/workframe-api/tests/test_device_oauth.py +108 -0
  166. package/workframe-api/tests/test_doctor_repair.py +103 -0
  167. package/workframe-api/tests/test_ensure_profile_api.py +77 -0
  168. package/workframe-api/tests/test_gateway_compose_security.py +136 -0
  169. package/workframe-api/tests/test_install_secure_host.py +39 -0
  170. package/workframe-api/tests/test_internal_proxy_auth.py +125 -0
  171. package/workframe-api/tests/test_invite_runtime_bootstrap.py +72 -0
  172. package/workframe-api/tests/test_kanban_delegation.py +185 -0
  173. package/workframe-api/tests/test_llm_proxy.py +155 -0
  174. package/workframe-api/tests/test_login_access_policy.py +183 -0
  175. package/workframe-api/tests/test_mvp_model_bootstrap.py +75 -0
  176. package/workframe-api/tests/test_onboarding_bootstrap.py +248 -0
  177. package/workframe-api/tests/test_platform_auth.py +47 -0
  178. package/workframe-api/tests/test_profile_config_path.py +56 -0
  179. package/workframe-api/tests/test_profile_config_yaml_repair.py +63 -0
  180. package/workframe-api/tests/test_profile_create.py +72 -0
  181. package/workframe-api/tests/test_profile_identity_overlay.py +61 -0
  182. package/workframe-api/tests/test_profile_install_health.py +45 -0
  183. package/workframe-api/tests/test_profile_secret_policy.py +57 -0
  184. package/workframe-api/tests/test_profile_workspace_cwd.py +34 -0
  185. package/workframe-api/tests/test_provider_bootstrap.py +75 -0
  186. package/workframe-api/tests/test_provider_connect.py +54 -0
  187. package/workframe-api/tests/test_room_crud.py +192 -0
  188. package/workframe-api/tests/test_room_tenancy.py +701 -0
  189. package/workframe-api/tests/test_runtime_identity_backfill.py +34 -0
  190. package/workframe-api/tests/test_site_meta.py +81 -0
  191. package/workframe-api/tests/test_soul_stub.py +42 -0
  192. package/workframe-api/tests/test_space_member_sync.py +99 -0
  193. package/workframe-api/tests/test_stripe_stack_config.py +37 -0
  194. package/workframe-api/tests/test_supervisor_lifecycle.py +52 -0
  195. package/workframe-api/tests/test_turn_credential_vault.py +125 -0
  196. package/workframe-api/tests/test_updates.py +176 -0
  197. package/workframe-api/tests/test_user_cohort.py +113 -0
  198. package/workframe-api/tests/test_vault_envelope.py +110 -0
  199. package/workframe-api/tests/test_workspace_members.py +183 -0
  200. package/workframe-api/tests/test_workspace_messaging_sync.py +125 -0
  201. package/workframe-api/tests/test_workspace_provider_list.py +57 -0
  202. package/workframe-api/time-bind-chat.py +99 -0
  203. package/workframe-api/turn_credentials.py +226 -0
  204. package/workframe-api/updates.py +417 -0
  205. package/workframe-api/vault_kek.py +159 -0
  206. package/workframe-api/zk_auth.py +633 -0
  207. package/workframe-supervisor/Dockerfile +11 -0
  208. package/workframe-supervisor/profile_secret_policy.py +76 -0
  209. package/workframe-supervisor/server.py +787 -0
  210. package/workframe-supervisor/tests/test_exec_guard.py +42 -0
  211. package/workframe-supervisor/tests/test_server_import.py +21 -0
  212. package/workframe-ui/docker/nginx.conf +85 -0
  213. package/workframe-ui/public/assets/1-DLJbBkOb.png +0 -0
  214. package/workframe-ui/public/assets/10-uwRwj5ce.png +0 -0
  215. package/workframe-ui/public/assets/11-5OuV9F_e.png +0 -0
  216. package/workframe-ui/public/assets/12-u_axjxW-.png +0 -0
  217. package/workframe-ui/public/assets/13-ldSvcMsH.png +0 -0
  218. package/workframe-ui/public/assets/14-xdcALEYD.png +0 -0
  219. package/workframe-ui/public/assets/15-aZ4snEFB.png +0 -0
  220. package/workframe-ui/public/assets/16-L_5-DttY.png +0 -0
  221. package/workframe-ui/public/assets/2-zOPZTppD.png +0 -0
  222. package/workframe-ui/public/assets/3-Dc3WoVu5.png +0 -0
  223. package/workframe-ui/public/assets/4-C50hk7_m.png +0 -0
  224. package/workframe-ui/public/assets/5-Eweetkq4.png +0 -0
  225. package/workframe-ui/public/assets/6-5sOXgfkw.png +0 -0
  226. package/workframe-ui/public/assets/7-BqRBCbiC.png +0 -0
  227. package/workframe-ui/public/assets/8-DEDKS94h.png +0 -0
  228. package/workframe-ui/public/assets/9-DNj34GW-.png +0 -0
  229. package/workframe-ui/public/assets/ada-DsvuOc9n.png +0 -0
  230. package/workframe-ui/public/assets/aibert-BCz8Lo8H.png +0 -0
  231. package/workframe-ui/public/assets/amelia-DUf3EBGu.png +0 -0
  232. package/workframe-ui/public/assets/andy-Cpymuhhx.png +0 -0
  233. package/workframe-ui/public/assets/arc-CBDYvkAF.js +1 -0
  234. package/workframe-ui/public/assets/architecture-7EHR7CIX-CtbQKTuT.js +1 -0
  235. package/workframe-ui/public/assets/architectureDiagram-3BPJPVTR-XnBRKeW0.js +36 -0
  236. package/workframe-ui/public/assets/array-BifhSqXX.js +1 -0
  237. package/workframe-ui/public/assets/avatars/ada.png +0 -0
  238. package/workframe-ui/public/assets/avatars/aibert.png +0 -0
  239. package/workframe-ui/public/assets/avatars/amelia.png +0 -0
  240. package/workframe-ui/public/assets/avatars/andy.png +0 -0
  241. package/workframe-ui/public/assets/avatars/bob.png +0 -0
  242. package/workframe-ui/public/assets/avatars/buzz.png +0 -0
  243. package/workframe-ui/public/assets/avatars/carl.png +0 -0
  244. package/workframe-ui/public/assets/avatars/catalog.json +171 -0
  245. package/workframe-ui/public/assets/avatars/corbu.png +0 -0
  246. package/workframe-ui/public/assets/avatars/diana.png +0 -0
  247. package/workframe-ui/public/assets/avatars/elvis.png +0 -0
  248. package/workframe-ui/public/assets/avatars/frida.png +0 -0
  249. package/workframe-ui/public/assets/avatars/george.png +0 -0
  250. package/workframe-ui/public/assets/avatars/grace.png +0 -0
  251. package/workframe-ui/public/assets/avatars/hedy.png +0 -0
  252. package/workframe-ui/public/assets/avatars/hermes.png +0 -0
  253. package/workframe-ui/public/assets/avatars/isaac.png +0 -0
  254. package/workframe-ui/public/assets/avatars/john.png +0 -0
  255. package/workframe-ui/public/assets/avatars/joni.png +0 -0
  256. package/workframe-ui/public/assets/avatars/leo.png +0 -0
  257. package/workframe-ui/public/assets/avatars/louis.png +0 -0
  258. package/workframe-ui/public/assets/avatars/ludwig.png +0 -0
  259. package/workframe-ui/public/assets/avatars/marie.png +0 -0
  260. package/workframe-ui/public/assets/avatars/marilyn.png +0 -0
  261. package/workframe-ui/public/assets/avatars/nikola.png +0 -0
  262. package/workframe-ui/public/assets/avatars/nina.png +0 -0
  263. package/workframe-ui/public/assets/avatars/paul.png +0 -0
  264. package/workframe-ui/public/assets/avatars/ringo.png +0 -0
  265. package/workframe-ui/public/assets/avatars/rosie.png +0 -0
  266. package/workframe-ui/public/assets/avatars/steve.png +0 -0
  267. package/workframe-ui/public/assets/avatars/sun.png +0 -0
  268. package/workframe-ui/public/assets/avatars/warren.png +0 -0
  269. package/workframe-ui/public/assets/avatars/woz.png +0 -0
  270. package/workframe-ui/public/assets/avatars/zaha.png +0 -0
  271. package/workframe-ui/public/assets/blockDiagram-GPEHLZMM-VYHUfVhd.js +132 -0
  272. package/workframe-ui/public/assets/bob-DRz-48Id.png +0 -0
  273. package/workframe-ui/public/assets/branding/banner.png +0 -0
  274. package/workframe-ui/public/assets/branding/og-default.png +0 -0
  275. package/workframe-ui/public/assets/branding/workframe'white.png +0 -0
  276. package/workframe-ui/public/assets/branding/workframe-1.png +0 -0
  277. package/workframe-ui/public/assets/branding/workframe-2.png +0 -0
  278. package/workframe-ui/public/assets/branding/workframe-3.png +0 -0
  279. package/workframe-ui/public/assets/branding/workframe-4.png +0 -0
  280. package/workframe-ui/public/assets/branding/workframe-5.png +0 -0
  281. package/workframe-ui/public/assets/branding/workframe-banner.png +0 -0
  282. package/workframe-ui/public/assets/branding/workframe-logo-horizontal-mini.png +0 -0
  283. package/workframe-ui/public/assets/branding/workframe-logo-horizontal-nano.png +0 -0
  284. package/workframe-ui/public/assets/branding/workframe-logo-horizontal.png +0 -0
  285. package/workframe-ui/public/assets/branding/workframe-logo-vertical-alt.png +0 -0
  286. package/workframe-ui/public/assets/branding/workframe-logo-vertical.png +0 -0
  287. package/workframe-ui/public/assets/branding/workframe.png +0 -0
  288. package/workframe-ui/public/assets/buzz-mC4PtMvC.png +0 -0
  289. package/workframe-ui/public/assets/c4Diagram-AAUBKEIU-BTjUcJpm.js +10 -0
  290. package/workframe-ui/public/assets/carl-CtE74db_.png +0 -0
  291. package/workframe-ui/public/assets/channel-Dy4Z4-jn.js +1 -0
  292. package/workframe-ui/public/assets/chunk-2J33WTMH-w7uu7R-b.js +1 -0
  293. package/workframe-ui/public/assets/chunk-3OPIFGDE-Cb9LtnDX.js +62 -0
  294. package/workframe-ui/public/assets/chunk-4BX2VUAB-DiQ-qCwH.js +1 -0
  295. package/workframe-ui/public/assets/chunk-55IACEB6-C-mLFr7z.js +1 -0
  296. package/workframe-ui/public/assets/chunk-5ZQYHXKU-DOesfiCI.js +2 -0
  297. package/workframe-ui/public/assets/chunk-727SXJPM-BJ3oBZuz.js +206 -0
  298. package/workframe-ui/public/assets/chunk-AQP2D5EJ-CCA6xpGs.js +231 -0
  299. package/workframe-ui/public/assets/chunk-BSJP7CBP-a0cMNFb2.js +1 -0
  300. package/workframe-ui/public/assets/chunk-CSCIHK7Q-kuqN8EIY.js +122 -0
  301. package/workframe-ui/public/assets/chunk-FMBD7UC4-DyPgYHCg.js +15 -0
  302. package/workframe-ui/public/assets/chunk-KSCS5N6A-CdUuvR0V.js +10 -0
  303. package/workframe-ui/public/assets/chunk-L5ZTLDWV-Dq9NoWmK.js +1 -0
  304. package/workframe-ui/public/assets/chunk-LZXEDZCA-p74rddlO.js +2 -0
  305. package/workframe-ui/public/assets/chunk-ND2GUHAM-DBD2u1Gz.js +1 -0
  306. package/workframe-ui/public/assets/chunk-NNHCCRGN-DlpIbxXb.js +159 -0
  307. package/workframe-ui/public/assets/chunk-NZK2D7GU-BeIeYFnd.js +1 -0
  308. package/workframe-ui/public/assets/chunk-O5CBEL6O-ClHc56ib.js +70 -0
  309. package/workframe-ui/public/assets/chunk-QZHKN3VN-CtBEchFK.js +1 -0
  310. package/workframe-ui/public/assets/chunk-WU5MYG2G-B9pBtriN.js +1 -0
  311. package/workframe-ui/public/assets/chunk-XPW4576I-EFr8R_1p.js +32 -0
  312. package/workframe-ui/public/assets/classDiagram-4FO5ZUOK-BMAEA8jI.js +1 -0
  313. package/workframe-ui/public/assets/classDiagram-v2-Q7XG4LA2-BMAEA8jI.js +1 -0
  314. package/workframe-ui/public/assets/corbu-KiaMXzXQ.png +0 -0
  315. package/workframe-ui/public/assets/cose-bilkent-S5V4N54A-C7aPBODd.js +1 -0
  316. package/workframe-ui/public/assets/cytoscape.esm-h6BdjjI9.js +321 -0
  317. package/workframe-ui/public/assets/dagre-BM42HDAG-BdU1Rv-H.js +4 -0
  318. package/workframe-ui/public/assets/dagre-Bx709z4p.js +1 -0
  319. package/workframe-ui/public/assets/defaultLocale-C8Fc0cco.js +1 -0
  320. package/workframe-ui/public/assets/diagram-2AECGRRQ-DWowSo85.js +43 -0
  321. package/workframe-ui/public/assets/diagram-5GNKFQAL-MnxBbceO.js +10 -0
  322. package/workframe-ui/public/assets/diagram-KO2AKTUF-DQaLRXFf.js +3 -0
  323. package/workframe-ui/public/assets/diagram-LMA3HP47-CQaBud9k.js +24 -0
  324. package/workframe-ui/public/assets/diagram-OG6HWLK6-D8bAXbY9.js +24 -0
  325. package/workframe-ui/public/assets/diana-DW0MsL38.png +0 -0
  326. package/workframe-ui/public/assets/dist-DGpTLHr_.js +1 -0
  327. package/workframe-ui/public/assets/elvis-LCFaZIcT.png +0 -0
  328. package/workframe-ui/public/assets/erDiagram-TEJ5UH35-1E-xSvBK.js +85 -0
  329. package/workframe-ui/public/assets/eventmodeling-FCH6USID-D75cstNT.js +1 -0
  330. package/workframe-ui/public/assets/flowDiagram-I6XJVG4X-CgOVD5hu.js +162 -0
  331. package/workframe-ui/public/assets/frida-CXFA0w3F.png +0 -0
  332. package/workframe-ui/public/assets/ganttDiagram-6RSMTGT7-JFYAIauo.js +292 -0
  333. package/workframe-ui/public/assets/george-DBSH2Sm2.png +0 -0
  334. package/workframe-ui/public/assets/gitGraph-WXDBUCRP-B9REenIl.js +1 -0
  335. package/workframe-ui/public/assets/gitGraphDiagram-PVQCEYII-BQ7NcMSn.js +106 -0
  336. package/workframe-ui/public/assets/grace-BhV0UPc0.png +0 -0
  337. package/workframe-ui/public/assets/graphlib-B8gBHxth.js +1 -0
  338. package/workframe-ui/public/assets/hedy-BR2IHift.png +0 -0
  339. package/workframe-ui/public/assets/hermes-CqCzcE0y.png +0 -0
  340. package/workframe-ui/public/assets/index-Dnw6vjqb.js +133 -0
  341. package/workframe-ui/public/assets/index-DpAGxump.css +1 -0
  342. package/workframe-ui/public/assets/info-J43DQDTF-CL6-eTjH.js +1 -0
  343. package/workframe-ui/public/assets/infoDiagram-5YYISTIA-LJTODW4W.js +2 -0
  344. package/workframe-ui/public/assets/init-D6jRqBbL.js +1 -0
  345. package/workframe-ui/public/assets/isaac-D1nhJAuv.png +0 -0
  346. package/workframe-ui/public/assets/ishikawaDiagram-YF4QCWOH-bchrQVuo.js +70 -0
  347. package/workframe-ui/public/assets/john-zSPWwNi4.png +0 -0
  348. package/workframe-ui/public/assets/joni-BFLoyfJP.png +0 -0
  349. package/workframe-ui/public/assets/journeyDiagram-JHISSGLW-DkrvYuxP.js +139 -0
  350. package/workframe-ui/public/assets/kanban-definition-UN3LZRKU-DFRbj0IG.js +89 -0
  351. package/workframe-ui/public/assets/katex-Vhh-h91d.js +257 -0
  352. package/workframe-ui/public/assets/leo-C_3IOL11.png +0 -0
  353. package/workframe-ui/public/assets/line-Vd48P7-O.js +1 -0
  354. package/workframe-ui/public/assets/linear-Ckizh2G7.js +1 -0
  355. package/workframe-ui/public/assets/louis-DEEECFSX.png +0 -0
  356. package/workframe-ui/public/assets/ludwig-_hoKhhyK.png +0 -0
  357. package/workframe-ui/public/assets/marie-DET6MsfO.png +0 -0
  358. package/workframe-ui/public/assets/marilyn-DTqwt8Yh.png +0 -0
  359. package/workframe-ui/public/assets/mermaid-parser.core-Bkimsnqj.js +4 -0
  360. package/workframe-ui/public/assets/mermaid.core-x0TvVuPo.js +9 -0
  361. package/workframe-ui/public/assets/mindmap-definition-RKZ34NQL-6ykAFPEz.js +96 -0
  362. package/workframe-ui/public/assets/nikola-B4PtHrJv.png +0 -0
  363. package/workframe-ui/public/assets/nina-BYbrOn0d.png +0 -0
  364. package/workframe-ui/public/assets/ordinal-hYBb2elL.js +1 -0
  365. package/workframe-ui/public/assets/packet-YPE3B663-Dw3xgMDt.js +1 -0
  366. package/workframe-ui/public/assets/path-BWPyau1x.js +1 -0
  367. package/workframe-ui/public/assets/paul-CGURYQIn.png +0 -0
  368. package/workframe-ui/public/assets/pie-LRSECV5Y-DATysawG.js +1 -0
  369. package/workframe-ui/public/assets/pieDiagram-4H26LBE5-SJKD1S0S.js +30 -0
  370. package/workframe-ui/public/assets/project-logos/1.png +0 -0
  371. package/workframe-ui/public/assets/project-logos/10.png +0 -0
  372. package/workframe-ui/public/assets/project-logos/11.png +0 -0
  373. package/workframe-ui/public/assets/project-logos/12.png +0 -0
  374. package/workframe-ui/public/assets/project-logos/13.png +0 -0
  375. package/workframe-ui/public/assets/project-logos/14.png +0 -0
  376. package/workframe-ui/public/assets/project-logos/15.png +0 -0
  377. package/workframe-ui/public/assets/project-logos/16.png +0 -0
  378. package/workframe-ui/public/assets/project-logos/2.png +0 -0
  379. package/workframe-ui/public/assets/project-logos/3.png +0 -0
  380. package/workframe-ui/public/assets/project-logos/4.png +0 -0
  381. package/workframe-ui/public/assets/project-logos/5.png +0 -0
  382. package/workframe-ui/public/assets/project-logos/6.png +0 -0
  383. package/workframe-ui/public/assets/project-logos/7.png +0 -0
  384. package/workframe-ui/public/assets/project-logos/8.png +0 -0
  385. package/workframe-ui/public/assets/project-logos/9.png +0 -0
  386. package/workframe-ui/public/assets/project-logos/catalog.json +86 -0
  387. package/workframe-ui/public/assets/quadrantDiagram-W4KKPZXB-BrYDZX8q.js +7 -0
  388. package/workframe-ui/public/assets/radar-GUYGQ44K-BmWYPCds.js +1 -0
  389. package/workframe-ui/public/assets/requirementDiagram-4Y6WPE33-DwL9Mc8e.js +84 -0
  390. package/workframe-ui/public/assets/ringo-WhfUNOyY.png +0 -0
  391. package/workframe-ui/public/assets/rosie-CAtcIf87.png +0 -0
  392. package/workframe-ui/public/assets/rough.esm-CSKSodPl.js +1 -0
  393. package/workframe-ui/public/assets/sankeyDiagram-5OEKKPKP-DYIFsL8h.js +40 -0
  394. package/workframe-ui/public/assets/sequenceDiagram-3UESZ5HK-0-FPkFk8.js +162 -0
  395. package/workframe-ui/public/assets/src-B_od6b6h.js +1 -0
  396. package/workframe-ui/public/assets/stateDiagram-AJRCARHV-BQCiBk6u.js +1 -0
  397. package/workframe-ui/public/assets/stateDiagram-v2-BHNVJYJU-B89jAMFF.js +1 -0
  398. package/workframe-ui/public/assets/steve-CgXXJ9EZ.png +0 -0
  399. package/workframe-ui/public/assets/sun-BLNAhoZd.png +0 -0
  400. package/workframe-ui/public/assets/timeline-definition-PNZ67QCA-DS3tFcXj.js +120 -0
  401. package/workframe-ui/public/assets/treeView-BLDUP644-DSyUCKLY.js +1 -0
  402. package/workframe-ui/public/assets/treemap-LRROVOQU-CEZaNh5Y.js +1 -0
  403. package/workframe-ui/public/assets/vennDiagram-CIIHVFJN-CD-Vc9NF.js +34 -0
  404. package/workframe-ui/public/assets/wardley-L42UT6IY-Drq5w1Mc.js +1 -0
  405. package/workframe-ui/public/assets/wardleyDiagram-YWT4CUSO-DouXDJoF.js +78 -0
  406. package/workframe-ui/public/assets/warren-DIH7UKMY.png +0 -0
  407. package/workframe-ui/public/assets/woz-D2yleG-V.png +0 -0
  408. package/workframe-ui/public/assets/xychartDiagram-2RQKCTM6-DDf_Lol5.js +7 -0
  409. package/workframe-ui/public/assets/zaha-wersOEq9.png +0 -0
  410. package/workframe-ui/public/favicon.ico +0 -0
  411. package/workframe-ui/public/favicon.svg +7 -0
  412. package/workframe-ui/public/icons.svg +24 -0
  413. package/workframe-ui/public/index.html +50 -0
  414. package/workframe-ui/public/manifest.webmanifest +18 -0
  415. package/workframe-ui/public/workframe-config.json +4 -0
@@ -0,0 +1,329 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * workframe — lifecycle CLI for generated Workframe projects.
4
+ *
5
+ * Commands:
6
+ * workframe doctor [--repair] Diagnose stack; --repair provisions missing agent DM runtimes
7
+ * workframe setup Open Hermes setup (credentials)
8
+ * workframe stop Stop all stack containers
9
+ * workframe start Start the full stack (docker compose up -d)
10
+ * workframe restart Restart the full stack
11
+ * workframe status Show running containers
12
+ * workframe logs Tail gateway logs
13
+ * workframe ui Open Workframe UI in browser
14
+ */
15
+ import fs from 'node:fs';
16
+ import path from 'node:path';
17
+ import { spawn, spawnSync } from 'node:child_process';
18
+ import { fileURLToPath } from 'node:url';
19
+
20
+ const __dirname = path.dirname(fileURLToPath(import.meta.url));
21
+
22
+ function findProjectRoot() {
23
+ let dir = process.cwd();
24
+ while (true) {
25
+ if (fs.existsSync(path.join(dir, 'workframe-manifest.json'))) return dir;
26
+ if (fs.existsSync(path.join(dir, 'docker-compose.yml')) && fs.existsSync(path.join(dir, '.env'))) return dir;
27
+ const parent = path.dirname(dir);
28
+ if (parent === dir) return null;
29
+ dir = parent;
30
+ }
31
+ }
32
+
33
+ function readManifest(root) {
34
+ const p = path.join(root, 'workframe-manifest.json');
35
+ if (!fs.existsSync(p)) return null;
36
+ return JSON.parse(fs.readFileSync(p, 'utf8'));
37
+ }
38
+
39
+ function readEnvPort(root, key) {
40
+ const envFile = path.join(root, '.env');
41
+ if (!fs.existsSync(envFile)) return null;
42
+ const line = fs.readFileSync(envFile, 'utf8').split('\n').find((l) => l.startsWith(`${key}=`));
43
+ return line ? line.split('=', 2)[1].trim() : null;
44
+ }
45
+
46
+ function dockerCompose(cwd, args, { stdio = 'inherit' } = {}) {
47
+ return spawnSync('docker', ['compose', ...args], { cwd, stdio, encoding: 'utf8' });
48
+ }
49
+
50
+ function doctorAgentDmRuntimes(root, { repair = false } = {}) {
51
+ const fn = repair ? 'doctor_repair_agent_dm_runtimes(repair=True)' : 'doctor_audit_agent_dm_runtimes()';
52
+ const py = `import json, server; print(json.dumps(server.${fn}))`;
53
+ return dockerCompose(root, ['exec', '-T', 'workframe-api', 'python3', '-c', py], { stdio: 'pipe' });
54
+ }
55
+
56
+ function cmdDoctor(root, extraArgs = []) {
57
+ const repair = extraArgs.includes('--repair');
58
+ const manifest = readManifest(root);
59
+ const issues = [];
60
+
61
+ console.log(repair ? 'workframe doctor --repair' : 'workframe doctor');
62
+ console.log('================\n');
63
+
64
+ // Check Docker
65
+ const dockerCheck = spawnSync('docker', ['info'], { encoding: 'utf8' });
66
+ if (dockerCheck.status !== 0) {
67
+ issues.push('Docker is not running or not installed.');
68
+ console.log('[FAIL] Docker: not running');
69
+ } else {
70
+ console.log('[ OK] Docker: running');
71
+ }
72
+
73
+ // Check manifest
74
+ if (!manifest) {
75
+ issues.push('No workframe-manifest.json found. Are you in a Workframe project?');
76
+ console.log('[FAIL] Manifest: not found');
77
+ } else {
78
+ console.log(`[ OK] Manifest: ${manifest.project_name} (${manifest.docker?.stack})`);
79
+ }
80
+
81
+ // Check .env
82
+ const envFile = path.join(root, '.env');
83
+ if (!fs.existsSync(envFile)) {
84
+ issues.push('.env file missing.');
85
+ console.log('[FAIL] .env: missing');
86
+ } else {
87
+ console.log('[ OK] .env: present');
88
+ }
89
+
90
+ // Check docker-compose.yml
91
+ const composeFile = path.join(root, 'docker-compose.yml');
92
+ if (!fs.existsSync(composeFile)) {
93
+ issues.push('docker-compose.yml missing.');
94
+ console.log('[FAIL] docker-compose.yml: missing');
95
+ } else {
96
+ console.log('[ OK] docker-compose.yml: present');
97
+ }
98
+
99
+ // Check required directories
100
+ for (const dir of ['Agents', 'Files']) {
101
+ if (!fs.existsSync(path.join(root, dir))) {
102
+ issues.push(`${dir}/ directory missing.`);
103
+ console.log(`[FAIL] ${dir}/: missing`);
104
+ } else {
105
+ console.log(`[ OK] ${dir}/: present`);
106
+ }
107
+ }
108
+
109
+ // Check containers
110
+ if (manifest && dockerCheck.status === 0) {
111
+ const ps = dockerCompose(root, ['ps', '--format', 'json']);
112
+ if (ps.status === 0 && ps.stdout) {
113
+ try {
114
+ const containers = JSON.parse(ps.stdout);
115
+ const expected = ['gateway', 'dashboard', 'workframe-api', 'workframe'];
116
+ for (const name of expected) {
117
+ const container = containers.find((c) => c.Name?.includes(name) || c.Service === name);
118
+ if (!container) {
119
+ issues.push(`${name} container not found.`);
120
+ console.log(`[FAIL] ${name}: not found`);
121
+ } else if (container.State !== 'running') {
122
+ issues.push(`${name} container is ${container.State}, not running.`);
123
+ console.log(`[FAIL] ${name}: ${container.State}`);
124
+ } else {
125
+ console.log(`[ OK] ${name}: running`);
126
+ }
127
+ }
128
+ } catch {
129
+ // Fallback: plain text parse
130
+ const psPlain = dockerCompose(root, ['ps']);
131
+ console.log('\nContainer status:\n' + psPlain.stdout);
132
+ }
133
+ }
134
+ }
135
+
136
+ // Check bootstrap
137
+ if (manifest) {
138
+ const nativeSlug = manifest.native_agent?.profile_slug;
139
+ const soulFile = path.join(root, 'Agents', 'profiles', nativeSlug, 'SOUL.md');
140
+ if (!fs.existsSync(soulFile)) {
141
+ issues.push('Native agent not bootstrapped. Run: ./scripts/bootstrap-native.sh');
142
+ console.log('[FAIL] Bootstrap: native SOUL missing');
143
+ } else {
144
+ console.log('[ OK] Bootstrap: native SOUL present');
145
+ }
146
+ }
147
+
148
+ // Check ports
149
+ if (manifest) {
150
+ const ports = manifest.ports;
151
+ if (ports) {
152
+ console.log(`\nPorts:`);
153
+ console.log(` Gateway: ${ports.gateway}, Dashboard: ${ports.dashboard}, UI: ${ports.ui}, API: ${ports.api}`);
154
+ }
155
+ }
156
+
157
+ // Agent DM runtime slots (explicit repair only with --repair)
158
+ if (manifest && dockerCheck.status === 0) {
159
+ const api = dockerCompose(root, ['ps', '--format', 'json'], { stdio: 'pipe' });
160
+ const apiUp = api.status === 0 && (api.stdout || '').includes('workframe-api');
161
+ if (apiUp) {
162
+ const audit = doctorAgentDmRuntimes(root, { repair: false });
163
+ if (audit.status === 0 && audit.stdout) {
164
+ try {
165
+ const data = JSON.parse(audit.stdout.trim().split('\n').pop());
166
+ const missing = data.missing?.length ?? 0;
167
+ if (missing > 0) {
168
+ const msg = `${missing} agent DM runtime profile(s) missing`;
169
+ if (repair) {
170
+ const fixed = doctorAgentDmRuntimes(root, { repair: true });
171
+ if (fixed.status === 0 && fixed.stdout) {
172
+ const result = JSON.parse(fixed.stdout.trim().split('\n').pop());
173
+ const repaired = result.repaired?.length ?? 0;
174
+ const failed = result.failed?.length ?? 0;
175
+ console.log(`[REPAIR] Agent DM runtimes: ${repaired} provisioned, ${failed} failed`);
176
+ if (failed || (result.still_missing?.length ?? 0) > 0) {
177
+ issues.push(msg);
178
+ }
179
+ } else {
180
+ issues.push(`${msg} (repair failed)`);
181
+ console.log('[FAIL] Agent DM runtime repair failed');
182
+ }
183
+ } else {
184
+ issues.push(`${msg} — run: workframe doctor --repair`);
185
+ console.log(`[WARN] Agent DM runtimes: ${msg}`);
186
+ }
187
+ } else {
188
+ console.log('[ OK] Agent DM runtimes: all provisioned');
189
+ }
190
+ } catch {
191
+ console.log('[skip] Agent DM runtime audit: could not parse API response');
192
+ }
193
+ } else {
194
+ console.log('[skip] Agent DM runtime audit: workframe-api not reachable');
195
+ }
196
+ }
197
+ }
198
+
199
+ if (issues.length > 0) {
200
+ console.log(`\n${issues.length} issue(s) found:\n`);
201
+ issues.forEach((i) => console.log(` - ${i}`));
202
+ process.exit(1);
203
+ } else {
204
+ console.log('\nAll checks passed. Workframe is healthy.');
205
+ }
206
+ }
207
+
208
+ function cmdSetup(root) {
209
+ const manifest = readManifest(root);
210
+ const image = manifest?.docker?.image || 'nousresearch/hermes-agent:latest';
211
+ const name = manifest?.docker?.stack || 'workframe';
212
+ console.log('Opening Hermes setup (interactive)...');
213
+ console.log('Credentials never belong in chat.\n');
214
+ dockerCompose(root, ['pull'], { stdio: 'inherit' });
215
+ const res = spawnSync('docker', [
216
+ 'run', '--rm', '-it',
217
+ '--name', `${name}-setup`,
218
+ '--entrypoint', 'hermes',
219
+ '-v', `${path.join(root, 'Agents')}:/opt/data`,
220
+ '-v', `${path.join(root, 'Files')}:/workspace`,
221
+ image, 'setup',
222
+ ], { stdio: 'inherit' });
223
+ if (res.status !== 0) {
224
+ console.error('Setup failed or was cancelled.');
225
+ process.exit(res.status || 1);
226
+ }
227
+ }
228
+
229
+ function cmdStop(root) {
230
+ console.log('Stopping Workframe stack...');
231
+ const res = dockerCompose(root, ['down']);
232
+ if (res.status !== 0) {
233
+ console.error('Failed to stop stack.');
234
+ process.exit(1);
235
+ }
236
+ console.log('Stack stopped.');
237
+ }
238
+
239
+ function cmdStart(root) {
240
+ console.log('Starting Workframe stack...');
241
+ const res = dockerCompose(root, ['up', '-d']);
242
+ if (res.status !== 0) {
243
+ console.error('Failed to start stack.');
244
+ process.exit(1);
245
+ }
246
+ const manifest = readManifest(root);
247
+ if (manifest?.ports) {
248
+ console.log(`\nWorkframe UI: http://127.0.0.1:${manifest.ports.ui}/`);
249
+ console.log(`Hermes chat: http://127.0.0.1:${manifest.ports.dashboard}/chat`);
250
+ }
251
+ console.log('Stack started.');
252
+ }
253
+
254
+ function cmdRestart(root) {
255
+ console.log('Restarting Workframe stack...');
256
+ const res = dockerCompose(root, ['restart']);
257
+ if (res.status !== 0) {
258
+ console.error('Failed to restart stack.');
259
+ process.exit(1);
260
+ }
261
+ console.log('Stack restarted.');
262
+ }
263
+
264
+ function cmdStatus(root) {
265
+ dockerCompose(root, ['ps'], { stdio: 'inherit' });
266
+ }
267
+
268
+ function cmdLogs(root, args) {
269
+ const follow = args.includes('--follow') || args.includes('-f');
270
+ const composeArgs = ['logs'];
271
+ if (follow) composeArgs.push('--follow');
272
+ composeArgs.push('gateway');
273
+ dockerCompose(root, composeArgs, { stdio: 'inherit' });
274
+ }
275
+
276
+ function cmdUi(root) {
277
+ const manifest = readManifest(root);
278
+ const port = readEnvPort(root, 'WORKFRAME_UI_PORT') || manifest?.ports?.ui || '18644';
279
+ const url = `http://127.0.0.1:${port}/`;
280
+ console.log(`Opening Workframe UI: ${url}`);
281
+ const openCmd = process.platform === 'win32' ? 'start' : process.platform === 'darwin' ? 'open' : 'xdg-open';
282
+ const child = spawn(openCmd, [url], { detached: true, stdio: 'ignore' });
283
+ child.unref();
284
+ }
285
+
286
+ function usage() {
287
+ console.log(`workframe — lifecycle CLI for Workframe projects
288
+
289
+ Usage:
290
+ workframe doctor [--repair] Diagnose stack; --repair provisions missing agent DM runtimes
291
+ workframe setup Open Hermes setup (credentials)
292
+ workframe start Start the full stack (docker compose up -d)
293
+ workframe stop Stop all stack containers
294
+ workframe restart Restart the full stack
295
+ workframe status Show running containers
296
+ workframe logs [--follow] Tail gateway logs
297
+ workframe ui Open Workframe UI in browser
298
+
299
+ Run from a Workframe project directory (where workframe-manifest.json lives).
300
+ `);
301
+ }
302
+
303
+ const args = process.argv.slice(2);
304
+ const command = args[0];
305
+ const extraArgs = args.slice(1);
306
+
307
+ const root = findProjectRoot();
308
+ if (!root) {
309
+ console.error('ERROR: Not in a Workframe project. No workframe-manifest.json found.');
310
+ process.exit(1);
311
+ }
312
+
313
+ switch (command) {
314
+ case 'doctor': cmdDoctor(root, extraArgs); break;
315
+ case 'setup': cmdSetup(root); break;
316
+ case 'stop': cmdStop(root); break;
317
+ case 'start': cmdStart(root); break;
318
+ case 'restart': cmdRestart(root); break;
319
+ case 'status': cmdStatus(root); break;
320
+ case 'logs': cmdLogs(root, extraArgs); break;
321
+ case 'ui': cmdUi(root); break;
322
+ case '--help':
323
+ case '-h':
324
+ case 'help': usage(); break;
325
+ default:
326
+ if (command) console.error(`Unknown command: ${command}`);
327
+ usage();
328
+ process.exit(command ? 1 : 0);
329
+ }
@@ -0,0 +1,20 @@
1
+ # Discord Guide (Workframe)
2
+
3
+ Use Discord for team-visible agent collaboration.
4
+
5
+ Minimal structure:
6
+ - #workframe-control
7
+ - #workframe-status
8
+ - #workframe-review
9
+ - one thread per initiative when needed
10
+
11
+ Interaction model:
12
+ - mention concierge for intake/routing
13
+ - concierge delegates through Kanban
14
+ - status returns to channels/threads
15
+ - canonical outputs go to project files
16
+
17
+ Permissions:
18
+ - owner/admin highest trust
19
+ - role/channel permissions enforced in Discord
20
+ - high-risk actions require explicit approval
@@ -0,0 +1,20 @@
1
+ # Workframe Document and Artifact Conventions
2
+
3
+ Single source of truth:
4
+ - Project files under `/workspace`.
5
+
6
+ Priority of truth:
7
+ 1) Files (canonical)
8
+ 2) Kanban records (execution history)
9
+ 3) Chat messages (conversation context)
10
+
11
+ Required anchors:
12
+ - README.md
13
+ - AGENTS.md
14
+ - .hermes.md
15
+ - docs/INDEX.md
16
+
17
+ Artifact conventions:
18
+ - Keep markdown concise and linked.
19
+ - Update existing canonical docs before adding new scattered files.
20
+ - Do not store secrets/personal data in docs.
@@ -0,0 +1,20 @@
1
+ # Workframe Kanban Guide
2
+
3
+ Role
4
+ - Kanban is durable execution and handoff state.
5
+
6
+ Worker loop
7
+ 1) read task context
8
+ 2) execute scoped work
9
+ 3) heartbeat for long tasks
10
+ 4) complete with handoff schema
11
+ 5) block only for real external decisions
12
+
13
+ Heartbeat cadence
14
+ - every 20-30 minutes for long tasks, or at phase boundaries.
15
+ - use heartbeat schema from `docs/WORKFRAME_HANDOFF_SCHEMA.md`.
16
+
17
+ Truth priority
18
+ 1) files (canonical)
19
+ 2) Kanban (operational state)
20
+ 3) chat (coordination surface)
@@ -0,0 +1,21 @@
1
+ # Workframe Onboarding
2
+
3
+ Goal
4
+ - turn vague intent into a clean, usable project workspace.
5
+
6
+ Concierge onboarding loop
7
+ 1) clarify mission, scope, constraints, success criteria
8
+ 2) default to native-only starter, then expand with specialist packs or individual profiles on demand
9
+ 3) establish file-based source of truth
10
+ 4) route first tasks through Kanban
11
+ 5) persist outcomes in project files
12
+
13
+ Minimum initial artifacts
14
+ - README.md
15
+ - AGENTS.md
16
+ - .hermes.md
17
+ - docs index + first strategy/plan notes
18
+
19
+ Rule
20
+ - chat is intake/coordination
21
+ - files are canonical
@@ -0,0 +1,29 @@
1
+ # Workframe Routing Guide
2
+
3
+ Routing owner
4
+ - concierge (`{projectName} Agent`) owns routing decisions.
5
+
6
+ Default lanes
7
+ - strategy -> visionary
8
+ - architecture/planning -> architect
9
+ - docs hygiene -> docs
10
+ - implementation/test -> dev
11
+ - evidence/context -> research
12
+ - UX/visual -> designer
13
+
14
+ Routing rules
15
+ - parallelize independent lanes
16
+ - use dependencies only when required
17
+ - keep each lane role-pure
18
+ - persist final outcomes in files
19
+
20
+ Dynamic library rule
21
+ - if a request repeatedly falls outside current roles,
22
+ concierge proposes a new specialist profile.
23
+
24
+ Routing model notes:
25
+
26
+ - the native project agent owns Discord / Telegram messaging surfaces
27
+ - specialist profile runtimes are started as API-only gateways inside the same Hermes container
28
+ - UI lanes bind sessions by `profile + source_id + client_id`
29
+ - session titles are lane-local and may be auto-suffixed for uniqueness
@@ -0,0 +1,19 @@
1
+ # Telegram Guide (Workframe)
2
+
3
+ Use Telegram as a control and collaboration surface.
4
+
5
+ Recommended rollout:
6
+ 1) Owner DM mode (concierge only).
7
+ 2) Controlled group mode after validation.
8
+
9
+ Interaction model:
10
+ - humans ask/approve in Telegram
11
+ - concierge routes to Kanban
12
+ - specialists execute
13
+ - results summarized back to Telegram
14
+ - durable outcomes written to files
15
+
16
+ Permissions:
17
+ - Owner/admin retains highest privileges.
18
+ - Team permissions follow Telegram group/admin controls.
19
+ - High-risk actions remain explicit-approval only.
package/package.json ADDED
@@ -0,0 +1,67 @@
1
+ {
2
+ "name": "create-workframe",
3
+ "version": "0.1.0",
4
+ "description": "Scaffold a clean Workframe + Hermes workspace with guided onboarding (v0.1.0 pre-release)",
5
+ "type": "module",
6
+ "bin": {
7
+ "create-workframe": "bin/create-workframe.js"
8
+ },
9
+ "files": [
10
+ "bin",
11
+ "docs/workspace-instructions",
12
+ "profiles",
13
+ "prompts",
14
+ "rules",
15
+ "shared",
16
+ "workframe-api",
17
+ "workframe-supervisor",
18
+ "workframe-ui/public",
19
+ "workframe-ui/docker",
20
+ "scripts/bundle-workframe-ui.mjs",
21
+ "scripts/bootstrap-workspace-link.sh",
22
+ "scripts/setup-stack-secrets.sh",
23
+ "scripts/sync-canonical-to-package.mjs",
24
+ "scripts/ensure-compose-host-paths.mjs",
25
+ "scripts/set-compose-public-url.mjs",
26
+ "scripts/lib",
27
+ "scripts/apply-update-hermes.sh",
28
+ "scripts/apply-update-workframe.sh",
29
+ "scripts/restart-gateway-hermes.sh",
30
+ "scripts/compose-docker-host.sh",
31
+ "scripts/verify-public-deploy.sh",
32
+ "scripts/fix-zk-encryption-key.sh",
33
+ "scripts/create_workframe_scaffold.py",
34
+ "scripts/new-project.mjs",
35
+ "scripts/select_agent_pack.py",
36
+ "scripts/security_audit.py",
37
+ "scripts/test-scaffold.mjs",
38
+ ".dockerignore",
39
+ ".gitignore",
40
+ "LICENSE",
41
+ "NOTICE",
42
+ "README.md",
43
+ "SECURITY.md"
44
+ ],
45
+ "scripts": {
46
+ "bundle-ui": "node scripts/bundle-workframe-ui.mjs",
47
+ "new-project": "node scripts/new-project.mjs",
48
+ "test:scaffold": "node scripts/test-scaffold.mjs",
49
+ "sync": "node scripts/sync-canonical-to-package.mjs",
50
+ "prepack": "node scripts/sync-canonical-to-package.mjs && node scripts/bundle-workframe-ui.mjs"
51
+ },
52
+ "engines": {
53
+ "node": ">=20"
54
+ },
55
+ "license": "Apache-2.0",
56
+ "repository": {
57
+ "type": "git",
58
+ "url": "https://github.com/architectonic/workframe.git"
59
+ },
60
+ "keywords": [
61
+ "workframe",
62
+ "hermes",
63
+ "agents",
64
+ "scaffold",
65
+ "create-workframe"
66
+ ]
67
+ }
@@ -0,0 +1,15 @@
1
+ # Profile templates (package source)
2
+
3
+ Install-time packs reference a **project-agent** slot. At scaffold time it becomes `{slugify(projectName)}-agent` (e.g. `BrandAuthority` → `brandauthority-agent`, display name **BrandAuthority Agent**).
4
+
5
+ ## Layout
6
+
7
+ - Native concierge SOUL template: `workframe-agent/SOUL.md` (rendered into the project-specific slug)
8
+ - Specialists: `visionary/`, `architect/`, `docs/`, `dev/`, `research/`, `designer/`
9
+
10
+ ## Packs
11
+
12
+ - **core** — native project agent + docs + dev
13
+ - **product** — native + docs + dev + visionary + research + designer
14
+ - **engineering** — native + docs + dev + architect + research
15
+ - **vanilla** / **full** — native + all specialists
@@ -0,0 +1,29 @@
1
+ # AGENTS — Architect
2
+
3
+ Operating rules for **Architect** (`architect`). Identity lives in `SOUL.md` in this profile home.
4
+
5
+ ## Scope
6
+
7
+ | File | Purpose |
8
+ |------|---------|
9
+ | `SOUL.md` | Who you are, chain of command, design workflow |
10
+ | `AGENTS.md` (this file) | Tools, skills, kanban, memory |
11
+ | `/workspace/AGENTS.md` | Project workspace rules |
12
+
13
+ ## Tools & skills
14
+
15
+ - Load **kanban-worker** before any kanban-dispatched task; call `kanban_complete` or `kanban_block` before exit.
16
+ - Read `WORKFRAME_COHORT.md` when present — use **runtime_slug** for kanban/delegate, never bare `architect`.
17
+ - CLI: `/opt/hermes/.venv/bin/hermes -p <runtime_slug> …` via **terminal** tool.
18
+ - You are **not** Botfather — never create/delete/spawn other agents.
19
+
20
+ ## Memory & handoff
21
+
22
+ - Design artifacts → `/workspace/docs/` or agreed code paths.
23
+ - Update kanban with status, files changed, blockers.
24
+ - Persist decisions in workspace; chat is intake only.
25
+
26
+ ## Credentials
27
+
28
+ - Use the owning user's API keys on runtime profiles (`u-*-architect`).
29
+ - No secrets in chat.
@@ -0,0 +1,44 @@
1
+ # Architect — System Designer
2
+
3
+ ## Identity
4
+
5
+ You are the **Architect** sibling profile in the Workframe orchestration system. Your job is to design system architecture, write API contracts, define database schemas, and produce implementation plans that the dev profile can execute.
6
+
7
+ Never identify as the underlying model, provider, OWL, or a generic Hermes assistant. If asked who you are, answer as **Architect** only — never say you are OWL, Hermes Agent, or the underlying model/provider.
8
+
9
+ **Operating rules:** read `AGENTS.md` in this profile home for tools, skills, and kanban discipline.
10
+
11
+ ## Chain of Command
12
+
13
+ 1. ABKB (`D:\ab\projects\abkb\`) — Rules of engagement, hard rules, project ontology. READ BEFORE WRITING.
14
+ 2. Roadmap — The product spec for the active project.
15
+ 3. Kanban (Hermes kanban.db) — Task board. Check in when you start, check out when done.
16
+ 4. Source code (`/workspace/` in container) — The truth.
17
+
18
+ ## Orchestrator
19
+
20
+ Workframe Agent is the concierge/orchestrator. It assigns tasks via kanban. When you finish a task, update the kanban task status and add notes about what you produced.
21
+
22
+ ## Workflow
23
+
24
+ 1. Read your assigned kanban task
25
+ 2. Read the relevant ABKB docs and project profile
26
+ 3. Read the existing code you will modify
27
+ 4. Produce design artifacts (schemas, API contracts, implementation plans)
28
+ 5. Write artifacts to `/workspace/docs/` or the relevant code location
29
+ 6. Update kanban task with status and notes
30
+ 7. Wait for review or unblock instructions
31
+
32
+ ## Rules
33
+
34
+ - Read before writing. Always read the full flow end-to-end before designing.
35
+ - ADD, don't REPLACE. New code goes alongside existing code.
36
+ - Design docs go in `/workspace/docs/`
37
+ - Never edit Hermes source code. Only config and workspace files.
38
+ - When in doubt, ask. Update kanban with blocked status and explain why.
39
+
40
+ ## Runtime profile (kanban / cron)
41
+
42
+ You may run as a **per-user runtime profile** (`u-…-architect`), not the shared template `architect`. Read `WORKFRAME_COHORT.md` if present.
43
+
44
+ When dispatched via kanban: load **kanban-worker** skill, call `kanban_complete` or `kanban_block` before exit. If API key resolution fails, `kanban_block` with reason — do not exit silently.
@@ -0,0 +1,27 @@
1
+ ---
2
+ name: kanban-worker
3
+ description: Protocol for architect instances dispatched via Workframe kanban — show, work, complete/block.
4
+ ---
5
+
6
+ # Kanban worker (you were dispatched)
7
+
8
+ You are running as a **user-scoped runtime profile** (`u-…-architect`), not the shared template `architect`. Your credentials come from the owning user's overlay.
9
+
10
+ ## Required lifecycle
11
+
12
+ 1. `kanban_show` — read task id, body, output paths
13
+ 2. Execute the work (terminal, write_file, read_file)
14
+ 3. `kanban_comment` — files changed, decisions, test notes
15
+ 4. **`kanban_complete(summary=…, metadata=…)`** when done
16
+ OR **`kanban_block(reason=…)`** if stuck
17
+
18
+ Never exit without step 4 — the dispatcher treats it as a protocol violation.
19
+
20
+ ## Workspace
21
+
22
+ - Task `workspace_kind` is usually `scratch` or `dir:/workspace`
23
+ - Write deliverables to paths specified in the task body (under `/workspace` when shared)
24
+
25
+ ## If you lack API access
26
+
27
+ If provider resolver returns empty API key, call `kanban_block` explaining misconfiguration — do not exit silently.
@@ -0,0 +1,26 @@
1
+ # AGENTS — Designer
2
+
3
+ Operating rules for **Designer** (`designer`). Identity lives in `SOUL.md` in this profile home.
4
+
5
+ ## Scope
6
+
7
+ | File | Purpose |
8
+ |------|---------|
9
+ | `SOUL.md` | Who you are, design mission |
10
+ | `AGENTS.md` (this file) | Tools, deliverables, handoff |
11
+ | `/workspace/AGENTS.md` | Project workspace rules |
12
+
13
+ ## Tools & skills
14
+
15
+ - Load **kanban-worker** for dispatched tasks.
16
+ - Image/UI/design skills on demand.
17
+ - Runtime slug: `u-*-designer` for kanban/delegate.
18
+
19
+ ## Deliverables
20
+
21
+ - Design notes, prompts, and assets under `/workspace` — link from handoff.
22
+ - Confirm brand/constraints before large visual changes.
23
+
24
+ ## Restrictions
25
+
26
+ - Not Botfather — no agent lifecycle.