create-workframe 0.1.0 → 0.1.2
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.
- package/LICENSE +201 -201
- package/NOTICE +12 -12
- package/README.md +8 -92
- package/SECURITY.md +38 -40
- package/bin/workframe.js +329 -329
- package/docs/workspace-instructions/WORKFRAME_ONBOARDING.md +1 -1
- package/docs/workspace-instructions/WORKFRAME_ROUTING.md +8 -8
- package/package.json +3 -6
- package/profiles/architect/AGENTS.md +29 -29
- package/profiles/architect/SOUL.md +2 -2
- package/profiles/architect/skills/devops/kanban-worker/SKILL.md +27 -27
- package/profiles/designer/AGENTS.md +26 -26
- package/profiles/designer/skills/devops/kanban-worker/SKILL.md +27 -27
- package/profiles/dev/AGENTS.md +28 -28
- package/profiles/dev/skills/devops/kanban-worker/SKILL.md +27 -27
- package/profiles/docs/AGENTS.md +27 -27
- package/profiles/docs/skills/devops/kanban-worker/SKILL.md +27 -27
- package/profiles/research/AGENTS.md +26 -26
- package/profiles/research/skills/devops/kanban-worker/SKILL.md +27 -27
- package/profiles/visionary/AGENTS.md +25 -25
- package/profiles/visionary/skills/devops/kanban-worker/SKILL.md +27 -27
- package/profiles/workframe-agent/AGENTS.md +37 -37
- package/profiles/workframe-agent/skills/devops/botfather/SKILL.md +85 -85
- package/profiles/workframe-agent/skills/devops/kanban-handoff-pattern/SKILL.md +58 -58
- package/profiles/workframe-agent/skills/devops/workframe-cohort/SKILL.md +54 -54
- package/rules/workspace-README.md +5 -5
- package/scripts/bundle-workframe-ui.mjs +3 -3
- package/scripts/ensure-compose-host-paths.mjs +51 -51
- package/scripts/lib/install-identity.mjs +212 -212
- package/scripts/set-compose-public-url.mjs +92 -92
- package/scripts/sync-canonical-to-package.mjs +27 -9
- package/shared/WORKFRAME_AGENT_LIBRARY.md +17 -17
- package/shared/WORKFRAME_AGENT_OPERATIONS.md +15 -15
- package/shared/WORKFRAME_AGENT_PACKS.json +18 -18
- package/shared/WORKFRAME_AGENT_PACKS.yaml +8 -8
- package/shared/WORKFRAME_SKILL_CURATION.md +4 -4
- package/workframe-api/README.md +26 -28
- package/workframe-api/action_proxy.py +131 -131
- package/workframe-api/auth_rate_limit.py +49 -49
- package/workframe-api/credential_vault.py +445 -445
- package/workframe-api/data/avatar-catalog.json +41 -41
- package/workframe-api/email_sender.py +220 -220
- package/workframe-api/google_auth.py +90 -90
- package/workframe-api/install_api.py +359 -359
- package/workframe-api/internal_proxy_auth.py +150 -150
- package/workframe-api/llm_proxy.py +277 -277
- package/workframe-api/oidc_jwt.py +108 -108
- package/workframe-api/package.json +12 -13
- package/workframe-api/public/assets/index-DPXu_lGn.css +1 -1
- package/workframe-api/public/assets/index-DYnLrCZZ.js +8 -8
- package/workframe-api/requirements.txt +2 -2
- package/workframe-api/site_meta.py +271 -271
- package/workframe-api/stack_config.py +427 -427
- package/workframe-api/time-bind-chat.py +99 -99
- package/workframe-api/turn_credentials.py +226 -226
- package/workframe-api/updates.py +417 -417
- package/workframe-api/vault_kek.py +159 -159
- package/workframe-api/zk_auth.py +633 -633
- package/workframe-supervisor/Dockerfile +11 -11
- package/workframe-supervisor/server.py +787 -787
- package/workframe-ui/docker/nginx.conf +85 -85
- package/workframe-ui/public/assets/{arc-CBDYvkAF.js → arc-COAT3laO.js} +1 -1
- package/workframe-ui/public/assets/architecture-7EHR7CIX-DUyH3hWG.js +1 -0
- package/workframe-ui/public/assets/{architectureDiagram-3BPJPVTR-XnBRKeW0.js → architectureDiagram-3BPJPVTR-BFjWV24l.js} +1 -1
- package/workframe-ui/public/assets/{blockDiagram-GPEHLZMM-VYHUfVhd.js → blockDiagram-GPEHLZMM-DSQLPfrj.js} +1 -1
- package/workframe-ui/public/assets/{c4Diagram-AAUBKEIU-BTjUcJpm.js → c4Diagram-AAUBKEIU-DKEHv1t2.js} +1 -1
- package/workframe-ui/public/assets/channel-g7r_RGaY.js +1 -0
- package/workframe-ui/public/assets/{chunk-2J33WTMH-w7uu7R-b.js → chunk-2J33WTMH-DHZg-DUi.js} +1 -1
- package/workframe-ui/public/assets/{chunk-3OPIFGDE-Cb9LtnDX.js → chunk-3OPIFGDE-BB-OYTfp.js} +1 -1
- package/workframe-ui/public/assets/{chunk-4BX2VUAB-DiQ-qCwH.js → chunk-4BX2VUAB-C93q0YIm.js} +1 -1
- package/workframe-ui/public/assets/{chunk-55IACEB6-C-mLFr7z.js → chunk-55IACEB6-MAYniqik.js} +1 -1
- package/workframe-ui/public/assets/{chunk-5ZQYHXKU-DOesfiCI.js → chunk-5ZQYHXKU-ChgN6YJs.js} +1 -1
- package/workframe-ui/public/assets/{chunk-727SXJPM-BJ3oBZuz.js → chunk-727SXJPM-B_FYwdAv.js} +1 -1
- package/workframe-ui/public/assets/{chunk-AQP2D5EJ-CCA6xpGs.js → chunk-AQP2D5EJ-1_Hw_h1A.js} +1 -1
- package/workframe-ui/public/assets/{chunk-BSJP7CBP-a0cMNFb2.js → chunk-BSJP7CBP-CFiDQ1Rv.js} +1 -1
- package/workframe-ui/public/assets/{chunk-CSCIHK7Q-kuqN8EIY.js → chunk-CSCIHK7Q-DZ9UMTlB.js} +1 -1
- package/workframe-ui/public/assets/{chunk-FMBD7UC4-DyPgYHCg.js → chunk-FMBD7UC4-DlMlyFgw.js} +1 -1
- package/workframe-ui/public/assets/{chunk-KSCS5N6A-CdUuvR0V.js → chunk-KSCS5N6A-DHXtQ_Hf.js} +1 -1
- package/workframe-ui/public/assets/{chunk-L5ZTLDWV-Dq9NoWmK.js → chunk-L5ZTLDWV-CuQzg-QG.js} +1 -1
- package/workframe-ui/public/assets/{chunk-LZXEDZCA-p74rddlO.js → chunk-LZXEDZCA-BHzjzCGg.js} +2 -2
- package/workframe-ui/public/assets/{chunk-ND2GUHAM-DBD2u1Gz.js → chunk-ND2GUHAM-DHXx05n2.js} +1 -1
- package/workframe-ui/public/assets/{chunk-NZK2D7GU-BeIeYFnd.js → chunk-NZK2D7GU-CV5pmDM_.js} +1 -1
- package/workframe-ui/public/assets/{chunk-O5CBEL6O-ClHc56ib.js → chunk-O5CBEL6O-6tkCHxsV.js} +1 -1
- package/workframe-ui/public/assets/chunk-QZHKN3VN-C5UQehWY.js +1 -0
- package/workframe-ui/public/assets/chunk-WU5MYG2G-DhWllrI8.js +1 -0
- package/workframe-ui/public/assets/{chunk-XPW4576I-EFr8R_1p.js → chunk-XPW4576I-BClwIiCp.js} +1 -1
- package/workframe-ui/public/assets/classDiagram-4FO5ZUOK-BBM_8T8E.js +1 -0
- package/workframe-ui/public/assets/classDiagram-v2-Q7XG4LA2-BBM_8T8E.js +1 -0
- package/workframe-ui/public/assets/{cose-bilkent-S5V4N54A-C7aPBODd.js → cose-bilkent-S5V4N54A-DOrGV6DQ.js} +1 -1
- package/workframe-ui/public/assets/{dagre-BM42HDAG-BdU1Rv-H.js → dagre-BM42HDAG-DXTPvJkX.js} +1 -1
- package/workframe-ui/public/assets/{diagram-2AECGRRQ-DWowSo85.js → diagram-2AECGRRQ-xX_v-pbf.js} +1 -1
- package/workframe-ui/public/assets/{diagram-5GNKFQAL-MnxBbceO.js → diagram-5GNKFQAL-Cd2pXbBe.js} +1 -1
- package/workframe-ui/public/assets/{diagram-KO2AKTUF-DQaLRXFf.js → diagram-KO2AKTUF-Df3XvUtk.js} +1 -1
- package/workframe-ui/public/assets/{diagram-LMA3HP47-CQaBud9k.js → diagram-LMA3HP47-CsijIPaD.js} +1 -1
- package/workframe-ui/public/assets/{diagram-OG6HWLK6-D8bAXbY9.js → diagram-OG6HWLK6-aq5fmfHd.js} +1 -1
- package/workframe-ui/public/assets/{dist-DGpTLHr_.js → dist-D1c0mkbB.js} +1 -1
- package/workframe-ui/public/assets/{erDiagram-TEJ5UH35-1E-xSvBK.js → erDiagram-TEJ5UH35-DnFysVRY.js} +1 -1
- package/workframe-ui/public/assets/eventmodeling-FCH6USID-Ci8mdb44.js +1 -0
- package/workframe-ui/public/assets/{flowDiagram-I6XJVG4X-CgOVD5hu.js → flowDiagram-I6XJVG4X-C6Ebi3su.js} +1 -1
- package/workframe-ui/public/assets/{ganttDiagram-6RSMTGT7-JFYAIauo.js → ganttDiagram-6RSMTGT7-BQXQtUpa.js} +1 -1
- package/workframe-ui/public/assets/{gitGraph-WXDBUCRP-B9REenIl.js → gitGraph-WXDBUCRP-Dt0zIs_M.js} +1 -1
- package/workframe-ui/public/assets/{gitGraphDiagram-PVQCEYII-BQ7NcMSn.js → gitGraphDiagram-PVQCEYII-BF8gHzRn.js} +1 -1
- package/workframe-ui/public/assets/index-DpoUZAxh.css +1 -0
- package/workframe-ui/public/assets/{index-Dnw6vjqb.js → index-lRpzpNPT.js} +2 -2
- package/workframe-ui/public/assets/{info-J43DQDTF-CL6-eTjH.js → info-J43DQDTF-CSmszQJT.js} +1 -1
- package/workframe-ui/public/assets/{infoDiagram-5YYISTIA-LJTODW4W.js → infoDiagram-5YYISTIA-CVTKGW6p.js} +1 -1
- package/workframe-ui/public/assets/{ishikawaDiagram-YF4QCWOH-bchrQVuo.js → ishikawaDiagram-YF4QCWOH-Z8pT09Lv.js} +1 -1
- package/workframe-ui/public/assets/{journeyDiagram-JHISSGLW-DkrvYuxP.js → journeyDiagram-JHISSGLW-r3wD68_T.js} +1 -1
- package/workframe-ui/public/assets/{kanban-definition-UN3LZRKU-DFRbj0IG.js → kanban-definition-UN3LZRKU-Il8VglqN.js} +1 -1
- package/workframe-ui/public/assets/{line-Vd48P7-O.js → line-oyjpfz2A.js} +1 -1
- package/workframe-ui/public/assets/{linear-Ckizh2G7.js → linear-Cf7p5tVp.js} +1 -1
- package/workframe-ui/public/assets/{mermaid-parser.core-Bkimsnqj.js → mermaid-parser.core-YmbZ-AfY.js} +2 -2
- package/workframe-ui/public/assets/{mermaid.core-x0TvVuPo.js → mermaid.core-BFdCAqCo.js} +3 -3
- package/workframe-ui/public/assets/{mindmap-definition-RKZ34NQL-6ykAFPEz.js → mindmap-definition-RKZ34NQL-Cy2iCtEl.js} +1 -1
- package/workframe-ui/public/assets/{packet-YPE3B663-Dw3xgMDt.js → packet-YPE3B663-DwOBZL6K.js} +1 -1
- package/workframe-ui/public/assets/{pie-LRSECV5Y-DATysawG.js → pie-LRSECV5Y-04PPhnKK.js} +1 -1
- package/workframe-ui/public/assets/{pieDiagram-4H26LBE5-SJKD1S0S.js → pieDiagram-4H26LBE5-LxIpgHqi.js} +1 -1
- package/workframe-ui/public/assets/{quadrantDiagram-W4KKPZXB-BrYDZX8q.js → quadrantDiagram-W4KKPZXB-0nBYfYm4.js} +1 -1
- package/workframe-ui/public/assets/{radar-GUYGQ44K-BmWYPCds.js → radar-GUYGQ44K-D2-vBqps.js} +1 -1
- package/workframe-ui/public/assets/{requirementDiagram-4Y6WPE33-DwL9Mc8e.js → requirementDiagram-4Y6WPE33-DbuU0nlu.js} +1 -1
- package/workframe-ui/public/assets/{sankeyDiagram-5OEKKPKP-DYIFsL8h.js → sankeyDiagram-5OEKKPKP-B2hQ6B2x.js} +1 -1
- package/workframe-ui/public/assets/{sequenceDiagram-3UESZ5HK-0-FPkFk8.js → sequenceDiagram-3UESZ5HK-BBrU30e1.js} +1 -1
- package/workframe-ui/public/assets/{src-B_od6b6h.js → src-BJEDmV70.js} +1 -1
- package/workframe-ui/public/assets/{stateDiagram-AJRCARHV-BQCiBk6u.js → stateDiagram-AJRCARHV-7FGO4kkH.js} +1 -1
- package/workframe-ui/public/assets/stateDiagram-v2-BHNVJYJU-DLTSizMg.js +1 -0
- package/workframe-ui/public/assets/{timeline-definition-PNZ67QCA-DS3tFcXj.js → timeline-definition-PNZ67QCA-ptDm4rCN.js} +1 -1
- package/workframe-ui/public/assets/{treeView-BLDUP644-DSyUCKLY.js → treeView-BLDUP644-CS6Z-0q8.js} +1 -1
- package/workframe-ui/public/assets/{treemap-LRROVOQU-CEZaNh5Y.js → treemap-LRROVOQU-DqV4Y2VA.js} +1 -1
- package/workframe-ui/public/assets/{vennDiagram-CIIHVFJN-CD-Vc9NF.js → vennDiagram-CIIHVFJN-C0UrZJYt.js} +1 -1
- package/workframe-ui/public/assets/{wardley-L42UT6IY-Drq5w1Mc.js → wardley-L42UT6IY-bNDN3_Sa.js} +1 -1
- package/workframe-ui/public/assets/{wardleyDiagram-YWT4CUSO-DouXDJoF.js → wardleyDiagram-YWT4CUSO-jWiJsefM.js} +1 -1
- package/workframe-ui/public/assets/{xychartDiagram-2RQKCTM6-DDf_Lol5.js → xychartDiagram-2RQKCTM6-Dsh_fLCy.js} +1 -1
- package/workframe-ui/public/favicon.svg +7 -7
- package/workframe-ui/public/index.html +50 -50
- package/workframe-ui/public/workframe-config.json +3 -3
- package/scripts/security_audit.py +0 -156
- package/scripts/test-scaffold.mjs +0 -390
- package/workframe-api/tests/__init__.py +0 -0
- package/workframe-api/tests/db_setup.py +0 -13
- package/workframe-api/tests/test_admin_updates_gated.py +0 -30
- package/workframe-api/tests/test_agent_dm_bootstrap.py +0 -196
- package/workframe-api/tests/test_agent_profile_sync.py +0 -76
- package/workframe-api/tests/test_auth_email.py +0 -222
- package/workframe-api/tests/test_auth_hole_fix_selfcheck.py +0 -99
- package/workframe-api/tests/test_auth_rate_limit.py +0 -19
- package/workframe-api/tests/test_avatar_resolve.py +0 -77
- package/workframe-api/tests/test_child_soul_template.py +0 -71
- package/workframe-api/tests/test_credential_canary.py +0 -135
- package/workframe-api/tests/test_credential_isolation.py +0 -448
- package/workframe-api/tests/test_credential_resolution.py +0 -206
- package/workframe-api/tests/test_device_oauth.py +0 -108
- package/workframe-api/tests/test_doctor_repair.py +0 -103
- package/workframe-api/tests/test_ensure_profile_api.py +0 -77
- package/workframe-api/tests/test_gateway_compose_security.py +0 -136
- package/workframe-api/tests/test_install_secure_host.py +0 -39
- package/workframe-api/tests/test_internal_proxy_auth.py +0 -125
- package/workframe-api/tests/test_invite_runtime_bootstrap.py +0 -72
- package/workframe-api/tests/test_kanban_delegation.py +0 -185
- package/workframe-api/tests/test_llm_proxy.py +0 -155
- package/workframe-api/tests/test_login_access_policy.py +0 -183
- package/workframe-api/tests/test_mvp_model_bootstrap.py +0 -75
- package/workframe-api/tests/test_onboarding_bootstrap.py +0 -248
- package/workframe-api/tests/test_platform_auth.py +0 -47
- package/workframe-api/tests/test_profile_config_path.py +0 -56
- package/workframe-api/tests/test_profile_config_yaml_repair.py +0 -63
- package/workframe-api/tests/test_profile_create.py +0 -72
- package/workframe-api/tests/test_profile_identity_overlay.py +0 -61
- package/workframe-api/tests/test_profile_install_health.py +0 -45
- package/workframe-api/tests/test_profile_secret_policy.py +0 -57
- package/workframe-api/tests/test_profile_workspace_cwd.py +0 -34
- package/workframe-api/tests/test_provider_bootstrap.py +0 -75
- package/workframe-api/tests/test_provider_connect.py +0 -54
- package/workframe-api/tests/test_room_crud.py +0 -192
- package/workframe-api/tests/test_room_tenancy.py +0 -701
- package/workframe-api/tests/test_runtime_identity_backfill.py +0 -34
- package/workframe-api/tests/test_site_meta.py +0 -81
- package/workframe-api/tests/test_soul_stub.py +0 -42
- package/workframe-api/tests/test_space_member_sync.py +0 -99
- package/workframe-api/tests/test_stripe_stack_config.py +0 -37
- package/workframe-api/tests/test_supervisor_lifecycle.py +0 -52
- package/workframe-api/tests/test_turn_credential_vault.py +0 -125
- package/workframe-api/tests/test_updates.py +0 -176
- package/workframe-api/tests/test_user_cohort.py +0 -113
- package/workframe-api/tests/test_vault_envelope.py +0 -110
- package/workframe-api/tests/test_workspace_members.py +0 -183
- package/workframe-api/tests/test_workspace_messaging_sync.py +0 -125
- package/workframe-api/tests/test_workspace_provider_list.py +0 -57
- package/workframe-supervisor/tests/test_exec_guard.py +0 -42
- package/workframe-supervisor/tests/test_server_import.py +0 -21
- package/workframe-ui/public/assets/architecture-7EHR7CIX-CtbQKTuT.js +0 -1
- package/workframe-ui/public/assets/channel-Dy4Z4-jn.js +0 -1
- package/workframe-ui/public/assets/chunk-QZHKN3VN-CtBEchFK.js +0 -1
- package/workframe-ui/public/assets/chunk-WU5MYG2G-B9pBtriN.js +0 -1
- package/workframe-ui/public/assets/classDiagram-4FO5ZUOK-BMAEA8jI.js +0 -1
- package/workframe-ui/public/assets/classDiagram-v2-Q7XG4LA2-BMAEA8jI.js +0 -1
- package/workframe-ui/public/assets/eventmodeling-FCH6USID-D75cstNT.js +0 -1
- package/workframe-ui/public/assets/index-DpAGxump.css +0 -1
- 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.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Build apps/web and copy dist into create-workframe/workframe-ui/public for npm publish.
|
|
4
4
|
* Canonical UI pipeline: apps/web `npm run build` → dist (same as monorepo `pnpm build:web`).
|
|
5
|
-
* Run from
|
|
5
|
+
* Run from repository root: node packages/create-workframe/scripts/bundle-workframe-ui.mjs
|
|
6
6
|
*/
|
|
7
7
|
import fs from 'node:fs';
|
|
8
8
|
import path from 'node:path';
|
|
@@ -11,8 +11,8 @@ import { spawnSync } from 'node:child_process';
|
|
|
11
11
|
|
|
12
12
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
13
13
|
const PKG_ROOT = path.resolve(__dirname, '..');
|
|
14
|
-
const
|
|
15
|
-
const UI_SRC = path.join(
|
|
14
|
+
const REPO_ROOT = path.resolve(PKG_ROOT, '../..');
|
|
15
|
+
const UI_SRC = path.join(REPO_ROOT, 'apps/web');
|
|
16
16
|
const UI_DEST = path.join(PKG_ROOT, 'workframe-ui', 'public');
|
|
17
17
|
|
|
18
18
|
function npmCmd() {
|