create-workframe 0.1.7 → 0.1.9

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 (93) hide show
  1. package/README.md +1 -1
  2. package/package.json +1 -1
  3. package/scripts/apply-update-workframe.sh +68 -28
  4. package/scripts/compose-docker-host.sh +8 -2
  5. package/workframe-api/.dockerignore +4 -0
  6. package/workframe-api/package.json +1 -1
  7. package/workframe-api/server.py +306 -70
  8. package/workframe-api/stack_config.py +7 -7
  9. package/workframe-api/test_stack_config_install_smtp.py +5 -0
  10. package/workframe-api/updates.py +146 -33
  11. package/workframe-supervisor/Dockerfile +1 -1
  12. package/workframe-supervisor/server.py +16 -3
  13. package/workframe-ui/public/assets/{arc-Cn-lt9fT.js → arc-DjpS9a2b.js} +1 -1
  14. package/workframe-ui/public/assets/architecture-7EHR7CIX-CvhbXEvt.js +1 -0
  15. package/workframe-ui/public/assets/{architectureDiagram-3BPJPVTR-qXoGCqfH.js → architectureDiagram-3BPJPVTR-puCKmKHV.js} +1 -1
  16. package/workframe-ui/public/assets/{blockDiagram-GPEHLZMM-DoopFlWj.js → blockDiagram-GPEHLZMM-C2P0g-eH.js} +1 -1
  17. package/workframe-ui/public/assets/{c4Diagram-AAUBKEIU-BRa7hfzE.js → c4Diagram-AAUBKEIU-DdvYEITH.js} +1 -1
  18. package/workframe-ui/public/assets/channel-D63s_yN9.js +1 -0
  19. package/workframe-ui/public/assets/{chunk-2J33WTMH-Cl33E2hh.js → chunk-2J33WTMH-Cxe8QsEF.js} +1 -1
  20. package/workframe-ui/public/assets/{chunk-3OPIFGDE-BRywYZQO.js → chunk-3OPIFGDE-DPNyTwR3.js} +1 -1
  21. package/workframe-ui/public/assets/{chunk-4BX2VUAB-CI3xzp-0.js → chunk-4BX2VUAB-XKG9gfRN.js} +1 -1
  22. package/workframe-ui/public/assets/{chunk-55IACEB6-Bkf3Ye3F.js → chunk-55IACEB6-oPMTulgb.js} +1 -1
  23. package/workframe-ui/public/assets/{chunk-5ZQYHXKU-C5RN3hUT.js → chunk-5ZQYHXKU-BWwXvpa_.js} +1 -1
  24. package/workframe-ui/public/assets/{chunk-727SXJPM-BaY0yDwt.js → chunk-727SXJPM-Cml2twO_.js} +1 -1
  25. package/workframe-ui/public/assets/{chunk-AQP2D5EJ-VMMBaDqd.js → chunk-AQP2D5EJ-DzrRBhQu.js} +1 -1
  26. package/workframe-ui/public/assets/{chunk-BSJP7CBP-DlNZ1UV3.js → chunk-BSJP7CBP-EZ7STU6h.js} +1 -1
  27. package/workframe-ui/public/assets/{chunk-CSCIHK7Q-tT2HyVy0.js → chunk-CSCIHK7Q-BGTQzWYw.js} +1 -1
  28. package/workframe-ui/public/assets/{chunk-FMBD7UC4-CyACRaUT.js → chunk-FMBD7UC4-Cm4stfRa.js} +1 -1
  29. package/workframe-ui/public/assets/{chunk-KSCS5N6A-seK5WAZs.js → chunk-KSCS5N6A-exbMijjy.js} +1 -1
  30. package/workframe-ui/public/assets/{chunk-L5ZTLDWV-r5cyG5AH.js → chunk-L5ZTLDWV-C75kbQwN.js} +1 -1
  31. package/workframe-ui/public/assets/{chunk-LZXEDZCA-SnbeVxsJ.js → chunk-LZXEDZCA-CsRdBqUB.js} +2 -2
  32. package/workframe-ui/public/assets/{chunk-ND2GUHAM-zbFgEXSJ.js → chunk-ND2GUHAM-D84zyIu2.js} +1 -1
  33. package/workframe-ui/public/assets/{chunk-NZK2D7GU-UhZc8kOk.js → chunk-NZK2D7GU-CUNNo1bj.js} +1 -1
  34. package/workframe-ui/public/assets/{chunk-O5CBEL6O-DHvu2iZ-.js → chunk-O5CBEL6O-DN6WEIh-.js} +1 -1
  35. package/workframe-ui/public/assets/chunk-QZHKN3VN-Dj_Yxhgo.js +1 -0
  36. package/workframe-ui/public/assets/chunk-WU5MYG2G-AFchshb6.js +1 -0
  37. package/workframe-ui/public/assets/{chunk-XPW4576I-CCPNKbzG.js → chunk-XPW4576I-Ct5VQv2D.js} +1 -1
  38. package/workframe-ui/public/assets/classDiagram-4FO5ZUOK-Opj8t01I.js +1 -0
  39. package/workframe-ui/public/assets/classDiagram-v2-Q7XG4LA2-Opj8t01I.js +1 -0
  40. package/workframe-ui/public/assets/{cose-bilkent-S5V4N54A-D1CLe6Y0.js → cose-bilkent-S5V4N54A-Bj4W5oMk.js} +1 -1
  41. package/workframe-ui/public/assets/{dagre-BM42HDAG-DYHcGVs_.js → dagre-BM42HDAG-DAjHBkAy.js} +1 -1
  42. package/workframe-ui/public/assets/{diagram-2AECGRRQ-DVUkJ-II.js → diagram-2AECGRRQ-Ch2gGFPG.js} +1 -1
  43. package/workframe-ui/public/assets/{diagram-5GNKFQAL-C9Y1Acc2.js → diagram-5GNKFQAL-BzIIvgYH.js} +1 -1
  44. package/workframe-ui/public/assets/{diagram-KO2AKTUF-Db3zez-n.js → diagram-KO2AKTUF-Df0Q8nv6.js} +1 -1
  45. package/workframe-ui/public/assets/{diagram-LMA3HP47-BaOR5sIr.js → diagram-LMA3HP47-D-G3ekmF.js} +1 -1
  46. package/workframe-ui/public/assets/{diagram-OG6HWLK6-fLBzMY5W.js → diagram-OG6HWLK6-TBHhT9f5.js} +1 -1
  47. package/workframe-ui/public/assets/{dist-uZYeD3o1.js → dist-CPbiDkEZ.js} +1 -1
  48. package/workframe-ui/public/assets/{erDiagram-TEJ5UH35-BoCxDSyE.js → erDiagram-TEJ5UH35-YxkUmLLV.js} +1 -1
  49. package/workframe-ui/public/assets/eventmodeling-FCH6USID-LQOYL50n.js +1 -0
  50. package/workframe-ui/public/assets/{flowDiagram-I6XJVG4X-BnYa3CAj.js → flowDiagram-I6XJVG4X-kfZ7-RSd.js} +1 -1
  51. package/workframe-ui/public/assets/{ganttDiagram-6RSMTGT7-Dm_e_Kaa.js → ganttDiagram-6RSMTGT7-DmTx3hzR.js} +1 -1
  52. package/workframe-ui/public/assets/{gitGraph-WXDBUCRP-CBAj8ntv.js → gitGraph-WXDBUCRP-BXa0ewp3.js} +1 -1
  53. package/workframe-ui/public/assets/{gitGraphDiagram-PVQCEYII-D5auJjJh.js → gitGraphDiagram-PVQCEYII-CQr2qMxU.js} +1 -1
  54. package/workframe-ui/public/assets/{index-auJ0bLMU.css → index-B08aShJy.css} +1 -1
  55. package/workframe-ui/public/assets/index-DCF3W3G_.js +129 -0
  56. package/workframe-ui/public/assets/{info-J43DQDTF-BNMADxE2.js → info-J43DQDTF-t-Qlx8zv.js} +1 -1
  57. package/workframe-ui/public/assets/{infoDiagram-5YYISTIA-C8c45T4J.js → infoDiagram-5YYISTIA-CzkYofPx.js} +1 -1
  58. package/workframe-ui/public/assets/{ishikawaDiagram-YF4QCWOH-CyWuHB4e.js → ishikawaDiagram-YF4QCWOH-djK3Oxgb.js} +1 -1
  59. package/workframe-ui/public/assets/{journeyDiagram-JHISSGLW-B43pCuDT.js → journeyDiagram-JHISSGLW-CWxYXxdF.js} +1 -1
  60. package/workframe-ui/public/assets/{kanban-definition-UN3LZRKU-Dyn480BI.js → kanban-definition-UN3LZRKU-D7leCAD9.js} +1 -1
  61. package/workframe-ui/public/assets/{line-CNtIbnmt.js → line-BSFj2OC5.js} +1 -1
  62. package/workframe-ui/public/assets/{linear-pmSg_4uV.js → linear-pfPwnu-o.js} +1 -1
  63. package/workframe-ui/public/assets/{mermaid-parser.core-BX4tnojE.js → mermaid-parser.core-Dm2L9Ib_.js} +2 -2
  64. package/workframe-ui/public/assets/{mermaid.core-BtpBva5o.js → mermaid.core-Bevx9bif.js} +3 -3
  65. package/workframe-ui/public/assets/{mindmap-definition-RKZ34NQL-DcMcB_69.js → mindmap-definition-RKZ34NQL-UkjDssmP.js} +1 -1
  66. package/workframe-ui/public/assets/{packet-YPE3B663-KSzK9WlD.js → packet-YPE3B663-JO2ezH3_.js} +1 -1
  67. package/workframe-ui/public/assets/{pie-LRSECV5Y-DLOH6Mg8.js → pie-LRSECV5Y-DdMFsfR8.js} +1 -1
  68. package/workframe-ui/public/assets/{pieDiagram-4H26LBE5-BhrX2aGk.js → pieDiagram-4H26LBE5-CEPHFBU1.js} +1 -1
  69. package/workframe-ui/public/assets/{quadrantDiagram-W4KKPZXB-B5dDjbTX.js → quadrantDiagram-W4KKPZXB-_RF9_86k.js} +1 -1
  70. package/workframe-ui/public/assets/{radar-GUYGQ44K-BPdjqZiu.js → radar-GUYGQ44K-Cb-YfdaA.js} +1 -1
  71. package/workframe-ui/public/assets/{requirementDiagram-4Y6WPE33-21Dq5e0N.js → requirementDiagram-4Y6WPE33-DBVOxmBn.js} +1 -1
  72. package/workframe-ui/public/assets/{sankeyDiagram-5OEKKPKP-CiA99dbO.js → sankeyDiagram-5OEKKPKP-BTpxsGUA.js} +1 -1
  73. package/workframe-ui/public/assets/{sequenceDiagram-3UESZ5HK-Bwpui7_x.js → sequenceDiagram-3UESZ5HK-DHP_Bq3l.js} +1 -1
  74. package/workframe-ui/public/assets/{src-B3Axsi1U.js → src-CY_By-r7.js} +1 -1
  75. package/workframe-ui/public/assets/{stateDiagram-AJRCARHV-C76qwtE8.js → stateDiagram-AJRCARHV-BVtp_LPR.js} +1 -1
  76. package/workframe-ui/public/assets/stateDiagram-v2-BHNVJYJU-CvJhS_BJ.js +1 -0
  77. package/workframe-ui/public/assets/{timeline-definition-PNZ67QCA-CufInOyk.js → timeline-definition-PNZ67QCA-D38HJhop.js} +1 -1
  78. package/workframe-ui/public/assets/{treeView-BLDUP644-C4sxh0R-.js → treeView-BLDUP644-CFCG3Sc_.js} +1 -1
  79. package/workframe-ui/public/assets/{treemap-LRROVOQU-BjV72ANV.js → treemap-LRROVOQU-BeiMs_dF.js} +1 -1
  80. package/workframe-ui/public/assets/{vennDiagram-CIIHVFJN-DgsdR0Rl.js → vennDiagram-CIIHVFJN-CKMeT6PW.js} +1 -1
  81. package/workframe-ui/public/assets/{wardley-L42UT6IY-DZ279G_t.js → wardley-L42UT6IY-BljDy8ph.js} +1 -1
  82. package/workframe-ui/public/assets/{wardleyDiagram-YWT4CUSO-Bde25kvz.js → wardleyDiagram-YWT4CUSO-DEE8D94J.js} +1 -1
  83. package/workframe-ui/public/assets/{xychartDiagram-2RQKCTM6-B8VnS2Pb.js → xychartDiagram-2RQKCTM6-BRaAWV_g.js} +1 -1
  84. package/workframe-ui/public/index.html +2 -2
  85. package/workframe-ui/public/assets/architecture-7EHR7CIX-CCMNXHod.js +0 -1
  86. package/workframe-ui/public/assets/channel-CtFV3sE3.js +0 -1
  87. package/workframe-ui/public/assets/chunk-QZHKN3VN-B1g7l1_B.js +0 -1
  88. package/workframe-ui/public/assets/chunk-WU5MYG2G-B_qfZ6QP.js +0 -1
  89. package/workframe-ui/public/assets/classDiagram-4FO5ZUOK-CJoeCNq6.js +0 -1
  90. package/workframe-ui/public/assets/classDiagram-v2-Q7XG4LA2-CJoeCNq6.js +0 -1
  91. package/workframe-ui/public/assets/eventmodeling-FCH6USID-Bw910jho.js +0 -1
  92. package/workframe-ui/public/assets/index-DHLQNAXd.js +0 -129
  93. package/workframe-ui/public/assets/stateDiagram-v2-BHNVJYJU-Dn0CDWJD.js +0 -1
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  Published on npm as **create-workframe**.
4
4
 
5
5
  ```bash
6
- npx create-workframe@0.1.6 MyProject
6
+ npx create-workframe@0.1.9 MyProject
7
7
  ```
8
8
 
9
9
  Scaffolds an isolated Workframe + Hermes project on Windows, macOS, and Linux.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-workframe",
3
- "version": "0.1.7",
3
+ "version": "0.1.9",
4
4
  "description": "Scaffold a Workframe + Hermes workspace with guided onboarding",
5
5
  "type": "module",
6
6
  "bin": {
@@ -43,6 +43,60 @@ _wf_sync_tree() {
43
43
  cp -a "${src}/." "${dest}/"
44
44
  }
45
45
 
46
+ _wf_sync_from_pack_dir() {
47
+ local pkg="$1"
48
+ if [[ -d "$pkg/workframe-api" ]]; then
49
+ echo "Syncing workframe-api -> $API_DIR"
50
+ _wf_sync_tree "$pkg/workframe-api" "$API_DIR"
51
+ fi
52
+ if [[ -d "$pkg/workframe-supervisor" ]]; then
53
+ echo "Syncing workframe-supervisor -> $SUP_DIR"
54
+ _wf_sync_tree "$pkg/workframe-supervisor" "$SUP_DIR"
55
+ fi
56
+ if [[ -d "$pkg/workframe-ui/public" ]]; then
57
+ echo "Syncing workframe-ui/public -> $UI_DIR"
58
+ _wf_sync_tree "$pkg/workframe-ui/public" "$UI_DIR"
59
+ fi
60
+ for script in apply-update-hermes.sh apply-update-workframe.sh restart-gateway-hermes.sh compose-docker-host.sh update-hermes.sh; do
61
+ if [[ -f "$pkg/scripts/$script" ]]; then
62
+ cp -a "$pkg/scripts/$script" "$SCRIPTS_DIR/$script"
63
+ chmod +x "$SCRIPTS_DIR/$script" 2>/dev/null || true
64
+ fi
65
+ done
66
+ }
67
+
68
+ _wf_apply_npm_tarball() {
69
+ local tarball="$1"
70
+ local ver="${2:-latest}"
71
+ if ! _wf_npm_integrity_ok "$tarball" "$NPM_PACKAGE" "$ver"; then
72
+ echo "integrity mismatch for ${NPM_PACKAGE}@${ver}" >&2
73
+ exit 1
74
+ fi
75
+ echo "integrity ok: ${NPM_PACKAGE}@${ver}"
76
+ local extract_dir
77
+ extract_dir="$(mktemp -d)"
78
+ tar -xf "$tarball" -C "$extract_dir"
79
+ _wf_sync_from_pack_dir "$extract_dir/package"
80
+ rm -rf "$extract_dir"
81
+ }
82
+
83
+ _wf_record_package_version() {
84
+ local ver="$1"
85
+ [[ -n "$ver" ]] || return 0
86
+ mkdir -p "$API_DIR/data"
87
+ printf '%s\n' "$ver" > "$API_DIR/data/package-version"
88
+ if [[ -f "$PROJECT_ROOT/workframe-manifest.json" ]] && command -v python3 >/dev/null 2>&1; then
89
+ python3 -c 'import json, sys
90
+ from pathlib import Path
91
+ p = Path(sys.argv[1])
92
+ ver = sys.argv[2]
93
+ data = json.loads(p.read_text(encoding="utf-8"))
94
+ data["package_version"] = ver
95
+ data["generator"] = f"create-workframe@{ver}"
96
+ p.write_text(json.dumps(data, indent=2) + "\n", encoding="utf-8")' "$PROJECT_ROOT/workframe-manifest.json" "$ver"
97
+ fi
98
+ }
99
+
46
100
  _wf_install_paths() {
47
101
  local root="$1"
48
102
  if [[ -d "$root/services/workframe-api" ]]; then
@@ -88,8 +142,12 @@ echo "Preserves: Agents/, Files/, .env, workframe-api/data, gateway/Hermes profi
88
142
 
89
143
  TARGET_VERSION="${WORKFRAME_UPDATE_VERSION:-}"
90
144
  NPM_PACKAGE="${WORKFRAME_NPM_PACKAGE:-create-workframe}"
145
+ PREFETCH_TARBALL="${WORKFRAME_UPDATE_TARBALL:-}"
91
146
 
92
- if [[ "${WORKFRAME_UPDATE_SKIP_NPM:-1}" == "1" ]] && [[ "${WORKFRAME_UPDATE_ALLOW_NPM:-}" != "1" ]]; then
147
+ if [[ -n "$PREFETCH_TARBALL" && -f "$PREFETCH_TARBALL" ]]; then
148
+ echo "Applying API-prefetched tarball: $PREFETCH_TARBALL"
149
+ _wf_apply_npm_tarball "$PREFETCH_TARBALL" "${TARGET_VERSION:-latest}"
150
+ elif [[ "${WORKFRAME_UPDATE_SKIP_NPM:-1}" == "1" ]] && [[ "${WORKFRAME_UPDATE_ALLOW_NPM:-}" != "1" ]]; then
93
151
  echo "Skipping npm template sync (WORKFRAME_UPDATE_SKIP_NPM=1; set WORKFRAME_UPDATE_ALLOW_NPM=1 to fetch)"
94
152
  elif command -v npm >/dev/null 2>&1; then
95
153
  if [[ "${WORKFRAME_UPDATE_ALLOW_NPM:-}" == "1" ]] && [[ -z "$TARGET_VERSION" ]]; then
@@ -99,36 +157,16 @@ elif command -v npm >/dev/null 2>&1; then
99
157
  TMP="$(mktemp -d)"
100
158
  trap 'rm -rf "$TMP"' EXIT
101
159
  echo "Fetching ${NPM_PACKAGE}@${TARGET_VERSION:-latest} from npm..."
102
- (cd "$TMP" && npm pack "${NPM_PACKAGE}@${TARGET_VERSION:-latest}" --silent)
160
+ if ! (cd "$TMP" && npm pack "${NPM_PACKAGE}@${TARGET_VERSION:-latest}" --silent); then
161
+ echo "npm pack failed (supervisor control-net has no registry access — use API prefetch)" >&2
162
+ exit 1
163
+ fi
103
164
  TARBALL="$(ls -1 "$TMP"/${NPM_PACKAGE}-*.tgz 2>/dev/null | head -n1 || true)"
104
165
  if [[ -n "$TARBALL" ]]; then
105
- if ! _wf_npm_integrity_ok "$TARBALL" "$NPM_PACKAGE" "${TARGET_VERSION:-latest}"; then
106
- echo "integrity mismatch for ${NPM_PACKAGE}@${TARGET_VERSION:-latest}" >&2
107
- exit 1
108
- fi
109
- echo "integrity ok: ${NPM_PACKAGE}@${TARGET_VERSION:-latest}"
110
- tar -xf "$TARBALL" -C "$TMP"
111
- PKG="$TMP/package"
112
- if [[ -d "$PKG/workframe-api" ]]; then
113
- echo "Syncing workframe-api -> $API_DIR"
114
- _wf_sync_tree "$PKG/workframe-api" "$API_DIR"
115
- fi
116
- if [[ -d "$PKG/workframe-supervisor" ]]; then
117
- echo "Syncing workframe-supervisor -> $SUP_DIR"
118
- _wf_sync_tree "$PKG/workframe-supervisor" "$SUP_DIR"
119
- fi
120
- if [[ -d "$PKG/workframe-ui/public" ]]; then
121
- echo "Syncing workframe-ui/public -> $UI_DIR"
122
- _wf_sync_tree "$PKG/workframe-ui/public" "$UI_DIR"
123
- fi
124
- for script in apply-update-hermes.sh apply-update-workframe.sh restart-gateway-hermes.sh compose-docker-host.sh update-hermes.sh; do
125
- if [[ -f "$PKG/scripts/$script" ]]; then
126
- cp -a "$PKG/scripts/$script" "$SCRIPTS_DIR/$script"
127
- chmod +x "$SCRIPTS_DIR/$script" 2>/dev/null || true
128
- fi
129
- done
166
+ _wf_apply_npm_tarball "$TARBALL" "${TARGET_VERSION:-latest}"
130
167
  else
131
- echo "npm pack produced no tarball — skipping template sync"
168
+ echo "npm pack produced no tarball — skipping template sync" >&2
169
+ exit 1
132
170
  fi
133
171
  else
134
172
  echo "Skipping npm template sync (npm missing or WORKFRAME_UPDATE_SKIP_NPM=1)"
@@ -144,4 +182,6 @@ elif workframe_compose config --services 2>/dev/null | grep -qx workframe; then
144
182
  workframe_compose up -d --no-deps workframe || workframe_compose restart workframe || true
145
183
  fi
146
184
 
185
+ _wf_record_package_version "${TARGET_VERSION:-}"
186
+
147
187
  echo "=== Workframe update complete ==="
@@ -6,12 +6,18 @@ workframe_compose_prepare() {
6
6
  compose_cd=""
7
7
  compose_files=()
8
8
 
9
- # Host-bindings overlay: docker.sock apply from supervisor uses WORKFRAME_HOST_* paths.
9
+ # Host-bindings overlay: absolute WORKFRAME_HOST_* paths for docker.sock on the real host.
10
+ # Skip inside supervisor when only the /compose bind mount is visible — host paths become
11
+ # /compose/D:/... and break build contexts.
10
12
  if [[ -n "${WORKFRAME_HOST_COMPOSE_DIR:-}" && -n "${WORKFRAME_COMPOSE_DIR:-}" \
11
13
  && -f "${WORKFRAME_COMPOSE_DIR}/docker-compose.yml" \
12
14
  && -f "${WORKFRAME_COMPOSE_DIR}/docker-compose.host-bindings.yml" ]]; then
13
15
  compose_cd="${WORKFRAME_COMPOSE_DIR}"
14
- compose_files=(-f docker-compose.yml -f docker-compose.host-bindings.yml)
16
+ if [[ -d "${WORKFRAME_HOST_COMPOSE_DIR}" ]]; then
17
+ compose_files=(-f docker-compose.yml -f docker-compose.host-bindings.yml)
18
+ else
19
+ compose_files=(-f docker-compose.yml)
20
+ fi
15
21
  return 0
16
22
  fi
17
23
 
@@ -0,0 +1,4 @@
1
+ data/
2
+ __pycache__/
3
+ *.pyc
4
+ .pytest_cache/
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@workframe/workframe-api",
3
- "version": "0.1.7",
3
+ "version": "0.1.9",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "scripts": {