@soleri/forge 5.14.0 → 5.14.1

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 (102) hide show
  1. package/dist/index.js +0 -0
  2. package/dist/lib.d.ts +1 -0
  3. package/dist/lib.js +1 -0
  4. package/dist/lib.js.map +1 -1
  5. package/dist/skills/brain-debrief.md +47 -19
  6. package/dist/skills/brainstorming.md +19 -9
  7. package/dist/skills/code-patrol.md +21 -19
  8. package/dist/skills/context-resume.md +14 -11
  9. package/dist/skills/executing-plans.md +30 -15
  10. package/dist/skills/fix-and-learn.md +17 -14
  11. package/dist/skills/health-check.md +29 -23
  12. package/dist/skills/knowledge-harvest.md +27 -20
  13. package/dist/skills/onboard-me.md +16 -15
  14. package/dist/skills/retrospective.md +34 -18
  15. package/dist/skills/second-opinion.md +16 -9
  16. package/dist/skills/systematic-debugging.md +40 -29
  17. package/dist/skills/test-driven-development.md +45 -30
  18. package/dist/skills/vault-capture.md +31 -15
  19. package/dist/skills/vault-navigator.md +24 -13
  20. package/dist/skills/verification-before-completion.md +38 -26
  21. package/dist/skills/writing-plans.md +21 -13
  22. package/dist/templates/claude-md-template.d.ts +9 -8
  23. package/dist/templates/claude-md-template.js +29 -11
  24. package/dist/templates/claude-md-template.js.map +1 -1
  25. package/dist/templates/inject-claude-md.js +65 -25
  26. package/dist/templates/inject-claude-md.js.map +1 -1
  27. package/dist/templates/shared-rules.d.ts +10 -6
  28. package/dist/templates/shared-rules.js +242 -199
  29. package/dist/templates/shared-rules.js.map +1 -1
  30. package/package.json +1 -1
  31. package/src/lib.ts +1 -0
  32. package/src/templates/claude-md-template.ts +30 -12
  33. package/src/templates/inject-claude-md.ts +65 -25
  34. package/src/templates/shared-rules.ts +259 -210
  35. package/dist/skills/skills/brain-debrief.md +0 -214
  36. package/dist/skills/skills/brainstorming.md +0 -180
  37. package/dist/skills/skills/code-patrol.md +0 -178
  38. package/dist/skills/skills/context-resume.md +0 -146
  39. package/dist/skills/skills/executing-plans.md +0 -216
  40. package/dist/skills/skills/fix-and-learn.md +0 -167
  41. package/dist/skills/skills/health-check.md +0 -231
  42. package/dist/skills/skills/knowledge-harvest.md +0 -185
  43. package/dist/skills/skills/onboard-me.md +0 -198
  44. package/dist/skills/skills/retrospective.md +0 -205
  45. package/dist/skills/skills/second-opinion.md +0 -149
  46. package/dist/skills/skills/systematic-debugging.md +0 -241
  47. package/dist/skills/skills/test-driven-development.md +0 -281
  48. package/dist/skills/skills/vault-capture.md +0 -170
  49. package/dist/skills/skills/vault-navigator.md +0 -140
  50. package/dist/skills/skills/verification-before-completion.md +0 -182
  51. package/dist/skills/skills/writing-plans.md +0 -215
  52. package/dist/templates/brain.d.ts +0 -6
  53. package/dist/templates/brain.js +0 -478
  54. package/dist/templates/brain.js.map +0 -1
  55. package/dist/templates/core-facade.d.ts +0 -6
  56. package/dist/templates/core-facade.js +0 -564
  57. package/dist/templates/core-facade.js.map +0 -1
  58. package/dist/templates/facade-factory.d.ts +0 -1
  59. package/dist/templates/facade-factory.js +0 -63
  60. package/dist/templates/facade-factory.js.map +0 -1
  61. package/dist/templates/facade-types.d.ts +0 -1
  62. package/dist/templates/facade-types.js +0 -46
  63. package/dist/templates/facade-types.js.map +0 -1
  64. package/dist/templates/intelligence-loader.d.ts +0 -1
  65. package/dist/templates/intelligence-loader.js +0 -43
  66. package/dist/templates/intelligence-loader.js.map +0 -1
  67. package/dist/templates/intelligence-types.d.ts +0 -1
  68. package/dist/templates/intelligence-types.js +0 -24
  69. package/dist/templates/intelligence-types.js.map +0 -1
  70. package/dist/templates/llm-client.d.ts +0 -7
  71. package/dist/templates/llm-client.js +0 -300
  72. package/dist/templates/llm-client.js.map +0 -1
  73. package/dist/templates/llm-key-pool.d.ts +0 -7
  74. package/dist/templates/llm-key-pool.js +0 -211
  75. package/dist/templates/llm-key-pool.js.map +0 -1
  76. package/dist/templates/llm-types.d.ts +0 -5
  77. package/dist/templates/llm-types.js +0 -161
  78. package/dist/templates/llm-types.js.map +0 -1
  79. package/dist/templates/llm-utils.d.ts +0 -5
  80. package/dist/templates/llm-utils.js +0 -260
  81. package/dist/templates/llm-utils.js.map +0 -1
  82. package/dist/templates/planner.d.ts +0 -5
  83. package/dist/templates/planner.js +0 -150
  84. package/dist/templates/planner.js.map +0 -1
  85. package/dist/templates/test-brain.d.ts +0 -6
  86. package/dist/templates/test-brain.js +0 -474
  87. package/dist/templates/test-brain.js.map +0 -1
  88. package/dist/templates/test-llm.d.ts +0 -7
  89. package/dist/templates/test-llm.js +0 -574
  90. package/dist/templates/test-llm.js.map +0 -1
  91. package/dist/templates/test-loader.d.ts +0 -5
  92. package/dist/templates/test-loader.js +0 -146
  93. package/dist/templates/test-loader.js.map +0 -1
  94. package/dist/templates/test-planner.d.ts +0 -5
  95. package/dist/templates/test-planner.js +0 -271
  96. package/dist/templates/test-planner.js.map +0 -1
  97. package/dist/templates/test-vault.d.ts +0 -5
  98. package/dist/templates/test-vault.js +0 -380
  99. package/dist/templates/test-vault.js.map +0 -1
  100. package/dist/templates/vault.d.ts +0 -5
  101. package/dist/templates/vault.js +0 -263
  102. package/dist/templates/vault.js.map +0 -1
@@ -2,14 +2,15 @@ import type { AgentConfig } from '../types.js';
2
2
  /**
3
3
  * Generates src/activation/claude-md-content.ts for a new agent.
4
4
  *
5
- * Architecture:
6
- * 1. Agent-specific identity (persona, domains, principles)
7
- * 2. Session start protocol
8
- * 3. Curated facade table (~30 key ops, grouped by category)
9
- * 4. Shared behavioral rules (vault-first, planning, output formatting)
10
- * 5. Hook packs (conditional)
5
+ * Architecture (split injection):
6
+ * 1. Engine rules — shared, prefix-free, injected once under `<!-- soleri:engine-rules -->`
7
+ * 2. Agent block — lightweight, agent-specific, under `<!-- agent-id:mode -->`
8
+ * - Identity (persona, domains, principles)
9
+ * - Session start protocol
10
+ * - Curated facade table (~30 key ops, grouped by category)
11
+ * - Hook packs (conditional)
11
12
  *
12
- * Full op list is always available via `admin_tool_list` no need to
13
- * enumerate all 145+ ops in CLAUDE.md.
13
+ * The facade table maps `op:name` actual `agentId_core op:name` tool calls.
14
+ * Full op list is always available via `admin_tool_list`.
14
15
  */
15
16
  export declare function generateClaudeMdTemplate(config: AgentConfig): string;
@@ -1,16 +1,17 @@
1
- import { getSharedRules } from './shared-rules.js';
1
+ import { getEngineMarker, getEngineRulesContent } from './shared-rules.js';
2
2
  /**
3
3
  * Generates src/activation/claude-md-content.ts for a new agent.
4
4
  *
5
- * Architecture:
6
- * 1. Agent-specific identity (persona, domains, principles)
7
- * 2. Session start protocol
8
- * 3. Curated facade table (~30 key ops, grouped by category)
9
- * 4. Shared behavioral rules (vault-first, planning, output formatting)
10
- * 5. Hook packs (conditional)
5
+ * Architecture (split injection):
6
+ * 1. Engine rules — shared, prefix-free, injected once under `<!-- soleri:engine-rules -->`
7
+ * 2. Agent block — lightweight, agent-specific, under `<!-- agent-id:mode -->`
8
+ * - Identity (persona, domains, principles)
9
+ * - Session start protocol
10
+ * - Curated facade table (~30 key ops, grouped by category)
11
+ * - Hook packs (conditional)
11
12
  *
12
- * Full op list is always available via `admin_tool_list` no need to
13
- * enumerate all 145+ ops in CLAUDE.md.
13
+ * The facade table maps `op:name` actual `agentId_core op:name` tool calls.
14
+ * Full op list is always available via `admin_tool_list`.
14
15
  */
15
16
  export function generateClaudeMdTemplate(config) {
16
17
  const toolPrefix = config.id;
@@ -57,8 +58,6 @@ export function generateClaudeMdTemplate(config) {
57
58
  // Engine facades — compact, grouped by concern
58
59
  mdLines.push(`| ${bt}${toolPrefix}_core${bt} (vault) | ${bt}search_intelligent${bt}, ${bt}capture_knowledge${bt}, ${bt}capture_quick${bt}, ${bt}search_feedback${bt} |`, `| ${bt}${toolPrefix}_core${bt} (memory) | ${bt}memory_search${bt}, ${bt}memory_capture${bt}, ${bt}session_capture${bt} |`, `| ${bt}${toolPrefix}_core${bt} (planning) | ${bt}create_plan${bt}, ${bt}approve_plan${bt}, ${bt}plan_split${bt}, ${bt}plan_reconcile${bt}, ${bt}plan_complete_lifecycle${bt} |`, `| ${bt}${toolPrefix}_core${bt} (orchestrate) | ${bt}orchestrate_plan${bt}, ${bt}orchestrate_execute${bt}, ${bt}orchestrate_complete${bt} |`, `| ${bt}${toolPrefix}_core${bt} (brain) | ${bt}brain_stats${bt}, ${bt}brain_feedback${bt}, ${bt}rebuild_vocabulary${bt} |`, `| ${bt}${toolPrefix}_core${bt} (control) | ${bt}route_intent${bt}, ${bt}morph${bt}, ${bt}get_behavior_rules${bt} |`, `| ${bt}${toolPrefix}_core${bt} (loop) | ${bt}loop_start${bt}, ${bt}loop_iterate${bt}, ${bt}loop_status${bt}, ${bt}loop_cancel${bt} |`, `| ${bt}${toolPrefix}_core${bt} (governance) | ${bt}governance_dashboard${bt}, ${bt}governance_policy${bt}, ${bt}governance_proposals${bt} |`, `| ${bt}${toolPrefix}_core${bt} (admin) | ${bt}admin_health${bt}, ${bt}admin_tool_list${bt}, ${bt}admin_diagnostic${bt} |`);
59
60
  mdLines.push('', `> Full list: ${bt}${toolPrefix}_core op:admin_tool_list${bt}`, '');
60
- // ─── Shared Behavioral Rules ───────────────────────────
61
- mdLines.push(...getSharedRules(toolPrefix));
62
61
  // ─── Hook Packs (conditional) ──────────────────────────
63
62
  appendHookPacks(mdLines, config);
64
63
  // ─── Closing marker ────────────────────────────────────
@@ -68,11 +67,19 @@ export function generateClaudeMdTemplate(config) {
68
67
  const escaped = line.replace(/\\/g, '\\\\').replace(/'/g, "\\'");
69
68
  return ` '${escaped}',`;
70
69
  });
70
+ // Generate engine rules as a quoted string literal
71
+ const engineContent = getEngineRulesContent();
72
+ const engineQuotedLines = engineContent.split('\n').map((line) => {
73
+ const escaped = line.replace(/\\/g, '\\\\').replace(/'/g, "\\'");
74
+ return ` '${escaped}',`;
75
+ });
71
76
  return [
72
77
  '/**',
73
78
  ` * CLAUDE.md content for ${config.name}.`,
74
79
  ' * Generated by Soleri — do not edit manually.',
75
80
  ' */',
81
+ '',
82
+ '/** Agent-specific block (identity + activation + facade table). */',
76
83
  'export function getClaudeMdContent(): string {',
77
84
  ' return [',
78
85
  ...quotedLines,
@@ -82,6 +89,17 @@ export function generateClaudeMdTemplate(config) {
82
89
  'export function getClaudeMdMarker(): string {',
83
90
  ` return '${marker}';`,
84
91
  '}',
92
+ '',
93
+ '/** Shared engine rules — injected once, skipped if already present. */',
94
+ 'export function getEngineRulesContent(): string {',
95
+ ' return [',
96
+ ...engineQuotedLines,
97
+ " ].join('\\n');",
98
+ '}',
99
+ '',
100
+ 'export function getEngineRulesMarker(): string {',
101
+ ` return '${getEngineMarker()}';`,
102
+ '}',
85
103
  ].join('\n');
86
104
  }
87
105
  function appendHookPacks(mdLines, config) {
@@ -1 +1 @@
1
- {"version":3,"file":"claude-md-template.js","sourceRoot":"","sources":["../../src/templates/claude-md-template.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-md-template.js","sourceRoot":"","sources":["../../src/templates/claude-md-template.ts"],"names":[],"mappings":"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"}
@@ -13,27 +13,27 @@ export function generateInjectClaudeMd(config) {
13
13
  "import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';",
14
14
  "import { homedir } from 'node:os';",
15
15
  "import { join } from 'node:path';",
16
- "import { getClaudeMdContent, getClaudeMdMarker } from './claude-md-content.js';",
16
+ "import { getClaudeMdContent, getClaudeMdMarker, getEngineRulesContent, getEngineRulesMarker } from './claude-md-content.js';",
17
17
  '',
18
18
  'export interface InjectResult {',
19
19
  ' injected: boolean;',
20
20
  ' path: string;',
21
21
  " action: 'created' | 'updated' | 'appended';",
22
+ ' engineRules?: boolean;',
22
23
  '}',
23
24
  '',
24
25
  '/**',
25
- ' * Inject into a specific CLAUDE.md file path.',
26
- ' * Shared logic for both project-level and global injection.',
26
+ ' * Inject a marker-delimited block into a file.',
27
+ ' * If the marker already exists, replaces the content between markers.',
28
+ ' * Otherwise appends (or creates the file).',
27
29
  ' */',
28
- 'function injectIntoFile(filePath: string): InjectResult {',
29
- ' const content = getClaudeMdContent();',
30
- ' const marker = getClaudeMdMarker();',
30
+ "function injectBlock(filePath: string, content: string, marker: string): 'created' | 'updated' | 'appended' | 'skipped' {",
31
31
  ` const startMarker = '<!-- ' + marker + ' -->';`,
32
32
  ` const endMarker = '<!-- /' + marker + ' -->';`,
33
33
  '',
34
34
  ' if (!existsSync(filePath)) {',
35
35
  " writeFileSync(filePath, content + '\\n', 'utf-8');",
36
- " return { injected: true, path: filePath, action: 'created' };",
36
+ " return 'created';",
37
37
  ' }',
38
38
  '',
39
39
  " const existing = readFileSync(filePath, 'utf-8');",
@@ -44,30 +44,52 @@ export function generateInjectClaudeMd(config) {
44
44
  ' if (endIdx === -1) {',
45
45
  " const updated = existing.slice(0, startIdx) + content + '\\n' + existing.slice(startIdx + startMarker.length);",
46
46
  " writeFileSync(filePath, updated, 'utf-8');",
47
- " return { injected: true, path: filePath, action: 'updated' };",
47
+ " return 'updated';",
48
48
  ' }',
49
49
  ' const updated = existing.slice(0, startIdx) + content + existing.slice(endIdx + endMarker.length);',
50
50
  " writeFileSync(filePath, updated, 'utf-8');",
51
- " return { injected: true, path: filePath, action: 'updated' };",
51
+ " return 'updated';",
52
52
  ' }',
53
53
  '',
54
54
  " const separator = existing.endsWith('\\n') ? '\\n' : '\\n\\n';",
55
55
  " writeFileSync(filePath, existing + separator + content + '\\n', 'utf-8');",
56
- " return { injected: true, path: filePath, action: 'appended' };",
56
+ " return 'appended';",
57
+ '}',
58
+ '',
59
+ '/**',
60
+ ' * Inject engine rules + agent block into a CLAUDE.md file.',
61
+ ' *',
62
+ ' * Engine rules (shared, prefix-free) are injected ONCE under',
63
+ ' * `<!-- soleri:engine-rules -->`. If already present, they are updated.',
64
+ ' * Agent block (identity + facade table) is injected under',
65
+ ` * \`<!-- ${marker} -->\`.`,
66
+ ' */',
67
+ 'function injectIntoFile(filePath: string): InjectResult {',
68
+ ' // Step 1: Engine rules — shared across all agents',
69
+ ' const engineAction = injectBlock(filePath, getEngineRulesContent(), getEngineRulesMarker());',
70
+ '',
71
+ ' // Step 2: Agent-specific block',
72
+ ' const agentAction = injectBlock(filePath, getClaudeMdContent(), getClaudeMdMarker());',
73
+ '',
74
+ ' return {',
75
+ ' injected: true,',
76
+ ' path: filePath,',
77
+ " action: agentAction === 'skipped' ? 'appended' : agentAction,",
78
+ " engineRules: engineAction !== 'skipped',",
79
+ ' };',
57
80
  '}',
58
81
  '',
59
82
  '/**',
60
83
  ' * Inject agent CLAUDE.md section into a project.',
61
- ' * - If no CLAUDE.md exists: creates one',
62
- ' * - If markers found: replaces content between them (update)',
63
- ' * - If no markers: appends section to end',
84
+ ' * - Engine rules: injected once, updated if already present',
85
+ ' * - Agent block: created, updated, or appended',
64
86
  ' */',
65
87
  'export function injectClaudeMd(projectPath: string): InjectResult {',
66
88
  " return injectIntoFile(join(projectPath, 'CLAUDE.md'));",
67
89
  '}',
68
90
  '',
69
91
  '/**',
70
- ' * Inject agent CLAUDE.md section into the global ~/.claude/CLAUDE.md.',
92
+ ' * Inject into the global ~/.claude/CLAUDE.md.',
71
93
  " * Creates ~/.claude/ directory if it doesn't exist.",
72
94
  ' * This makes the activation phrase work in any project.',
73
95
  ' */',
@@ -80,39 +102,48 @@ export function generateInjectClaudeMd(config) {
80
102
  '}',
81
103
  '',
82
104
  '/**',
83
- ' * Remove agent section from a specific CLAUDE.md file.',
84
- ' * Returns true if the section was found and removed.',
105
+ ' * Remove a marker-delimited block from a file.',
85
106
  ' */',
86
- 'function removeFromFile(filePath: string): { removed: boolean; path: string } {',
87
- ' if (!existsSync(filePath)) return { removed: false, path: filePath };',
107
+ 'function removeBlock(filePath: string, marker: string): boolean {',
108
+ ' if (!existsSync(filePath)) return false;',
88
109
  " const existing = readFileSync(filePath, 'utf-8');",
89
- ' const marker = getClaudeMdMarker();',
90
110
  ` const startMarker = '<!-- ' + marker + ' -->';`,
91
111
  ` const endMarker = '<!-- /' + marker + ' -->';`,
92
112
  ' const startIdx = existing.indexOf(startMarker);',
93
- ' if (startIdx === -1) return { removed: false, path: filePath };',
113
+ ' if (startIdx === -1) return false;',
94
114
  ' const endIdx = existing.indexOf(endMarker);',
95
- ' if (endIdx === -1) return { removed: false, path: filePath };',
115
+ ' if (endIdx === -1) return false;',
96
116
  " const before = existing.slice(0, startIdx).replace(/\\n+$/, '');",
97
117
  " const after = existing.slice(endIdx + endMarker.length).replace(/^\\n+/, '');",
98
118
  " const cleaned = before + (before && after ? '\\n\\n' : '') + after;",
99
119
  " writeFileSync(filePath, cleaned || '', 'utf-8');",
100
- ' return { removed: true, path: filePath };',
120
+ ' return true;',
101
121
  '}',
102
122
  '',
103
123
  '/**',
104
124
  ' * Remove agent section from the global ~/.claude/CLAUDE.md.',
105
- ' * Called on deactivation to clean up after test agents.',
125
+ ' * Only removes the agent block, NOT the shared engine rules',
126
+ ' * (other agents may depend on them).',
106
127
  ' */',
107
128
  'export function removeClaudeMdGlobal(): { removed: boolean; path: string } {',
108
- " return removeFromFile(join(homedir(), '.claude', 'CLAUDE.md'));",
129
+ " const filePath = join(homedir(), '.claude', 'CLAUDE.md');",
130
+ ' return { removed: removeBlock(filePath, getClaudeMdMarker()), path: filePath };',
109
131
  '}',
110
132
  '',
111
133
  '/**',
112
134
  ' * Remove agent section from a project CLAUDE.md.',
113
135
  ' */',
114
136
  'export function removeClaudeMd(projectPath: string): { removed: boolean; path: string } {',
115
- " return removeFromFile(join(projectPath, 'CLAUDE.md'));",
137
+ " const filePath = join(projectPath, 'CLAUDE.md');",
138
+ ' return { removed: removeBlock(filePath, getClaudeMdMarker()), path: filePath };',
139
+ '}',
140
+ '',
141
+ '/**',
142
+ ' * Remove shared engine rules from a file.',
143
+ ' * Use only when NO agents remain in the file.',
144
+ ' */',
145
+ 'export function removeEngineRules(filePath: string): boolean {',
146
+ ' return removeBlock(filePath, getEngineRulesMarker());',
116
147
  '}',
117
148
  '',
118
149
  '/**',
@@ -123,6 +154,15 @@ export function generateInjectClaudeMd(config) {
123
154
  " const content = readFileSync(filePath, 'utf-8');",
124
155
  ` return content.includes('<!-- ${marker} -->');`,
125
156
  '}',
157
+ '',
158
+ '/**',
159
+ ' * Check if engine rules are already present in a CLAUDE.md file.',
160
+ ' */',
161
+ 'export function hasEngineRules(filePath: string): boolean {',
162
+ ' if (!existsSync(filePath)) return false;',
163
+ " const content = readFileSync(filePath, 'utf-8');",
164
+ " return content.includes('<!-- ' + getEngineRulesMarker() + ' -->');",
165
+ '}',
126
166
  ].join('\n');
127
167
  }
128
168
  //# sourceMappingURL=inject-claude-md.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"inject-claude-md.js","sourceRoot":"","sources":["../../src/templates/inject-claude-md.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAmB;IACxD,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,OAAO,CAAC;IAEnC,OAAO;QACL,+EAA+E;QAC/E,oCAAoC;QACpC,mCAAmC;QACnC,iFAAiF;QACjF,EAAE;QACF,iCAAiC;QACjC,sBAAsB;QACtB,iBAAiB;QACjB,+CAA+C;QAC/C,GAAG;QACH,EAAE;QACF,KAAK;QACL,gDAAgD;QAChD,8DAA8D;QAC9D,KAAK;QACL,2DAA2D;QAC3D,yCAAyC;QACzC,uCAAuC;QACvC,kDAAkD;QAClD,iDAAiD;QACjD,EAAE;QACF,gCAAgC;QAChC,wDAAwD;QACxD,mEAAmE;QACnE,KAAK;QACL,EAAE;QACF,qDAAqD;QACrD,EAAE;QACF,yCAAyC;QACzC,qDAAqD;QACrD,iDAAiD;QACjD,0BAA0B;QAC1B,sHAAsH;QACtH,kDAAkD;QAClD,qEAAqE;QACrE,OAAO;QACP,wGAAwG;QACxG,gDAAgD;QAChD,mEAAmE;QACnE,KAAK;QACL,EAAE;QACF,kEAAkE;QAClE,6EAA6E;QAC7E,kEAAkE;QAClE,GAAG;QACH,EAAE;QACF,KAAK;QACL,mDAAmD;QACnD,0CAA0C;QAC1C,+DAA+D;QAC/D,4CAA4C;QAC5C,KAAK;QACL,qEAAqE;QACrE,0DAA0D;QAC1D,GAAG;QACH,EAAE;QACF,KAAK;QACL,wEAAwE;QACxE,sDAAsD;QACtD,0DAA0D;QAC1D,KAAK;QACL,wDAAwD;QACxD,iDAAiD;QACjD,iCAAiC;QACjC,gDAAgD;QAChD,KAAK;QACL,wDAAwD;QACxD,GAAG;QACH,EAAE;QACF,KAAK;QACL,yDAAyD;QACzD,uDAAuD;QACvD,KAAK;QACL,iFAAiF;QACjF,yEAAyE;QACzE,qDAAqD;QACrD,uCAAuC;QACvC,kDAAkD;QAClD,iDAAiD;QACjD,mDAAmD;QACnD,mEAAmE;QACnE,+CAA+C;QAC/C,iEAAiE;QACjE,oEAAoE;QACpE,iFAAiF;QACjF,uEAAuE;QACvE,oDAAoD;QACpD,6CAA6C;QAC7C,GAAG;QACH,EAAE;QACF,KAAK;QACL,8DAA8D;QAC9D,0DAA0D;QAC1D,KAAK;QACL,8EAA8E;QAC9E,mEAAmE;QACnE,GAAG;QACH,EAAE;QACF,KAAK;QACL,mDAAmD;QACnD,KAAK;QACL,2FAA2F;QAC3F,0DAA0D;QAC1D,GAAG;QACH,EAAE;QACF,KAAK;QACL,0DAA0D;QAC1D,KAAK;QACL,6DAA6D;QAC7D,4CAA4C;QAC5C,oDAAoD;QACpD,mCAAmC,MAAM,SAAS;QAClD,GAAG;KACJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"inject-claude-md.js","sourceRoot":"","sources":["../../src/templates/inject-claude-md.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAmB;IACxD,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,OAAO,CAAC;IAEnC,OAAO;QACL,+EAA+E;QAC/E,oCAAoC;QACpC,mCAAmC;QACnC,8HAA8H;QAC9H,EAAE;QACF,iCAAiC;QACjC,sBAAsB;QACtB,iBAAiB;QACjB,+CAA+C;QAC/C,0BAA0B;QAC1B,GAAG;QACH,EAAE;QACF,KAAK;QACL,iDAAiD;QACjD,wEAAwE;QACxE,6CAA6C;QAC7C,KAAK;QACL,2HAA2H;QAC3H,kDAAkD;QAClD,iDAAiD;QACjD,EAAE;QACF,gCAAgC;QAChC,wDAAwD;QACxD,uBAAuB;QACvB,KAAK;QACL,EAAE;QACF,qDAAqD;QACrD,EAAE;QACF,yCAAyC;QACzC,qDAAqD;QACrD,iDAAiD;QACjD,0BAA0B;QAC1B,sHAAsH;QACtH,kDAAkD;QAClD,yBAAyB;QACzB,OAAO;QACP,wGAAwG;QACxG,gDAAgD;QAChD,uBAAuB;QACvB,KAAK;QACL,EAAE;QACF,kEAAkE;QAClE,6EAA6E;QAC7E,sBAAsB;QACtB,GAAG;QACH,EAAE;QACF,KAAK;QACL,6DAA6D;QAC7D,IAAI;QACJ,+DAA+D;QAC/D,0EAA0E;QAC1E,4DAA4D;QAC5D,aAAa,MAAM,SAAS;QAC5B,KAAK;QACL,2DAA2D;QAC3D,sDAAsD;QACtD,gGAAgG;QAChG,EAAE;QACF,mCAAmC;QACnC,yFAAyF;QACzF,EAAE;QACF,YAAY;QACZ,qBAAqB;QACrB,qBAAqB;QACrB,mEAAmE;QACnE,8CAA8C;QAC9C,MAAM;QACN,GAAG;QACH,EAAE;QACF,KAAK;QACL,mDAAmD;QACnD,8DAA8D;QAC9D,iDAAiD;QACjD,KAAK;QACL,qEAAqE;QACrE,0DAA0D;QAC1D,GAAG;QACH,EAAE;QACF,KAAK;QACL,gDAAgD;QAChD,sDAAsD;QACtD,0DAA0D;QAC1D,KAAK;QACL,wDAAwD;QACxD,iDAAiD;QACjD,iCAAiC;QACjC,gDAAgD;QAChD,KAAK;QACL,wDAAwD;QACxD,GAAG;QACH,EAAE;QACF,KAAK;QACL,iDAAiD;QACjD,KAAK;QACL,mEAAmE;QACnE,4CAA4C;QAC5C,qDAAqD;QACrD,kDAAkD;QAClD,iDAAiD;QACjD,mDAAmD;QACnD,sCAAsC;QACtC,+CAA+C;QAC/C,oCAAoC;QACpC,oEAAoE;QACpE,iFAAiF;QACjF,uEAAuE;QACvE,oDAAoD;QACpD,gBAAgB;QAChB,GAAG;QACH,EAAE;QACF,KAAK;QACL,8DAA8D;QAC9D,8DAA8D;QAC9D,uCAAuC;QACvC,KAAK;QACL,8EAA8E;QAC9E,6DAA6D;QAC7D,mFAAmF;QACnF,GAAG;QACH,EAAE;QACF,KAAK;QACL,mDAAmD;QACnD,KAAK;QACL,2FAA2F;QAC3F,oDAAoD;QACpD,mFAAmF;QACnF,GAAG;QACH,EAAE;QACF,KAAK;QACL,4CAA4C;QAC5C,gDAAgD;QAChD,KAAK;QACL,gEAAgE;QAChE,yDAAyD;QACzD,GAAG;QACH,EAAE;QACF,KAAK;QACL,0DAA0D;QAC1D,KAAK;QACL,6DAA6D;QAC7D,4CAA4C;QAC5C,oDAAoD;QACpD,mCAAmC,MAAM,SAAS;QAClD,GAAG;QACH,EAAE;QACF,KAAK;QACL,mEAAmE;QACnE,KAAK;QACL,6DAA6D;QAC7D,4CAA4C;QAC5C,oDAAoD;QACpD,uEAAuE;QACvE,GAAG;KACJ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -1,9 +1,13 @@
1
1
  /**
2
- * Shared behavioral rules that every Soleri agent ships with.
2
+ * Shared Soleri engine rules agent-agnostic.
3
3
  *
4
- * Mirrors the structure and quality of Salvador's global CLAUDE.md.
5
- * Uses HTML comment section markers, MANDATORY keywords, compact
6
- * formatting, and complete lifecycle documentation.
4
+ * These rules are injected ONCE into global ~/.claude/CLAUDE.md under
5
+ * the `<!-- soleri:engine-rules -->` marker. They describe behavioral
6
+ * rules WITHOUT tool prefixes. The active agent's facade table (in its
7
+ * own `<!-- agent-id:mode -->` block) maps op names to actual tools.
8
+ *
9
+ * Uses op:name syntax — the active agent provides the tool prefix.
7
10
  */
8
- /** Returns markdown lines for all shared behavioral sections. */
9
- export declare function getSharedRules(toolPrefix: string): string[];
11
+ export declare function getEngineMarker(): string;
12
+ /** Returns the full engine rules markdown content (with markers). */
13
+ export declare function getEngineRulesContent(): string;