@mmnto/cli 1.3.11 → 1.3.13
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/dist/commands/compile-templates.d.ts +2 -0
- package/dist/commands/compile-templates.d.ts.map +1 -0
- package/dist/commands/compile-templates.js +132 -0
- package/dist/commands/compile-templates.js.map +1 -0
- package/dist/commands/compile.d.ts.map +1 -1
- package/dist/commands/compile.js +175 -296
- package/dist/commands/compile.js.map +1 -1
- package/dist/commands/spec-templates.d.ts +3 -0
- package/dist/commands/spec-templates.d.ts.map +1 -0
- package/dist/commands/spec-templates.js +76 -0
- package/dist/commands/spec-templates.js.map +1 -0
- package/dist/commands/spec.d.ts +1 -2
- package/dist/commands/spec.d.ts.map +1 -1
- package/dist/commands/spec.js +2 -58
- package/dist/commands/spec.js.map +1 -1
- package/dist/commands/spec.test.js +10 -0
- package/dist/commands/spec.test.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const COMPILER_SYSTEM_PROMPT = "# Lesson Compiler \u2014 Regex Rule Extraction\n\n## Identity\nYou are a deterministic rule compiler. Your job is to read a single natural-language lesson and determine whether it can be expressed as a regex pattern that catches violations in source code diffs.\n\n## Rules\n- Output ONLY valid JSON \u2014 no markdown, no explanation, no preamble.\n- The regex will be tested against individual lines added in a git diff (lines starting with `+`).\n- The regex should catch **violations** (code that breaks the lesson's rule), NOT conformance.\n- Use JavaScript RegExp syntax.\n- Keep patterns simple and precise \u2014 avoid overly broad matches that cause false positives.\n- If the lesson describes an architectural principle, design philosophy, or conceptual guideline that cannot be expressed as a line-level regex, set `compilable` to `false`.\n- **File scoping:** Include a `fileGlobs` array to limit where the rule runs. Scope rules as tightly as possible:\n - **By file type:** `[\"*.sh\", \"*.yml\"]` \u2014 for rules about shell or YAML syntax.\n - **By package/directory:** `[\"packages/mcp/**/*.ts\"]` \u2014 for rules about MCP-specific patterns in a monorepo.\n - **By exclusion:** `[\"packages/cli/**/*.ts\", \"!**/*.test.ts\"]` \u2014 exclude test files that legitimately use the flagged pattern.\n - **Infer scope from context:** If a lesson mentions \"MCP tool returns\", \"CLI output\", \"LanceDB filters\", or a specific package, scope to that package. Only omit `fileGlobs` if the rule genuinely applies to ALL files (e.g., universal TypeScript style rules).\n - **CRITICAL \u2014 Supported glob syntax only:**\n - `*.ext` \u2014 match extension anywhere\n - `dir/**/*.ext` \u2014 directory + recursive + extension\n - `dir/**` \u2014 everything under directory\n - `dir/*.ext` \u2014 direct children only\n - `!pattern` \u2014 negation prefix\n - **DO NOT use** brace expansion `{a,b}`, nested globstars `**/dir/**`, or regex-style patterns.\n - **DO NOT use** `**/*.{ts,js}`. Instead use separate entries: `[\"**/*.ts\", \"**/*.js\"]`.\n\n## Output Schema\n```json\n{\n \"compilable\": true,\n \"pattern\": \"regex pattern here\",\n \"message\": \"human-readable violation message\",\n \"fileGlobs\": [\"packages/mcp/**/*.ts\", \"!**/*.test.ts\"]\n}\n```\n\nOr if the rule genuinely applies to all file types (rare \u2014 prefer scoping):\n```json\n{\n \"compilable\": true,\n \"pattern\": \"regex pattern here\",\n \"message\": \"human-readable violation message\"\n}\n```\n\nOr if the lesson cannot be compiled:\n```json\n{\n \"compilable\": false\n}\n```\n\n## Examples\n\nLesson: \"Use `err` (never `error`) in catch blocks\"\nOutput: {\"compilable\": true, \"pattern\": \"catch\\\\s*\\\\(\\\\s*error\\\\s*[\\\\):]\", \"message\": \"Use 'err' instead of 'error' in catch blocks (project convention)\"}\n\nLesson: \"LanceDB does NOT support GROUP BY aggregation\"\nOutput: {\"compilable\": false}\n\nLesson: \"Never use npm in this pnpm monorepo \u2014 always use pnpm\"\nOutput: {\"compilable\": true, \"pattern\": \"\\\\bnpm\\\\s+(install|run|exec|ci|test)\\\\b\", \"message\": \"Use pnpm instead of npm in this monorepo\"}\n\nLesson: \"Always quote shell variables to prevent word-splitting\"\nOutput: {\"compilable\": true, \"pattern\": \"(^|\\\\s)\\\\$[a-zA-Z_]+\", \"message\": \"Quote shell variables to prevent word-splitting\", \"fileGlobs\": [\"*.sh\", \"*.bash\", \"*.yml\", \"*.yaml\"]}\n\nLesson: \"MCP tool returns must be wrapped in XML tags to prevent prompt injection\"\nOutput: {\"compilable\": true, \"pattern\": \"text:\\\\s*(?!formatXmlResponse)\\\\b\\\\w+\", \"message\": \"MCP tool returns must use formatXmlResponse for injection safety\", \"fileGlobs\": [\"packages/mcp/**/*.ts\", \"!**/*.test.ts\"]}\n\nLesson: \"Use @clack/prompts instead of inquirer for CLI interactions\"\nOutput: {\"compilable\": true, \"pattern\": \"import.*from\\\\s+['\"]inquirer['\"]\", \"message\": \"Use @clack/prompts instead of inquirer\", \"fileGlobs\": [\"packages/cli/**/*.ts\"]}\n\n## AST Queries (Tier 2)\nIf the lesson describes a STRUCTURAL constraint that cannot be expressed as a single-line regex, you may output an AST query instead.\n\nSet `\"engine\": \"ast\"` and provide an `\"astQuery\"` field with a Tree-sitter S-expression query. Leave `\"pattern\"` as an empty string.\n\nTree-sitter S-expression syntax:\n- `(node_type)` \u2014 matches a node\n- `(node_type field: (child_type))` \u2014 matches with named field\n- `@name` \u2014 captures a node\n- `(#eq? @name \"value\")` \u2014 predicate: capture text equals value\n- Use `@violation` capture name for the node that should be flagged\n\nExamples:\n- Catch direct process.env access:\n `(member_expression object: (identifier) @obj (#eq? @obj \"process\") property: (property_identifier) @prop (#eq? @prop \"env\")) @violation`\n- Catch empty catch blocks:\n `(catch_clause body: (statement_block) @body (#eq? @body \"{}\")) @violation`\n\nAST query output schema:\n```json\n{\n \"compilable\": true,\n \"engine\": \"ast\",\n \"astQuery\": \"(s-expression query here) @violation\",\n \"pattern\": \"\",\n \"message\": \"human-readable violation message\",\n \"fileGlobs\": [\"**/*.ts\", \"**/*.tsx\"]\n}\n```\n\nIMPORTANT: Only use AST queries for TypeScript/JavaScript/TSX/JSX files. If the lesson applies to other file types, prefer regex or mark as non-compilable.\n\n## ast-grep Patterns (Tier 2b \u2014 Preferred for structural rules)\nIf the lesson describes a structural constraint, prefer ast-grep patterns over regex or S-expressions.\n\nast-grep patterns look like the source code itself with $METAVAR placeholders:\n- `console.log($ARG)` \u2014 matches any console.log call\n- `process.env.$PROP` \u2014 matches any process.env access\n- `throw new Error($MSG)` \u2014 matches any Error throw\n- `useState($INIT)` \u2014 matches any useState hook\n\nSet `\"engine\": \"ast-grep\"` and provide an `\"astGrepPattern\"` field. Leave `\"pattern\"` as an empty string.\n\nast-grep output schema:\n```json\n{\n \"compilable\": true,\n \"engine\": \"ast-grep\",\n \"astGrepPattern\": \"console.log($ARG)\",\n \"pattern\": \"\",\n \"message\": \"human-readable violation message\",\n \"fileGlobs\": [\"**/*.ts\", \"**/*.tsx\"]\n}\n```\n\nIMPORTANT: ast-grep patterns must be single valid AST nodes. Statements like `catch ($E) {}` won't work \u2014 use regex for those.\nOnly use for TypeScript/JavaScript/TSX/JSX files.\n";
|
|
2
|
+
//# sourceMappingURL=compile-templates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile-templates.d.ts","sourceRoot":"","sources":["../../src/commands/compile-templates.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,sBAAsB,o1MAiIlC,CAAC"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
// ─── Compiler prompt ────────────────────────────────
|
|
2
|
+
export const COMPILER_SYSTEM_PROMPT = `# Lesson Compiler — Regex Rule Extraction
|
|
3
|
+
|
|
4
|
+
## Identity
|
|
5
|
+
You are a deterministic rule compiler. Your job is to read a single natural-language lesson and determine whether it can be expressed as a regex pattern that catches violations in source code diffs.
|
|
6
|
+
|
|
7
|
+
## Rules
|
|
8
|
+
- Output ONLY valid JSON — no markdown, no explanation, no preamble.
|
|
9
|
+
- The regex will be tested against individual lines added in a git diff (lines starting with \`+\`).
|
|
10
|
+
- The regex should catch **violations** (code that breaks the lesson's rule), NOT conformance.
|
|
11
|
+
- Use JavaScript RegExp syntax.
|
|
12
|
+
- Keep patterns simple and precise — avoid overly broad matches that cause false positives.
|
|
13
|
+
- If the lesson describes an architectural principle, design philosophy, or conceptual guideline that cannot be expressed as a line-level regex, set \`compilable\` to \`false\`.
|
|
14
|
+
- **File scoping:** Include a \`fileGlobs\` array to limit where the rule runs. Scope rules as tightly as possible:
|
|
15
|
+
- **By file type:** \`["*.sh", "*.yml"]\` — for rules about shell or YAML syntax.
|
|
16
|
+
- **By package/directory:** \`["packages/mcp/**/*.ts"]\` — for rules about MCP-specific patterns in a monorepo.
|
|
17
|
+
- **By exclusion:** \`["packages/cli/**/*.ts", "!**/*.test.ts"]\` — exclude test files that legitimately use the flagged pattern.
|
|
18
|
+
- **Infer scope from context:** If a lesson mentions "MCP tool returns", "CLI output", "LanceDB filters", or a specific package, scope to that package. Only omit \`fileGlobs\` if the rule genuinely applies to ALL files (e.g., universal TypeScript style rules).
|
|
19
|
+
- **CRITICAL — Supported glob syntax only:**
|
|
20
|
+
- \`*.ext\` — match extension anywhere
|
|
21
|
+
- \`dir/**/*.ext\` — directory + recursive + extension
|
|
22
|
+
- \`dir/**\` — everything under directory
|
|
23
|
+
- \`dir/*.ext\` — direct children only
|
|
24
|
+
- \`!pattern\` — negation prefix
|
|
25
|
+
- **DO NOT use** brace expansion \`{a,b}\`, nested globstars \`**/dir/**\`, or regex-style patterns.
|
|
26
|
+
- **DO NOT use** \`**/*.{ts,js}\`. Instead use separate entries: \`["**/*.ts", "**/*.js"]\`.
|
|
27
|
+
|
|
28
|
+
## Output Schema
|
|
29
|
+
\`\`\`json
|
|
30
|
+
{
|
|
31
|
+
"compilable": true,
|
|
32
|
+
"pattern": "regex pattern here",
|
|
33
|
+
"message": "human-readable violation message",
|
|
34
|
+
"fileGlobs": ["packages/mcp/**/*.ts", "!**/*.test.ts"]
|
|
35
|
+
}
|
|
36
|
+
\`\`\`
|
|
37
|
+
|
|
38
|
+
Or if the rule genuinely applies to all file types (rare — prefer scoping):
|
|
39
|
+
\`\`\`json
|
|
40
|
+
{
|
|
41
|
+
"compilable": true,
|
|
42
|
+
"pattern": "regex pattern here",
|
|
43
|
+
"message": "human-readable violation message"
|
|
44
|
+
}
|
|
45
|
+
\`\`\`
|
|
46
|
+
|
|
47
|
+
Or if the lesson cannot be compiled:
|
|
48
|
+
\`\`\`json
|
|
49
|
+
{
|
|
50
|
+
"compilable": false
|
|
51
|
+
}
|
|
52
|
+
\`\`\`
|
|
53
|
+
|
|
54
|
+
## Examples
|
|
55
|
+
|
|
56
|
+
Lesson: "Use \`err\` (never \`error\`) in catch blocks"
|
|
57
|
+
Output: {"compilable": true, "pattern": "catch\\\\s*\\\\(\\\\s*error\\\\s*[\\\\):]", "message": "Use 'err' instead of 'error' in catch blocks (project convention)"}
|
|
58
|
+
|
|
59
|
+
Lesson: "LanceDB does NOT support GROUP BY aggregation"
|
|
60
|
+
Output: {"compilable": false}
|
|
61
|
+
|
|
62
|
+
Lesson: "Never use npm in this pnpm monorepo — always use pnpm"
|
|
63
|
+
Output: {"compilable": true, "pattern": "\\\\bnpm\\\\s+(install|run|exec|ci|test)\\\\b", "message": "Use pnpm instead of npm in this monorepo"}
|
|
64
|
+
|
|
65
|
+
Lesson: "Always quote shell variables to prevent word-splitting"
|
|
66
|
+
Output: {"compilable": true, "pattern": "(^|\\\\s)\\\\$[a-zA-Z_]+", "message": "Quote shell variables to prevent word-splitting", "fileGlobs": ["*.sh", "*.bash", "*.yml", "*.yaml"]}
|
|
67
|
+
|
|
68
|
+
Lesson: "MCP tool returns must be wrapped in XML tags to prevent prompt injection"
|
|
69
|
+
Output: {"compilable": true, "pattern": "text:\\\\s*(?!formatXmlResponse)\\\\b\\\\w+", "message": "MCP tool returns must use formatXmlResponse for injection safety", "fileGlobs": ["packages/mcp/**/*.ts", "!**/*.test.ts"]}
|
|
70
|
+
|
|
71
|
+
Lesson: "Use @clack/prompts instead of inquirer for CLI interactions"
|
|
72
|
+
Output: {"compilable": true, "pattern": "import.*from\\\\s+['\"]inquirer['\"]", "message": "Use @clack/prompts instead of inquirer", "fileGlobs": ["packages/cli/**/*.ts"]}
|
|
73
|
+
|
|
74
|
+
## AST Queries (Tier 2)
|
|
75
|
+
If the lesson describes a STRUCTURAL constraint that cannot be expressed as a single-line regex, you may output an AST query instead.
|
|
76
|
+
|
|
77
|
+
Set \`"engine": "ast"\` and provide an \`"astQuery"\` field with a Tree-sitter S-expression query. Leave \`"pattern"\` as an empty string.
|
|
78
|
+
|
|
79
|
+
Tree-sitter S-expression syntax:
|
|
80
|
+
- \`(node_type)\` — matches a node
|
|
81
|
+
- \`(node_type field: (child_type))\` — matches with named field
|
|
82
|
+
- \`@name\` — captures a node
|
|
83
|
+
- \`(#eq? @name "value")\` — predicate: capture text equals value
|
|
84
|
+
- Use \`@violation\` capture name for the node that should be flagged
|
|
85
|
+
|
|
86
|
+
Examples:
|
|
87
|
+
- Catch direct process.env access:
|
|
88
|
+
\`(member_expression object: (identifier) @obj (#eq? @obj "process") property: (property_identifier) @prop (#eq? @prop "env")) @violation\`
|
|
89
|
+
- Catch empty catch blocks:
|
|
90
|
+
\`(catch_clause body: (statement_block) @body (#eq? @body "{}")) @violation\`
|
|
91
|
+
|
|
92
|
+
AST query output schema:
|
|
93
|
+
\`\`\`json
|
|
94
|
+
{
|
|
95
|
+
"compilable": true,
|
|
96
|
+
"engine": "ast",
|
|
97
|
+
"astQuery": "(s-expression query here) @violation",
|
|
98
|
+
"pattern": "",
|
|
99
|
+
"message": "human-readable violation message",
|
|
100
|
+
"fileGlobs": ["**/*.ts", "**/*.tsx"]
|
|
101
|
+
}
|
|
102
|
+
\`\`\`
|
|
103
|
+
|
|
104
|
+
IMPORTANT: Only use AST queries for TypeScript/JavaScript/TSX/JSX files. If the lesson applies to other file types, prefer regex or mark as non-compilable.
|
|
105
|
+
|
|
106
|
+
## ast-grep Patterns (Tier 2b — Preferred for structural rules)
|
|
107
|
+
If the lesson describes a structural constraint, prefer ast-grep patterns over regex or S-expressions.
|
|
108
|
+
|
|
109
|
+
ast-grep patterns look like the source code itself with $METAVAR placeholders:
|
|
110
|
+
- \`console.log($ARG)\` — matches any console.log call
|
|
111
|
+
- \`process.env.$PROP\` — matches any process.env access
|
|
112
|
+
- \`throw new Error($MSG)\` — matches any Error throw
|
|
113
|
+
- \`useState($INIT)\` — matches any useState hook
|
|
114
|
+
|
|
115
|
+
Set \`"engine": "ast-grep"\` and provide an \`"astGrepPattern"\` field. Leave \`"pattern"\` as an empty string.
|
|
116
|
+
|
|
117
|
+
ast-grep output schema:
|
|
118
|
+
\`\`\`json
|
|
119
|
+
{
|
|
120
|
+
"compilable": true,
|
|
121
|
+
"engine": "ast-grep",
|
|
122
|
+
"astGrepPattern": "console.log($ARG)",
|
|
123
|
+
"pattern": "",
|
|
124
|
+
"message": "human-readable violation message",
|
|
125
|
+
"fileGlobs": ["**/*.ts", "**/*.tsx"]
|
|
126
|
+
}
|
|
127
|
+
\`\`\`
|
|
128
|
+
|
|
129
|
+
IMPORTANT: ast-grep patterns must be single valid AST nodes. Statements like \`catch ($E) {}\` won't work — use regex for those.
|
|
130
|
+
Only use for TypeScript/JavaScript/TSX/JSX files.
|
|
131
|
+
`;
|
|
132
|
+
//# sourceMappingURL=compile-templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile-templates.js","sourceRoot":"","sources":["../../src/commands/compile-templates.ts"],"names":[],"mappings":"AAAA,uDAAuD;AAEvD,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiIrC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/commands/compile.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compile.d.ts","sourceRoot":"","sources":["../../src/commands/compile.ts"],"names":[],"mappings":"AAYA,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AA8OD,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAqM3E"}
|
package/dist/commands/compile.js
CHANGED
|
@@ -1,177 +1,164 @@
|
|
|
1
1
|
import { TotemConfigError, TotemError } from '@mmnto/totem';
|
|
2
|
+
import { COMPILER_SYSTEM_PROMPT } from './compile-templates.js';
|
|
2
3
|
// ─── Constants ──────────────────────────────────────
|
|
3
4
|
const TAG = 'Compile';
|
|
4
5
|
const COMPILED_RULES_FILE = 'compiled-rules.json';
|
|
5
|
-
// ───
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
- If the lesson describes an architectural principle, design philosophy, or conceptual guideline that cannot be expressed as a line-level regex, set \`compilable\` to \`false\`.
|
|
18
|
-
- **File scoping:** Include a \`fileGlobs\` array to limit where the rule runs. Scope rules as tightly as possible:
|
|
19
|
-
- **By file type:** \`["*.sh", "*.yml"]\` — for rules about shell or YAML syntax.
|
|
20
|
-
- **By package/directory:** \`["packages/mcp/**/*.ts"]\` — for rules about MCP-specific patterns in a monorepo.
|
|
21
|
-
- **By exclusion:** \`["packages/cli/**/*.ts", "!**/*.test.ts"]\` — exclude test files that legitimately use the flagged pattern.
|
|
22
|
-
- **Infer scope from context:** If a lesson mentions "MCP tool returns", "CLI output", "LanceDB filters", or a specific package, scope to that package. Only omit \`fileGlobs\` if the rule genuinely applies to ALL files (e.g., universal TypeScript style rules).
|
|
23
|
-
- **CRITICAL — Supported glob syntax only:**
|
|
24
|
-
- \`*.ext\` — match extension anywhere
|
|
25
|
-
- \`dir/**/*.ext\` — directory + recursive + extension
|
|
26
|
-
- \`dir/**\` — everything under directory
|
|
27
|
-
- \`dir/*.ext\` — direct children only
|
|
28
|
-
- \`!pattern\` — negation prefix
|
|
29
|
-
- **DO NOT use** brace expansion \`{a,b}\`, nested globstars \`**/dir/**\`, or regex-style patterns.
|
|
30
|
-
- **DO NOT use** \`**/*.{ts,js}\`. Instead use separate entries: \`["**/*.ts", "**/*.js"]\`.
|
|
31
|
-
|
|
32
|
-
## Output Schema
|
|
33
|
-
\`\`\`json
|
|
34
|
-
{
|
|
35
|
-
"compilable": true,
|
|
36
|
-
"pattern": "regex pattern here",
|
|
37
|
-
"message": "human-readable violation message",
|
|
38
|
-
"fileGlobs": ["packages/mcp/**/*.ts", "!**/*.test.ts"]
|
|
39
|
-
}
|
|
40
|
-
\`\`\`
|
|
41
|
-
|
|
42
|
-
Or if the rule genuinely applies to all file types (rare — prefer scoping):
|
|
43
|
-
\`\`\`json
|
|
44
|
-
{
|
|
45
|
-
"compilable": true,
|
|
46
|
-
"pattern": "regex pattern here",
|
|
47
|
-
"message": "human-readable violation message"
|
|
48
|
-
}
|
|
49
|
-
\`\`\`
|
|
50
|
-
|
|
51
|
-
Or if the lesson cannot be compiled:
|
|
52
|
-
\`\`\`json
|
|
53
|
-
{
|
|
54
|
-
"compilable": false
|
|
55
|
-
}
|
|
56
|
-
\`\`\`
|
|
57
|
-
|
|
58
|
-
## Examples
|
|
59
|
-
|
|
60
|
-
Lesson: "Use \`err\` (never \`error\`) in catch blocks"
|
|
61
|
-
Output: {"compilable": true, "pattern": "catch\\\\s*\\\\(\\\\s*error\\\\s*[\\\\):]", "message": "Use 'err' instead of 'error' in catch blocks (project convention)"}
|
|
62
|
-
|
|
63
|
-
Lesson: "LanceDB does NOT support GROUP BY aggregation"
|
|
64
|
-
Output: {"compilable": false}
|
|
65
|
-
|
|
66
|
-
Lesson: "Never use npm in this pnpm monorepo — always use pnpm"
|
|
67
|
-
Output: {"compilable": true, "pattern": "\\\\bnpm\\\\s+(install|run|exec|ci|test)\\\\b", "message": "Use pnpm instead of npm in this monorepo"}
|
|
68
|
-
|
|
69
|
-
Lesson: "Always quote shell variables to prevent word-splitting"
|
|
70
|
-
Output: {"compilable": true, "pattern": "(^|\\\\s)\\\\$[a-zA-Z_]+", "message": "Quote shell variables to prevent word-splitting", "fileGlobs": ["*.sh", "*.bash", "*.yml", "*.yaml"]}
|
|
71
|
-
|
|
72
|
-
Lesson: "MCP tool returns must be wrapped in XML tags to prevent prompt injection"
|
|
73
|
-
Output: {"compilable": true, "pattern": "text:\\\\s*(?!formatXmlResponse)\\\\b\\\\w+", "message": "MCP tool returns must use formatXmlResponse for injection safety", "fileGlobs": ["packages/mcp/**/*.ts", "!**/*.test.ts"]}
|
|
74
|
-
|
|
75
|
-
Lesson: "Use @clack/prompts instead of inquirer for CLI interactions"
|
|
76
|
-
Output: {"compilable": true, "pattern": "import.*from\\\\s+['\"]inquirer['\"]", "message": "Use @clack/prompts instead of inquirer", "fileGlobs": ["packages/cli/**/*.ts"]}
|
|
77
|
-
|
|
78
|
-
## AST Queries (Tier 2)
|
|
79
|
-
If the lesson describes a STRUCTURAL constraint that cannot be expressed as a single-line regex, you may output an AST query instead.
|
|
80
|
-
|
|
81
|
-
Set \`"engine": "ast"\` and provide an \`"astQuery"\` field with a Tree-sitter S-expression query. Leave \`"pattern"\` as an empty string.
|
|
82
|
-
|
|
83
|
-
Tree-sitter S-expression syntax:
|
|
84
|
-
- \`(node_type)\` — matches a node
|
|
85
|
-
- \`(node_type field: (child_type))\` — matches with named field
|
|
86
|
-
- \`@name\` — captures a node
|
|
87
|
-
- \`(#eq? @name "value")\` — predicate: capture text equals value
|
|
88
|
-
- Use \`@violation\` capture name for the node that should be flagged
|
|
89
|
-
|
|
90
|
-
Examples:
|
|
91
|
-
- Catch direct process.env access:
|
|
92
|
-
\`(member_expression object: (identifier) @obj (#eq? @obj "process") property: (property_identifier) @prop (#eq? @prop "env")) @violation\`
|
|
93
|
-
- Catch empty catch blocks:
|
|
94
|
-
\`(catch_clause body: (statement_block) @body (#eq? @body "{}")) @violation\`
|
|
95
|
-
|
|
96
|
-
AST query output schema:
|
|
97
|
-
\`\`\`json
|
|
98
|
-
{
|
|
99
|
-
"compilable": true,
|
|
100
|
-
"engine": "ast",
|
|
101
|
-
"astQuery": "(s-expression query here) @violation",
|
|
102
|
-
"pattern": "",
|
|
103
|
-
"message": "human-readable violation message",
|
|
104
|
-
"fileGlobs": ["**/*.ts", "**/*.tsx"]
|
|
105
|
-
}
|
|
106
|
-
\`\`\`
|
|
107
|
-
|
|
108
|
-
IMPORTANT: Only use AST queries for TypeScript/JavaScript/TSX/JSX files. If the lesson applies to other file types, prefer regex or mark as non-compilable.
|
|
109
|
-
|
|
110
|
-
## ast-grep Patterns (Tier 2b — Preferred for structural rules)
|
|
111
|
-
If the lesson describes a structural constraint, prefer ast-grep patterns over regex or S-expressions.
|
|
112
|
-
|
|
113
|
-
ast-grep patterns look like the source code itself with $METAVAR placeholders:
|
|
114
|
-
- \`console.log($ARG)\` — matches any console.log call
|
|
115
|
-
- \`process.env.$PROP\` — matches any process.env access
|
|
116
|
-
- \`throw new Error($MSG)\` — matches any Error throw
|
|
117
|
-
- \`useState($INIT)\` — matches any useState hook
|
|
118
|
-
|
|
119
|
-
Set \`"engine": "ast-grep"\` and provide an \`"astGrepPattern"\` field. Leave \`"pattern"\` as an empty string.
|
|
120
|
-
|
|
121
|
-
ast-grep output schema:
|
|
122
|
-
\`\`\`json
|
|
123
|
-
{
|
|
124
|
-
"compilable": true,
|
|
125
|
-
"engine": "ast-grep",
|
|
126
|
-
"astGrepPattern": "console.log($ARG)",
|
|
127
|
-
"pattern": "",
|
|
128
|
-
"message": "human-readable violation message",
|
|
129
|
-
"fileGlobs": ["**/*.ts", "**/*.tsx"]
|
|
130
|
-
}
|
|
131
|
-
\`\`\`
|
|
132
|
-
|
|
133
|
-
IMPORTANT: ast-grep patterns must be single valid AST nodes. Statements like \`catch ($E) {}\` won't work — use regex for those.
|
|
134
|
-
Only use for TypeScript/JavaScript/TSX/JSX files.
|
|
135
|
-
`;
|
|
136
|
-
// ─── Glob sanitization ─────────────────────────────
|
|
137
|
-
/**
|
|
138
|
-
* Expand brace patterns and strip unsupported glob syntax.
|
|
139
|
-
* e.g., "**\/*.{ts,js}" → ["**\/*.ts", "**\/*.js"]
|
|
140
|
-
*/
|
|
141
|
-
function sanitizeFileGlobs(globs) {
|
|
142
|
-
const result = [];
|
|
143
|
-
for (const glob of globs) {
|
|
144
|
-
// Expand brace patterns: **/*.{ts,js} → **/*.ts, **/*.js
|
|
145
|
-
const braceMatch = /^(.*)\{([^}]+)\}(.*)$/.exec(glob);
|
|
146
|
-
if (braceMatch) {
|
|
147
|
-
const prefix = braceMatch[1];
|
|
148
|
-
const alternatives = braceMatch[2].split(',').map((s) => s.trim());
|
|
149
|
-
const suffix = braceMatch[3];
|
|
150
|
-
for (const alt of alternatives) {
|
|
151
|
-
result.push(prefix + alt + suffix);
|
|
6
|
+
// ─── Single-lesson compilation ──────────────────────
|
|
7
|
+
async function compileLesson(lesson, deps) {
|
|
8
|
+
const { extractManualPattern, validateRegex, parseCompilerResponse, sanitizeFileGlobs, engineFields, runOrchestrator, log, existingByHash, options, config, cwd, } = deps;
|
|
9
|
+
// ── Pipeline 1: Manual pattern (zero LLM) ────────
|
|
10
|
+
const manual = extractManualPattern(lesson.body);
|
|
11
|
+
if (manual) {
|
|
12
|
+
// Validate the manually provided pattern
|
|
13
|
+
if (manual.engine === 'regex') {
|
|
14
|
+
const validation = validateRegex(manual.pattern);
|
|
15
|
+
if (!validation.valid) {
|
|
16
|
+
log.warn(TAG, `[${lesson.heading}] Manual pattern rejected: ${validation.reason} — skipping`); // totem-ignore
|
|
17
|
+
return { status: 'failed' };
|
|
152
18
|
}
|
|
153
|
-
continue;
|
|
154
19
|
}
|
|
155
|
-
|
|
20
|
+
const now = new Date().toISOString();
|
|
21
|
+
const existing = existingByHash.get(lesson.hash);
|
|
22
|
+
const sanitizedGlobs = manual.fileGlobs ? sanitizeFileGlobs(manual.fileGlobs) : undefined;
|
|
23
|
+
return {
|
|
24
|
+
status: 'compiled',
|
|
25
|
+
rule: {
|
|
26
|
+
lessonHash: lesson.hash,
|
|
27
|
+
lessonHeading: lesson.heading,
|
|
28
|
+
message: lesson.heading,
|
|
29
|
+
engine: manual.engine,
|
|
30
|
+
severity: manual.severity,
|
|
31
|
+
...engineFields(manual.engine, manual.pattern),
|
|
32
|
+
compiledAt: now,
|
|
33
|
+
createdAt: existing?.createdAt ?? now,
|
|
34
|
+
...(sanitizedGlobs && sanitizedGlobs.length > 0 ? { fileGlobs: sanitizedGlobs } : {}),
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
// ── Pipeline 2: LLM compilation ──────────────────
|
|
39
|
+
const prompt = `${COMPILER_SYSTEM_PROMPT}\n\n## Lesson to Compile\n\nHeading: ${lesson.heading}\n\n${lesson.body}`;
|
|
40
|
+
const response = await runOrchestrator({
|
|
41
|
+
prompt,
|
|
42
|
+
tag: TAG,
|
|
43
|
+
options,
|
|
44
|
+
config,
|
|
45
|
+
cwd,
|
|
46
|
+
});
|
|
47
|
+
if (response == null) {
|
|
48
|
+
return { status: 'noop' };
|
|
49
|
+
}
|
|
50
|
+
const parsed = parseCompilerResponse(response);
|
|
51
|
+
if (!parsed) {
|
|
52
|
+
log.warn(TAG, `[${lesson.heading}] Failed to parse LLM response — skipping`); // totem-ignore
|
|
53
|
+
return { status: 'failed' };
|
|
54
|
+
}
|
|
55
|
+
if (!parsed.compilable) {
|
|
56
|
+
log.dim(TAG, `[${lesson.heading}] Not compilable (conceptual/architectural) — skipping`); // totem-ignore
|
|
57
|
+
return { status: 'skipped', hash: lesson.hash };
|
|
58
|
+
}
|
|
59
|
+
// ── Gate 1: Severity validation (Proposal 184) ──
|
|
60
|
+
const severity = parsed.severity ?? 'warning';
|
|
61
|
+
const engine = parsed.engine ?? 'regex';
|
|
62
|
+
// ── ast-grep engine ───────────────────────────
|
|
63
|
+
if (engine === 'ast-grep') {
|
|
64
|
+
if (!parsed.astGrepPattern || !parsed.message) {
|
|
65
|
+
log.warn(TAG, `[${lesson.heading}] Missing astGrepPattern or message — skipping`); // totem-ignore
|
|
66
|
+
return { status: 'failed' };
|
|
67
|
+
}
|
|
68
|
+
const now = new Date().toISOString();
|
|
69
|
+
const existing = existingByHash.get(lesson.hash);
|
|
70
|
+
const sanitizedGlobs = parsed.fileGlobs ? sanitizeFileGlobs(parsed.fileGlobs) : undefined;
|
|
71
|
+
return {
|
|
72
|
+
status: 'compiled',
|
|
73
|
+
rule: {
|
|
74
|
+
lessonHash: lesson.hash,
|
|
75
|
+
lessonHeading: lesson.heading,
|
|
76
|
+
message: parsed.message,
|
|
77
|
+
engine: 'ast-grep',
|
|
78
|
+
severity,
|
|
79
|
+
...engineFields('ast-grep', parsed.astGrepPattern),
|
|
80
|
+
compiledAt: now,
|
|
81
|
+
createdAt: existing?.createdAt ?? now,
|
|
82
|
+
...(sanitizedGlobs && sanitizedGlobs.length > 0 ? { fileGlobs: sanitizedGlobs } : {}),
|
|
83
|
+
},
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
// ── Tree-sitter AST engine ────────────────────
|
|
87
|
+
if (engine === 'ast') {
|
|
88
|
+
if (!parsed.astQuery || !parsed.message) {
|
|
89
|
+
log.warn(TAG, `[${lesson.heading}] Missing astQuery or message — skipping`); // totem-ignore
|
|
90
|
+
return { status: 'failed' };
|
|
91
|
+
}
|
|
92
|
+
const now = new Date().toISOString();
|
|
93
|
+
const existing = existingByHash.get(lesson.hash);
|
|
94
|
+
const sanitizedGlobs = parsed.fileGlobs ? sanitizeFileGlobs(parsed.fileGlobs) : undefined;
|
|
95
|
+
return {
|
|
96
|
+
status: 'compiled',
|
|
97
|
+
rule: {
|
|
98
|
+
lessonHash: lesson.hash,
|
|
99
|
+
lessonHeading: lesson.heading,
|
|
100
|
+
message: parsed.message,
|
|
101
|
+
engine: 'ast',
|
|
102
|
+
severity,
|
|
103
|
+
...engineFields('ast', parsed.astQuery),
|
|
104
|
+
compiledAt: now,
|
|
105
|
+
createdAt: existing?.createdAt ?? now,
|
|
106
|
+
...(sanitizedGlobs && sanitizedGlobs.length > 0 ? { fileGlobs: sanitizedGlobs } : {}),
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
// ── Regex engine (default) ────────────────────
|
|
111
|
+
if (!parsed.pattern || !parsed.message) {
|
|
112
|
+
log.warn(TAG, `[${lesson.heading}] Missing pattern or message — skipping`); // totem-ignore
|
|
113
|
+
return { status: 'failed' };
|
|
114
|
+
}
|
|
115
|
+
const validation = validateRegex(parsed.pattern);
|
|
116
|
+
if (!validation.valid) {
|
|
117
|
+
log.warn(TAG, `[${lesson.heading}] Rejected regex: ${validation.reason} — skipping`); // totem-ignore
|
|
118
|
+
return { status: 'failed' };
|
|
156
119
|
}
|
|
157
|
-
|
|
120
|
+
const now = new Date().toISOString();
|
|
121
|
+
const existing = existingByHash.get(lesson.hash);
|
|
122
|
+
const sanitizedGlobs = parsed.fileGlobs ? sanitizeFileGlobs(parsed.fileGlobs) : undefined;
|
|
123
|
+
return {
|
|
124
|
+
status: 'compiled',
|
|
125
|
+
rule: {
|
|
126
|
+
lessonHash: lesson.hash,
|
|
127
|
+
lessonHeading: lesson.heading,
|
|
128
|
+
message: parsed.message,
|
|
129
|
+
engine: 'regex',
|
|
130
|
+
severity,
|
|
131
|
+
...engineFields('regex', parsed.pattern),
|
|
132
|
+
compiledAt: now,
|
|
133
|
+
createdAt: existing?.createdAt ?? now,
|
|
134
|
+
...(sanitizedGlobs && sanitizedGlobs.length > 0 ? { fileGlobs: sanitizedGlobs } : {}),
|
|
135
|
+
},
|
|
136
|
+
};
|
|
158
137
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
138
|
+
function logCompiledRule(log, lesson, rule) {
|
|
139
|
+
const engine = rule.engine;
|
|
140
|
+
const severity = rule.severity ?? 'warning';
|
|
141
|
+
if (engine === 'ast-grep') {
|
|
142
|
+
log.success(TAG, `[${lesson.heading}] Compiled (ast-grep, ${severity}): ${rule.astGrepPattern}`); // totem-ignore
|
|
143
|
+
}
|
|
144
|
+
else if (engine === 'ast') {
|
|
145
|
+
log.success(TAG, `[${lesson.heading}] Compiled (ast, ${severity}): ${rule.astQuery}`); // totem-ignore
|
|
146
|
+
}
|
|
147
|
+
else if (rule.lessonHeading === rule.message) {
|
|
148
|
+
// Manual pattern — message equals heading
|
|
149
|
+
const manualEngine = rule.engine;
|
|
150
|
+
log.success(TAG, `[${lesson.heading}] Compiled (manual ${manualEngine}, ${severity}): ${rule.pattern}`); // totem-ignore
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
log.success(TAG, `[${lesson.heading}] Compiled (regex, ${severity}): /${rule.pattern}/`); // totem-ignore
|
|
168
154
|
}
|
|
169
155
|
}
|
|
156
|
+
// ─── Main command ───────────────────────────────────
|
|
170
157
|
export async function compileCommand(options) {
|
|
171
158
|
const path = await import('node:path');
|
|
172
159
|
const { log } = await import('../ui.js');
|
|
173
160
|
const { loadConfig, loadEnv, resolveConfigPath, runOrchestrator } = await import('../utils.js');
|
|
174
|
-
const { exportLessons, extractManualPattern, hashLesson, loadCompiledRulesFile, parseCompilerResponse, readAllLessons, saveCompiledRulesFile, validateRegex, } = await import('@mmnto/totem');
|
|
161
|
+
const { engineFields, exportLessons, extractManualPattern, hashLesson, loadCompiledRulesFile, parseCompilerResponse, readAllLessons, sanitizeFileGlobs, saveCompiledRulesFile, validateRegex, } = await import('@mmnto/totem');
|
|
175
162
|
const cwd = process.cwd();
|
|
176
163
|
const configPath = resolveConfigPath(cwd);
|
|
177
164
|
loadEnv(cwd);
|
|
@@ -255,145 +242,37 @@ export async function compileCommand(options) {
|
|
|
255
242
|
}
|
|
256
243
|
newRules.length = 0;
|
|
257
244
|
newRules.push(...freshRules);
|
|
245
|
+
const deps = {
|
|
246
|
+
extractManualPattern,
|
|
247
|
+
validateRegex,
|
|
248
|
+
parseCompilerResponse,
|
|
249
|
+
sanitizeFileGlobs,
|
|
250
|
+
engineFields,
|
|
251
|
+
runOrchestrator,
|
|
252
|
+
log,
|
|
253
|
+
existingByHash,
|
|
254
|
+
options,
|
|
255
|
+
config,
|
|
256
|
+
cwd,
|
|
257
|
+
};
|
|
258
258
|
for (const lesson of toCompile) {
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
const now = new Date().toISOString();
|
|
272
|
-
const existing = existingByHash.get(lesson.hash);
|
|
273
|
-
const sanitizedGlobs = manual.fileGlobs ? sanitizeFileGlobs(manual.fileGlobs) : undefined;
|
|
274
|
-
newRules.push({
|
|
275
|
-
lessonHash: lesson.hash,
|
|
276
|
-
lessonHeading: lesson.heading,
|
|
277
|
-
message: lesson.heading,
|
|
278
|
-
engine: manual.engine,
|
|
279
|
-
severity: manual.severity,
|
|
280
|
-
...engineFields(manual.engine, manual.pattern),
|
|
281
|
-
compiledAt: now,
|
|
282
|
-
createdAt: existing?.createdAt ?? now,
|
|
283
|
-
...(sanitizedGlobs && sanitizedGlobs.length > 0 ? { fileGlobs: sanitizedGlobs } : {}),
|
|
284
|
-
});
|
|
285
|
-
compiled++;
|
|
286
|
-
log.success(TAG, `[${lesson.heading}] Compiled (manual ${manual.engine}, ${manual.severity}): ${manual.pattern}`); // totem-ignore
|
|
287
|
-
continue;
|
|
288
|
-
}
|
|
289
|
-
// ── Pipeline 2: LLM compilation ──────────────────
|
|
290
|
-
const prompt = `${COMPILER_SYSTEM_PROMPT}\n\n## Lesson to Compile\n\nHeading: ${lesson.heading}\n\n${lesson.body}`;
|
|
291
|
-
const response = await runOrchestrator({
|
|
292
|
-
prompt,
|
|
293
|
-
tag: TAG,
|
|
294
|
-
options,
|
|
295
|
-
config,
|
|
296
|
-
cwd,
|
|
297
|
-
});
|
|
298
|
-
if (response == null) {
|
|
299
|
-
continue;
|
|
300
|
-
}
|
|
301
|
-
const parsed = parseCompilerResponse(response);
|
|
302
|
-
if (!parsed) {
|
|
303
|
-
log.warn(TAG, `[${lesson.heading}] Failed to parse LLM response — skipping`); // totem-ignore
|
|
304
|
-
failed++;
|
|
305
|
-
continue;
|
|
306
|
-
}
|
|
307
|
-
if (!parsed.compilable) {
|
|
308
|
-
log.dim(TAG, `[${lesson.heading}] Not compilable (conceptual/architectural) — skipping`); // totem-ignore
|
|
309
|
-
nonCompilableSet.add(lesson.hash);
|
|
310
|
-
skipped++;
|
|
311
|
-
continue;
|
|
312
|
-
}
|
|
313
|
-
// ── Gate 1: Severity validation (Proposal 184) ──
|
|
314
|
-
// LLMs (especially Flash) frequently omit severity, producing rules
|
|
315
|
-
// that default to 'error' and break CI on advisory patterns.
|
|
316
|
-
// Default to 'warning' for new rules — they must be manually promoted.
|
|
317
|
-
const severity = parsed.severity ?? 'warning';
|
|
318
|
-
const engine = parsed.engine ?? 'regex';
|
|
319
|
-
// ── ast-grep engine ───────────────────────────
|
|
320
|
-
if (engine === 'ast-grep') {
|
|
321
|
-
if (!parsed.astGrepPattern || !parsed.message) {
|
|
322
|
-
log.warn(TAG, `[${lesson.heading}] Missing astGrepPattern or message — skipping`); // totem-ignore
|
|
323
|
-
failed++;
|
|
324
|
-
continue;
|
|
325
|
-
}
|
|
326
|
-
const now = new Date().toISOString();
|
|
327
|
-
const existing = existingByHash.get(lesson.hash);
|
|
328
|
-
const sanitizedGlobs = parsed.fileGlobs ? sanitizeFileGlobs(parsed.fileGlobs) : undefined;
|
|
329
|
-
newRules.push({
|
|
330
|
-
lessonHash: lesson.hash,
|
|
331
|
-
lessonHeading: lesson.heading,
|
|
332
|
-
message: parsed.message,
|
|
333
|
-
engine: 'ast-grep',
|
|
334
|
-
severity,
|
|
335
|
-
...engineFields('ast-grep', parsed.astGrepPattern),
|
|
336
|
-
compiledAt: now,
|
|
337
|
-
createdAt: existing?.createdAt ?? now,
|
|
338
|
-
...(sanitizedGlobs && sanitizedGlobs.length > 0 ? { fileGlobs: sanitizedGlobs } : {}),
|
|
339
|
-
});
|
|
340
|
-
compiled++;
|
|
341
|
-
log.success(TAG, `[${lesson.heading}] Compiled (ast-grep, ${severity}): ${parsed.astGrepPattern}`); // totem-ignore
|
|
342
|
-
continue;
|
|
343
|
-
}
|
|
344
|
-
// ── Tree-sitter AST engine ────────────────────
|
|
345
|
-
if (engine === 'ast') {
|
|
346
|
-
if (!parsed.astQuery || !parsed.message) {
|
|
347
|
-
log.warn(TAG, `[${lesson.heading}] Missing astQuery or message — skipping`); // totem-ignore
|
|
259
|
+
const result = await compileLesson(lesson, deps);
|
|
260
|
+
switch (result.status) {
|
|
261
|
+
case 'compiled':
|
|
262
|
+
newRules.push(result.rule);
|
|
263
|
+
compiled++;
|
|
264
|
+
logCompiledRule(log, lesson, result.rule);
|
|
265
|
+
break;
|
|
266
|
+
case 'skipped':
|
|
267
|
+
nonCompilableSet.add(result.hash);
|
|
268
|
+
skipped++;
|
|
269
|
+
break;
|
|
270
|
+
case 'failed':
|
|
348
271
|
failed++;
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
const existing = existingByHash.get(lesson.hash);
|
|
353
|
-
const sanitizedGlobs = parsed.fileGlobs ? sanitizeFileGlobs(parsed.fileGlobs) : undefined;
|
|
354
|
-
newRules.push({
|
|
355
|
-
lessonHash: lesson.hash,
|
|
356
|
-
lessonHeading: lesson.heading,
|
|
357
|
-
message: parsed.message,
|
|
358
|
-
engine: 'ast',
|
|
359
|
-
severity,
|
|
360
|
-
...engineFields('ast', parsed.astQuery),
|
|
361
|
-
compiledAt: now,
|
|
362
|
-
createdAt: existing?.createdAt ?? now,
|
|
363
|
-
...(sanitizedGlobs && sanitizedGlobs.length > 0 ? { fileGlobs: sanitizedGlobs } : {}),
|
|
364
|
-
});
|
|
365
|
-
compiled++;
|
|
366
|
-
log.success(TAG, `[${lesson.heading}] Compiled (ast, ${severity}): ${parsed.astQuery}`); // totem-ignore
|
|
367
|
-
continue;
|
|
272
|
+
break;
|
|
273
|
+
case 'noop':
|
|
274
|
+
break;
|
|
368
275
|
}
|
|
369
|
-
// ── Regex engine (default) ────────────────────
|
|
370
|
-
if (!parsed.pattern || !parsed.message) {
|
|
371
|
-
log.warn(TAG, `[${lesson.heading}] Missing pattern or message — skipping`); // totem-ignore
|
|
372
|
-
failed++;
|
|
373
|
-
continue;
|
|
374
|
-
}
|
|
375
|
-
const validation = validateRegex(parsed.pattern);
|
|
376
|
-
if (!validation.valid) {
|
|
377
|
-
log.warn(TAG, `[${lesson.heading}] Rejected regex: ${validation.reason} — skipping`); // totem-ignore
|
|
378
|
-
failed++;
|
|
379
|
-
continue;
|
|
380
|
-
}
|
|
381
|
-
const now = new Date().toISOString();
|
|
382
|
-
const existing = existingByHash.get(lesson.hash);
|
|
383
|
-
const sanitizedGlobs = parsed.fileGlobs ? sanitizeFileGlobs(parsed.fileGlobs) : undefined;
|
|
384
|
-
newRules.push({
|
|
385
|
-
lessonHash: lesson.hash,
|
|
386
|
-
lessonHeading: lesson.heading,
|
|
387
|
-
message: parsed.message,
|
|
388
|
-
engine: 'regex',
|
|
389
|
-
severity,
|
|
390
|
-
...engineFields('regex', parsed.pattern),
|
|
391
|
-
compiledAt: now,
|
|
392
|
-
createdAt: existing?.createdAt ?? now,
|
|
393
|
-
...(sanitizedGlobs && sanitizedGlobs.length > 0 ? { fileGlobs: sanitizedGlobs } : {}),
|
|
394
|
-
});
|
|
395
|
-
compiled++;
|
|
396
|
-
log.success(TAG, `[${lesson.heading}] Compiled (regex, ${severity}): /${parsed.pattern}/`); // totem-ignore
|
|
397
276
|
}
|
|
398
277
|
if (!options.raw) {
|
|
399
278
|
// Prune stale non-compilable hashes (lesson was edited or removed)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/commands/compile.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"compile.js","sourceRoot":"","sources":["../../src/commands/compile.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const SYSTEM_PROMPT = "# Spec System Prompt \u2014 Pre-Work Briefing\n\n## Identity & Role\nYou are a Staff-Level Software Architect. You do not write the implementation code yourself; your job is to guide developers. You design system interactions, define data contracts, identify architectural traps, and ensure the proposed plan aligns with existing project patterns.\n\n## Core Mission\nProduce a structured, highly technical pre-work briefing for a task before implementation begins, drawing heavily on provided Totem knowledge to ensure architectural consistency.\n\n## Critical Rules\n- **No Implementation Generation:** Do not write the final code. Provide architectural guidance, sequence logic, and structural plans.\n- **Define Contracts:** Explicitly define data contracts (e.g., Zod schemas, DB migrations, API interfaces) needed for the feature.\n- **Pessimistic Edge Cases:** Actively search for edge cases the issue description failed to mention (e.g., race conditions, missing indexes).\n- **Grounded Reality:** File paths must reference actual files from the context provided. When multiple approaches exist, list trade-offs with a firm recommendation.\n- **Lessons Are Law:** If RELEVANT LESSONS are provided, treat each lesson as a hard architectural constraint. Your plan MUST account for every relevant lesson. Call out which lessons influenced your approach in the Architectural Context section.\n\n## Output Format\nRespond with ONLY the sections below. No preamble, no closing remarks.\n\n### Problem Statement\n[1-2 sentences restating the issue in concrete implementation terms. What exactly needs to change?]\n\n### Architectural Context\n[Relevant sessions, PRs, decisions, or past traps from the provided Totem knowledge. If nothing relevant, say \"None found in provided context.\"]\n\n### Files to Examine\n[Ordered list of files the developer should read before starting. Most critical first. Format: `path/to/file.ts` \u2014 reason to examine]\n\n### Technical Approach & Contracts\n[Recommended implementation approach. Include concrete steps, sequence logic, and required data contract changes (e.g., schemas, types). If multiple valid approaches exist, list trade-offs with a clear recommendation.]\n\n### Edge Cases & Traps\n[Things the issue description missed. Include race conditions, existing patterns that MUST be followed, and potential architectural regressions.]\n\n### Implementation Tasks\n[Break the work into discrete, ordered checkbox tasks. Each task should be completable in 5-15 minutes. Format each as `- [ ] **Task N: Title**` followed by indented steps.\n\nFor each task:\n- Name the files to modify and the test files to update\n- If a retrieved Totem lesson applies to THIS SPECIFIC TASK, inject it inline as:\n > TOTEM INVARIANT ([lesson heading]): [one-line constraint summary]\n Place the invariant directly above the step it constrains, not in a separate section.\n- If the task introduces behavior that could regress, add a TDD directive:\n > TEST DIRECTIVE: Before implementing, write a failing test named `[descriptive test name]` that proves the regression is caught.\n The test name must be specific (e.g., `rejects empty catch blocks`), not generic (e.g., `works correctly`).\n- Each task ends with: write test (or update existing) \u2192 verify fails \u2192 implement \u2192 verify passes \u2192 lint\n\nRED FLAGS \u2014 if any of these occur, STOP and fix before proceeding:\n- Never move to the next task until the current task's tests pass AND lint is clean.\n- Never accept \"close enough\" on a failing test. Fix it or rewrite the approach.\n- Never skip the test step. No untested code advances to the next task.\n- Never write code before writing the failing test (TDD is mandatory, not advisory).]\n\n### Execution Flow (structural constraint)\n```dot\ndigraph workflow {\n spec -> write_test -> verify_fails -> implement -> verify_passes -> lint -> next_task\n verify_fails -> implement [label=\"RED only\"]\n verify_passes -> lint [label=\"GREEN required\"]\n lint -> next_task [label=\"0 violations\"]\n lint -> implement [label=\"violations found \u2014 fix first\"]\n}\n```\n\n### Verification (MANDATORY \u2014 do not skip)\nEvery implementation MUST end with these steps:\n1. `totem lint` \u2014 deterministic rule check (zero LLM, ~2s). Fixes any violations.\n2. `totem shield` \u2014 AI-powered architectural review (~18s). Addresses any critical findings.\n3. If using MCP, call `verify_execution` to confirm compliance before declaring the task done.\n\n### Test Plan\n[Specific test scenarios needed to prove the feature works and edge cases are handled. Reference existing test file patterns when applicable.]\n";
|
|
2
|
+
export { SYSTEM_PROMPT as SPEC_SYSTEM_PROMPT };
|
|
3
|
+
//# sourceMappingURL=spec-templates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec-templates.d.ts","sourceRoot":"","sources":["../../src/commands/spec-templates.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,aAAa,qlJAuEzB,CAAC;AAEF,OAAO,EAAE,aAAa,IAAI,kBAAkB,EAAE,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
// ─── System prompt ──────────────────────────────────────
|
|
2
|
+
// Version: 1.1.0 (2026-03-21) — Added RED FLAGS + Graphviz execution flow
|
|
3
|
+
export const SYSTEM_PROMPT = `# Spec System Prompt — Pre-Work Briefing
|
|
4
|
+
|
|
5
|
+
## Identity & Role
|
|
6
|
+
You are a Staff-Level Software Architect. You do not write the implementation code yourself; your job is to guide developers. You design system interactions, define data contracts, identify architectural traps, and ensure the proposed plan aligns with existing project patterns.
|
|
7
|
+
|
|
8
|
+
## Core Mission
|
|
9
|
+
Produce a structured, highly technical pre-work briefing for a task before implementation begins, drawing heavily on provided Totem knowledge to ensure architectural consistency.
|
|
10
|
+
|
|
11
|
+
## Critical Rules
|
|
12
|
+
- **No Implementation Generation:** Do not write the final code. Provide architectural guidance, sequence logic, and structural plans.
|
|
13
|
+
- **Define Contracts:** Explicitly define data contracts (e.g., Zod schemas, DB migrations, API interfaces) needed for the feature.
|
|
14
|
+
- **Pessimistic Edge Cases:** Actively search for edge cases the issue description failed to mention (e.g., race conditions, missing indexes).
|
|
15
|
+
- **Grounded Reality:** File paths must reference actual files from the context provided. When multiple approaches exist, list trade-offs with a firm recommendation.
|
|
16
|
+
- **Lessons Are Law:** If RELEVANT LESSONS are provided, treat each lesson as a hard architectural constraint. Your plan MUST account for every relevant lesson. Call out which lessons influenced your approach in the Architectural Context section.
|
|
17
|
+
|
|
18
|
+
## Output Format
|
|
19
|
+
Respond with ONLY the sections below. No preamble, no closing remarks.
|
|
20
|
+
|
|
21
|
+
### Problem Statement
|
|
22
|
+
[1-2 sentences restating the issue in concrete implementation terms. What exactly needs to change?]
|
|
23
|
+
|
|
24
|
+
### Architectural Context
|
|
25
|
+
[Relevant sessions, PRs, decisions, or past traps from the provided Totem knowledge. If nothing relevant, say "None found in provided context."]
|
|
26
|
+
|
|
27
|
+
### Files to Examine
|
|
28
|
+
[Ordered list of files the developer should read before starting. Most critical first. Format: \`path/to/file.ts\` — reason to examine]
|
|
29
|
+
|
|
30
|
+
### Technical Approach & Contracts
|
|
31
|
+
[Recommended implementation approach. Include concrete steps, sequence logic, and required data contract changes (e.g., schemas, types). If multiple valid approaches exist, list trade-offs with a clear recommendation.]
|
|
32
|
+
|
|
33
|
+
### Edge Cases & Traps
|
|
34
|
+
[Things the issue description missed. Include race conditions, existing patterns that MUST be followed, and potential architectural regressions.]
|
|
35
|
+
|
|
36
|
+
### Implementation Tasks
|
|
37
|
+
[Break the work into discrete, ordered checkbox tasks. Each task should be completable in 5-15 minutes. Format each as \`- [ ] **Task N: Title**\` followed by indented steps.
|
|
38
|
+
|
|
39
|
+
For each task:
|
|
40
|
+
- Name the files to modify and the test files to update
|
|
41
|
+
- If a retrieved Totem lesson applies to THIS SPECIFIC TASK, inject it inline as:
|
|
42
|
+
> TOTEM INVARIANT ([lesson heading]): [one-line constraint summary]
|
|
43
|
+
Place the invariant directly above the step it constrains, not in a separate section.
|
|
44
|
+
- If the task introduces behavior that could regress, add a TDD directive:
|
|
45
|
+
> TEST DIRECTIVE: Before implementing, write a failing test named \`[descriptive test name]\` that proves the regression is caught.
|
|
46
|
+
The test name must be specific (e.g., \`rejects empty catch blocks\`), not generic (e.g., \`works correctly\`).
|
|
47
|
+
- Each task ends with: write test (or update existing) → verify fails → implement → verify passes → lint
|
|
48
|
+
|
|
49
|
+
RED FLAGS — if any of these occur, STOP and fix before proceeding:
|
|
50
|
+
- Never move to the next task until the current task's tests pass AND lint is clean.
|
|
51
|
+
- Never accept "close enough" on a failing test. Fix it or rewrite the approach.
|
|
52
|
+
- Never skip the test step. No untested code advances to the next task.
|
|
53
|
+
- Never write code before writing the failing test (TDD is mandatory, not advisory).]
|
|
54
|
+
|
|
55
|
+
### Execution Flow (structural constraint)
|
|
56
|
+
\`\`\`dot
|
|
57
|
+
digraph workflow {
|
|
58
|
+
spec -> write_test -> verify_fails -> implement -> verify_passes -> lint -> next_task
|
|
59
|
+
verify_fails -> implement [label="RED only"]
|
|
60
|
+
verify_passes -> lint [label="GREEN required"]
|
|
61
|
+
lint -> next_task [label="0 violations"]
|
|
62
|
+
lint -> implement [label="violations found — fix first"]
|
|
63
|
+
}
|
|
64
|
+
\`\`\`
|
|
65
|
+
|
|
66
|
+
### Verification (MANDATORY — do not skip)
|
|
67
|
+
Every implementation MUST end with these steps:
|
|
68
|
+
1. \`totem lint\` — deterministic rule check (zero LLM, ~2s). Fixes any violations.
|
|
69
|
+
2. \`totem shield\` — AI-powered architectural review (~18s). Addresses any critical findings.
|
|
70
|
+
3. If using MCP, call \`verify_execution\` to confirm compliance before declaring the task done.
|
|
71
|
+
|
|
72
|
+
### Test Plan
|
|
73
|
+
[Specific test scenarios needed to prove the feature works and edge cases are handled. Reference existing test file patterns when applicable.]
|
|
74
|
+
`;
|
|
75
|
+
export { SYSTEM_PROMPT as SPEC_SYSTEM_PROMPT };
|
|
76
|
+
//# sourceMappingURL=spec-templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec-templates.js","sourceRoot":"","sources":["../../src/commands/spec-templates.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,0EAA0E;AAE1E,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuE5B,CAAC;AAEF,OAAO,EAAE,aAAa,IAAI,kBAAkB,EAAE,CAAC"}
|
package/dist/commands/spec.d.ts
CHANGED
|
@@ -3,8 +3,7 @@ import { LanceStore } from '@mmnto/totem';
|
|
|
3
3
|
import type { StandardIssue } from '../adapters/issue-adapter.js';
|
|
4
4
|
export declare const MAX_LESSONS = 10;
|
|
5
5
|
export declare const MAX_LESSON_CHARS = 8000;
|
|
6
|
-
|
|
7
|
-
export { SYSTEM_PROMPT as SPEC_SYSTEM_PROMPT };
|
|
6
|
+
export { SPEC_SYSTEM_PROMPT } from './spec-templates.js';
|
|
8
7
|
export interface RetrievedContext {
|
|
9
8
|
specs: SearchResult[];
|
|
10
9
|
sessions: SearchResult[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../../src/commands/spec.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAkB,UAAU,EAAoB,MAAM,cAAc,CAAC;AAE5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../../src/commands/spec.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,EAAkB,UAAU,EAAoB,MAAM,cAAc,CAAC;AAE5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAsBlE,eAAO,MAAM,WAAW,KAAK,CAAC;AAC9B,eAAO,MAAM,gBAAgB,OAAQ,CAAC;AAQtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAMzD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,IAAI,EAAE,YAAY,EAAE,CAAC;IACrB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,UAAU,EACjB,YAAY,CAAC,EAAE,UAAU,EAAE,GAC1B,OAAO,CAAC,gBAAgB,CAAC,CAwC3B;AAUD,UAAU,WAAW;IACnB,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAID,wBAAgB,cAAc,CAC5B,MAAM,EAAE,WAAW,EAAE,EACrB,OAAO,EAAE,gBAAgB,EACzB,YAAY,EAAE,MAAM,GACnB,MAAM,CAqCR;AAID,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAoHvF"}
|
package/dist/commands/spec.js
CHANGED
|
@@ -2,6 +2,7 @@ import * as path from 'node:path';
|
|
|
2
2
|
import { createEmbedder, LanceStore, TotemConfigError } from '@mmnto/totem';
|
|
3
3
|
import { log } from '../ui.js';
|
|
4
4
|
import { formatLessonSection, formatResults, getSystemPrompt, loadConfig, loadEnv, partitionLessons, requireEmbedding, resolveConfigPath, runOrchestrator, wrapXml, writeOutput, } from '../utils.js';
|
|
5
|
+
import { SYSTEM_PROMPT } from './spec-templates.js';
|
|
5
6
|
// ─── Constants ──────────────────────────────────────────
|
|
6
7
|
const TAG = 'Spec';
|
|
7
8
|
const QUERY_BODY_TRUNCATE = 500;
|
|
@@ -13,64 +14,7 @@ const MAX_SPECS = 5;
|
|
|
13
14
|
const MAX_SESSIONS = 5;
|
|
14
15
|
const MAX_CODE_RESULTS = 3;
|
|
15
16
|
// ─── System prompt ──────────────────────────────────────
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
## Identity & Role
|
|
19
|
-
You are a Staff-Level Software Architect. You do not write the implementation code yourself; your job is to guide developers. You design system interactions, define data contracts, identify architectural traps, and ensure the proposed plan aligns with existing project patterns.
|
|
20
|
-
|
|
21
|
-
## Core Mission
|
|
22
|
-
Produce a structured, highly technical pre-work briefing for a task before implementation begins, drawing heavily on provided Totem knowledge to ensure architectural consistency.
|
|
23
|
-
|
|
24
|
-
## Critical Rules
|
|
25
|
-
- **No Implementation Generation:** Do not write the final code. Provide architectural guidance, sequence logic, and structural plans.
|
|
26
|
-
- **Define Contracts:** Explicitly define data contracts (e.g., Zod schemas, DB migrations, API interfaces) needed for the feature.
|
|
27
|
-
- **Pessimistic Edge Cases:** Actively search for edge cases the issue description failed to mention (e.g., race conditions, missing indexes).
|
|
28
|
-
- **Grounded Reality:** File paths must reference actual files from the context provided. When multiple approaches exist, list trade-offs with a firm recommendation.
|
|
29
|
-
- **Lessons Are Law:** If RELEVANT LESSONS are provided, treat each lesson as a hard architectural constraint. Your plan MUST account for every relevant lesson. Call out which lessons influenced your approach in the Architectural Context section.
|
|
30
|
-
|
|
31
|
-
## Output Format
|
|
32
|
-
Respond with ONLY the sections below. No preamble, no closing remarks.
|
|
33
|
-
|
|
34
|
-
### Problem Statement
|
|
35
|
-
[1-2 sentences restating the issue in concrete implementation terms. What exactly needs to change?]
|
|
36
|
-
|
|
37
|
-
### Architectural Context
|
|
38
|
-
[Relevant sessions, PRs, decisions, or past traps from the provided Totem knowledge. If nothing relevant, say "None found in provided context."]
|
|
39
|
-
|
|
40
|
-
### Files to Examine
|
|
41
|
-
[Ordered list of files the developer should read before starting. Most critical first. Format: \`path/to/file.ts\` — reason to examine]
|
|
42
|
-
|
|
43
|
-
### Technical Approach & Contracts
|
|
44
|
-
[Recommended implementation approach. Include concrete steps, sequence logic, and required data contract changes (e.g., schemas, types). If multiple valid approaches exist, list trade-offs with a clear recommendation.]
|
|
45
|
-
|
|
46
|
-
### Edge Cases & Traps
|
|
47
|
-
[Things the issue description missed. Include race conditions, existing patterns that MUST be followed, and potential architectural regressions.]
|
|
48
|
-
|
|
49
|
-
### Implementation Tasks
|
|
50
|
-
[Break the work into discrete, ordered checkbox tasks. Each task should be completable in 5-15 minutes. Format each as \`- [ ] **Task N: Title**\` followed by indented steps.
|
|
51
|
-
|
|
52
|
-
For each task:
|
|
53
|
-
- Name the files to modify and the test files to update
|
|
54
|
-
- If a retrieved Totem lesson applies to THIS SPECIFIC TASK, inject it inline as:
|
|
55
|
-
> TOTEM INVARIANT ([lesson heading]): [one-line constraint summary]
|
|
56
|
-
Place the invariant directly above the step it constrains, not in a separate section.
|
|
57
|
-
- If the task introduces behavior that could regress, add a TDD directive:
|
|
58
|
-
> TEST DIRECTIVE: Before implementing, write a failing test named \`[descriptive test name]\` that proves the regression is caught.
|
|
59
|
-
The test name must be specific (e.g., \`rejects empty catch blocks\`), not generic (e.g., \`works correctly\`).
|
|
60
|
-
- Each task ends with: write test (or update existing) → verify fails → implement → verify passes → lint]
|
|
61
|
-
|
|
62
|
-
### Verification (MANDATORY — do not skip)
|
|
63
|
-
Every implementation MUST end with these steps:
|
|
64
|
-
1. \`totem lint\` — deterministic rule check (zero LLM, ~2s). Fixes any violations.
|
|
65
|
-
2. \`totem shield\` — AI-powered architectural review (~18s). Addresses any critical findings.
|
|
66
|
-
3. If using MCP, call \`verify_execution\` to confirm compliance before declaring the task done.
|
|
67
|
-
|
|
68
|
-
### Test Plan
|
|
69
|
-
[Specific test scenarios needed to prove the feature works and edge cases are handled. Reference existing test file patterns when applicable.]
|
|
70
|
-
`;
|
|
71
|
-
// ─── Issue helpers ──────────────────────────────────────
|
|
72
|
-
// ─── LanceDB retrieval ─────────────────────────────────
|
|
73
|
-
export { SYSTEM_PROMPT as SPEC_SYSTEM_PROMPT };
|
|
17
|
+
export { SPEC_SYSTEM_PROMPT } from './spec-templates.js';
|
|
74
18
|
export async function retrieveContext(query, store, linkedStores) {
|
|
75
19
|
const search = (s, typeFilter, maxResults) => s.search({ query, typeFilter, maxResults });
|
|
76
20
|
// Fetch from primary store
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../../src/commands/spec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAGlC,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAG5E,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,eAAe,EACf,UAAU,EACV,OAAO,EACP,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,OAAO,EACP,WAAW,GACZ,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../../src/commands/spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,6 +41,16 @@ describe('SPEC_SYSTEM_PROMPT', () => {
|
|
|
41
41
|
it('instructs LLM to cite lessons in Architectural Context', () => {
|
|
42
42
|
expect(SPEC_SYSTEM_PROMPT).toContain('Call out which lessons influenced');
|
|
43
43
|
});
|
|
44
|
+
it('contains RED FLAGS TDD enforcement section', () => {
|
|
45
|
+
expect(SPEC_SYSTEM_PROMPT).toContain('RED FLAGS');
|
|
46
|
+
expect(SPEC_SYSTEM_PROMPT).toContain('Never write code before writing the failing test');
|
|
47
|
+
expect(SPEC_SYSTEM_PROMPT).toContain('Never skip the test step');
|
|
48
|
+
});
|
|
49
|
+
it('contains Graphviz execution flow diagram', () => {
|
|
50
|
+
expect(SPEC_SYSTEM_PROMPT).toContain('digraph workflow');
|
|
51
|
+
expect(SPEC_SYSTEM_PROMPT).toContain('verify_fails -> implement');
|
|
52
|
+
expect(SPEC_SYSTEM_PROMPT).toContain('verify_passes -> lint');
|
|
53
|
+
});
|
|
44
54
|
});
|
|
45
55
|
// ─── assemblePrompt ──────────────────────────────────────
|
|
46
56
|
describe('assemblePrompt', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec.test.js","sourceRoot":"","sources":["../../src/commands/spec.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAIlD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,eAAe,EACf,kBAAkB,GACnB,MAAM,WAAW,CAAC;AAEnB,4DAA4D;AAE5D,SAAS,UAAU,CAAC,YAAmC,EAAE;IACvD,OAAO;QACL,OAAO,EAAE,2DAA2D;QACpE,aAAa,EAAE,gDAAgD;QAC/D,QAAQ,EAAE,mBAAmB;QAC7B,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,gDAAgD;QACvD,KAAK,EAAE,GAAG;QACV,QAAQ,EAAE,EAAE;QACZ,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,YAAmC,EAAE;IACrD,OAAO;QACL,OAAO,EAAE,qCAAqC;QAC9C,aAAa,EAAE,yBAAyB;QACxC,QAAQ,EAAE,sBAAsB;QAChC,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,yBAAyB;QAChC,KAAK,EAAE,IAAI;QACX,QAAQ,EAAE,EAAE;QACZ,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,SAAS,YAAY;IACnB,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AAC5D,CAAC;AAED,4DAA4D;AAE5D,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QACzD,MAAM,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,CAAC,kBAAkB,CAAC,CAAC,SAAS,CAAC,mCAAmC,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,4DAA4D;AAE5D,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,GAAG,GAAqB;YAC5B,GAAG,YAAY,EAAE;YACjB,OAAO,EAAE,CAAC,UAAU,EAAE,CAAC;SACxB,CAAC;QACF,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;QAC/F,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,qCAAqC,CAAC,CAAC;QAChE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,sCAAsC,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,MAAM,GAAG,cAAc,CAC3B,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC,EACzC,YAAY,EAAE,EACd,eAAe,CAChB,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjC,MAAM,GAAG,GAAqB;YAC5B,GAAG,YAAY,EAAE;YACjB,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;SAC7C,CAAC;QACF,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;QACzF,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,GAAG,GAAqB;YAC5B,GAAG,YAAY,EAAE;YACjB,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;SACxC,CAAC;QACF,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;QACzF,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,0EAA0E;QAC1E,MAAM,SAAS,GAAG,UAAU,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC,CAAC;QACrE,MAAM,GAAG,GAAqB,EAAE,GAAG,YAAY,EAAE,EAAE,OAAO,EAAE,CAAC;QAE7D,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;QAEzF,mCAAmC;QACnC,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACnF,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,gBAAgB,GAAG,GAAG,CAAC,CAAC,CAAC,2BAA2B;IAChG,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,UAAU,GAAG,UAAU,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,gBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5F,MAAM,WAAW,GAAG,UAAU,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACjF,MAAM,GAAG,GAAqB;YAC5B,GAAG,YAAY,EAAE;YACjB,OAAO,EAAE,CAAC,UAAU,EAAE,WAAW,CAAC;SACnC,CAAC;QACF,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;QACzF,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,GAAG,GAAqB;YAC5B,GAAG,YAAY,EAAE;YACjB,KAAK,EAAE,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO,EAAE,CAAC,UAAU,EAAE,CAAC;SACxB,CAAC;QACF,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;QACzF,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,qCAAqC,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,GAAG,GAAqB;YAC5B,GAAG,YAAY,EAAE;YACjB,OAAO,EAAE,CAAC,UAAU,EAAE,CAAC;SACxB,CAAC;QACF,MAAM,MAAM,GAAG,cAAc,CAC3B;YACE;gBACE,KAAK,EAAE;oBACL,MAAM,EAAE,EAAE;oBACV,KAAK,EAAE,gBAAgB;oBACvB,IAAI,EAAE,sBAAsB;oBAC5B,KAAK,EAAE,MAAM;oBACb,MAAM,EAAE,CAAC,KAAK,CAAC;iBAChB;gBACD,QAAQ,EAAE,IAAI;aACf;SACF,EACD,GAAG,EACH,eAAe,CAChB,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACtC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,4DAA4D;AAE5D,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,WAAW,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;QAC9C,MAAM,CAAC,WAAW,CAAC,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,CAAC,gBAAgB,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACvD,MAAM,CAAC,gBAAgB,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,4DAA4D;AAE5D,2DAA2D;AAE3D,SAAS,SAAS,CAAC,OAAuB;IACxC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAA2B,CAAC;AACjF,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAU;IAClC,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAA2B,CAAC;AAC7E,CAAC;AAED,QAAQ,CAAC,6CAA6C,EAAE,GAAG,EAAE;IAC3D,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACxE,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAEtE,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QAEnE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC7C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACpC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACxE,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC;QAE5D,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QAEpE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACrD,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAEpE,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QAEnE,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACvE,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,kBAAkB,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACxE,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAEjF,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QAEnE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChE,MAAM,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,CAAC;QACnC,OAAO,CAAC,WAAW,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAErE,MAAM,SAAS,GAAG,MAAM,eAAe,CAAC,YAAY,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QACnE,MAAM,aAAa,GAAG,MAAM,eAAe,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAEnE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,yFAAyF;QACzF,MAAM,GAAG,GAAqB;YAC5B,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,sBAAsB,EAAE,CAAC,CAAC;YACvD,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,EAAE;YACR,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,mBAAmB,EAAE,CAAC,CAAC;SACzD,CAAC;QACF,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;QACzF,4DAA4D;QAC5D,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACnF,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"spec.test.js","sourceRoot":"","sources":["../../src/commands/spec.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mmnto/cli",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.13",
|
|
4
4
|
"description": "CLI for Totem — AI persistent memory and context layer",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"ora": "^9.3.0",
|
|
22
22
|
"picocolors": "^1.1.1",
|
|
23
23
|
"zod": "^3.24.0",
|
|
24
|
-
"@mmnto/totem": "1.3.
|
|
24
|
+
"@mmnto/totem": "1.3.13"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@anthropic-ai/sdk": "^0.78.0",
|