@productbrain/cli 0.1.0-beta.1400 → 0.1.0-beta.1409

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 (37) hide show
  1. package/dist/__tests__/codex-prep-parity.test.d.ts +2 -0
  2. package/dist/__tests__/codex-prep-parity.test.d.ts.map +1 -0
  3. package/dist/__tests__/codex-prep-parity.test.js +107 -0
  4. package/dist/__tests__/codex-prep-parity.test.js.map +1 -0
  5. package/dist/commands/codex-prep.d.ts +11 -1
  6. package/dist/commands/codex-prep.d.ts.map +1 -1
  7. package/dist/commands/codex-prep.js +14 -83
  8. package/dist/commands/codex-prep.js.map +1 -1
  9. package/dist/commands/handshake.d.ts.map +1 -1
  10. package/dist/commands/handshake.js +12 -40
  11. package/dist/commands/handshake.js.map +1 -1
  12. package/dist/commands/method.d.ts.map +1 -1
  13. package/dist/commands/method.js +2 -0
  14. package/dist/commands/method.js.map +1 -1
  15. package/dist/commands/migrate-setup.d.ts.map +1 -1
  16. package/dist/commands/migrate-setup.js +2 -52
  17. package/dist/commands/migrate-setup.js.map +1 -1
  18. package/dist/commands/orient.d.ts +8 -0
  19. package/dist/commands/orient.d.ts.map +1 -1
  20. package/dist/commands/orient.js +7 -1
  21. package/dist/commands/orient.js.map +1 -1
  22. package/dist/commands/setup-ingest.d.ts.map +1 -1
  23. package/dist/commands/setup-ingest.js +2 -54
  24. package/dist/commands/setup-ingest.js.map +1 -1
  25. package/dist/formatters/orient.d.ts +12 -0
  26. package/dist/formatters/orient.d.ts.map +1 -1
  27. package/dist/formatters/orient.js +34 -0
  28. package/dist/formatters/orient.js.map +1 -1
  29. package/dist/lib/frontmatter.d.ts +55 -0
  30. package/dist/lib/frontmatter.d.ts.map +1 -0
  31. package/dist/lib/frontmatter.js +92 -0
  32. package/dist/lib/frontmatter.js.map +1 -0
  33. package/dist/lib/frontmatter.test.d.ts +15 -0
  34. package/dist/lib/frontmatter.test.d.ts.map +1 -0
  35. package/dist/lib/frontmatter.test.js +98 -0
  36. package/dist/lib/frontmatter.test.js.map +1 -0
  37. package/package.json +1 -1
@@ -0,0 +1,92 @@
1
+ /**
2
+ * parseSetupFrontmatter — the single shared YAML-frontmatter parser for setup
3
+ * authoring assets (skills / rules / hooks).
4
+ *
5
+ * Unifies three previously-divergent copies that lived inline in:
6
+ * - commands/handshake.ts (parseSetupAuthoringFrontmatter)
7
+ * - commands/migrate-setup.ts (parseFrontmatter)
8
+ * - commands/setup-ingest.ts (parseFrontmatter)
9
+ *
10
+ * The three were identical on scalar fields but DIVERGED on array items:
11
+ * handshake stripped surrounding quotes from each `- item`, the other two did
12
+ * not. That meant a trigger written as `- "triage: [anything]"` survived as
13
+ * `triage: [anything]` through handshake but as `"triage: [anything]"` through
14
+ * migrate/ingest — the same file produced different DB rows depending on path.
15
+ * This parser adopts handshake's quote-stripping as canonical for BOTH scalars
16
+ * and array items, closing the divergence.
17
+ *
18
+ * NOTE — intentionally out of scope: commands/method.ts and
19
+ * generators/portable-knowledge.ts each keep their own `parseFrontmatter`.
20
+ * They have different parsing semantics / return shapes and are NOT folded in.
21
+ *
22
+ * Supported shape (deliberately minimal, matching the originals):
23
+ * - YAML-style `---` fences (CRLF or LF). No fence → name from H1, rest empty.
24
+ * - Scalar fields: `key: value` (surrounding quotes stripped).
25
+ * - Array fields: `key:` followed by indented ` - item` lines (quotes stripped).
26
+ * - Multi-line `>-` block scalars are NOT expanded — the literal `>-` token is
27
+ * stored as the value and continuation lines are ignored. This matches the
28
+ * behavior of all three original parsers (e.g. triage.md's `description: >-`).
29
+ *
30
+ * Chain: TEN-1459 (handshake reads FS), WP-345.
31
+ */
32
+ /** Strip a single pair of surrounding single/double quotes. */
33
+ function stripQuotes(value) {
34
+ return value.replace(/^['"]|['"]$/g, '');
35
+ }
36
+ /**
37
+ * Parse minimal YAML frontmatter from a .md file's raw contents.
38
+ *
39
+ * Returns the union of fields every setup-authoring caller needs. Callers that
40
+ * don't use a given field simply ignore it.
41
+ */
42
+ export function parseSetupFrontmatter(raw) {
43
+ const fmMatch = raw.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/);
44
+ if (!fmMatch) {
45
+ // No frontmatter — derive name from H1, leave everything else empty.
46
+ const h1 = raw.match(/^# (.+)$/m);
47
+ return { name: h1?.[1] ?? '', description: '', body: raw, triggers: [], semanticRefs: [] };
48
+ }
49
+ const fmBlock = fmMatch[1];
50
+ const body = fmMatch[2];
51
+ const fields = new Map();
52
+ const arrayFields = new Map();
53
+ // Parse simple `key: value` and `key:\n - item` YAML arrays.
54
+ const lines = fmBlock.split('\n');
55
+ let currentArrayKey = null;
56
+ let currentArrayValues = [];
57
+ for (const line of lines) {
58
+ const arrayItemMatch = line.match(/^\s+-\s+(.+)$/);
59
+ const keyValueMatch = line.match(/^(\w+):\s*(.*)$/);
60
+ if (arrayItemMatch && currentArrayKey) {
61
+ currentArrayValues.push(stripQuotes(arrayItemMatch[1].trim()));
62
+ }
63
+ else if (keyValueMatch) {
64
+ if (currentArrayKey) {
65
+ arrayFields.set(currentArrayKey, currentArrayValues);
66
+ currentArrayKey = null;
67
+ currentArrayValues = [];
68
+ }
69
+ const [, key, value] = keyValueMatch;
70
+ if (value.trim() === '') {
71
+ // Start of an array block.
72
+ currentArrayKey = key;
73
+ }
74
+ else {
75
+ fields.set(key, stripQuotes(value.trim()));
76
+ }
77
+ }
78
+ }
79
+ if (currentArrayKey) {
80
+ arrayFields.set(currentArrayKey, currentArrayValues);
81
+ }
82
+ return {
83
+ frontmatterId: fields.get('id'),
84
+ name: fields.get('name') ?? body.match(/^# (.+)$/m)?.[1] ?? '',
85
+ description: fields.get('description') ?? '',
86
+ body,
87
+ triggers: arrayFields.get('triggers') ?? [],
88
+ semanticRefs: arrayFields.get('semanticRefs') ?? [],
89
+ assetKind: fields.get('assetKind'),
90
+ };
91
+ }
92
+ //# sourceMappingURL=frontmatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../../src/lib/frontmatter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * parseSetupFrontmatter regression tests.
3
+ *
4
+ * The load-bearing assertion: the array-item quote-stripping divergence between
5
+ * handshake (stripped) and migrate-setup / setup-ingest (did not strip) is
6
+ * closed. All three now route through this one function, so a trigger written
7
+ * as `- "triage: [anything]"` resolves to `triage: [anything]` on every path.
8
+ *
9
+ * We parse the REAL fixture `.productbrain/skills/triage.md` rather than a
10
+ * synthetic string so the test fails if that file's shape drifts.
11
+ *
12
+ * Chain: TEN-1459, WP-345.
13
+ */
14
+ export {};
15
+ //# sourceMappingURL=frontmatter.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontmatter.test.d.ts","sourceRoot":"","sources":["../../src/lib/frontmatter.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * parseSetupFrontmatter regression tests.
3
+ *
4
+ * The load-bearing assertion: the array-item quote-stripping divergence between
5
+ * handshake (stripped) and migrate-setup / setup-ingest (did not strip) is
6
+ * closed. All three now route through this one function, so a trigger written
7
+ * as `- "triage: [anything]"` resolves to `triage: [anything]` on every path.
8
+ *
9
+ * We parse the REAL fixture `.productbrain/skills/triage.md` rather than a
10
+ * synthetic string so the test fails if that file's shape drifts.
11
+ *
12
+ * Chain: TEN-1459, WP-345.
13
+ */
14
+ import { describe, expect, it } from 'vitest';
15
+ import { readFileSync } from 'node:fs';
16
+ import { fileURLToPath } from 'node:url';
17
+ import { dirname, join } from 'node:path';
18
+ import { parseSetupFrontmatter } from './frontmatter.js';
19
+ // repo root: packages/cli/src/lib → up four levels
20
+ const here = dirname(fileURLToPath(import.meta.url));
21
+ const repoRoot = join(here, '..', '..', '..', '..');
22
+ const triagePath = join(repoRoot, '.productbrain', 'skills', 'triage.md');
23
+ describe('parseSetupFrontmatter — array-quote divergence is closed', () => {
24
+ it('strips surrounding quotes from the triage.md `triggers` list item', () => {
25
+ const raw = readFileSync(triagePath, 'utf8');
26
+ const parsed = parseSetupFrontmatter(raw);
27
+ // The fixture contains a YAML list item: - "triage: [anything]"
28
+ // Quotes MUST be stripped (handshake's behavior, now canonical).
29
+ expect(parsed.triggers).toContain('triage: [anything]');
30
+ // And the un-stripped form must NOT survive.
31
+ expect(parsed.triggers).not.toContain('"triage: [anything]"');
32
+ });
33
+ it('extracts the scalar fields the callers depend on', () => {
34
+ const raw = readFileSync(triagePath, 'utf8');
35
+ const parsed = parseSetupFrontmatter(raw);
36
+ expect(parsed.name).toBe('triage');
37
+ // body is everything after the closing fence — contains the H1.
38
+ expect(parsed.body).toContain('# Triage');
39
+ // The multi-line `>-` block scalar is preserved as the literal token
40
+ // (the originals never expanded it; we keep that behavior).
41
+ expect(parsed.description).toBe('>-');
42
+ });
43
+ it('resolves the full triggers list to its canonical (quote-stripped) form', () => {
44
+ // The divergence is structurally gone because all three callers now invoke
45
+ // this one function. What that function MUST produce is asserted literally
46
+ // here: the quoted item `- "triage: [anything]"` strips to `triage:
47
+ // [anything]` while every bare item is untouched. Under the old
48
+ // migrate-setup / setup-ingest path the third item would have retained its
49
+ // quotes — so this exact array is what closes the bug, not a self-comparison.
50
+ const raw = readFileSync(triagePath, 'utf8');
51
+ const parsed = parseSetupFrontmatter(raw);
52
+ expect(parsed.triggers).toEqual([
53
+ 'triage',
54
+ 'triage this',
55
+ 'triage: [anything]',
56
+ 'what should I focus on?',
57
+ 'what should I work on?',
58
+ 'where do I start?',
59
+ 'help me think about this',
60
+ 'diagnose',
61
+ ]);
62
+ });
63
+ });
64
+ describe('parseSetupFrontmatter — boundary cases', () => {
65
+ it('returns empty fields and the raw body when there is no `---` fence', () => {
66
+ const parsed = parseSetupFrontmatter('# Heading Only\n\nbody text');
67
+ expect(parsed.name).toBe('Heading Only');
68
+ expect(parsed.description).toBe('');
69
+ expect(parsed.triggers).toEqual([]);
70
+ expect(parsed.semanticRefs).toEqual([]);
71
+ expect(parsed.frontmatterId).toBeUndefined();
72
+ expect(parsed.assetKind).toBeUndefined();
73
+ expect(parsed.body).toBe('# Heading Only\n\nbody text');
74
+ });
75
+ it('handles an empty frontmatter block', () => {
76
+ const parsed = parseSetupFrontmatter('---\n\n---\n# Title\n');
77
+ expect(parsed.name).toBe('Title');
78
+ expect(parsed.triggers).toEqual([]);
79
+ });
80
+ it('extracts id and assetKind scalar fields when present', () => {
81
+ const raw = [
82
+ '---',
83
+ 'id: SETUP-SKILL-EXAMPLE',
84
+ 'name: example',
85
+ 'assetKind: skill',
86
+ 'triggers:',
87
+ " - 'quoted trigger'",
88
+ ' - bare trigger',
89
+ '---',
90
+ '# Example',
91
+ ].join('\n');
92
+ const parsed = parseSetupFrontmatter(raw);
93
+ expect(parsed.frontmatterId).toBe('SETUP-SKILL-EXAMPLE');
94
+ expect(parsed.assetKind).toBe('skill');
95
+ expect(parsed.triggers).toEqual(['quoted trigger', 'bare trigger']);
96
+ });
97
+ });
98
+ //# sourceMappingURL=frontmatter.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frontmatter.test.js","sourceRoot":"","sources":["../../src/lib/frontmatter.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@productbrain/cli",
3
- "version": "0.1.0-beta.1400",
3
+ "version": "0.1.0-beta.1409",
4
4
  "description": "Product Brain — Chain knowledge and write-back CLI",
5
5
  "type": "module",
6
6
  "bin": {