@smartmemory/compose 0.1.33-beta → 0.1.35-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 (67) hide show
  1. package/README.md +42 -0
  2. package/bin/compose.js +22 -4
  3. package/dist/assets/{App-1c_7rycT.js → App-DMCO9aNs.js} +5 -5
  4. package/dist/assets/{arc-5LGcKaXC.js → arc-DsXb95RZ.js} +1 -1
  5. package/dist/assets/{architectureDiagram-3BPJPVTR-BGsvZBSe.js → architectureDiagram-3BPJPVTR-BaBYippI.js} +1 -1
  6. package/dist/assets/{blockDiagram-GPEHLZMM-CppawQ7y.js → blockDiagram-GPEHLZMM-HwB_eL3_.js} +1 -1
  7. package/dist/assets/{c4Diagram-AAUBKEIU-u6006T49.js → c4Diagram-AAUBKEIU-CPSXghc8.js} +1 -1
  8. package/dist/assets/channel-TOlxWxU-.js +1 -0
  9. package/dist/assets/{chunk-2J33WTMH-VIEW3rXo.js → chunk-2J33WTMH-CCN3bc9J.js} +1 -1
  10. package/dist/assets/{chunk-4BX2VUAB-NhdSQDlD.js → chunk-4BX2VUAB-DuqFxpoV.js} +1 -1
  11. package/dist/assets/{chunk-55IACEB6-BmobEJTk.js → chunk-55IACEB6-DT20mkDV.js} +1 -1
  12. package/dist/assets/{chunk-727SXJPM-CkHPoJZX.js → chunk-727SXJPM-ByMH6Qvp.js} +1 -1
  13. package/dist/assets/{chunk-AQP2D5EJ-DhlFWYJI.js → chunk-AQP2D5EJ-CLgYtOHw.js} +1 -1
  14. package/dist/assets/{chunk-FMBD7UC4-Dzli17sA.js → chunk-FMBD7UC4-BXWmTsAA.js} +1 -1
  15. package/dist/assets/{chunk-ND2GUHAM-BZM0pKix.js → chunk-ND2GUHAM-C2WgVbpE.js} +1 -1
  16. package/dist/assets/{chunk-QZHKN3VN-Bw_VU3w3.js → chunk-QZHKN3VN-DFuQRJeh.js} +1 -1
  17. package/dist/assets/classDiagram-4FO5ZUOK-DZsvwI1V.js +1 -0
  18. package/dist/assets/classDiagram-v2-Q7XG4LA2-DZsvwI1V.js +1 -0
  19. package/dist/assets/{cose-bilkent-S5V4N54A-CUhMB816.js → cose-bilkent-S5V4N54A-CdyvK5N2.js} +1 -1
  20. package/dist/assets/{dagre-BM42HDAG-DaUl17l5.js → dagre-BM42HDAG-Drkta_n5.js} +1 -1
  21. package/dist/assets/{diagram-2AECGRRQ-CPZwMXfB.js → diagram-2AECGRRQ-BRiBkuu5.js} +1 -1
  22. package/dist/assets/{diagram-5GNKFQAL-B9-N5E5R.js → diagram-5GNKFQAL-IrSBDK26.js} +1 -1
  23. package/dist/assets/{diagram-KO2AKTUF-CkfEzzGz.js → diagram-KO2AKTUF-BUktYepH.js} +1 -1
  24. package/dist/assets/{diagram-LMA3HP47-DLAWiWIJ.js → diagram-LMA3HP47-B5erGOiF.js} +1 -1
  25. package/dist/assets/{diagram-OG6HWLK6-DTCE5jRG.js → diagram-OG6HWLK6-5KoSfwod.js} +1 -1
  26. package/dist/assets/{erDiagram-TEJ5UH35-BCIuV-ft.js → erDiagram-TEJ5UH35-CXSf-i6t.js} +1 -1
  27. package/dist/assets/{flowDiagram-I6XJVG4X-DmztP2OP.js → flowDiagram-I6XJVG4X-DiwEgd9q.js} +1 -1
  28. package/dist/assets/{ganttDiagram-6RSMTGT7-CXZwtSzf.js → ganttDiagram-6RSMTGT7-zQ94YEl2.js} +1 -1
  29. package/dist/assets/{gitGraphDiagram-PVQCEYII-XDMhXGQ7.js → gitGraphDiagram-PVQCEYII-CWNWantF.js} +1 -1
  30. package/dist/assets/{index-CCu-56GD.js → index-CyFM4bTc.js} +2 -2
  31. package/dist/assets/{infoDiagram-5YYISTIA-Da1XvUtC.js → infoDiagram-5YYISTIA-BcnrgEm6.js} +1 -1
  32. package/dist/assets/{ishikawaDiagram-YF4QCWOH-DTw3_1vI.js → ishikawaDiagram-YF4QCWOH-BRzURsJQ.js} +1 -1
  33. package/dist/assets/{journeyDiagram-JHISSGLW-1q57kJBE.js → journeyDiagram-JHISSGLW-CdwMwMPo.js} +1 -1
  34. package/dist/assets/{kanban-definition-UN3LZRKU-CHEt8drj.js → kanban-definition-UN3LZRKU-Difj4Zd-.js} +1 -1
  35. package/dist/assets/{katex-CQk2-UhE.js → katex-C5jXJg4s.js} +3 -3
  36. package/dist/assets/{linear-Dm9uGrY9.js → linear-CKwgBFBW.js} +1 -1
  37. package/dist/assets/{mindmap-definition-RKZ34NQL-AfCfq9He.js → mindmap-definition-RKZ34NQL-C2aCD1L4.js} +1 -1
  38. package/dist/assets/{pieDiagram-4H26LBE5-BwZQV6vN.js → pieDiagram-4H26LBE5-C9qGrfV0.js} +1 -1
  39. package/dist/assets/{quadrantDiagram-W4KKPZXB-BSH6R7JT.js → quadrantDiagram-W4KKPZXB-COA0Z2JV.js} +1 -1
  40. package/dist/assets/{requirementDiagram-4Y6WPE33-DgXRRUBB.js → requirementDiagram-4Y6WPE33-BJCU8yFE.js} +1 -1
  41. package/dist/assets/{sankeyDiagram-5OEKKPKP-zwgrKh_8.js → sankeyDiagram-5OEKKPKP-vYzK7FJ6.js} +1 -1
  42. package/dist/assets/{sequenceDiagram-3UESZ5HK-CCbQVXMX.js → sequenceDiagram-3UESZ5HK-Bkh_RWpN.js} +1 -1
  43. package/dist/assets/{stateDiagram-AJRCARHV-BIBvILDx.js → stateDiagram-AJRCARHV-BlUsbYTW.js} +1 -1
  44. package/dist/assets/stateDiagram-v2-BHNVJYJU-_AUWPuja.js +1 -0
  45. package/dist/assets/{timeline-definition-PNZ67QCA-tTCXjToz.js → timeline-definition-PNZ67QCA-DuYEZwxg.js} +1 -1
  46. package/dist/assets/{vennDiagram-CIIHVFJN-Bxb5N93O.js → vennDiagram-CIIHVFJN-D9a3Q3Ni.js} +1 -1
  47. package/dist/assets/{wardley-L42UT6IY-Dw-_rF2D.js → wardley-L42UT6IY-h2fQnc_J.js} +1 -1
  48. package/dist/assets/{wardleyDiagram-YWT4CUSO-rMkJu1Qs.js → wardleyDiagram-YWT4CUSO-C-_dzSY5.js} +1 -1
  49. package/dist/assets/{xychartDiagram-2RQKCTM6-B_CW8fFS.js → xychartDiagram-2RQKCTM6-CKxMIB7j.js} +1 -1
  50. package/dist/index.html +1 -1
  51. package/lib/build.js +60 -13
  52. package/lib/changelog-writer.js +111 -83
  53. package/lib/completion-writer.js +26 -9
  54. package/lib/feature-writer.js +62 -38
  55. package/lib/roadmap-gen.js +41 -14
  56. package/lib/tracker/cli.js +31 -0
  57. package/lib/tracker/factory.js +93 -0
  58. package/lib/tracker/github-api.js +115 -0
  59. package/lib/tracker/github-provider.js +641 -0
  60. package/lib/tracker/local-provider.js +202 -0
  61. package/lib/tracker/provider.js +40 -0
  62. package/lib/tracker/sync-engine.js +131 -0
  63. package/package.json +3 -2
  64. package/dist/assets/channel-9SpKIWte.js +0 -1
  65. package/dist/assets/classDiagram-4FO5ZUOK-1x8GC0fS.js +0 -1
  66. package/dist/assets/classDiagram-v2-Q7XG4LA2-1x8GC0fS.js +0 -1
  67. package/dist/assets/stateDiagram-v2-BHNVJYJU-CpvhwvDI.js +0 -1
package/README.md CHANGED
@@ -82,6 +82,48 @@ Check what you're running:
82
82
  compose --version
83
83
  ```
84
84
 
85
+ ## Tracker providers
86
+
87
+ Compose can persist feature data to different backends via the `tracker` block in `.compose/compose.json`.
88
+
89
+ **Default (local) — zero configuration required:**
90
+
91
+ ```json
92
+ { "tracker": { "provider": "local" } }
93
+ ```
94
+
95
+ `local` is the default when no `tracker` block is present. All writes go to the filesystem exactly as before — no behavior change.
96
+
97
+ **GitHub provider:**
98
+
99
+ ```json
100
+ {
101
+ "tracker": {
102
+ "provider": "github",
103
+ "github": {
104
+ "repo": "owner/repo",
105
+ "projectNumber": 42,
106
+ "branch": "main",
107
+ "roadmapPath": "ROADMAP.md",
108
+ "changelogPath": "CHANGELOG.md",
109
+ "cacheTtlSeconds": 300,
110
+ "auth": { "tokenEnv": "GITHUB_TOKEN" }
111
+ }
112
+ }
113
+ }
114
+ ```
115
+
116
+ The GitHub provider syncs features to **Issues** (one per feature), **Projects v2** (`Status` custom field), and **Contents API** (roadmap + changelog files). Requires a token in the named env var (or `gh auth login` fallback) with `repo` and `project` scopes.
117
+
118
+ CLI verbs:
119
+
120
+ ```bash
121
+ compose tracker status # show provider health + pending op-log + conflict ledger
122
+ compose tracker sync # reconcile op-log against remote provider
123
+ ```
124
+
125
+ See [docs/configuration.md](docs/configuration.md) for the full `tracker` config reference.
126
+
85
127
  ## Documentation
86
128
 
87
129
  Topic-scoped reference:
package/bin/compose.js CHANGED
@@ -340,7 +340,7 @@ async function runInit(flags) {
340
340
  let hasStratum = !noStratum && spawnSync('which', ['stratum-mcp'], { encoding: 'utf-8' }).status === 0
341
341
  if (!noStratum && !hasStratum) {
342
342
  console.log('stratum-mcp not found — installing via pip...')
343
- const pipResult = spawnSync('pip', ['install', 'stratum'], {
343
+ const pipResult = spawnSync('pip', ['install', 'stratum-mcp'], {
344
344
  stdio: 'inherit',
345
345
  encoding: 'utf-8',
346
346
  })
@@ -350,11 +350,13 @@ async function runInit(flags) {
350
350
  if (hasStratum) {
351
351
  console.log('stratum-mcp installed successfully')
352
352
  } else {
353
- console.warn('Warning: pip install stratum succeeded but stratum-mcp not found on PATH')
353
+ console.warn('Warning: pip install stratum-mcp succeeded but stratum-mcp not found on PATH')
354
+ console.warn(' The binary may live in a pyenv version dir not on $PATH.')
355
+ console.warn(' Try: ln -sf "$(python -c \'import sys,os; print(os.path.join(sys.prefix, "bin", "stratum-mcp"))\')" ~/.local/bin/stratum-mcp')
354
356
  }
355
357
  } else {
356
- console.warn('Warning: pip install stratum failed — Stratum will be disabled')
357
- console.warn(' Install manually: pip install stratum')
358
+ console.warn('Warning: pip install stratum-mcp failed — Stratum will be disabled')
359
+ console.warn(' Install manually: pip install stratum-mcp (requires Python >= 3.11)')
358
360
  }
359
361
  }
360
362
  const hasLifecycle = !noLifecycle
@@ -2672,6 +2674,22 @@ if (cmd === 'build') {
2672
2674
  process.exit(1)
2673
2675
  }
2674
2676
 
2677
+ } else if (cmd === 'tracker') {
2678
+ // ---------------------------------------------------------------------------
2679
+ // compose tracker status — print provider name, canonical, pendingOps, conflicts, mixedSources
2680
+ // compose tracker sync — flush op-log and report drained/quarantined counts
2681
+ // COMP-TRACKER-PROVIDER T18
2682
+ // ---------------------------------------------------------------------------
2683
+ try {
2684
+ const { runTrackerCli } = await import('../lib/tracker/cli.js')
2685
+ const result = await runTrackerCli(process.cwd(), args)
2686
+ console.log(result.output)
2687
+ if (result.exitCode !== 0) process.exit(result.exitCode)
2688
+ } catch (err) {
2689
+ console.error(`tracker: ${err.message}`)
2690
+ process.exit(1)
2691
+ }
2692
+
2675
2693
  } else {
2676
2694
  console.error(`Unknown command: ${cmd}`)
2677
2695
  process.exit(1)