create-workframe 0.1.0 → 0.1.1

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 (206) hide show
  1. package/LICENSE +201 -201
  2. package/NOTICE +12 -12
  3. package/README.md +8 -92
  4. package/SECURITY.md +40 -40
  5. package/bin/workframe.js +329 -329
  6. package/docs/workspace-instructions/WORKFRAME_ONBOARDING.md +1 -1
  7. package/docs/workspace-instructions/WORKFRAME_ROUTING.md +8 -8
  8. package/package.json +3 -6
  9. package/profiles/architect/AGENTS.md +29 -29
  10. package/profiles/architect/SOUL.md +2 -2
  11. package/profiles/architect/skills/devops/kanban-worker/SKILL.md +27 -27
  12. package/profiles/designer/AGENTS.md +26 -26
  13. package/profiles/designer/skills/devops/kanban-worker/SKILL.md +27 -27
  14. package/profiles/dev/AGENTS.md +28 -28
  15. package/profiles/dev/skills/devops/kanban-worker/SKILL.md +27 -27
  16. package/profiles/docs/AGENTS.md +27 -27
  17. package/profiles/docs/skills/devops/kanban-worker/SKILL.md +27 -27
  18. package/profiles/research/AGENTS.md +26 -26
  19. package/profiles/research/skills/devops/kanban-worker/SKILL.md +27 -27
  20. package/profiles/visionary/AGENTS.md +25 -25
  21. package/profiles/visionary/skills/devops/kanban-worker/SKILL.md +27 -27
  22. package/profiles/workframe-agent/AGENTS.md +37 -37
  23. package/profiles/workframe-agent/skills/devops/botfather/SKILL.md +85 -85
  24. package/profiles/workframe-agent/skills/devops/kanban-handoff-pattern/SKILL.md +58 -58
  25. package/profiles/workframe-agent/skills/devops/workframe-cohort/SKILL.md +54 -54
  26. package/rules/workspace-README.md +5 -5
  27. package/scripts/apply-update-hermes.sh +17 -17
  28. package/scripts/apply-update-workframe.sh +77 -77
  29. package/scripts/bootstrap-workspace-link.sh +8 -8
  30. package/scripts/bundle-workframe-ui.mjs +3 -3
  31. package/scripts/compose-docker-host.sh +37 -37
  32. package/scripts/ensure-compose-host-paths.mjs +51 -51
  33. package/scripts/fix-zk-encryption-key.sh +35 -35
  34. package/scripts/lib/install-identity.mjs +212 -212
  35. package/scripts/restart-gateway-hermes.sh +12 -12
  36. package/scripts/set-compose-public-url.mjs +92 -92
  37. package/scripts/setup-stack-secrets.sh +50 -50
  38. package/scripts/sync-canonical-to-package.mjs +8 -7
  39. package/scripts/verify-public-deploy.sh +105 -105
  40. package/shared/WORKFRAME_AGENT_LIBRARY.md +17 -17
  41. package/shared/WORKFRAME_AGENT_OPERATIONS.md +15 -15
  42. package/shared/WORKFRAME_AGENT_PACKS.json +18 -18
  43. package/shared/WORKFRAME_AGENT_PACKS.yaml +8 -8
  44. package/shared/WORKFRAME_SKILL_CURATION.md +4 -4
  45. package/workframe-api/README.md +28 -28
  46. package/workframe-api/action_proxy.py +131 -131
  47. package/workframe-api/auth_rate_limit.py +49 -49
  48. package/workframe-api/credential_vault.py +445 -445
  49. package/workframe-api/data/avatar-catalog.json +41 -41
  50. package/workframe-api/email_sender.py +220 -220
  51. package/workframe-api/google_auth.py +90 -90
  52. package/workframe-api/install_api.py +359 -359
  53. package/workframe-api/internal_proxy_auth.py +150 -150
  54. package/workframe-api/llm_proxy.py +277 -277
  55. package/workframe-api/oidc_jwt.py +108 -108
  56. package/workframe-api/package.json +12 -13
  57. package/workframe-api/public/assets/index-DPXu_lGn.css +1 -1
  58. package/workframe-api/public/assets/index-DYnLrCZZ.js +8 -8
  59. package/workframe-api/requirements.txt +2 -2
  60. package/workframe-api/site_meta.py +271 -271
  61. package/workframe-api/stack_config.py +427 -427
  62. package/workframe-api/time-bind-chat.py +99 -99
  63. package/workframe-api/turn_credentials.py +226 -226
  64. package/workframe-api/updates.py +417 -417
  65. package/workframe-api/vault_kek.py +159 -159
  66. package/workframe-api/zk_auth.py +633 -633
  67. package/workframe-supervisor/Dockerfile +11 -11
  68. package/workframe-supervisor/server.py +787 -787
  69. package/workframe-ui/docker/nginx.conf +85 -85
  70. package/workframe-ui/public/assets/{arc-CBDYvkAF.js → arc-COAT3laO.js} +1 -1
  71. package/workframe-ui/public/assets/architecture-7EHR7CIX-DUyH3hWG.js +1 -0
  72. package/workframe-ui/public/assets/{architectureDiagram-3BPJPVTR-XnBRKeW0.js → architectureDiagram-3BPJPVTR-BFjWV24l.js} +1 -1
  73. package/workframe-ui/public/assets/{blockDiagram-GPEHLZMM-VYHUfVhd.js → blockDiagram-GPEHLZMM-DSQLPfrj.js} +1 -1
  74. package/workframe-ui/public/assets/{c4Diagram-AAUBKEIU-BTjUcJpm.js → c4Diagram-AAUBKEIU-DKEHv1t2.js} +1 -1
  75. package/workframe-ui/public/assets/channel-g7r_RGaY.js +1 -0
  76. package/workframe-ui/public/assets/{chunk-2J33WTMH-w7uu7R-b.js → chunk-2J33WTMH-DHZg-DUi.js} +1 -1
  77. package/workframe-ui/public/assets/{chunk-3OPIFGDE-Cb9LtnDX.js → chunk-3OPIFGDE-BB-OYTfp.js} +1 -1
  78. package/workframe-ui/public/assets/{chunk-4BX2VUAB-DiQ-qCwH.js → chunk-4BX2VUAB-C93q0YIm.js} +1 -1
  79. package/workframe-ui/public/assets/{chunk-55IACEB6-C-mLFr7z.js → chunk-55IACEB6-MAYniqik.js} +1 -1
  80. package/workframe-ui/public/assets/{chunk-5ZQYHXKU-DOesfiCI.js → chunk-5ZQYHXKU-ChgN6YJs.js} +1 -1
  81. package/workframe-ui/public/assets/{chunk-727SXJPM-BJ3oBZuz.js → chunk-727SXJPM-B_FYwdAv.js} +1 -1
  82. package/workframe-ui/public/assets/{chunk-AQP2D5EJ-CCA6xpGs.js → chunk-AQP2D5EJ-1_Hw_h1A.js} +1 -1
  83. package/workframe-ui/public/assets/{chunk-BSJP7CBP-a0cMNFb2.js → chunk-BSJP7CBP-CFiDQ1Rv.js} +1 -1
  84. package/workframe-ui/public/assets/{chunk-CSCIHK7Q-kuqN8EIY.js → chunk-CSCIHK7Q-DZ9UMTlB.js} +1 -1
  85. package/workframe-ui/public/assets/{chunk-FMBD7UC4-DyPgYHCg.js → chunk-FMBD7UC4-DlMlyFgw.js} +1 -1
  86. package/workframe-ui/public/assets/{chunk-KSCS5N6A-CdUuvR0V.js → chunk-KSCS5N6A-DHXtQ_Hf.js} +1 -1
  87. package/workframe-ui/public/assets/{chunk-L5ZTLDWV-Dq9NoWmK.js → chunk-L5ZTLDWV-CuQzg-QG.js} +1 -1
  88. package/workframe-ui/public/assets/{chunk-LZXEDZCA-p74rddlO.js → chunk-LZXEDZCA-BHzjzCGg.js} +2 -2
  89. package/workframe-ui/public/assets/{chunk-ND2GUHAM-DBD2u1Gz.js → chunk-ND2GUHAM-DHXx05n2.js} +1 -1
  90. package/workframe-ui/public/assets/{chunk-NZK2D7GU-BeIeYFnd.js → chunk-NZK2D7GU-CV5pmDM_.js} +1 -1
  91. package/workframe-ui/public/assets/{chunk-O5CBEL6O-ClHc56ib.js → chunk-O5CBEL6O-6tkCHxsV.js} +1 -1
  92. package/workframe-ui/public/assets/chunk-QZHKN3VN-C5UQehWY.js +1 -0
  93. package/workframe-ui/public/assets/chunk-WU5MYG2G-DhWllrI8.js +1 -0
  94. package/workframe-ui/public/assets/{chunk-XPW4576I-EFr8R_1p.js → chunk-XPW4576I-BClwIiCp.js} +1 -1
  95. package/workframe-ui/public/assets/classDiagram-4FO5ZUOK-BBM_8T8E.js +1 -0
  96. package/workframe-ui/public/assets/classDiagram-v2-Q7XG4LA2-BBM_8T8E.js +1 -0
  97. package/workframe-ui/public/assets/{cose-bilkent-S5V4N54A-C7aPBODd.js → cose-bilkent-S5V4N54A-DOrGV6DQ.js} +1 -1
  98. package/workframe-ui/public/assets/{dagre-BM42HDAG-BdU1Rv-H.js → dagre-BM42HDAG-DXTPvJkX.js} +1 -1
  99. package/workframe-ui/public/assets/{diagram-2AECGRRQ-DWowSo85.js → diagram-2AECGRRQ-xX_v-pbf.js} +1 -1
  100. package/workframe-ui/public/assets/{diagram-5GNKFQAL-MnxBbceO.js → diagram-5GNKFQAL-Cd2pXbBe.js} +1 -1
  101. package/workframe-ui/public/assets/{diagram-KO2AKTUF-DQaLRXFf.js → diagram-KO2AKTUF-Df3XvUtk.js} +1 -1
  102. package/workframe-ui/public/assets/{diagram-LMA3HP47-CQaBud9k.js → diagram-LMA3HP47-CsijIPaD.js} +1 -1
  103. package/workframe-ui/public/assets/{diagram-OG6HWLK6-D8bAXbY9.js → diagram-OG6HWLK6-aq5fmfHd.js} +1 -1
  104. package/workframe-ui/public/assets/{dist-DGpTLHr_.js → dist-D1c0mkbB.js} +1 -1
  105. package/workframe-ui/public/assets/{erDiagram-TEJ5UH35-1E-xSvBK.js → erDiagram-TEJ5UH35-DnFysVRY.js} +1 -1
  106. package/workframe-ui/public/assets/eventmodeling-FCH6USID-Ci8mdb44.js +1 -0
  107. package/workframe-ui/public/assets/{flowDiagram-I6XJVG4X-CgOVD5hu.js → flowDiagram-I6XJVG4X-C6Ebi3su.js} +1 -1
  108. package/workframe-ui/public/assets/{ganttDiagram-6RSMTGT7-JFYAIauo.js → ganttDiagram-6RSMTGT7-BQXQtUpa.js} +1 -1
  109. package/workframe-ui/public/assets/{gitGraph-WXDBUCRP-B9REenIl.js → gitGraph-WXDBUCRP-Dt0zIs_M.js} +1 -1
  110. package/workframe-ui/public/assets/{gitGraphDiagram-PVQCEYII-BQ7NcMSn.js → gitGraphDiagram-PVQCEYII-BF8gHzRn.js} +1 -1
  111. package/workframe-ui/public/assets/index-DpoUZAxh.css +1 -0
  112. package/workframe-ui/public/assets/{index-Dnw6vjqb.js → index-lRpzpNPT.js} +2 -2
  113. package/workframe-ui/public/assets/{info-J43DQDTF-CL6-eTjH.js → info-J43DQDTF-CSmszQJT.js} +1 -1
  114. package/workframe-ui/public/assets/{infoDiagram-5YYISTIA-LJTODW4W.js → infoDiagram-5YYISTIA-CVTKGW6p.js} +1 -1
  115. package/workframe-ui/public/assets/{ishikawaDiagram-YF4QCWOH-bchrQVuo.js → ishikawaDiagram-YF4QCWOH-Z8pT09Lv.js} +1 -1
  116. package/workframe-ui/public/assets/{journeyDiagram-JHISSGLW-DkrvYuxP.js → journeyDiagram-JHISSGLW-r3wD68_T.js} +1 -1
  117. package/workframe-ui/public/assets/{kanban-definition-UN3LZRKU-DFRbj0IG.js → kanban-definition-UN3LZRKU-Il8VglqN.js} +1 -1
  118. package/workframe-ui/public/assets/{line-Vd48P7-O.js → line-oyjpfz2A.js} +1 -1
  119. package/workframe-ui/public/assets/{linear-Ckizh2G7.js → linear-Cf7p5tVp.js} +1 -1
  120. package/workframe-ui/public/assets/{mermaid-parser.core-Bkimsnqj.js → mermaid-parser.core-YmbZ-AfY.js} +2 -2
  121. package/workframe-ui/public/assets/{mermaid.core-x0TvVuPo.js → mermaid.core-BFdCAqCo.js} +3 -3
  122. package/workframe-ui/public/assets/{mindmap-definition-RKZ34NQL-6ykAFPEz.js → mindmap-definition-RKZ34NQL-Cy2iCtEl.js} +1 -1
  123. package/workframe-ui/public/assets/{packet-YPE3B663-Dw3xgMDt.js → packet-YPE3B663-DwOBZL6K.js} +1 -1
  124. package/workframe-ui/public/assets/{pie-LRSECV5Y-DATysawG.js → pie-LRSECV5Y-04PPhnKK.js} +1 -1
  125. package/workframe-ui/public/assets/{pieDiagram-4H26LBE5-SJKD1S0S.js → pieDiagram-4H26LBE5-LxIpgHqi.js} +1 -1
  126. package/workframe-ui/public/assets/{quadrantDiagram-W4KKPZXB-BrYDZX8q.js → quadrantDiagram-W4KKPZXB-0nBYfYm4.js} +1 -1
  127. package/workframe-ui/public/assets/{radar-GUYGQ44K-BmWYPCds.js → radar-GUYGQ44K-D2-vBqps.js} +1 -1
  128. package/workframe-ui/public/assets/{requirementDiagram-4Y6WPE33-DwL9Mc8e.js → requirementDiagram-4Y6WPE33-DbuU0nlu.js} +1 -1
  129. package/workframe-ui/public/assets/{sankeyDiagram-5OEKKPKP-DYIFsL8h.js → sankeyDiagram-5OEKKPKP-B2hQ6B2x.js} +1 -1
  130. package/workframe-ui/public/assets/{sequenceDiagram-3UESZ5HK-0-FPkFk8.js → sequenceDiagram-3UESZ5HK-BBrU30e1.js} +1 -1
  131. package/workframe-ui/public/assets/{src-B_od6b6h.js → src-BJEDmV70.js} +1 -1
  132. package/workframe-ui/public/assets/{stateDiagram-AJRCARHV-BQCiBk6u.js → stateDiagram-AJRCARHV-7FGO4kkH.js} +1 -1
  133. package/workframe-ui/public/assets/stateDiagram-v2-BHNVJYJU-DLTSizMg.js +1 -0
  134. package/workframe-ui/public/assets/{timeline-definition-PNZ67QCA-DS3tFcXj.js → timeline-definition-PNZ67QCA-ptDm4rCN.js} +1 -1
  135. package/workframe-ui/public/assets/{treeView-BLDUP644-DSyUCKLY.js → treeView-BLDUP644-CS6Z-0q8.js} +1 -1
  136. package/workframe-ui/public/assets/{treemap-LRROVOQU-CEZaNh5Y.js → treemap-LRROVOQU-DqV4Y2VA.js} +1 -1
  137. package/workframe-ui/public/assets/{vennDiagram-CIIHVFJN-CD-Vc9NF.js → vennDiagram-CIIHVFJN-C0UrZJYt.js} +1 -1
  138. package/workframe-ui/public/assets/{wardley-L42UT6IY-Drq5w1Mc.js → wardley-L42UT6IY-bNDN3_Sa.js} +1 -1
  139. package/workframe-ui/public/assets/{wardleyDiagram-YWT4CUSO-DouXDJoF.js → wardleyDiagram-YWT4CUSO-jWiJsefM.js} +1 -1
  140. package/workframe-ui/public/assets/{xychartDiagram-2RQKCTM6-DDf_Lol5.js → xychartDiagram-2RQKCTM6-Dsh_fLCy.js} +1 -1
  141. package/workframe-ui/public/favicon.svg +7 -7
  142. package/workframe-ui/public/index.html +50 -50
  143. package/workframe-ui/public/workframe-config.json +3 -3
  144. package/scripts/security_audit.py +0 -156
  145. package/scripts/test-scaffold.mjs +0 -390
  146. package/workframe-api/tests/__init__.py +0 -0
  147. package/workframe-api/tests/db_setup.py +0 -13
  148. package/workframe-api/tests/test_admin_updates_gated.py +0 -30
  149. package/workframe-api/tests/test_agent_dm_bootstrap.py +0 -196
  150. package/workframe-api/tests/test_agent_profile_sync.py +0 -76
  151. package/workframe-api/tests/test_auth_email.py +0 -222
  152. package/workframe-api/tests/test_auth_hole_fix_selfcheck.py +0 -99
  153. package/workframe-api/tests/test_auth_rate_limit.py +0 -19
  154. package/workframe-api/tests/test_avatar_resolve.py +0 -77
  155. package/workframe-api/tests/test_child_soul_template.py +0 -71
  156. package/workframe-api/tests/test_credential_canary.py +0 -135
  157. package/workframe-api/tests/test_credential_isolation.py +0 -448
  158. package/workframe-api/tests/test_credential_resolution.py +0 -206
  159. package/workframe-api/tests/test_device_oauth.py +0 -108
  160. package/workframe-api/tests/test_doctor_repair.py +0 -103
  161. package/workframe-api/tests/test_ensure_profile_api.py +0 -77
  162. package/workframe-api/tests/test_gateway_compose_security.py +0 -136
  163. package/workframe-api/tests/test_install_secure_host.py +0 -39
  164. package/workframe-api/tests/test_internal_proxy_auth.py +0 -125
  165. package/workframe-api/tests/test_invite_runtime_bootstrap.py +0 -72
  166. package/workframe-api/tests/test_kanban_delegation.py +0 -185
  167. package/workframe-api/tests/test_llm_proxy.py +0 -155
  168. package/workframe-api/tests/test_login_access_policy.py +0 -183
  169. package/workframe-api/tests/test_mvp_model_bootstrap.py +0 -75
  170. package/workframe-api/tests/test_onboarding_bootstrap.py +0 -248
  171. package/workframe-api/tests/test_platform_auth.py +0 -47
  172. package/workframe-api/tests/test_profile_config_path.py +0 -56
  173. package/workframe-api/tests/test_profile_config_yaml_repair.py +0 -63
  174. package/workframe-api/tests/test_profile_create.py +0 -72
  175. package/workframe-api/tests/test_profile_identity_overlay.py +0 -61
  176. package/workframe-api/tests/test_profile_install_health.py +0 -45
  177. package/workframe-api/tests/test_profile_secret_policy.py +0 -57
  178. package/workframe-api/tests/test_profile_workspace_cwd.py +0 -34
  179. package/workframe-api/tests/test_provider_bootstrap.py +0 -75
  180. package/workframe-api/tests/test_provider_connect.py +0 -54
  181. package/workframe-api/tests/test_room_crud.py +0 -192
  182. package/workframe-api/tests/test_room_tenancy.py +0 -701
  183. package/workframe-api/tests/test_runtime_identity_backfill.py +0 -34
  184. package/workframe-api/tests/test_site_meta.py +0 -81
  185. package/workframe-api/tests/test_soul_stub.py +0 -42
  186. package/workframe-api/tests/test_space_member_sync.py +0 -99
  187. package/workframe-api/tests/test_stripe_stack_config.py +0 -37
  188. package/workframe-api/tests/test_supervisor_lifecycle.py +0 -52
  189. package/workframe-api/tests/test_turn_credential_vault.py +0 -125
  190. package/workframe-api/tests/test_updates.py +0 -176
  191. package/workframe-api/tests/test_user_cohort.py +0 -113
  192. package/workframe-api/tests/test_vault_envelope.py +0 -110
  193. package/workframe-api/tests/test_workspace_members.py +0 -183
  194. package/workframe-api/tests/test_workspace_messaging_sync.py +0 -125
  195. package/workframe-api/tests/test_workspace_provider_list.py +0 -57
  196. package/workframe-supervisor/tests/test_exec_guard.py +0 -42
  197. package/workframe-supervisor/tests/test_server_import.py +0 -21
  198. package/workframe-ui/public/assets/architecture-7EHR7CIX-CtbQKTuT.js +0 -1
  199. package/workframe-ui/public/assets/channel-Dy4Z4-jn.js +0 -1
  200. package/workframe-ui/public/assets/chunk-QZHKN3VN-CtBEchFK.js +0 -1
  201. package/workframe-ui/public/assets/chunk-WU5MYG2G-B9pBtriN.js +0 -1
  202. package/workframe-ui/public/assets/classDiagram-4FO5ZUOK-BMAEA8jI.js +0 -1
  203. package/workframe-ui/public/assets/classDiagram-v2-Q7XG4LA2-BMAEA8jI.js +0 -1
  204. package/workframe-ui/public/assets/eventmodeling-FCH6USID-D75cstNT.js +0 -1
  205. package/workframe-ui/public/assets/index-DpAGxump.css +0 -1
  206. package/workframe-ui/public/assets/stateDiagram-v2-BHNVJYJU-B89jAMFF.js +0 -1
@@ -1,25 +1,25 @@
1
- # AGENTS — Visionary
2
-
3
- Operating rules for **Visionary** (`visionary`). Identity lives in `SOUL.md` in this profile home.
4
-
5
- ## Scope
6
-
7
- | File | Purpose |
8
- |------|---------|
9
- | `SOUL.md` | Who you are, strategy mission |
10
- | `AGENTS.md` (this file) | Tools, framing, handoff |
11
- | `/workspace/AGENTS.md` | Project workspace rules |
12
-
13
- ## Tools & skills
14
-
15
- - Load **kanban-worker** for dispatched tasks.
16
- - Runtime slug: `u-*-visionary` for kanban/delegate.
17
-
18
- ## Output
19
-
20
- - Strategy, positioning, and product framing → `/workspace` artifacts.
21
- - Hand unclear implementation to Architect/Dev via concierge routing.
22
-
23
- ## Restrictions
24
-
25
- - Not Botfather — no agent lifecycle.
1
+ # AGENTS — Visionary
2
+
3
+ Operating rules for **Visionary** (`visionary`). Identity lives in `SOUL.md` in this profile home.
4
+
5
+ ## Scope
6
+
7
+ | File | Purpose |
8
+ |------|---------|
9
+ | `SOUL.md` | Who you are, strategy mission |
10
+ | `AGENTS.md` (this file) | Tools, framing, handoff |
11
+ | `/workspace/AGENTS.md` | Project workspace rules |
12
+
13
+ ## Tools & skills
14
+
15
+ - Load **kanban-worker** for dispatched tasks.
16
+ - Runtime slug: `u-*-visionary` for kanban/delegate.
17
+
18
+ ## Output
19
+
20
+ - Strategy, positioning, and product framing → `/workspace` artifacts.
21
+ - Hand unclear implementation to Architect/Dev via concierge routing.
22
+
23
+ ## Restrictions
24
+
25
+ - Not Botfather — no agent lifecycle.
@@ -1,27 +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.
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.
@@ -1,37 +1,37 @@
1
- # AGENTS — {nativeAgentName}
2
-
3
- Operating rules for **{nativeAgentName}** (`{nativeProfileSlug}`). Identity and Workframe context live in `SOUL.md` in this profile home.
4
-
5
- ## Scope
6
-
7
- | Surface | Purpose |
8
- |---------|---------|
9
- | `SOUL.md` (here) | Who you are, Workframe layout, Botfather gate, cohort rules |
10
- | `AGENTS.md` (this file) | How you work — tools, skills, setup, memory |
11
- | `/workspace/AGENTS.md` | Project workspace rules (user artifacts only) |
12
- | `SETUP.md` | Fresh-install concierge playbook (read when setup gate is open) |
13
-
14
- ## Tools & skills
15
-
16
- - Load Hermes skills before specialized work (`hermes skills list`, `skills/<name>/SKILL.md`).
17
- - **Botfather** skill: required before create/update/delete child agents or crew changes.
18
- - **workframe-cohort** + **kanban-handoff-pattern**: required before kanban, cron, or `delegate_task`.
19
- - CLI: `/opt/hermes/.venv/bin/hermes -p <runtime_slug> …` via **terminal** tool — not `execute_code`.
20
- - Find skills under `skills/` in this profile and under `/opt/install/scripts/` for lifecycle helpers.
21
-
22
- ## Memory & evolution
23
-
24
- - Use Hermes-native memory (`memories/`, session history, `USER.md` when appropriate).
25
- - Persist outcomes in `/workspace`; chat is intake, not the system of record.
26
- - You may refine your own skills and notes when the user asks — never overwrite another user's `u-*` profile.
27
-
28
- ## Credentials & safety
29
-
30
- - No secrets in chat. Keys via Workframe secure UI, Hermes dashboard, or `scripts/open-setup.*`.
31
- - Confirm destructive actions (agent delete, mass file delete, external posts) before executing.
32
- - Only interact with agents in your cohort (`WORKFRAME_COHORT.md`).
33
-
34
- ## Defaults (Workframe install)
35
-
36
- - **Model:** minimum-viable per connected provider (OpenRouter → Owl Alpha + Nex AGI + Nemotron Ultra free fallbacks). Users escalate via Profile → Model or specialist agents.
37
- - **Runtime slugs:** kanban/cron/delegate use `u-*` slugs from the cohort table — never bare template names.
1
+ # AGENTS — {nativeAgentName}
2
+
3
+ Operating rules for **{nativeAgentName}** (`{nativeProfileSlug}`). Identity and Workframe context live in `SOUL.md` in this profile home.
4
+
5
+ ## Scope
6
+
7
+ | Surface | Purpose |
8
+ |---------|---------|
9
+ | `SOUL.md` (here) | Who you are, Workframe layout, Botfather gate, cohort rules |
10
+ | `AGENTS.md` (this file) | How you work — tools, skills, setup, memory |
11
+ | `/workspace/AGENTS.md` | Project workspace rules (user artifacts only) |
12
+ | `SETUP.md` | Fresh-install concierge playbook (read when setup gate is open) |
13
+
14
+ ## Tools & skills
15
+
16
+ - Load Hermes skills before specialized work (`hermes skills list`, `skills/<name>/SKILL.md`).
17
+ - **Botfather** skill: required before create/update/delete child agents or crew changes.
18
+ - **workframe-cohort** + **kanban-handoff-pattern**: required before kanban, cron, or `delegate_task`.
19
+ - CLI: `/opt/hermes/.venv/bin/hermes -p <runtime_slug> …` via **terminal** tool — not `execute_code`.
20
+ - Find skills under `skills/` in this profile and under `/opt/install/scripts/` for lifecycle helpers.
21
+
22
+ ## Memory & evolution
23
+
24
+ - Use Hermes-native memory (`memories/`, session history, `USER.md` when appropriate).
25
+ - Persist outcomes in `/workspace`; chat is intake, not the system of record.
26
+ - You may refine your own skills and notes when the user asks — never overwrite another user's `u-*` profile.
27
+
28
+ ## Credentials & safety
29
+
30
+ - No secrets in chat. Keys via Workframe secure UI, Hermes dashboard, or `scripts/open-setup.*`.
31
+ - Confirm destructive actions (agent delete, mass file delete, external posts) before executing.
32
+ - Only interact with agents in your cohort (`WORKFRAME_COHORT.md`).
33
+
34
+ ## Defaults (Workframe install)
35
+
36
+ - **Model:** minimum-viable per connected provider (OpenRouter → Owl Alpha + Nex AGI + Nemotron Ultra free fallbacks). Users escalate via Profile → Model or specialist agents.
37
+ - **Runtime slugs:** kanban/cron/delegate use `u-*` slugs from the cohort table — never bare template names.
@@ -1,85 +1,85 @@
1
- ---
2
- name: botfather
3
- description: Native Workframe agent crew control — create/tune child agents via the BFF API. Child agents must never load this skill.
4
- version: 2.0.0
5
- platforms: [linux, macos, windows]
6
- metadata:
7
- hermes:
8
- tags: [workframe, botfather, crew, profiles, vault]
9
- ---
10
-
11
- # Botfather — Native Agent Crew Control
12
-
13
- You are the **native Workframe agent** (concierge / botfather / PM). Only you orchestrate the crew. Child specialists cannot create agents or read the credential vault.
14
-
15
- ## Architecture (current — do not guess older models)
16
-
17
- | Layer | What it is |
18
- |---|---|
19
- | **Template profile** | Shared Hermes profile (`architect`, `dev`, …) — identity, SOUL, skills |
20
- | **Runtime profile** | Per-user chat profile `u-{user}-{template}` — this is what answers in DMs |
21
- | **API vault** | Raw BYOK keys live in Workframe API storage — **never** in profile `config.yaml` or `.env` |
22
- | **LLM access** | Runtime profiles call `/internal/llm/` with short-lived lease tokens per turn |
23
-
24
- **Never** write `model.api_key`, provider secrets, or raw tokens into Hermes profile files. Users connect keys in Workframe UI (onboarding / Settings → Connect).
25
-
26
- ## Primary path — same as the UI
27
-
28
- Create agents through the Workframe BFF (fastest, correct tenancy):
29
-
30
- ```bash
31
- curl -s -X POST http://workframe-api:8080/api/hermes/profiles/create \
32
- -H "Content-Type: application/json" \
33
- -H "Cookie: <session>" \
34
- -d '{
35
- "name": "architect",
36
- "display_name": "Architect",
37
- "model": "openrouter/anthropic/claude-sonnet-4",
38
- "workspace_id": "<workspace-uuid>"
39
- }'
40
- ```
41
-
42
- This creates the template (if needed), provisions `u-{user}-architect`, sets the model on the **runtime**, opens a DM room, and binds a session.
43
-
44
- Other BFF endpoints you may use (with user session):
45
-
46
- | Intent | Endpoint |
47
- |---|---|
48
- | Bootstrap DM only | `POST /api/hermes/profiles/{template}/bootstrap-dm` |
49
- | Delete child | `POST /api/hermes/profiles/delete` `{"profile":"slug"}` |
50
- | Set SOUL | `POST /api/hermes/profiles/{slug}/soul` |
51
-
52
- ## Fallback — CLI inside gateway container
53
-
54
- When the BFF is unreachable, use Hermes CLI for **child** profiles only (not native):
55
-
56
- ```bash
57
- /opt/hermes/bin/hermes profile create --clone-from architect my-specialist
58
- /opt/hermes/bin/hermes -p my-specialist gateway start
59
- ```
60
-
61
- Do **not** hand-edit `config.yaml` to embed API keys. Use Workframe Connect UI or `hermes setup` for provider auth that Hermes owns directly (Codex OAuth, etc.).
62
-
63
- ## `agent-lifecycle.mjs` (Docker-only fallback)
64
-
65
- ```bash
66
- node /workspace/scripts/agent-lifecycle.mjs create --slug dev --from-seed --spawn
67
- ```
68
-
69
- Requires Docker on the host. Prefer the BFF path above when the API is up.
70
-
71
- ## Child birth checklist
72
-
73
- 1. Slug + display name + role
74
- 2. SOUL (purpose-specific — no empty shells)
75
- 3. Model (optional — MVP default applies; lands on **runtime**)
76
- 4. Skills (preset clone or `--clone-from`)
77
- 5. DM lane is auto-created by `profiles/create` — user lands in chat
78
-
79
- ## Rules
80
-
81
- 1. **Vault is off-limits** — no reading/exporting other users' or agents' keys
82
- 2. **Never delete native profile** (`workframe-agent`)
83
- 3. **Confirm** before destructive external actions
84
- 4. **Route work** to specialists — you orchestrate, not impersonate
85
- 5. Load this skill before crew changes
1
+ ---
2
+ name: botfather
3
+ description: Native Workframe agent crew control — create/tune child agents via the BFF API. Child agents must never load this skill.
4
+ version: 2.0.0
5
+ platforms: [linux, macos, windows]
6
+ metadata:
7
+ hermes:
8
+ tags: [workframe, botfather, crew, profiles, vault]
9
+ ---
10
+
11
+ # Botfather — Native Agent Crew Control
12
+
13
+ You are the **native Workframe agent** (concierge / botfather / PM). Only you orchestrate the crew. Child specialists cannot create agents or read the credential vault.
14
+
15
+ ## Architecture (current — do not guess older models)
16
+
17
+ | Layer | What it is |
18
+ |---|---|
19
+ | **Template profile** | Shared Hermes profile (`architect`, `dev`, …) — identity, SOUL, skills |
20
+ | **Runtime profile** | Per-user chat profile `u-{user}-{template}` — this is what answers in DMs |
21
+ | **API vault** | Raw BYOK keys live in Workframe API storage — **never** in profile `config.yaml` or `.env` |
22
+ | **LLM access** | Runtime profiles call `/internal/llm/` with short-lived lease tokens per turn |
23
+
24
+ **Never** write `model.api_key`, provider secrets, or raw tokens into Hermes profile files. Users connect keys in Workframe UI (onboarding / Settings → Connect).
25
+
26
+ ## Primary path — same as the UI
27
+
28
+ Create agents through the Workframe BFF (fastest, correct tenancy):
29
+
30
+ ```bash
31
+ curl -s -X POST http://workframe-api:8080/api/hermes/profiles/create \
32
+ -H "Content-Type: application/json" \
33
+ -H "Cookie: <session>" \
34
+ -d '{
35
+ "name": "architect",
36
+ "display_name": "Architect",
37
+ "model": "openrouter/anthropic/claude-sonnet-4",
38
+ "workspace_id": "<workspace-uuid>"
39
+ }'
40
+ ```
41
+
42
+ This creates the template (if needed), provisions `u-{user}-architect`, sets the model on the **runtime**, opens a DM room, and binds a session.
43
+
44
+ Other BFF endpoints you may use (with user session):
45
+
46
+ | Intent | Endpoint |
47
+ |---|---|
48
+ | Bootstrap DM only | `POST /api/hermes/profiles/{template}/bootstrap-dm` |
49
+ | Delete child | `POST /api/hermes/profiles/delete` `{"profile":"slug"}` |
50
+ | Set SOUL | `POST /api/hermes/profiles/{slug}/soul` |
51
+
52
+ ## Fallback — CLI inside gateway container
53
+
54
+ When the BFF is unreachable, use Hermes CLI for **child** profiles only (not native):
55
+
56
+ ```bash
57
+ /opt/hermes/bin/hermes profile create --clone-from architect my-specialist
58
+ /opt/hermes/bin/hermes -p my-specialist gateway start
59
+ ```
60
+
61
+ Do **not** hand-edit `config.yaml` to embed API keys. Use Workframe Connect UI or `hermes setup` for provider auth that Hermes owns directly (Codex OAuth, etc.).
62
+
63
+ ## `agent-lifecycle.mjs` (Docker-only fallback)
64
+
65
+ ```bash
66
+ node /workspace/scripts/agent-lifecycle.mjs create --slug dev --from-seed --spawn
67
+ ```
68
+
69
+ Requires Docker on the host. Prefer the BFF path above when the API is up.
70
+
71
+ ## Child birth checklist
72
+
73
+ 1. Slug + display name + role
74
+ 2. SOUL (purpose-specific — no empty shells)
75
+ 3. Model (optional — MVP default applies; lands on **runtime**)
76
+ 4. Skills (preset clone or `--clone-from`)
77
+ 5. DM lane is auto-created by `profiles/create` — user lands in chat
78
+
79
+ ## Rules
80
+
81
+ 1. **Vault is off-limits** — no reading/exporting other users' or agents' keys
82
+ 2. **Never delete native profile** (`workframe-agent`)
83
+ 3. **Confirm** before destructive external actions
84
+ 4. **Route work** to specialists — you orchestrate, not impersonate
85
+ 5. Load this skill before crew changes
@@ -1,58 +1,58 @@
1
- ---
2
- name: kanban-handoff-pattern
3
- description: Kanban task handoff from Workframe concierge to user-scoped specialist runtime profiles — workspace_kind, assignee slugs, worker protocol, failure modes.
4
- ---
5
-
6
- # Kanban handoff pattern
7
-
8
- **Prerequisite:** Read `WORKFRAME_COHORT.md` and use **runtime_slug** as `--assignee`, never bare template names (`architect`, `dev`).
9
-
10
- ## Kanban vs delegate_task
11
-
12
- | Use kanban when | Use delegate_task when |
13
- |-----------------|------------------------|
14
- | Durable work, audit trail, human review | Quick parallel subtasks in one turn |
15
- | Specialist may take minutes | Parent turn bounds the work |
16
-
17
- ## Create a task (CLI)
18
-
19
- ```bash
20
- /opt/hermes/.venv/bin/hermes -p <your-runtime-slug> kanban create "Title" \
21
- --assignee <specialist-runtime-slug-from-cohort> \
22
- --workspace-kind scratch \
23
- --body "Goal…\n\nOutput: /workspace/docs/…"
24
- ```
25
-
26
- ### workspace_kind (only these)
27
-
28
- - `scratch` — default, isolated temp dir (safest)
29
- - `dir:/absolute/path` — e.g. `dir:/workspace`
30
- - `worktree` — git worktree
31
-
32
- Using `project`, `repo`, or anything else → `spawn_failed: unknown workspace_kind`.
33
-
34
- ## Worker protocol (specialists)
35
-
36
- 1. `kanban_show` — orient
37
- 2. Do the work; write outputs to paths in task body
38
- 3. `kanban_comment` — handoff notes for reviewer
39
- 4. **`kanban_complete(summary=…)`** or **`kanban_block(reason=…)`** before exit
40
-
41
- Clean exit without complete/block → protocol violation → auto-block after `failure_limit` (default 2).
42
-
43
- ## Failure modes
44
-
45
- | Symptom | Cause | Fix |
46
- |---------|-------|-----|
47
- | empty API key | assignee is template slug, not runtime | cohort runtime_slug |
48
- | unknown workspace_kind | invalid kind in DB/CLI | recreate with `scratch` |
49
- | protocol violation | worker died without complete/block | fix credentials + skills |
50
- | task blocked | failure_limit tripped | fix root cause, `kanban unblock` |
51
-
52
- ## Verify
53
-
54
- ```bash
55
- /opt/hermes/.venv/bin/hermes -p <profile> kanban list
56
- /opt/hermes/.venv/bin/hermes -p <profile> kanban show <task_id>
57
- /opt/hermes/.venv/bin/hermes -p <profile> kanban log <task_id>
58
- ```
1
+ ---
2
+ name: kanban-handoff-pattern
3
+ description: Kanban task handoff from Workframe concierge to user-scoped specialist runtime profiles — workspace_kind, assignee slugs, worker protocol, failure modes.
4
+ ---
5
+
6
+ # Kanban handoff pattern
7
+
8
+ **Prerequisite:** Read `WORKFRAME_COHORT.md` and use **runtime_slug** as `--assignee`, never bare template names (`architect`, `dev`).
9
+
10
+ ## Kanban vs delegate_task
11
+
12
+ | Use kanban when | Use delegate_task when |
13
+ |-----------------|------------------------|
14
+ | Durable work, audit trail, human review | Quick parallel subtasks in one turn |
15
+ | Specialist may take minutes | Parent turn bounds the work |
16
+
17
+ ## Create a task (CLI)
18
+
19
+ ```bash
20
+ /opt/hermes/.venv/bin/hermes -p <your-runtime-slug> kanban create "Title" \
21
+ --assignee <specialist-runtime-slug-from-cohort> \
22
+ --workspace-kind scratch \
23
+ --body "Goal…\n\nOutput: /workspace/docs/…"
24
+ ```
25
+
26
+ ### workspace_kind (only these)
27
+
28
+ - `scratch` — default, isolated temp dir (safest)
29
+ - `dir:/absolute/path` — e.g. `dir:/workspace`
30
+ - `worktree` — git worktree
31
+
32
+ Using `project`, `repo`, or anything else → `spawn_failed: unknown workspace_kind`.
33
+
34
+ ## Worker protocol (specialists)
35
+
36
+ 1. `kanban_show` — orient
37
+ 2. Do the work; write outputs to paths in task body
38
+ 3. `kanban_comment` — handoff notes for reviewer
39
+ 4. **`kanban_complete(summary=…)`** or **`kanban_block(reason=…)`** before exit
40
+
41
+ Clean exit without complete/block → protocol violation → auto-block after `failure_limit` (default 2).
42
+
43
+ ## Failure modes
44
+
45
+ | Symptom | Cause | Fix |
46
+ |---------|-------|-----|
47
+ | empty API key | assignee is template slug, not runtime | cohort runtime_slug |
48
+ | unknown workspace_kind | invalid kind in DB/CLI | recreate with `scratch` |
49
+ | protocol violation | worker died without complete/block | fix credentials + skills |
50
+ | task blocked | failure_limit tripped | fix root cause, `kanban unblock` |
51
+
52
+ ## Verify
53
+
54
+ ```bash
55
+ /opt/hermes/.venv/bin/hermes -p <profile> kanban list
56
+ /opt/hermes/.venv/bin/hermes -p <profile> kanban show <task_id>
57
+ /opt/hermes/.venv/bin/hermes -p <profile> kanban log <task_id>
58
+ ```
@@ -1,54 +1,54 @@
1
- ---
2
- name: workframe-cohort
3
- description: Per-user Workframe agent cohort — runtime profile slugs, kanban assignees, credential boundaries, and orchestration rules for the concierge.
4
- ---
5
-
6
- # Workframe cohort (read first)
7
-
8
- On every session start, read **`WORKFRAME_COHORT.md`** in your profile home (`/opt/data/profiles/<your-runtime-slug>/`). Workframe regenerates it when you bind a chat session.
9
-
10
- ## You are a per-user runtime instance
11
-
12
- Your Hermes profile slug looks like `u-<user-part>-workframe-agent`. You are **not** the shared template `workframe-agent`. Introduce yourself using the display name from `WORKFRAME_COHORT.md` (e.g. "Fab's Workframe Agent").
13
-
14
- ## Specialists — always use runtime slugs
15
-
16
- | Wrong (fails) | Right |
17
- |---------------|-------|
18
- | kanban `--assignee architect` | `--assignee u-…-architect` from cohort table |
19
- | delegate to `dev` | delegate to `u-…-dev` |
20
- | read `/opt/data/profiles/architect/.env` | only your cohort's `u-…-*` profiles |
21
-
22
- Template profiles share disk but **lack the triggering user's API keys**. Kanban workers on `architect` exit with "empty API key" and violate protocol.
23
-
24
- ## Kanban orchestration
25
-
26
- Load **kanban-handoff-pattern** before creating or dispatching tasks.
27
-
28
- ```bash
29
- /opt/hermes/.venv/bin/hermes -p <your-runtime-slug> kanban create "Title" \
30
- --assignee <cohort-runtime-slug> \
31
- --workspace-kind scratch \
32
- --body "…"
33
- ```
34
-
35
- - `workspace_kind`: `scratch` | `dir:/workspace` | `worktree` only
36
- - Workers must call `kanban_complete` or `kanban_block` before exit
37
- - After `failure_limit` failures, `kanban unblock <task_id>` after fixing root cause
38
-
39
- ## Cron & delegation
40
-
41
- - Cron jobs that invoke agents: target **runtime_slug** from cohort
42
- - `delegate_task`: pass the specialist's **runtime_slug**, not template name
43
- - Your cohort is **only your user's agents** — never other users' `u-*` profiles
44
-
45
- ## Tools in browser chat
46
-
47
- - Use **terminal** (not `execute_code`) for `hermes kanban`, `hermes cron`, shell
48
- - Full CLI: `/opt/hermes/.venv/bin/hermes -p <profile> …`
49
- - Docker socket is unavailable inside the gateway container
50
-
51
- ## Privacy
52
-
53
- - User LLM keys are overlaid per-turn into **your** runtime profile `.env`
54
- - Do not read or exfiltrate keys; do not access profiles outside `WORKFRAME_COHORT.md`
1
+ ---
2
+ name: workframe-cohort
3
+ description: Per-user Workframe agent cohort — runtime profile slugs, kanban assignees, credential boundaries, and orchestration rules for the concierge.
4
+ ---
5
+
6
+ # Workframe cohort (read first)
7
+
8
+ On every session start, read **`WORKFRAME_COHORT.md`** in your profile home (`/opt/data/profiles/<your-runtime-slug>/`). Workframe regenerates it when you bind a chat session.
9
+
10
+ ## You are a per-user runtime instance
11
+
12
+ Your Hermes profile slug looks like `u-<user-part>-workframe-agent`. You are **not** the shared template `workframe-agent`. Introduce yourself using the display name from `WORKFRAME_COHORT.md` (e.g. "Fab's Workframe Agent").
13
+
14
+ ## Specialists — always use runtime slugs
15
+
16
+ | Wrong (fails) | Right |
17
+ |---------------|-------|
18
+ | kanban `--assignee architect` | `--assignee u-…-architect` from cohort table |
19
+ | delegate to `dev` | delegate to `u-…-dev` |
20
+ | read `/opt/data/profiles/architect/.env` | only your cohort's `u-…-*` profiles |
21
+
22
+ Template profiles share disk but **lack the triggering user's API keys**. Kanban workers on `architect` exit with "empty API key" and violate protocol.
23
+
24
+ ## Kanban orchestration
25
+
26
+ Load **kanban-handoff-pattern** before creating or dispatching tasks.
27
+
28
+ ```bash
29
+ /opt/hermes/.venv/bin/hermes -p <your-runtime-slug> kanban create "Title" \
30
+ --assignee <cohort-runtime-slug> \
31
+ --workspace-kind scratch \
32
+ --body "…"
33
+ ```
34
+
35
+ - `workspace_kind`: `scratch` | `dir:/workspace` | `worktree` only
36
+ - Workers must call `kanban_complete` or `kanban_block` before exit
37
+ - After `failure_limit` failures, `kanban unblock <task_id>` after fixing root cause
38
+
39
+ ## Cron & delegation
40
+
41
+ - Cron jobs that invoke agents: target **runtime_slug** from cohort
42
+ - `delegate_task`: pass the specialist's **runtime_slug**, not template name
43
+ - Your cohort is **only your user's agents** — never other users' `u-*` profiles
44
+
45
+ ## Tools in browser chat
46
+
47
+ - Use **terminal** (not `execute_code`) for `hermes kanban`, `hermes cron`, shell
48
+ - Full CLI: `/opt/hermes/.venv/bin/hermes -p <profile> …`
49
+ - Docker socket is unavailable inside the gateway container
50
+
51
+ ## Privacy
52
+
53
+ - User LLM keys are overlaid per-turn into **your** runtime profile `.env`
54
+ - Do not read or exfiltrate keys; do not access profiles outside `WORKFRAME_COHORT.md`
@@ -1,5 +1,5 @@
1
- # {projectName}
2
-
3
- Welcome to Workframe — your team's social AI collaboration space.
4
-
5
- Use this file to keep a living record of what this project is, who is on the team, sub-projects, agents, kanban guidelines, and anything else newcomers should know. Your Workframe Agent can help you evolve it over time.
1
+ # {projectName}
2
+
3
+ Welcome to Workframe — your team's social AI collaboration space.
4
+
5
+ Use this file to keep a living record of what this project is, who is on the team, sub-projects, agents, kanban guidelines, and anything else newcomers should know. Your Workframe Agent can help you evolve it over time.
@@ -1,17 +1,17 @@
1
- #!/usr/bin/env bash
2
- # Safe Hermes update — pull gateway/dashboard images, recreate containers. Preserves runtime/Agents.
3
- set -euo pipefail
4
- SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
5
- # shellcheck source=compose-docker-host.sh
6
- source "$SCRIPT_DIR/compose-docker-host.sh"
7
-
8
- echo "=== Hermes update (gateway + dashboard only) ==="
9
- workframe_compose_prepare
10
- echo "Compose dir: $compose_cd"
11
- echo "Preserves: Agents/, Files/, workframe-api data volumes"
12
-
13
- SERVICES=(gateway dashboard)
14
- workframe_compose pull "${SERVICES[@]}"
15
- workframe_compose up -d --force-recreate --no-deps "${SERVICES[@]}"
16
-
17
- echo "=== Hermes update complete ==="
1
+ #!/usr/bin/env bash
2
+ # Safe Hermes update — pull gateway/dashboard images, recreate containers. Preserves runtime/Agents.
3
+ set -euo pipefail
4
+ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
5
+ # shellcheck source=compose-docker-host.sh
6
+ source "$SCRIPT_DIR/compose-docker-host.sh"
7
+
8
+ echo "=== Hermes update (gateway + dashboard only) ==="
9
+ workframe_compose_prepare
10
+ echo "Compose dir: $compose_cd"
11
+ echo "Preserves: Agents/, Files/, workframe-api data volumes"
12
+
13
+ SERVICES=(gateway dashboard)
14
+ workframe_compose pull "${SERVICES[@]}"
15
+ workframe_compose up -d --force-recreate --no-deps "${SERVICES[@]}"
16
+
17
+ echo "=== Hermes update complete ==="