@soleri/forge 5.14.0 → 5.14.2

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 (105) hide show
  1. package/dist/index.js +0 -0
  2. package/dist/lib.d.ts +2 -0
  3. package/dist/lib.js +2 -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/dist/templates/test-facades.js +6 -4
  31. package/dist/templates/test-facades.js.map +1 -1
  32. package/package.json +1 -1
  33. package/src/lib.ts +2 -0
  34. package/src/templates/claude-md-template.ts +30 -12
  35. package/src/templates/inject-claude-md.ts +65 -25
  36. package/src/templates/shared-rules.ts +259 -210
  37. package/src/templates/test-facades.ts +6 -4
  38. package/dist/skills/skills/brain-debrief.md +0 -214
  39. package/dist/skills/skills/brainstorming.md +0 -180
  40. package/dist/skills/skills/code-patrol.md +0 -178
  41. package/dist/skills/skills/context-resume.md +0 -146
  42. package/dist/skills/skills/executing-plans.md +0 -216
  43. package/dist/skills/skills/fix-and-learn.md +0 -167
  44. package/dist/skills/skills/health-check.md +0 -231
  45. package/dist/skills/skills/knowledge-harvest.md +0 -185
  46. package/dist/skills/skills/onboard-me.md +0 -198
  47. package/dist/skills/skills/retrospective.md +0 -205
  48. package/dist/skills/skills/second-opinion.md +0 -149
  49. package/dist/skills/skills/systematic-debugging.md +0 -241
  50. package/dist/skills/skills/test-driven-development.md +0 -281
  51. package/dist/skills/skills/vault-capture.md +0 -170
  52. package/dist/skills/skills/vault-navigator.md +0 -140
  53. package/dist/skills/skills/verification-before-completion.md +0 -182
  54. package/dist/skills/skills/writing-plans.md +0 -215
  55. package/dist/templates/brain.d.ts +0 -6
  56. package/dist/templates/brain.js +0 -478
  57. package/dist/templates/brain.js.map +0 -1
  58. package/dist/templates/core-facade.d.ts +0 -6
  59. package/dist/templates/core-facade.js +0 -564
  60. package/dist/templates/core-facade.js.map +0 -1
  61. package/dist/templates/facade-factory.d.ts +0 -1
  62. package/dist/templates/facade-factory.js +0 -63
  63. package/dist/templates/facade-factory.js.map +0 -1
  64. package/dist/templates/facade-types.d.ts +0 -1
  65. package/dist/templates/facade-types.js +0 -46
  66. package/dist/templates/facade-types.js.map +0 -1
  67. package/dist/templates/intelligence-loader.d.ts +0 -1
  68. package/dist/templates/intelligence-loader.js +0 -43
  69. package/dist/templates/intelligence-loader.js.map +0 -1
  70. package/dist/templates/intelligence-types.d.ts +0 -1
  71. package/dist/templates/intelligence-types.js +0 -24
  72. package/dist/templates/intelligence-types.js.map +0 -1
  73. package/dist/templates/llm-client.d.ts +0 -7
  74. package/dist/templates/llm-client.js +0 -300
  75. package/dist/templates/llm-client.js.map +0 -1
  76. package/dist/templates/llm-key-pool.d.ts +0 -7
  77. package/dist/templates/llm-key-pool.js +0 -211
  78. package/dist/templates/llm-key-pool.js.map +0 -1
  79. package/dist/templates/llm-types.d.ts +0 -5
  80. package/dist/templates/llm-types.js +0 -161
  81. package/dist/templates/llm-types.js.map +0 -1
  82. package/dist/templates/llm-utils.d.ts +0 -5
  83. package/dist/templates/llm-utils.js +0 -260
  84. package/dist/templates/llm-utils.js.map +0 -1
  85. package/dist/templates/planner.d.ts +0 -5
  86. package/dist/templates/planner.js +0 -150
  87. package/dist/templates/planner.js.map +0 -1
  88. package/dist/templates/test-brain.d.ts +0 -6
  89. package/dist/templates/test-brain.js +0 -474
  90. package/dist/templates/test-brain.js.map +0 -1
  91. package/dist/templates/test-llm.d.ts +0 -7
  92. package/dist/templates/test-llm.js +0 -574
  93. package/dist/templates/test-llm.js.map +0 -1
  94. package/dist/templates/test-loader.d.ts +0 -5
  95. package/dist/templates/test-loader.js +0 -146
  96. package/dist/templates/test-loader.js.map +0 -1
  97. package/dist/templates/test-planner.d.ts +0 -5
  98. package/dist/templates/test-planner.js +0 -271
  99. package/dist/templates/test-planner.js.map +0 -1
  100. package/dist/templates/test-vault.d.ts +0 -5
  101. package/dist/templates/test-vault.js +0 -380
  102. package/dist/templates/test-vault.js.map +0 -1
  103. package/dist/templates/vault.d.ts +0 -5
  104. package/dist/templates/vault.js +0 -263
  105. 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;