@objectstack/cli 9.2.0 → 9.3.0

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.
@@ -0,0 +1,107 @@
1
+ // Copyright (c) 2025 ObjectStack. Licensed under the Apache-2.0 license.
2
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
3
+ import fs from 'fs';
4
+ import os from 'os';
5
+ import path from 'path';
6
+ import { collectDocsFromSrc, lintDocs, collectAndLintDocs } from './collect-docs.js';
7
+ let tmp;
8
+ let configPath;
9
+ let docsDir;
10
+ beforeEach(() => {
11
+ tmp = fs.mkdtempSync(path.join(os.tmpdir(), 'os-docs-'));
12
+ configPath = path.join(tmp, 'objectstack.config.ts');
13
+ fs.writeFileSync(configPath, '// stub');
14
+ docsDir = path.join(tmp, 'src', 'docs');
15
+ fs.mkdirSync(docsDir, { recursive: true });
16
+ });
17
+ afterEach(() => {
18
+ fs.rmSync(tmp, { recursive: true, force: true });
19
+ });
20
+ const write = (name, content) => fs.writeFileSync(path.join(docsDir, name), content);
21
+ describe('collectDocsFromSrc (ADR-0046 §3.2)', () => {
22
+ it('compiles each flat .md file into a doc item (stem = name)', () => {
23
+ write('crm_index.md', '# CRM Overview\n\nWhat it is.');
24
+ write('crm_lead_guide.md', '---\ntitle: Lead Guide\n---\n\nBody here.');
25
+ const { docs, issues } = collectDocsFromSrc(configPath);
26
+ expect(issues).toHaveLength(0);
27
+ expect(docs.map((d) => d.name).sort()).toEqual(['crm_index', 'crm_lead_guide']);
28
+ const index = docs.find((d) => d.name === 'crm_index');
29
+ expect(index.label).toBe('CRM Overview'); // first # heading
30
+ const guide = docs.find((d) => d.name === 'crm_lead_guide');
31
+ expect(guide.label).toBe('Lead Guide'); // frontmatter title wins
32
+ expect(guide.content).not.toContain('title:'); // frontmatter stripped
33
+ });
34
+ it('errors on subdirectories — flatness is the contract', () => {
35
+ fs.mkdirSync(path.join(docsDir, 'user'));
36
+ write('crm_index.md', '# x');
37
+ const { docs, issues } = collectDocsFromSrc(configPath);
38
+ expect(issues.some((i) => i.rule === 'docs/flat-directory' && i.severity === 'error')).toBe(true);
39
+ expect(docs).toHaveLength(1); // the valid file still collects
40
+ });
41
+ it('errors on non-snake_case filename stems', () => {
42
+ write('Lead-Guide.md', '# x');
43
+ const { docs, issues } = collectDocsFromSrc(configPath);
44
+ expect(issues.some((i) => i.rule === 'docs/filename')).toBe(true);
45
+ expect(docs).toHaveLength(0);
46
+ });
47
+ it('ignores non-markdown files and returns empty when src/docs is absent', () => {
48
+ write('notes.txt', 'not a doc');
49
+ expect(collectDocsFromSrc(configPath).docs).toHaveLength(0);
50
+ fs.rmSync(docsDir, { recursive: true });
51
+ expect(collectDocsFromSrc(configPath).docs).toHaveLength(0);
52
+ });
53
+ });
54
+ describe('lintDocs (ADR-0046 §3.2–§3.4)', () => {
55
+ const doc = (name, content) => ({ name, content });
56
+ it('requires manifest.namespace when docs ship', () => {
57
+ const issues = lintDocs([doc('crm_index', 'x')], undefined);
58
+ expect(issues.some((i) => i.rule === 'docs/namespace-required')).toBe(true);
59
+ });
60
+ it('requires the namespace prefix on every doc name', () => {
61
+ const issues = lintDocs([doc('lead_guide', 'x')], 'crm');
62
+ const hit = issues.find((i) => i.rule === 'docs/namespace-prefix');
63
+ expect(hit?.severity).toBe('error');
64
+ expect(hit?.message).toContain('crm_lead_guide');
65
+ });
66
+ it('rejects duplicate names across inline + collected docs', () => {
67
+ const issues = lintDocs([doc('crm_index', 'a'), doc('crm_index', 'b')], 'crm');
68
+ expect(issues.some((i) => i.rule === 'docs/duplicate-name')).toBe(true);
69
+ });
70
+ it('bans image references (v1 text-only)', () => {
71
+ const issues = lintDocs([doc('crm_index', 'See ![screenshot](https://x/y.png)')], 'crm');
72
+ expect(issues.some((i) => i.rule === 'docs/no-images')).toBe(true);
73
+ });
74
+ it('bans MDX/JSX but tolerates code blocks that mention it', () => {
75
+ expect(lintDocs([doc('crm_a', 'Use <Tabs items={x}> here')], 'crm')
76
+ .some((i) => i.rule === 'docs/no-mdx')).toBe(true);
77
+ expect(lintDocs([doc('crm_b', 'Example:\n\n```jsx\n<Tabs items={x} />\n```\n\nplain prose')], 'crm')
78
+ .some((i) => i.rule === 'docs/no-mdx')).toBe(false);
79
+ });
80
+ it('resolves same-package relative links and flags broken ones', () => {
81
+ const docs = [
82
+ doc('crm_index', 'See the [guide](./crm_lead_guide.md#start) and [missing](./crm_nope.md).'),
83
+ doc('crm_lead_guide', 'Back to [index](crm_index.md).'),
84
+ ];
85
+ const issues = lintDocs(docs, 'crm');
86
+ const broken = issues.filter((i) => i.rule === 'docs/broken-link');
87
+ expect(broken).toHaveLength(1);
88
+ expect(broken[0].message).toContain('crm_nope');
89
+ });
90
+ it('leaves cross-package links (foreign prefix) to publish-time checks', () => {
91
+ const issues = lintDocs([doc('crm_index', 'See [billing](./billing_setup.md).')], 'crm');
92
+ expect(issues.some((i) => i.rule === 'docs/broken-link')).toBe(false);
93
+ });
94
+ });
95
+ describe('collectAndLintDocs', () => {
96
+ it('merges inline stack docs with collected files and lints the union', () => {
97
+ write('crm_admin_setup.md', '# Admin Setup\n\nSee [index](./crm_index.md).');
98
+ const stack = {
99
+ manifest: { namespace: 'crm' },
100
+ docs: [{ name: 'crm_index', content: '# CRM' }],
101
+ };
102
+ const { docs, issues } = collectAndLintDocs(configPath, stack);
103
+ expect(docs.map((d) => d.name).sort()).toEqual(['crm_admin_setup', 'crm_index']);
104
+ expect(issues).toHaveLength(0);
105
+ });
106
+ });
107
+ //# sourceMappingURL=collect-docs.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collect-docs.test.js","sourceRoot":"","sources":["../../src/utils/collect-docs.test.ts"],"names":[],"mappings":"AAAA,yEAAyE;AAEzE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AACrE,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,kBAAkB,EAAgB,MAAM,mBAAmB,CAAC;AAEnG,IAAI,GAAW,CAAC;AAChB,IAAI,UAAkB,CAAC;AACvB,IAAI,OAAe,CAAC;AAEpB,UAAU,CAAC,GAAG,EAAE;IACd,GAAG,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;IACzD,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC;IACrD,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACxC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACxC,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,GAAG,EAAE;IACb,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC;AAEH,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,OAAe,EAAE,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC;AAErG,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAClD,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,KAAK,CAAC,cAAc,EAAE,+BAA+B,CAAC,CAAC;QACvD,KAAK,CAAC,mBAAmB,EAAE,2CAA2C,CAAC,CAAC;QACxE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACxD,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC;QAChF,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAE,CAAC;QACxD,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,kBAAkB;QAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAE,CAAC;QAC7D,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,yBAAyB;QACjE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,uBAAuB;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;QACzC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QAC7B,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACxD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,qBAAqB,IAAI,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClG,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,gCAAgC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QAC9B,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;QACxD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClE,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QAChC,MAAM,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC5D,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACxC,MAAM,CAAC,kBAAkB,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,OAAe,EAAW,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;IAE5E,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QAC5D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,yBAAyB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACzD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,uBAAuB,CAAC,CAAC;QACnE,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC/E,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,oCAAoC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACzF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,CACJ,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,2BAA2B,CAAC,CAAC,EAAE,KAAK,CAAC;aACzD,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CACzC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACb,MAAM,CACJ,QAAQ,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,4DAA4D,CAAC,CAAC,EAAE,KAAK,CAAC;aAC1F,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,aAAa,CAAC,CACzC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,IAAI,GAAG;YACX,GAAG,CAAC,WAAW,EAAE,0EAA0E,CAAC;YAC5F,GAAG,CAAC,gBAAgB,EAAE,gCAAgC,CAAC;SACxD,CAAC;QACF,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC;QACnE,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,oCAAoC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACzF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,KAAK,CAAC,oBAAoB,EAAE,+CAA+C,CAAC,CAAC;QAC7E,MAAM,KAAK,GAAG;YACZ,QAAQ,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;YAC9B,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;SAChD,CAAC;QACF,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAC/D,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC,CAAC;QACjF,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,5 +1,18 @@
1
1
  /** URL mount path for the Console portal inside the ObjectStack server */
2
2
  export declare const CONSOLE_PATH = "/_console";
3
+ /**
4
+ * The vendored `@objectstack/console` package is version-locked to the
5
+ * framework release, so a healthy install always carries the same major
6
+ * as the CLI. Node module resolution from the consumer cwd, however,
7
+ * climbs `node_modules` directories all the way up the filesystem — a
8
+ * stray install outside the workspace (e.g. a leftover
9
+ * `~/node_modules/@objectstack/console` from an old npm experiment) can
10
+ * shadow the bundled build and silently serve a stale Console.
11
+ *
12
+ * Guard: skip any candidate whose major version differs from the CLI's
13
+ * own, and warn so the stray install is discoverable.
14
+ */
15
+ export declare function isConsoleVersionCompatible(candidateVersion: unknown, cliVersion: string): boolean;
3
16
  /**
4
17
  * Resolve the filesystem path to a Console SPA package.
5
18
  *
@@ -23,8 +36,24 @@ export declare const CONSOLE_PATH = "/_console";
23
36
  * 3. Sibling-repo dev fallback — `../objectui/apps/console` — matched
24
37
  * by the package name on disk so an unrelated `apps/console`
25
38
  * doesn't get picked up by accident.
39
+ *
40
+ * Strategies 1 and 2 additionally require the candidate's major version
41
+ * to match the CLI's own (see `isConsoleVersionCompatible`) — node
42
+ * resolution climbs past the workspace root, so a stale install higher
43
+ * up the filesystem must not shadow the version-locked bundle.
44
+ * Mismatches are skipped with a warning. The sibling-repo fallback is
45
+ * exempt: the objectui workspace versions independently and is an
46
+ * explicit dev opt-in.
26
47
  */
27
- export declare function resolveConsolePath(): string | null;
48
+ export interface ResolveConsoleOptions {
49
+ /** Resolution origin; defaults to `process.cwd()`. */
50
+ cwd?: string;
51
+ /** Override the CLI's own version (tests). */
52
+ cliVersion?: string;
53
+ /** Warning sink; defaults to `console.warn`. */
54
+ warn?: (message: string) => void;
55
+ }
56
+ export declare function resolveConsolePath(options?: ResolveConsoleOptions): string | null;
28
57
  /**
29
58
  * Check whether the Console portal has a pre-built `dist/` directory.
30
59
  */
@@ -1 +1 @@
1
- {"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../../src/utils/console.ts"],"names":[],"mappings":"AAyCA,0EAA0E;AAC1E,eAAO,MAAM,YAAY,cAAc,CAAC;AAOxC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,IAAI,CA4ElD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAE3D;AAID;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE;;;iBAM1F,GAAG;EAmFzB"}
1
+ {"version":3,"file":"console.d.ts","sourceRoot":"","sources":["../../src/utils/console.ts"],"names":[],"mappings":"AAyCA,0EAA0E;AAC1E,eAAO,MAAM,YAAY,cAAc,CAAC;AAOxC;;;;;;;;;;;GAWG;AACH,wBAAgB,0BAA0B,CACxC,gBAAgB,EAAE,OAAO,EACzB,UAAU,EAAE,MAAM,GACjB,OAAO,CAKT;AAwCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,WAAW,qBAAqB;IACpC,sDAAsD;IACtD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAED,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM,GAAG,IAAI,CAmGjF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAE3D;AAID;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE;;;iBAM1F,GAAG;EAmFzB"}
@@ -34,39 +34,84 @@
34
34
  import path from 'path';
35
35
  import fs from 'fs';
36
36
  import { createRequire } from 'module';
37
- import { pathToFileURL } from 'url';
37
+ import { pathToFileURL, fileURLToPath } from 'url';
38
38
  // ─── Constants ──────────────────────────────────────────────────────
39
39
  /** URL mount path for the Console portal inside the ObjectStack server */
40
40
  export const CONSOLE_PATH = '/_console';
41
41
  /** Canonical npm package name that ships the Console SPA. */
42
42
  const CONSOLE_PACKAGE = '@objectstack/console';
43
- // ─── Path Resolution ────────────────────────────────────────────────
43
+ // ─── Version Guard ──────────────────────────────────────────────────
44
44
  /**
45
- * Resolve the filesystem path to a Console SPA package.
45
+ * The vendored `@objectstack/console` package is version-locked to the
46
+ * framework release, so a healthy install always carries the same major
47
+ * as the CLI. Node module resolution from the consumer cwd, however,
48
+ * climbs `node_modules` directories all the way up the filesystem — a
49
+ * stray install outside the workspace (e.g. a leftover
50
+ * `~/node_modules/@objectstack/console` from an old npm experiment) can
51
+ * shadow the bundled build and silently serve a stale Console.
46
52
  *
47
- * Two-pass strategy:
48
- * - Pass 1: walk candidates in priority order and return the first
49
- * whose `dist/index.html` exists. This is what the CLI actually
50
- * wants a usable build to serve.
51
- * - Pass 2: if no candidate has a built dist, return the first
52
- * candidate that resolves at all, so `hasConsoleDist()` can surface
53
- * a clear "package present but unbuilt" warning instead of "package
54
- * not installed".
55
- *
56
- * Candidates are located via, in order:
57
- * 1. `require.resolve('@objectstack/console/package.json')` from the
58
- * consumer cwd and from this CLI's own location. We resolve the
59
- * `package.json` subpath (not the bare specifier) because
60
- * `@objectstack/console` is a static-asset-only package with no
61
- * JS `main` / `"."` export — bare resolution would throw
62
- * `ERR_PACKAGE_PATH_NOT_EXPORTED`.
63
- * 2. Direct `<cwd>/node_modules/@objectstack/console` filesystem check.
64
- * 3. Sibling-repo dev fallback `../objectui/apps/console` — matched
65
- * by the package name on disk so an unrelated `apps/console`
66
- * doesn't get picked up by accident.
53
+ * Guard: skip any candidate whose major version differs from the CLI's
54
+ * own, and warn so the stray install is discoverable.
55
+ */
56
+ export function isConsoleVersionCompatible(candidateVersion, cliVersion) {
57
+ if (typeof candidateVersion !== 'string')
58
+ return false;
59
+ const candidateMajor = majorOf(candidateVersion);
60
+ const cliMajor = majorOf(cliVersion);
61
+ return candidateMajor !== null && candidateMajor === cliMajor;
62
+ }
63
+ function majorOf(version) {
64
+ const match = /^v?(\d+)[.-]/.exec(version.trim()) ?? /^v?(\d+)$/.exec(version.trim());
65
+ return match ? Number(match[1]) : null;
66
+ }
67
+ let cachedCliVersion;
68
+ /**
69
+ * Read this CLI's own version by walking up from the compiled module to
70
+ * the nearest `package.json`. Returns null (guard disabled, fail open)
71
+ * if it can't be determined never let the version check break
72
+ * resolution outright.
67
73
  */
68
- export function resolveConsolePath() {
69
- const cwd = process.cwd();
74
+ function getCliVersion() {
75
+ if (cachedCliVersion !== undefined)
76
+ return cachedCliVersion;
77
+ let version = null;
78
+ try {
79
+ let dir = path.dirname(fileURLToPath(import.meta.url));
80
+ for (let depth = 0; depth < 6; depth++) {
81
+ const pkgPath = path.join(dir, 'package.json');
82
+ if (fs.existsSync(pkgPath)) {
83
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
84
+ if (typeof pkg.version === 'string')
85
+ version = pkg.version;
86
+ break;
87
+ }
88
+ const parent = path.dirname(dir);
89
+ if (parent === dir)
90
+ break;
91
+ dir = parent;
92
+ }
93
+ }
94
+ catch {
95
+ // Unreadable own package.json — leave the guard disabled.
96
+ }
97
+ cachedCliVersion = version;
98
+ return version;
99
+ }
100
+ export function resolveConsolePath(options) {
101
+ const cwd = options?.cwd ?? process.cwd();
102
+ const cliVersion = options?.cliVersion ?? getCliVersion();
103
+ const warn = options?.warn ?? ((message) => console.warn(message));
104
+ /** Version guard for vendored-package candidates (strategies 1 & 2). */
105
+ const versionOk = (dir, candidateVersion) => {
106
+ if (!cliVersion)
107
+ return true; // own version unknown — fail open
108
+ if (isConsoleVersionCompatible(candidateVersion, cliVersion))
109
+ return true;
110
+ const shown = typeof candidateVersion === 'string' ? candidateVersion : 'unknown';
111
+ warn(` ⚠ Ignoring ${CONSOLE_PACKAGE}@${shown} at ${dir} — major version does not match this CLI (${cliVersion}). ` +
112
+ `This is usually a stale install outside your workspace (e.g. a leftover ~/node_modules); remove it or install a matching version.`);
113
+ return false;
114
+ };
70
115
  const resolutionBases = [
71
116
  pathToFileURL(path.join(cwd, 'package.json')).href, // consumer workspace
72
117
  import.meta.url, // CLI package itself
@@ -82,7 +127,9 @@ export function resolveConsolePath() {
82
127
  const dir = path.dirname(resolvedPkgJson);
83
128
  try {
84
129
  const pkg = JSON.parse(fs.readFileSync(resolvedPkgJson, 'utf-8'));
85
- if (pkg.name === CONSOLE_PACKAGE && !candidates.includes(dir)) {
130
+ if (pkg.name === CONSOLE_PACKAGE &&
131
+ versionOk(dir, pkg.version) &&
132
+ !candidates.includes(dir)) {
86
133
  candidates.push(dir);
87
134
  }
88
135
  }
@@ -96,9 +143,17 @@ export function resolveConsolePath() {
96
143
  }
97
144
  // 2: direct filesystem check in cwd/node_modules.
98
145
  const directPath = path.join(cwd, 'node_modules', ...CONSOLE_PACKAGE.split('/'));
99
- if (fs.existsSync(path.join(directPath, 'package.json')) &&
100
- !candidates.includes(directPath)) {
101
- candidates.push(directPath);
146
+ const directPkgJson = path.join(directPath, 'package.json');
147
+ if (fs.existsSync(directPkgJson) && !candidates.includes(directPath)) {
148
+ try {
149
+ const pkg = JSON.parse(fs.readFileSync(directPkgJson, 'utf-8'));
150
+ if (pkg.name === CONSOLE_PACKAGE && versionOk(directPath, pkg.version)) {
151
+ candidates.push(directPath);
152
+ }
153
+ }
154
+ catch {
155
+ // Skip invalid package.json
156
+ }
102
157
  }
103
158
  // 3: sibling-repo dev fallback. Useful when iterating on the Console
104
159
  // source inside `objectui` while running the framework CLI here.
@@ -1 +1 @@
1
- {"version":3,"file":"console.js","sourceRoot":"","sources":["../../src/utils/console.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"console.js","sourceRoot":"","sources":["../../src/utils/console.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@objectstack/cli",
3
- "version": "9.2.0",
3
+ "version": "9.3.0",
4
4
  "description": "Command Line Interface for ObjectStack Protocol",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -47,48 +47,49 @@
47
47
  "tsx": "^4.22.4",
48
48
  "yaml": "^2.9.0",
49
49
  "zod": "^4.4.3",
50
- "@objectstack/account": "9.2.0",
51
- "@objectstack/client": "9.2.0",
52
- "@objectstack/console": "9.2.0",
53
- "@objectstack/core": "^9.2.0",
54
- "@objectstack/driver-memory": "^9.2.0",
55
- "@objectstack/driver-mongodb": "^9.2.0",
56
- "@objectstack/driver-sql": "^9.2.0",
57
- "@objectstack/driver-sqlite-wasm": "^9.2.0",
58
- "@objectstack/formula": "9.2.0",
59
- "@objectstack/objectql": "^9.2.0",
60
- "@objectstack/observability": "^9.2.0",
61
- "@objectstack/platform-objects": "9.2.0",
62
- "@objectstack/plugin-approvals": "9.2.0",
63
- "@objectstack/plugin-audit": "9.2.0",
64
- "@objectstack/plugin-auth": "9.2.0",
65
- "@objectstack/plugin-email": "9.2.0",
66
- "@objectstack/plugin-hono-server": "9.2.0",
67
- "@objectstack/mcp": "9.2.0",
68
- "@objectstack/plugin-org-scoping": "9.2.0",
69
- "@objectstack/plugin-reports": "9.2.0",
70
- "@objectstack/plugin-security": "9.2.0",
71
- "@objectstack/plugin-sharing": "9.2.0",
72
- "@objectstack/plugin-trigger-record-change": "9.2.0",
73
- "@objectstack/plugin-trigger-schedule": "9.2.0",
74
- "@objectstack/plugin-webhooks": "9.2.0",
75
- "@objectstack/rest": "9.2.0",
76
- "@objectstack/runtime": "^9.2.0",
77
- "@objectstack/service-ai": "9.2.0",
78
- "@objectstack/service-analytics": "9.2.0",
79
- "@objectstack/service-automation": "9.2.0",
80
- "@objectstack/service-cache": "9.2.0",
81
- "@objectstack/service-datasource": "9.2.0",
82
- "@objectstack/service-feed": "9.2.0",
83
- "@objectstack/service-job": "9.2.0",
84
- "@objectstack/service-messaging": "9.2.0",
85
- "@objectstack/service-package": "9.2.0",
86
- "@objectstack/service-queue": "9.2.0",
87
- "@objectstack/service-realtime": "9.2.0",
88
- "@objectstack/service-settings": "9.2.0",
89
- "@objectstack/service-storage": "9.2.0",
90
- "@objectstack/spec": "9.2.0",
91
- "@objectstack/types": "9.2.0"
50
+ "@objectstack/account": "9.3.0",
51
+ "@objectstack/client": "9.3.0",
52
+ "@objectstack/console": "9.3.0",
53
+ "@objectstack/core": "^9.3.0",
54
+ "@objectstack/driver-memory": "^9.3.0",
55
+ "@objectstack/driver-mongodb": "^9.3.0",
56
+ "@objectstack/driver-sql": "^9.3.0",
57
+ "@objectstack/driver-sqlite-wasm": "^9.3.0",
58
+ "@objectstack/formula": "9.3.0",
59
+ "@objectstack/objectql": "^9.3.0",
60
+ "@objectstack/observability": "^9.3.0",
61
+ "@objectstack/platform-objects": "9.3.0",
62
+ "@objectstack/plugin-approvals": "9.3.0",
63
+ "@objectstack/plugin-audit": "9.3.0",
64
+ "@objectstack/plugin-auth": "9.3.0",
65
+ "@objectstack/plugin-email": "9.3.0",
66
+ "@objectstack/plugin-hono-server": "9.3.0",
67
+ "@objectstack/mcp": "9.3.0",
68
+ "@objectstack/plugin-org-scoping": "9.3.0",
69
+ "@objectstack/plugin-reports": "9.3.0",
70
+ "@objectstack/plugin-security": "9.3.0",
71
+ "@objectstack/plugin-sharing": "9.3.0",
72
+ "@objectstack/trigger-record-change": "9.3.0",
73
+ "@objectstack/trigger-api": "9.3.0",
74
+ "@objectstack/trigger-schedule": "9.3.0",
75
+ "@objectstack/plugin-webhooks": "9.3.0",
76
+ "@objectstack/rest": "9.3.0",
77
+ "@objectstack/runtime": "^9.3.0",
78
+ "@objectstack/service-ai": "9.3.0",
79
+ "@objectstack/service-analytics": "9.3.0",
80
+ "@objectstack/service-automation": "9.3.0",
81
+ "@objectstack/service-cache": "9.3.0",
82
+ "@objectstack/service-datasource": "9.3.0",
83
+ "@objectstack/service-feed": "9.3.0",
84
+ "@objectstack/service-job": "9.3.0",
85
+ "@objectstack/service-messaging": "9.3.0",
86
+ "@objectstack/service-package": "9.3.0",
87
+ "@objectstack/service-queue": "9.3.0",
88
+ "@objectstack/service-realtime": "9.3.0",
89
+ "@objectstack/service-settings": "9.3.0",
90
+ "@objectstack/service-storage": "9.3.0",
91
+ "@objectstack/spec": "9.3.0",
92
+ "@objectstack/types": "9.3.0"
92
93
  },
93
94
  "devDependencies": {
94
95
  "@oclif/plugin-help": "^6.2.50",