@smartmemory/compose 0.2.51 → 0.2.52-beta

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 (64) hide show
  1. package/dist/assets/App-Ddhfx18X.js +889 -0
  2. package/dist/assets/{_baseUniq-CsOHc_iS.js → _baseUniq-CoEVVYyC.js} +1 -1
  3. package/dist/assets/{arc-BXht3LyE.js → arc-DFnGxuCB.js} +1 -1
  4. package/dist/assets/{architectureDiagram-Q4EWVU46-BV1r86-w.js → architectureDiagram-Q4EWVU46-66rx01Tn.js} +1 -1
  5. package/dist/assets/{blockDiagram-DXYQGD6D-BgcMJjAR.js → blockDiagram-DXYQGD6D-AE5PKSak.js} +1 -1
  6. package/dist/assets/{c4Diagram-AHTNJAMY-nBIRLJTv.js → c4Diagram-AHTNJAMY-DtDSNlOX.js} +1 -1
  7. package/dist/assets/channel-CScyWprq.js +1 -0
  8. package/dist/assets/{chunk-4BX2VUAB-CNmGyhrp.js → chunk-4BX2VUAB-oXU2npoL.js} +1 -1
  9. package/dist/assets/{chunk-4TB4RGXK-MLT7I7w4.js → chunk-4TB4RGXK-5w2lZAjW.js} +1 -1
  10. package/dist/assets/{chunk-55IACEB6-D8KuKVLa.js → chunk-55IACEB6-BEEk2FdH.js} +1 -1
  11. package/dist/assets/{chunk-EDXVE4YY-TPlt1bS2.js → chunk-EDXVE4YY-Bse2kdRh.js} +1 -1
  12. package/dist/assets/{chunk-FMBD7UC4-tYY8xcjr.js → chunk-FMBD7UC4-BAa7Edp6.js} +1 -1
  13. package/dist/assets/{chunk-OYMX7WX6-yBPwT1AT.js → chunk-OYMX7WX6-CGr_YiAc.js} +1 -1
  14. package/dist/assets/{chunk-QZHKN3VN-B4Wfybww.js → chunk-QZHKN3VN-BMWFLZ8t.js} +1 -1
  15. package/dist/assets/{chunk-YZCP3GAM-DE6_5aqh.js → chunk-YZCP3GAM-CqjNXooj.js} +1 -1
  16. package/dist/assets/classDiagram-6PBFFD2Q-DibVYYdr.js +1 -0
  17. package/dist/assets/classDiagram-v2-HSJHXN6E-DibVYYdr.js +1 -0
  18. package/dist/assets/clone-ZMALIFmw.js +1 -0
  19. package/dist/assets/{cose-bilkent-S5V4N54A-DzzRyJtB.js → cose-bilkent-S5V4N54A-NYnH3mVW.js} +1 -1
  20. package/dist/assets/{dagre-KV5264BT-CTcTVGdU.js → dagre-KV5264BT--mrfaTHR.js} +1 -1
  21. package/dist/assets/{diagram-5BDNPKRD-qR6mc8kJ.js → diagram-5BDNPKRD-DjXvyFzh.js} +1 -1
  22. package/dist/assets/{diagram-G4DWMVQ6-CUcGXyNb.js → diagram-G4DWMVQ6-BrrexEvm.js} +1 -1
  23. package/dist/assets/{diagram-MMDJMWI5-B68cPonH.js → diagram-MMDJMWI5-D3Q0OT2M.js} +1 -1
  24. package/dist/assets/{diagram-TYMM5635-q8Id8eFG.js → diagram-TYMM5635-DKTntmxE.js} +1 -1
  25. package/dist/assets/{erDiagram-SMLLAGMA-CtxJi57K.js → erDiagram-SMLLAGMA-BWbR0dPj.js} +1 -1
  26. package/dist/assets/{flowDiagram-DWJPFMVM-BzzO4JYU.js → flowDiagram-DWJPFMVM-Dj5M5XaY.js} +1 -1
  27. package/dist/assets/{ganttDiagram-T4ZO3ILL-Dn0wIyhR.js → ganttDiagram-T4ZO3ILL-DKppFh_5.js} +1 -1
  28. package/dist/assets/{gitGraphDiagram-UUTBAWPF-tnNFXfMM.js → gitGraphDiagram-UUTBAWPF-9xQ9O25V.js} +1 -1
  29. package/dist/assets/{graph-Tq_bs_r0.js → graph-Cgmhvu1T.js} +1 -1
  30. package/dist/assets/index-BxRamj_i.css +1 -0
  31. package/dist/assets/{index-8UhRLbGq.js → index-D8uDfn8y.js} +2 -2
  32. package/dist/assets/{infoDiagram-42DDH7IO-BXLvLeS0.js → infoDiagram-42DDH7IO-DQYWVzVN.js} +1 -1
  33. package/dist/assets/{ishikawaDiagram-UXIWVN3A-DWx-7BBy.js → ishikawaDiagram-UXIWVN3A-CK2IFFAP.js} +1 -1
  34. package/dist/assets/{journeyDiagram-VCZTEJTY-C42hXNha.js → journeyDiagram-VCZTEJTY-DAH5Stkf.js} +1 -1
  35. package/dist/assets/{kanban-definition-6JOO6SKY-CEq930ew.js → kanban-definition-6JOO6SKY-Bi0aCqkv.js} +1 -1
  36. package/dist/assets/{layout-qtUgN9BC.js → layout-DN13RkA1.js} +1 -1
  37. package/dist/assets/{linear-D158F7OT.js → linear-ClGEGlS2.js} +1 -1
  38. package/dist/assets/{min-hESxN-c0.js → min-CXr-fUFS.js} +1 -1
  39. package/dist/assets/{mindmap-definition-QFDTVHPH-d9SSh2nG.js → mindmap-definition-QFDTVHPH-Wjr-PgC6.js} +1 -1
  40. package/dist/assets/{pieDiagram-DEJITSTG-gglmeMav.js → pieDiagram-DEJITSTG-CVipbIlr.js} +1 -1
  41. package/dist/assets/{quadrantDiagram-34T5L4WZ-CqFC_htU.js → quadrantDiagram-34T5L4WZ-CHJFyhm-.js} +1 -1
  42. package/dist/assets/{requirementDiagram-MS252O5E-B1ZFIotK.js → requirementDiagram-MS252O5E-CU9Rlyq5.js} +1 -1
  43. package/dist/assets/{sankeyDiagram-XADWPNL6-BvItvZt5.js → sankeyDiagram-XADWPNL6-BSULeqST.js} +1 -1
  44. package/dist/assets/{sequenceDiagram-FGHM5R23-CAIn5Z3U.js → sequenceDiagram-FGHM5R23-CCOKXvjj.js} +1 -1
  45. package/dist/assets/{stateDiagram-FHFEXIEX-CyJrGzib.js → stateDiagram-FHFEXIEX-B91gKA7Q.js} +1 -1
  46. package/dist/assets/stateDiagram-v2-QKLJ7IA2-Dc8ur9ta.js +1 -0
  47. package/dist/assets/{timeline-definition-GMOUNBTQ-k_0vJQAK.js → timeline-definition-GMOUNBTQ-C8SZmaLp.js} +1 -1
  48. package/dist/assets/{vennDiagram-DHZGUBPP-TZAW60b0.js → vennDiagram-DHZGUBPP-YvEPDlsM.js} +1 -1
  49. package/dist/assets/{wardley-RL74JXVD-DzQEoG6X.js → wardley-RL74JXVD-TMBUq_w1.js} +1 -1
  50. package/dist/assets/{wardleyDiagram-NUSXRM2D-BAoVVIjZ.js → wardleyDiagram-NUSXRM2D-DzEkPrri.js} +1 -1
  51. package/dist/assets/{xychartDiagram-5P7HB3ND-CynkZcUb.js → xychartDiagram-5P7HB3ND-BIiCeiYk.js} +1 -1
  52. package/dist/index.html +2 -2
  53. package/package.json +1 -1
  54. package/scripts/release-manual.sh +98 -0
  55. package/server/file-watcher.js +33 -0
  56. package/server/index.js +7 -0
  57. package/server/pipeline-routes.js +773 -3
  58. package/dist/assets/App-CT0vXPgd.js +0 -724
  59. package/dist/assets/channel-Dd4XaiYv.js +0 -1
  60. package/dist/assets/classDiagram-6PBFFD2Q-DshSQDF9.js +0 -1
  61. package/dist/assets/classDiagram-v2-HSJHXN6E-DshSQDF9.js +0 -1
  62. package/dist/assets/clone-CBsbNGAa.js +0 -1
  63. package/dist/assets/index-CRqB9els.css +0 -1
  64. package/dist/assets/stateDiagram-v2-QKLJ7IA2-DprhF_Ho.js +0 -1
@@ -0,0 +1,98 @@
1
+ #!/usr/bin/env bash
2
+ #
3
+ # Manual release for @smartmemory/compose — a stand-in for
4
+ # .github/workflows/{beta,publish}.yml while GitHub Actions is dormant.
5
+ #
6
+ # WHY: the smartmemory org's sole owner account (smartmem-dev) is suspended, so
7
+ # pushes by it don't trigger Actions. This reproduces the CI publish locally.
8
+ # DELETE this script once CI is restored (a non-frozen owner pushing, or an
9
+ # org-owned GitHub App). The CI workflows remain the source of truth.
10
+ #
11
+ # Usage:
12
+ # scripts/release-manual.sh beta # publish next X.Y.(Z+1)-beta to the `beta` tag
13
+ # scripts/release-manual.sh stable [X.Y.Z] # publish stable to `latest` + git tag + GH release
14
+ # scripts/release-manual.sh beta --dry-run # build + dry-run publish, no upload
15
+ # scripts/release-manual.sh stable --dry-run
16
+ #
17
+ # Requires: NPM_SM_TOKEN = npm granular token with "bypass 2FA" (the same token
18
+ # CI uses as the NPM_TOKEN secret). The token is written only to a
19
+ # temp npmrc (removed on exit) — never to ~/.npmrc, argv, or logs.
20
+ #
21
+ # Mirrors CI exactly except: no --provenance (needs CI OIDC) and tests are not
22
+ # re-run (run `npm test` yourself first if the tree changed since the last green).
23
+ set -euo pipefail
24
+
25
+ MODE="${1:-beta}"
26
+ ARG2="${2:-}"
27
+ DRY=""
28
+ for a in "$@"; do [ "$a" = "--dry-run" ] && DRY="--dry-run"; done
29
+
30
+ REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
31
+ cd "$REPO_ROOT"
32
+ PKG="@smartmemory/compose"
33
+
34
+ if [ -z "${NPM_SM_TOKEN:-}" ]; then
35
+ echo "ERROR: NPM_SM_TOKEN is not set (need an npm granular token with 'bypass 2FA')." >&2
36
+ exit 1
37
+ fi
38
+
39
+ TMPRC="$(mktemp)"
40
+ printf '//registry.npmjs.org/:_authToken=%s\nregistry=https://registry.npmjs.org/\n' "$NPM_SM_TOKEN" > "$TMPRC"
41
+ cleanup() { rm -f "$TMPRC"; git checkout -- package.json 2>/dev/null || true; }
42
+ trap cleanup EXIT
43
+
44
+ set_version() {
45
+ node -e "const fs=require('fs');const p=JSON.parse(fs.readFileSync('package.json','utf8'));p.version='$1';fs.writeFileSync('package.json',JSON.stringify(p,null,2)+'\n');"
46
+ }
47
+
48
+ ORIG_VERSION="$(node -p "require('./package.json').version")"
49
+ NPM_BETA="$(npm view "$PKG@beta" version 2>/dev/null || echo '')"
50
+
51
+ case "$MODE" in
52
+ beta)
53
+ NPM_BASE="${NPM_BETA%-beta}"; PKG_BASE="${ORIG_VERSION%-beta}"
54
+ if [ -n "$NPM_BETA" ] && [ "$(printf '%s\n' "$NPM_BASE" "$PKG_BASE" | sort -V | tail -n1)" = "$NPM_BASE" ]; then
55
+ BASE="$NPM_BASE"
56
+ else
57
+ BASE="$PKG_BASE"
58
+ fi
59
+ IFS=. read -r MA MI PA <<< "$BASE"
60
+ VERSION="${MA}.${MI}.$((PA+1))-beta"
61
+ TAG="beta"
62
+ ;;
63
+ stable)
64
+ if [ -n "$ARG2" ] && [ "$ARG2" != "--dry-run" ]; then
65
+ VERSION="$ARG2"
66
+ else
67
+ VERSION="${NPM_BETA%-beta}"; [ -z "$VERSION" ] && VERSION="${ORIG_VERSION%-beta}"
68
+ fi
69
+ if ! [[ "$VERSION" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
70
+ echo "ERROR: stable version must be X.Y.Z (got '$VERSION'). Pass it explicitly: stable 0.2.52" >&2
71
+ exit 1
72
+ fi
73
+ TAG="latest"
74
+ ;;
75
+ *)
76
+ echo "Usage: $0 {beta | stable [X.Y.Z]} [--dry-run]" >&2
77
+ exit 1
78
+ ;;
79
+ esac
80
+
81
+ echo ">> $MODE: $PKG@$VERSION -> dist-tag '$TAG' ${DRY:+[DRY-RUN]}"
82
+ set_version "$VERSION"
83
+ echo ">> build (vite)"; npm run build >/dev/null
84
+ echo ">> publish"
85
+ npm publish --access public --tag "$TAG" --ignore-scripts $DRY --userconfig "$TMPRC"
86
+
87
+ if [ "$MODE" = "stable" ] && [ -z "$DRY" ]; then
88
+ echo ">> git tag v$VERSION (+ push via origin SSH)"
89
+ git rev-parse "v$VERSION" >/dev/null 2>&1 || git tag "v$VERSION"
90
+ git push origin "v$VERSION" 2>&1 || echo " (tag push skipped — may already exist on origin)"
91
+ echo ">> GitHub release (best-effort; needs gh authed to an account that can write to the repo)"
92
+ gh release create "v$VERSION" --repo smartmemory/compose --title "v$VERSION" \
93
+ --notes "Stable release v$VERSION" --latest 2>&1 \
94
+ || echo " (release create failed — e.g. gh active account lacks repo access; create it manually if wanted)"
95
+ fi
96
+
97
+ echo ">> done. live dist-tags:"
98
+ npm view "$PKG" dist-tags --prefer-online 2>/dev/null || true
@@ -14,6 +14,24 @@ import { resolveDocsPathFromConfig, resolveFeaturesPathFromConfig } from '../lib
14
14
 
15
15
  const PROJECT_ROOT = getTargetRoot();
16
16
 
17
+ /**
18
+ * fs.watch fileFilter for the pipelines/ watch (COMP-PIPE-EDIT-6): only
19
+ * *.stratum.yaml files trigger a specChanged. `filename` is what fs.watch hands
20
+ * us (a name, possibly with a subdir prefix on recursive watches).
21
+ */
22
+ export function isStratumSpecFile(filename) {
23
+ return typeof filename === 'string' && filename.endsWith('.stratum.yaml');
24
+ }
25
+
26
+ /**
27
+ * Shape of the vision-WS `specChanged` broadcast (COMP-PIPE-EDIT-6). `file` is a
28
+ * BASENAME (editorSpecFile is a bare filename, so the store compares on basename);
29
+ * `path` carries the prefixed relative path for diagnostics.
30
+ */
31
+ export function buildSpecChangedMessage(file, relativePath) {
32
+ return { type: 'specChanged', file, path: relativePath };
33
+ }
34
+
17
35
  export class FileWatcherServer {
18
36
  constructor() {
19
37
  this.clients = new Set();
@@ -215,6 +233,21 @@ export class FileWatcherServer {
215
233
  }
216
234
  });
217
235
 
236
+ // Watch pipelines/ for *.stratum.yaml changes (COMP-PIPE-EDIT-6). A spec the
237
+ // pipeline editor has open can be edited externally (another writer, the user
238
+ // editing the file directly). The editor store lives on the VISION WS, not
239
+ // /ws/files, so emit a DEDICATED `specChanged` message via the onSpecChanged
240
+ // callback (wired in server/index.js to visionServer.broadcastMessage), NOT a
241
+ // `fileChanged` on this server's /ws/files. The payload carries `file` as a
242
+ // BASENAME because editorSpecFile is a bare filename (a prefixed relative path
243
+ // would never match the store's compare).
244
+ const pipelinesDir = path.join(PROJECT_ROOT, 'pipelines');
245
+ watchDir(pipelinesDir, 'pipelines', (relativePath, fullPath) => {
246
+ if (typeof this.onSpecChanged === 'function') {
247
+ this.onSpecChanged(buildSpecChangedMessage(path.basename(fullPath), relativePath));
248
+ }
249
+ }, isStratumSpecFile);
250
+
218
251
  // Watch .compose/data/ for active-build.json changes
219
252
  const self = this;
220
253
  const dataDir = path.join(PROJECT_ROOT, '.compose', 'data');
package/server/index.js CHANGED
@@ -231,6 +231,13 @@ fileWatcher.onBuildStateChanged = (state) => {
231
231
  }
232
232
  };
233
233
 
234
+ // Wire pipelines/*.stratum.yaml external changes → broadcast `specChanged` on
235
+ // the VISION WS (COMP-PIPE-EDIT-6 — the channel the pipeline editor store uses,
236
+ // not /ws/files). The message already carries { type:'specChanged', file, path }.
237
+ fileWatcher.onSpecChanged = (message) => {
238
+ visionServer.broadcastMessage(message);
239
+ };
240
+
234
241
  // ---------------------------------------------------------------------------
235
242
  // Static serving + SPA fallback (BOTH modes — additive)
236
243
  // Mounted AFTER all API routes so /api/* is never shadowed.