@smartmemory/compose 0.2.49-beta → 0.2.50-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.
- package/bin/compose.js +30 -18
- package/dist/assets/{App-DOerhoDp.js → App-Bxyif1yv.js} +53 -53
- package/dist/assets/{arc-B1TqAC_R.js → arc-DeHak63Z.js} +1 -1
- package/dist/assets/{architectureDiagram-3BPJPVTR-C4hfxNOw.js → architectureDiagram-3BPJPVTR-C5Nkyl9y.js} +1 -1
- package/dist/assets/{blockDiagram-GPEHLZMM-DRqkGncy.js → blockDiagram-GPEHLZMM-BilnUBG2.js} +1 -1
- package/dist/assets/{c4Diagram-AAUBKEIU-Dc6swoQo.js → c4Diagram-AAUBKEIU-BsFJmPuS.js} +1 -1
- package/dist/assets/channel-ZgbQ1k0u.js +1 -0
- package/dist/assets/{chunk-2J33WTMH-6HKDSnOw.js → chunk-2J33WTMH-AEu6HIoY.js} +1 -1
- package/dist/assets/{chunk-4BX2VUAB-CdqXgd68.js → chunk-4BX2VUAB-XO4S2_89.js} +1 -1
- package/dist/assets/{chunk-55IACEB6-D7VauOmU.js → chunk-55IACEB6-CtFSLInj.js} +1 -1
- package/dist/assets/{chunk-727SXJPM-CeKpXDif.js → chunk-727SXJPM-CZeBRpM9.js} +1 -1
- package/dist/assets/{chunk-AQP2D5EJ-y2XL-YHV.js → chunk-AQP2D5EJ-_vmxcBc4.js} +1 -1
- package/dist/assets/{chunk-FMBD7UC4-C1Z5m8DP.js → chunk-FMBD7UC4-BMGd_Y9a.js} +1 -1
- package/dist/assets/{chunk-ND2GUHAM-DmqZMEQe.js → chunk-ND2GUHAM-BlrOECEr.js} +1 -1
- package/dist/assets/{chunk-QZHKN3VN-DY9GU2uD.js → chunk-QZHKN3VN-DHhUJ8RK.js} +1 -1
- package/dist/assets/classDiagram-4FO5ZUOK-KXxOorUx.js +1 -0
- package/dist/assets/classDiagram-v2-Q7XG4LA2-KXxOorUx.js +1 -0
- package/dist/assets/{cose-bilkent-S5V4N54A-B34g9xzV.js → cose-bilkent-S5V4N54A-C3M0mZqk.js} +1 -1
- package/dist/assets/{dagre-BM42HDAG-klZ_GOcw.js → dagre-BM42HDAG-DJlm4fEk.js} +1 -1
- package/dist/assets/{diagram-2AECGRRQ-D0FmM6Wf.js → diagram-2AECGRRQ-BmcONQG5.js} +1 -1
- package/dist/assets/{diagram-5GNKFQAL-DYuhby6q.js → diagram-5GNKFQAL-5JbWGIwd.js} +1 -1
- package/dist/assets/{diagram-KO2AKTUF-CCtQZgal.js → diagram-KO2AKTUF-DAnIvyI0.js} +1 -1
- package/dist/assets/{diagram-LMA3HP47-Cd1OqEln.js → diagram-LMA3HP47-Bmh7tvmI.js} +1 -1
- package/dist/assets/{diagram-OG6HWLK6-CiJrhoxo.js → diagram-OG6HWLK6-hnHVMNnk.js} +1 -1
- package/dist/assets/{erDiagram-TEJ5UH35-C05_Iqmb.js → erDiagram-TEJ5UH35-AMDitV0b.js} +1 -1
- package/dist/assets/{flowDiagram-I6XJVG4X-lXpnb-Ch.js → flowDiagram-I6XJVG4X-C0t2ZGQv.js} +1 -1
- package/dist/assets/{ganttDiagram-6RSMTGT7-EPbL_2Hr.js → ganttDiagram-6RSMTGT7-BPlM-BEN.js} +1 -1
- package/dist/assets/{gitGraphDiagram-PVQCEYII-COCoF_vW.js → gitGraphDiagram-PVQCEYII-Lv_YTxnb.js} +1 -1
- package/dist/assets/index-COq21Zym.js +119 -0
- package/dist/assets/{infoDiagram-5YYISTIA-B1sJw6j5.js → infoDiagram-5YYISTIA-Dul1vdUm.js} +1 -1
- package/dist/assets/{ishikawaDiagram-YF4QCWOH-CgdsWdgu.js → ishikawaDiagram-YF4QCWOH-CCBwgjFs.js} +1 -1
- package/dist/assets/{journeyDiagram-JHISSGLW-CyvHmE3z.js → journeyDiagram-JHISSGLW-zUJN38EU.js} +1 -1
- package/dist/assets/{kanban-definition-UN3LZRKU-Bqjdyv0T.js → kanban-definition-UN3LZRKU-BNxWi-8J.js} +1 -1
- package/dist/assets/{linear-DecnRXf0.js → linear-CRH9b4g7.js} +1 -1
- package/dist/assets/{mindmap-definition-RKZ34NQL-DM1x9vNY.js → mindmap-definition-RKZ34NQL-DolYwq7Y.js} +1 -1
- package/dist/assets/{pieDiagram-4H26LBE5-CRtmCvwV.js → pieDiagram-4H26LBE5-oxNfr2TX.js} +1 -1
- package/dist/assets/{quadrantDiagram-W4KKPZXB-CsBLWg27.js → quadrantDiagram-W4KKPZXB-BmZCvD-z.js} +1 -1
- package/dist/assets/{requirementDiagram-4Y6WPE33-DD-Gg_y5.js → requirementDiagram-4Y6WPE33-DsXZ05jo.js} +1 -1
- package/dist/assets/{sankeyDiagram-5OEKKPKP-BPdMN8UU.js → sankeyDiagram-5OEKKPKP-DsnYaawP.js} +1 -1
- package/dist/assets/{sequenceDiagram-3UESZ5HK-D4AENdze.js → sequenceDiagram-3UESZ5HK-Dt5mu3g8.js} +1 -1
- package/dist/assets/{stateDiagram-AJRCARHV-DDplpCf_.js → stateDiagram-AJRCARHV-BFR5ZINQ.js} +1 -1
- package/dist/assets/stateDiagram-v2-BHNVJYJU-BDrQD8fR.js +1 -0
- package/dist/assets/{timeline-definition-PNZ67QCA-BPm2AEQj.js → timeline-definition-PNZ67QCA-Bvnhw58e.js} +1 -1
- package/dist/assets/{vennDiagram-CIIHVFJN-DQCDWwlj.js → vennDiagram-CIIHVFJN-5WnyjZqf.js} +1 -1
- package/dist/assets/{wardley-L42UT6IY-WERqOmJt.js → wardley-L42UT6IY-CTxW4xow.js} +1 -1
- package/dist/assets/{wardleyDiagram-YWT4CUSO-5teUSOiI.js → wardleyDiagram-YWT4CUSO-K8Y1EOvb.js} +1 -1
- package/dist/assets/{xychartDiagram-2RQKCTM6-Ba05SXXF.js → xychartDiagram-2RQKCTM6-BCShes6B.js} +1 -1
- package/dist/index.html +1 -1
- package/lib/build-all.js +2 -1
- package/lib/build.js +91 -5
- package/lib/checkpoint/checkpoint-writer.js +3 -2
- package/lib/completion-writer.js +38 -14
- package/lib/feature-json.js +14 -3
- package/lib/feature-validator.js +22 -9
- package/lib/feature-write-guard.js +5 -7
- package/lib/feature-writer.js +3 -3
- package/lib/followup-writer.js +2 -2
- package/lib/get-roadmap.js +2 -2
- package/lib/gsd.js +2 -1
- package/lib/ideabox.js +3 -2
- package/lib/journal-writer.js +3 -3
- package/lib/migrate-roadmap.js +2 -3
- package/lib/paths-core.js +47 -0
- package/lib/project-paths.js +46 -37
- package/lib/roadmap-gen.js +3 -4
- package/lib/roadmap-graph/collect.js +5 -5
- package/lib/roadmap-graph/index.js +2 -2
- package/lib/state-migrations.js +3 -3
- package/lib/tracker/local-provider.js +2 -2
- package/lib/triage.js +7 -5
- package/lib/xref-push.js +4 -4
- package/lib/xref-sync.js +4 -4
- package/package.json +1 -1
- package/server/design-routes.js +9 -4
- package/server/drift-axes.js +5 -3
- package/server/feature-scan.js +8 -2
- package/server/file-watcher.js +13 -7
- package/server/ideabox-routes.js +12 -11
- package/server/project-root.js +7 -4
- package/server/session-routes.js +2 -2
- package/server/stratum-sync.js +85 -9
- package/server/vision-routes.js +17 -2
- package/server/vision-server.js +4 -3
- package/server/vision-utils.js +23 -4
- package/dist/assets/channel-KsY1x-7s.js +0 -1
- package/dist/assets/classDiagram-4FO5ZUOK-zDEDoVPk.js +0 -1
- package/dist/assets/classDiagram-v2-Q7XG4LA2-zDEDoVPk.js +0 -1
- package/dist/assets/index-DlgxA8dX.js +0 -123
- package/dist/assets/stateDiagram-v2-BHNVJYJU-J4t9AVzF.js +0 -1
package/bin/compose.js
CHANGED
|
@@ -17,6 +17,7 @@ import { fileURLToPath } from 'url'
|
|
|
17
17
|
import { findProjectRoot } from '../server/find-root.js'
|
|
18
18
|
import { resolveWorkspace, getWorkspaceFlag } from '../lib/resolve-workspace.js'
|
|
19
19
|
import { resolvePort } from '../lib/resolve-port.js'
|
|
20
|
+
import { resolveRoadmapPath, resolveFeaturesPath, resolveContextPathFromConfig, resolveFeaturesPathFromConfig, resolveRoadmapPathFromConfig } from '../lib/project-paths.js'
|
|
20
21
|
|
|
21
22
|
const __dirname = dirname(fileURLToPath(import.meta.url))
|
|
22
23
|
const PACKAGE_ROOT = resolve(__dirname, '..')
|
|
@@ -412,6 +413,7 @@ async function runInit(flags, cwdOverride) {
|
|
|
412
413
|
},
|
|
413
414
|
paths: {
|
|
414
415
|
docs: 'docs',
|
|
416
|
+
roadmap: 'ROADMAP.md',
|
|
415
417
|
features: 'docs/features',
|
|
416
418
|
journal: 'docs/journal',
|
|
417
419
|
context: 'docs/context',
|
|
@@ -447,8 +449,9 @@ async function runInit(flags, cwdOverride) {
|
|
|
447
449
|
}
|
|
448
450
|
}
|
|
449
451
|
|
|
450
|
-
// 5b. Scaffold docs/context/ with ambient context templates
|
|
451
|
-
|
|
452
|
+
// 5b. Scaffold docs/context/ with ambient context templates.
|
|
453
|
+
// COMP-PATHS-EXTERNAL: resolve from the in-memory config (may be relocated).
|
|
454
|
+
const contextDir = resolveContextPathFromConfig(cwd, config)
|
|
452
455
|
mkdirSync(contextDir, { recursive: true })
|
|
453
456
|
const contextTemplates = {
|
|
454
457
|
'tech-stack.md': '# Tech Stack\n\nDescribe your technology stack here.\n',
|
|
@@ -464,8 +467,8 @@ async function runInit(flags, cwdOverride) {
|
|
|
464
467
|
}
|
|
465
468
|
|
|
466
469
|
// 5c. Scaffold docs/product/ideabox.md if absent
|
|
467
|
-
const
|
|
468
|
-
const ideaboxDest =
|
|
470
|
+
const { resolveIdeaboxPath: _resolveIdeaboxPathInit } = await import('../lib/project-paths.js')
|
|
471
|
+
const ideaboxDest = _resolveIdeaboxPathInit(cwd)
|
|
469
472
|
if (!existsSync(ideaboxDest)) {
|
|
470
473
|
mkdirSync(dirname(ideaboxDest), { recursive: true })
|
|
471
474
|
const { IDEABOX_TEMPLATE } = await import('../lib/ideabox.js')
|
|
@@ -513,8 +516,10 @@ async function runInit(flags, cwdOverride) {
|
|
|
513
516
|
}
|
|
514
517
|
}
|
|
515
518
|
|
|
516
|
-
// 7. Scaffold ROADMAP.md from template if absent
|
|
517
|
-
|
|
519
|
+
// 7. Scaffold ROADMAP.md from template if absent. COMP-PATHS-EXTERNAL:
|
|
520
|
+
// honor a configured (possibly relocated) paths.roadmap instead of always
|
|
521
|
+
// seeding <cwd>/ROADMAP.md. Byte-identical for the default.
|
|
522
|
+
const roadmapDest = resolveRoadmapPathFromConfig(cwd, config)
|
|
518
523
|
if (!existsSync(roadmapDest)) {
|
|
519
524
|
const roadmapSrc = join(PACKAGE_ROOT, 'templates', 'ROADMAP.md')
|
|
520
525
|
if (existsSync(roadmapSrc)) {
|
|
@@ -942,10 +947,12 @@ if (cmd === 'feature') {
|
|
|
942
947
|
|
|
943
948
|
let config = {}
|
|
944
949
|
try { config = JSON.parse(readFileSync(configPath, 'utf-8')) } catch {}
|
|
945
|
-
|
|
950
|
+
// COMP-PATHS-EXTERNAL: absolute features dir (may be relocated outside cwd).
|
|
951
|
+
// Never join(cwd, …) below — that would re-root an absolute/../-escaping override.
|
|
952
|
+
const featuresDir = resolveFeaturesPath(cwd)
|
|
946
953
|
|
|
947
954
|
// 1. Create feature folder + seed design doc
|
|
948
|
-
const featureDir = join(
|
|
955
|
+
const featureDir = join(featuresDir, featureCode)
|
|
949
956
|
const designPath = join(featureDir, 'design.md')
|
|
950
957
|
|
|
951
958
|
if (existsSync(designPath)) {
|
|
@@ -985,7 +992,7 @@ if (cmd === 'feature') {
|
|
|
985
992
|
// Count existing features for complexity estimate
|
|
986
993
|
const existingFeatureCount = (() => {
|
|
987
994
|
try {
|
|
988
|
-
const fdir =
|
|
995
|
+
const fdir = featuresDir
|
|
989
996
|
if (!existsSync(fdir)) return 0
|
|
990
997
|
return readdirSync(fdir, { withFileTypes: true })
|
|
991
998
|
.filter(e => e.isDirectory() && existsSync(join(fdir, e.name, 'feature.json')))
|
|
@@ -1042,7 +1049,7 @@ _This is a seed design doc created by \`compose feature\`. The \`compose build\`
|
|
|
1042
1049
|
console.log(`Created ${designPath}`)
|
|
1043
1050
|
|
|
1044
1051
|
// 2. Add entry to ROADMAP.md
|
|
1045
|
-
const roadmapPath =
|
|
1052
|
+
const roadmapPath = resolveRoadmapPath(cwd)
|
|
1046
1053
|
if (existsSync(roadmapPath)) {
|
|
1047
1054
|
let roadmap = readFileSync(roadmapPath, 'utf-8')
|
|
1048
1055
|
|
|
@@ -1157,7 +1164,7 @@ if (cmd === 'roadmap') {
|
|
|
1157
1164
|
const { checkRoundtrip, describeLossyDiff } = await import('../lib/roadmap-roundtrip.js')
|
|
1158
1165
|
const { loadExternalPrefixes } = await import('../lib/project-paths.js')
|
|
1159
1166
|
const { root: cwd } = resolveCwdWithWorkspace(args)
|
|
1160
|
-
const roadmapPath =
|
|
1167
|
+
const roadmapPath = resolveRoadmapPath(cwd)
|
|
1161
1168
|
if (!existsSync(roadmapPath)) {
|
|
1162
1169
|
console.error('No ROADMAP.md found. Run: compose roadmap generate')
|
|
1163
1170
|
process.exit(1)
|
|
@@ -1350,7 +1357,7 @@ if (cmd === 'roadmap') {
|
|
|
1350
1357
|
}
|
|
1351
1358
|
|
|
1352
1359
|
const { root: cwd } = resolveCwdWithWorkspace(args)
|
|
1353
|
-
const roadmapPath =
|
|
1360
|
+
const roadmapPath = resolveRoadmapPath(cwd)
|
|
1354
1361
|
|
|
1355
1362
|
if (existsSync(roadmapPath)) {
|
|
1356
1363
|
// Show cwd roadmap
|
|
@@ -2426,7 +2433,11 @@ if (cmd === 'build') {
|
|
|
2426
2433
|
} = await import('../lib/ideabox.js')
|
|
2427
2434
|
|
|
2428
2435
|
const ibRelPath = getIdeaboxRelPath(ibCwd)
|
|
2429
|
-
|
|
2436
|
+
// ibFullPath is used for direct file ops (existsSync/mkdirSync/writeFileSync/
|
|
2437
|
+
// display); resolve it absolute-safe. ibRelPath stays relative because the
|
|
2438
|
+
// lib readIdeabox/writeIdeabox readers re-join it under ibCwd.
|
|
2439
|
+
const { resolveIdeaboxPath: _resolveIdeaboxPathCli } = await import('../lib/project-paths.js')
|
|
2440
|
+
const ibFullPath = _resolveIdeaboxPathCli(ibCwd)
|
|
2430
2441
|
|
|
2431
2442
|
if (!ibSubcmd || ibSubcmd === '--help' || ibSubcmd === '-h') {
|
|
2432
2443
|
console.log('Usage: compose ideabox <subcommand>')
|
|
@@ -2544,9 +2555,10 @@ if (cmd === 'build') {
|
|
|
2544
2555
|
resolvedCode = `IDEA-${idea.num}-${slug}`.toUpperCase()
|
|
2545
2556
|
}
|
|
2546
2557
|
|
|
2547
|
-
// Create feature folder if missing — respect paths.features
|
|
2548
|
-
|
|
2549
|
-
const
|
|
2558
|
+
// Create feature folder if missing — respect paths.features (may be
|
|
2559
|
+
// relocated outside ibCwd — COMP-PATHS-EXTERNAL; resolve absolute, no re-root)
|
|
2560
|
+
const featuresBase = resolveFeaturesPathFromConfig(ibCwd, ibConfig)
|
|
2561
|
+
const featuresDir = join(featuresBase, resolvedCode)
|
|
2550
2562
|
if (!existsSync(featuresDir)) {
|
|
2551
2563
|
// COMP-MCP-VALIDATE-1: route through the validated writer (schema-guarded)
|
|
2552
2564
|
// instead of a raw writeFileSync.
|
|
@@ -2557,8 +2569,8 @@ if (cmd === 'build') {
|
|
|
2557
2569
|
status: 'PLANNED',
|
|
2558
2570
|
promotedFrom: ideaId,
|
|
2559
2571
|
createdAt: new Date().toISOString(),
|
|
2560
|
-
},
|
|
2561
|
-
console.log(`Created feature folder: ${
|
|
2572
|
+
}, featuresBase)
|
|
2573
|
+
console.log(`Created feature folder: ${join(featuresBase, resolvedCode)}/`)
|
|
2562
2574
|
}
|
|
2563
2575
|
|
|
2564
2576
|
_promoteIdea(parsed, ideaId, resolvedCode)
|