@theihtisham/agent-shadow-brain 7.1.0 → 7.1.3

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 (111) hide show
  1. package/CHANGELOG.md +22 -0
  2. package/README.md +47 -407
  3. package/dist/activity-cli.d.ts +3 -0
  4. package/dist/activity-cli.d.ts.map +1 -0
  5. package/dist/activity-cli.js +78 -0
  6. package/dist/activity-cli.js.map +1 -0
  7. package/dist/adapters/index.d.ts +2 -1
  8. package/dist/adapters/index.d.ts.map +1 -1
  9. package/dist/adapters/index.js +3 -2
  10. package/dist/adapters/index.js.map +1 -1
  11. package/dist/brain/activity-journal.d.ts +82 -0
  12. package/dist/brain/activity-journal.d.ts.map +1 -0
  13. package/dist/brain/activity-journal.js +314 -0
  14. package/dist/brain/activity-journal.js.map +1 -0
  15. package/dist/brain/activity-reporting.d.ts +14 -0
  16. package/dist/brain/activity-reporting.d.ts.map +1 -0
  17. package/dist/brain/activity-reporting.js +17 -0
  18. package/dist/brain/activity-reporting.js.map +1 -0
  19. package/dist/brain/auto-update.js +1 -1
  20. package/dist/brain/brain-portability.js +1 -1
  21. package/dist/brain/client-integrations.d.ts +61 -0
  22. package/dist/brain/client-integrations.d.ts.map +1 -0
  23. package/dist/brain/client-integrations.js +98 -0
  24. package/dist/brain/client-integrations.js.map +1 -0
  25. package/dist/brain/context-assembly.d.ts +76 -0
  26. package/dist/brain/context-assembly.d.ts.map +1 -0
  27. package/dist/brain/context-assembly.js +305 -0
  28. package/dist/brain/context-assembly.js.map +1 -0
  29. package/dist/brain/feature-settings.d.ts +58 -0
  30. package/dist/brain/feature-settings.d.ts.map +1 -0
  31. package/dist/brain/feature-settings.js +241 -0
  32. package/dist/brain/feature-settings.js.map +1 -0
  33. package/dist/brain/global-brain.d.ts +7 -0
  34. package/dist/brain/global-brain.d.ts.map +1 -1
  35. package/dist/brain/global-brain.js +19 -4
  36. package/dist/brain/global-brain.js.map +1 -1
  37. package/dist/brain/mcp-server.d.ts +21 -1
  38. package/dist/brain/mcp-server.d.ts.map +1 -1
  39. package/dist/brain/mcp-server.js +191 -25
  40. package/dist/brain/mcp-server.js.map +1 -1
  41. package/dist/brain/mcp-stdio.d.ts +12 -0
  42. package/dist/brain/mcp-stdio.d.ts.map +1 -0
  43. package/dist/brain/mcp-stdio.js +134 -0
  44. package/dist/brain/mcp-stdio.js.map +1 -0
  45. package/dist/brain/memory-annotations.d.ts +97 -0
  46. package/dist/brain/memory-annotations.d.ts.map +1 -0
  47. package/dist/brain/memory-annotations.js +388 -0
  48. package/dist/brain/memory-annotations.js.map +1 -0
  49. package/dist/brain/memory-graph.d.ts.map +1 -1
  50. package/dist/brain/memory-graph.js +12 -23
  51. package/dist/brain/memory-graph.js.map +1 -1
  52. package/dist/brain/memory-sources.d.ts +8 -0
  53. package/dist/brain/memory-sources.d.ts.map +1 -0
  54. package/dist/brain/memory-sources.js +27 -0
  55. package/dist/brain/memory-sources.js.map +1 -0
  56. package/dist/brain/orchestrator.js +1 -1
  57. package/dist/brain/subconscious.d.ts +21 -24
  58. package/dist/brain/subconscious.d.ts.map +1 -1
  59. package/dist/brain/subconscious.js +82 -218
  60. package/dist/brain/subconscious.js.map +1 -1
  61. package/dist/brain/workflow-skills.d.ts +5 -5
  62. package/dist/cli.js +19 -2
  63. package/dist/cli.js.map +1 -1
  64. package/dist/context-cli.d.ts +3 -0
  65. package/dist/context-cli.d.ts.map +1 -0
  66. package/dist/context-cli.js +56 -0
  67. package/dist/context-cli.js.map +1 -0
  68. package/dist/curation-cli.d.ts +4 -0
  69. package/dist/curation-cli.d.ts.map +1 -0
  70. package/dist/curation-cli.js +118 -0
  71. package/dist/curation-cli.js.map +1 -0
  72. package/dist/dashboard/live-workspace-html.d.ts +2 -0
  73. package/dist/dashboard/live-workspace-html.d.ts.map +1 -0
  74. package/dist/dashboard/live-workspace-html.js +893 -0
  75. package/dist/dashboard/live-workspace-html.js.map +1 -0
  76. package/dist/dashboard/server.d.ts +1 -0
  77. package/dist/dashboard/server.d.ts.map +1 -1
  78. package/dist/dashboard/server.js +53 -18
  79. package/dist/dashboard/server.js.map +1 -1
  80. package/dist/dashboard/v6-dashboard-html.d.ts +1 -1
  81. package/dist/dashboard/v6-dashboard-html.d.ts.map +1 -1
  82. package/dist/dashboard/v6-dashboard-html.js +7 -29
  83. package/dist/dashboard/v6-dashboard-html.js.map +1 -1
  84. package/dist/dashboard/workspace-api.d.ts +16 -0
  85. package/dist/dashboard/workspace-api.d.ts.map +1 -0
  86. package/dist/dashboard/workspace-api.js +309 -0
  87. package/dist/dashboard/workspace-api.js.map +1 -0
  88. package/dist/dashboard/workspace-html.d.ts +2 -0
  89. package/dist/dashboard/workspace-html.d.ts.map +1 -0
  90. package/dist/dashboard/workspace-html.js +2132 -0
  91. package/dist/dashboard/workspace-html.js.map +1 -0
  92. package/dist/index.d.ts +10 -0
  93. package/dist/index.d.ts.map +1 -1
  94. package/dist/index.js +8 -0
  95. package/dist/index.js.map +1 -1
  96. package/dist/integration-cli.d.ts +3 -0
  97. package/dist/integration-cli.d.ts.map +1 -0
  98. package/dist/integration-cli.js +14 -0
  99. package/dist/integration-cli.js.map +1 -0
  100. package/dist/types.d.ts +12 -3
  101. package/dist/types.d.ts.map +1 -1
  102. package/docs/WORKSPACE.md +111 -0
  103. package/docs/assets/context-flow-v7.2.png +0 -0
  104. package/docs/assets/live-v7.1.3.png +0 -0
  105. package/docs/assets/memory-detail-v7.1.3.png +0 -0
  106. package/docs/assets/overview-v7.1.3.png +0 -0
  107. package/docs/assets/workspace-graph-v7.2.png +0 -0
  108. package/docs/assets/workspace-overview-v7.2.png +0 -0
  109. package/docs/launch/RELEASE_NOTES_v7.1.3.md +40 -0
  110. package/docs/launch/RELEASE_NOTES_v7.2.0.md +24 -0
  111. package/package.json +20 -121
@@ -1,18 +1,10 @@
1
- // src/brain/subconscious.ts — Subconscious Engine (v5.2.0)
2
- //
3
- // On every new agent session, the Subconscious proactively injects a tight
4
- // briefing of relevant context — recent decisions, similar past work, project
5
- // state, cross-agent insights — so the agent doesn't have to ask.
6
- //
7
- // "Subconscious" because the agent doesn't actively retrieve this — the brain
8
- // makes it available implicitly. Like human intuition: the relevant memory
9
- // surfaces before you consciously look for it.
10
- //
11
- // Token budget: hard-capped (default 2000) to never bloat the agent's context.
12
- // Relevance ranked: each section competes for budget by importance × recency.
1
+ import * as path from 'node:path';
2
+ import { createHash, randomUUID } from 'node:crypto';
3
+ import { assembleContext, contextQueryKeywords } from './context-assembly.js';
4
+ import { FEATURE_SETTINGS_FILENAME, FeatureSettingsStore } from './feature-settings.js';
13
5
  import { getGlobalBrain, GlobalBrain } from './global-brain.js';
14
- import { getCache } from './l0-cache.js';
15
- import * as crypto from 'crypto';
6
+ import { L0Cache } from './l0-cache.js';
7
+ import { memoryAnnotationsFor } from './memory-annotations.js';
16
8
  const DEFAULT_CONFIG = {
17
9
  enabled: true,
18
10
  tokenBudget: 2000,
@@ -21,14 +13,9 @@ const DEFAULT_CONFIG = {
21
13
  alwaysInclude: ['decision', 'pattern', 'warning'],
22
14
  enabledAgents: [],
23
15
  };
24
- /** ~4 chars per token (rough English heuristic) */
25
- function estimateTokens(text) {
26
- return Math.ceil(text.length / 4);
27
- }
28
16
  export class SubconsciousEngine {
29
- constructor(config = {}, brain) {
30
- this.config = { ...DEFAULT_CONFIG, ...config };
31
- this.brain = brain ?? getGlobalBrain();
17
+ constructor(config = {}, brain, settings, annotations) {
18
+ this.cache = new L0Cache({ bytesLimit: 2 * 1024 * 1024 });
32
19
  this.stats = {
33
20
  totalBriefings: 0,
34
21
  avgTokenCount: 0,
@@ -37,216 +24,96 @@ export class SubconsciousEngine {
37
24
  byAgent: {},
38
25
  lastBriefing: null,
39
26
  };
27
+ this.config = { ...DEFAULT_CONFIG, ...config };
28
+ this.brain = brain ?? getGlobalBrain();
29
+ this.settings = settings ?? new FeatureSettingsStore({
30
+ filePath: path.join(path.dirname(this.brain.dbPath), FEATURE_SETTINGS_FILENAME),
31
+ });
32
+ this.annotations = annotations ?? memoryAnnotationsFor(this.brain);
40
33
  }
41
- /** Generate a session-start briefing for the agent — proactive context injection */
34
+ /** Generate a session-start briefing from the current project and task. */
42
35
  async generateBriefing(opts) {
43
36
  const start = Date.now();
44
- const sessionId = crypto.randomUUID();
45
- const projectId = opts.projectId ?? GlobalBrain.projectIdFor(opts.projectDir);
46
- const projectName = opts.projectName ?? opts.projectDir.split(/[/\\]/).pop() ?? 'unknown';
47
- // L0 cache check — if we briefed this agent for this project recently, reuse
48
- const cacheKey = `subconscious:${opts.agentTool}:${projectId}`;
49
- const cache = getCache('subconscious');
50
- const cached = cache.get(cacheKey);
51
- if (cached && Date.now() - cached.generatedAt.getTime() < 60000) {
52
- return cached;
53
- }
54
- // Skip if disabled or agent not in enabled list
55
- if (!this.config.enabled || (this.config.enabledAgents.length > 0 && !this.config.enabledAgents.includes(opts.agentTool))) {
56
- return this.emptyBriefing(opts.agentTool, opts.projectDir, sessionId);
57
- }
58
- if (!('init' in this.brain)) {
59
- return this.emptyBriefing(opts.agentTool, opts.projectDir, sessionId);
37
+ const briefing = this.emptyBriefing(opts);
38
+ const config = this.getConfig();
39
+ if (!config.enabled)
40
+ return { ...briefing, disabledReason: 'configuration' };
41
+ if (config.enabledAgents.length && !config.enabledAgents.includes(opts.agentTool)) {
42
+ return { ...briefing, disabledReason: 'agent' };
60
43
  }
61
- try {
62
- await this.brain.init();
63
- }
64
- catch { /* already initialized */ }
65
- // Build sections within budget
66
- const lookbackMs = this.config.lookbackHours * 60 * 60 * 1000;
67
- const cutoff = Date.now() - lookbackMs;
68
- const recentDecisions = this.fetchSection(projectId, ['decision'], cutoff, 5);
69
- const activeTasks = this.fetchSection(projectId, ['task', 'todo'], cutoff, 5);
70
- const projectState = this.fetchProjectStateSummary(projectId);
71
- const crossAgentInsights = this.fetchCrossAgentInsights(projectId, opts.agentTool, cutoff, 5);
72
- const warnings = this.fetchSection(projectId, ['warning', 'critical', 'security'], cutoff, 3);
73
- const similarPastWork = opts.currentTask
74
- ? this.fetchSimilarWork(opts.currentTask, opts.agentTool, 3)
75
- : this.fetchTopPatterns(projectId, 3);
76
- const briefing = {
77
- agentTool: opts.agentTool,
78
- projectDir: opts.projectDir,
79
- sessionId,
80
- generatedAt: new Date(),
81
- tokenCount: 0,
82
- sections: {
83
- recentDecisions: recentDecisions.map(e => this.formatEntry(e)),
84
- activeTasks: activeTasks.map(e => this.formatEntry(e)),
85
- similarPastWork: similarPastWork.map(e => this.formatEntry(e)),
86
- projectState,
87
- crossAgentInsights: crossAgentInsights.map(e => `[${e.agentTool}] ${this.formatEntry(e)}`),
88
- warnings: warnings.map(e => this.formatEntry(e)),
89
- },
90
- fullText: '',
91
- };
92
- briefing.fullText = this.assembleBriefing(briefing, projectName);
93
- briefing.tokenCount = estimateTokens(briefing.fullText);
94
- // Trim if over budget — drop lowest-priority sections first
95
- if (briefing.tokenCount > this.config.tokenBudget) {
96
- briefing.fullText = this.trimToBudget(briefing, projectName);
97
- briefing.tokenCount = estimateTokens(briefing.fullText);
98
- }
99
- // Cache it
100
- cache.set(cacheKey, briefing);
101
- // Update stats
44
+ const settings = this.settings.get();
45
+ if (!settings.features.automaticBriefing)
46
+ return { ...briefing, disabledReason: 'automaticBriefing' };
47
+ if (!settings.features.contextAssembly)
48
+ return { ...briefing, disabledReason: 'contextAssembly' };
49
+ const projectId = opts.projectId ?? GlobalBrain.projectIdFor(opts.projectDir);
50
+ const terms = contextQueryKeywords(opts.currentTask);
51
+ await this.brain.init();
52
+ const annotations = this.annotations.get();
53
+ const key = createHash('sha256').update(JSON.stringify({
54
+ projectDir: opts.projectDir, projectId, agentTool: opts.agentTool, terms, config,
55
+ includeCrossProject: opts.includeCrossProject, settings,
56
+ annotationRevision: annotations.revision,
57
+ lastCommit: this.brain.getStorageHealth().lastSuccessfulSync,
58
+ })).digest('hex');
59
+ const cached = this.cache.get(key);
60
+ if (cached && Date.now() - cached.generatedAt.getTime() < 60000)
61
+ return structuredClone(cached);
62
+ const context = assembleContext(this.brain, {
63
+ projectId,
64
+ query: opts.currentTask,
65
+ maxEntries: 15,
66
+ tokenBudget: config.tokenBudget,
67
+ minImportance: config.relevanceThreshold,
68
+ lookbackHours: config.lookbackHours,
69
+ alwaysInclude: config.alwaysInclude,
70
+ includeCrossProject: opts.includeCrossProject,
71
+ features: settings.features,
72
+ annotations,
73
+ });
74
+ for (const entry of context.entries)
75
+ this.addSection(briefing.sections, entry, projectId, opts.agentTool, terms.length > 0);
76
+ briefing.fullText = context.markdown;
77
+ briefing.tokenCount = context.budget.estimatedTokens;
78
+ this.cache.set(key, structuredClone(briefing));
102
79
  this.stats.totalBriefings++;
103
- this.stats.avgTokenCount = this.runningAvg(this.stats.avgTokenCount, briefing.tokenCount, this.stats.totalBriefings);
104
- this.stats.avgGenerationMs = this.runningAvg(this.stats.avgGenerationMs, Date.now() - start, this.stats.totalBriefings);
80
+ this.stats.avgTokenCount += (briefing.tokenCount - this.stats.avgTokenCount) / this.stats.totalBriefings;
81
+ this.stats.avgGenerationMs += (Date.now() - start - this.stats.avgGenerationMs) / this.stats.totalBriefings;
105
82
  this.stats.byAgent[opts.agentTool] = (this.stats.byAgent[opts.agentTool] ?? 0) + 1;
106
83
  this.stats.lastBriefing = new Date();
107
84
  return briefing;
108
85
  }
109
- /** Get current stats */
110
86
  getStats() {
111
- return { ...this.stats };
87
+ return { ...this.stats, byAgent: { ...this.stats.byAgent } };
112
88
  }
113
- /** Update config at runtime */
114
89
  configure(patch) {
115
90
  this.config = { ...this.config, ...patch };
91
+ this.cache.clear();
116
92
  }
117
93
  getConfig() {
118
- return { ...this.config };
119
- }
120
- // ─── Private helpers ────────────────────────────────────────────────────────
121
- fetchSection(projectId, categories, cutoffMs, limit) {
122
- const results = [];
123
- for (const category of categories) {
124
- const entries = this.brain.recall({
125
- projectId,
126
- category,
127
- limit,
128
- minImportance: this.config.relevanceThreshold,
129
- });
130
- for (const e of entries) {
131
- if (e.lastAccessed.getTime() >= cutoffMs || e.createdAt.getTime() >= cutoffMs) {
132
- results.push(e);
133
- }
134
- }
135
- }
136
- return results
137
- .sort((a, b) => b.importance - a.importance)
138
- .slice(0, limit);
139
- }
140
- fetchCrossAgentInsights(projectId, currentAgent, cutoffMs, limit) {
141
- const all = this.brain.recall({
142
- projectId,
143
- limit: limit * 3,
144
- minImportance: this.config.relevanceThreshold,
145
- });
146
- return all
147
- .filter(e => e.agentTool !== currentAgent && (e.lastAccessed.getTime() >= cutoffMs || e.createdAt.getTime() >= cutoffMs))
148
- .slice(0, limit);
149
- }
150
- fetchProjectStateSummary(projectId) {
151
- const recent = this.brain.recall({ projectId, category: 'state', limit: 1 });
152
- if (recent.length)
153
- return recent[0].content.slice(0, 300);
154
- const top = this.brain.recall({ projectId, limit: 3 });
155
- if (!top.length)
156
- return '';
157
- return top.map(e => `${e.category}: ${e.content.slice(0, 80)}`).join('; ');
158
- }
159
- fetchSimilarWork(taskHint, agentTool, limit) {
160
- const keywords = this.extractKeywords(taskHint);
161
- if (!keywords.length)
162
- return [];
163
- return this.brain.recall({
164
- keywords,
165
- limit,
166
- minImportance: this.config.relevanceThreshold,
167
- });
168
- }
169
- fetchTopPatterns(projectId, limit) {
170
- return this.brain.recall({ projectId, category: 'pattern', limit });
171
- }
172
- extractKeywords(text) {
173
- const stop = new Set(['the', 'and', 'or', 'a', 'an', 'is', 'are', 'was', 'were', 'in', 'on', 'at', 'to', 'for', 'of', 'with', 'by', 'this', 'that']);
174
- return text
175
- .toLowerCase()
176
- .split(/\W+/)
177
- .filter(w => w.length > 3 && !stop.has(w))
178
- .slice(0, 5);
179
- }
180
- formatEntry(entry) {
181
- const content = entry.content.length > 200 ? entry.content.slice(0, 197) + '...' : entry.content;
182
- return content;
183
- }
184
- assembleBriefing(briefing, projectName) {
185
- const parts = [];
186
- parts.push(`# 🧠 Shadow Brain — Subconscious Briefing`);
187
- parts.push(`_Project: ${projectName} | Agent: ${briefing.agentTool} | Auto-generated by Shadow Brain v5.2.0_`);
188
- parts.push('');
189
- if (briefing.sections.warnings.length) {
190
- parts.push(`## ⚠️ Warnings`);
191
- for (const w of briefing.sections.warnings)
192
- parts.push(`- ${w}`);
193
- parts.push('');
194
- }
195
- if (briefing.sections.recentDecisions.length) {
196
- parts.push(`## Recent Decisions`);
197
- for (const d of briefing.sections.recentDecisions)
198
- parts.push(`- ${d}`);
199
- parts.push('');
200
- }
201
- if (briefing.sections.activeTasks.length) {
202
- parts.push(`## Active Tasks`);
203
- for (const t of briefing.sections.activeTasks)
204
- parts.push(`- ${t}`);
205
- parts.push('');
206
- }
207
- if (briefing.sections.projectState) {
208
- parts.push(`## Project State`);
209
- parts.push(briefing.sections.projectState);
210
- parts.push('');
211
- }
212
- if (briefing.sections.crossAgentInsights.length) {
213
- parts.push(`## Cross-Agent Insights`);
214
- for (const i of briefing.sections.crossAgentInsights)
215
- parts.push(`- ${i}`);
216
- parts.push('');
217
- }
218
- if (briefing.sections.similarPastWork.length) {
219
- parts.push(`## Similar Past Work`);
220
- for (const s of briefing.sections.similarPastWork)
221
- parts.push(`- ${s}`);
222
- parts.push('');
223
- }
224
- return parts.join('\n').trim();
225
- }
226
- trimToBudget(briefing, projectName) {
227
- // Drop sections in this priority order until under budget:
228
- // similarPastWork → crossAgentInsights → activeTasks → recentDecisions → warnings (warnings last)
229
- const trimmedSections = { ...briefing.sections };
230
- const dropOrder = ['similarPastWork', 'crossAgentInsights', 'activeTasks', 'recentDecisions'];
231
- for (const key of dropOrder) {
232
- let text = this.assembleBriefing({ ...briefing, sections: trimmedSections }, projectName);
233
- if (estimateTokens(text) <= this.config.tokenBudget)
234
- return text;
235
- const arr = trimmedSections[key];
236
- if (Array.isArray(arr)) {
237
- trimmedSections[key] = [];
238
- }
239
- else {
240
- trimmedSections[key] = '';
241
- }
242
- }
243
- return this.assembleBriefing({ ...briefing, sections: trimmedSections }, projectName);
244
- }
245
- emptyBriefing(agentTool, projectDir, sessionId) {
94
+ return { ...this.config, alwaysInclude: [...this.config.alwaysInclude], enabledAgents: [...this.config.enabledAgents] };
95
+ }
96
+ addSection(sections, entry, projectId, agentTool, hasTask) {
97
+ const origin = entry.projectId === projectId ? '' : '[' + (entry.projectName || entry.projectId) + '] ';
98
+ const text = origin + (entry.excerptTruncated ? 'Excerpt: ' : '') + entry.excerpt;
99
+ if (['warning', 'critical', 'security'].includes(entry.category))
100
+ sections.warnings.push(text);
101
+ else if (entry.category === 'decision')
102
+ sections.recentDecisions.push(text);
103
+ else if (entry.category === 'task' || entry.category === 'todo')
104
+ sections.activeTasks.push(text);
105
+ else if (entry.category === 'state' && !sections.projectState)
106
+ sections.projectState = text;
107
+ else if (entry.agentTool !== agentTool && !hasTask)
108
+ sections.crossAgentInsights.push('[' + entry.agentTool + '] ' + text);
109
+ else
110
+ sections.similarPastWork.push(text);
111
+ }
112
+ emptyBriefing(opts) {
246
113
  return {
247
- agentTool,
248
- projectDir,
249
- sessionId,
114
+ agentTool: opts.agentTool,
115
+ projectDir: opts.projectDir,
116
+ sessionId: randomUUID(),
250
117
  generatedAt: new Date(),
251
118
  tokenCount: 0,
252
119
  sections: {
@@ -260,9 +127,6 @@ export class SubconsciousEngine {
260
127
  fullText: '',
261
128
  };
262
129
  }
263
- runningAvg(prev, next, n) {
264
- return prev + (next - prev) / n;
265
- }
266
130
  }
267
131
  let defaultEngine = null;
268
132
  export function getSubconscious(config) {
@@ -1 +1 @@
1
- {"version":3,"file":"subconscious.js","sourceRoot":"","sources":["../../src/brain/subconscious.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subconscious.js","sourceRoot":"","sources":["../../src/brain/subconscious.ts"],"names":[],"mappings":"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"}
@@ -57,23 +57,23 @@ export interface SkillInstallResult {
57
57
  export declare function listWorkflowTargets(): ({
58
58
  skillRoot: ".agents/skills";
59
59
  instructionFile: "AGENTS.md";
60
- target: "claude-code" | "opencode" | "codex" | "deepseek-harness" | "portable";
60
+ target: "claude-code" | "opencode" | "deepseek-harness" | "codex" | "portable";
61
61
  } | {
62
62
  skillRoot: ".claude/skills";
63
63
  instructionFile: "CLAUDE.md";
64
- target: "claude-code" | "opencode" | "codex" | "deepseek-harness" | "portable";
64
+ target: "claude-code" | "opencode" | "deepseek-harness" | "codex" | "portable";
65
65
  } | {
66
66
  skillRoot: ".opencode/skills";
67
67
  instructionFile: "AGENTS.md";
68
- target: "claude-code" | "opencode" | "codex" | "deepseek-harness" | "portable";
68
+ target: "claude-code" | "opencode" | "deepseek-harness" | "codex" | "portable";
69
69
  } | {
70
70
  skillRoot: ".dsh/skills";
71
71
  instructionFile: "AGENTS.md";
72
- target: "claude-code" | "opencode" | "codex" | "deepseek-harness" | "portable";
72
+ target: "claude-code" | "opencode" | "deepseek-harness" | "codex" | "portable";
73
73
  } | {
74
74
  skillRoot: ".agents/skills";
75
75
  instructionFile: "AGENTS.md";
76
- target: "claude-code" | "opencode" | "codex" | "deepseek-harness" | "portable";
76
+ target: "claude-code" | "opencode" | "deepseek-harness" | "codex" | "portable";
77
77
  })[];
78
78
  export declare function getBundledSkill(name: string): BundledWorkflowSkill & {
79
79
  content: string;
package/dist/cli.js CHANGED
@@ -9,7 +9,11 @@ import * as os from 'os';
9
9
  import { Orchestrator } from './brain/orchestrator.js';
10
10
  import { detectRunningAgents, createAdapter } from './adapters/index.js';
11
11
  import { registerWorkflowCommands } from './workflow-cli.js';
12
- const VERSION = '7.1.0';
12
+ import { registerContextCommands } from './context-cli.js';
13
+ import { registerCurationCommands } from './curation-cli.js';
14
+ import { registerIntegrationCommands } from './integration-cli.js';
15
+ import { registerActivityCommands } from './activity-cli.js';
16
+ const VERSION = '7.1.3';
13
17
  // Defer config reads until a command actually needs provider settings.
14
18
  let savedConfig;
15
19
  function getConfig() {
@@ -914,6 +918,10 @@ const notifyCmd = new Command('notify')
914
918
  const mcpCmd = new Command('mcp')
915
919
  .description('Start Shadow Brain as an MCP (Model Context Protocol) server')
916
920
  .argument('[project-dir]', 'Project directory', process.cwd())
921
+ .option('--stdio', 'Serve the provider-free memory and workflow tools over standard input/output')
922
+ .option('--project-id <id>', 'Use an existing project ID for stdio activity attribution')
923
+ .option('--db <path>', 'Memory store for the standalone stdio service')
924
+ .option('--settings <path>', 'Feature settings for the standalone stdio service')
917
925
  .option('--port <port>', 'MCP server port', '7342')
918
926
  .option('--host <host>', 'MCP server host', 'localhost')
919
927
  .option('--auth-token <token>', 'Require this token for HTTP/SSE MCP requests')
@@ -921,6 +929,11 @@ const mcpCmd = new Command('mcp')
921
929
  .option('-p, --provider <provider>', 'LLM provider')
922
930
  .option('-k, --api-key <key>', 'API key')
923
931
  .action(async (projectDir, opts) => {
932
+ if (opts.stdio) {
933
+ const { runMemoryMCPStdio } = await import('./brain/mcp-stdio.js');
934
+ await runMemoryMCPStdio({ dbPath: opts.db, settingsPath: opts.settings, projectDir, projectId: opts.projectId });
935
+ return;
936
+ }
924
937
  const brainConfig = mergeConfig({ ...opts, projectDir, watchMode: false });
925
938
  const orchestrator = new Orchestrator(brainConfig);
926
939
  try {
@@ -3022,7 +3035,7 @@ const subconsciousCmd = new Command('subconscious')
3022
3035
  console.log(JSON.stringify(briefing, null, 2));
3023
3036
  }
3024
3037
  else {
3025
- console.log(briefing.fullText || chalk.dim('(no relevant context yet — brain is empty)'));
3038
+ console.log(briefing.fullText || chalk.dim(briefing.disabledReason ? `(Briefing disabled: ${briefing.disabledReason})` : '(No relevant context fits this task and budget.)'));
3026
3039
  }
3027
3040
  }))
3028
3041
  .addCommand(new Command('status')
@@ -5071,6 +5084,10 @@ const recallExplainCmd = new Command('recall-explain')
5071
5084
  program.addCommand(storageHealthCmd);
5072
5085
  program.addCommand(recallExplainCmd);
5073
5086
  registerWorkflowCommands(program);
5087
+ registerContextCommands(program);
5088
+ registerCurationCommands(program);
5089
+ registerIntegrationCommands(program);
5090
+ registerActivityCommands(program);
5074
5091
  program.parseAsync().catch((error) => {
5075
5092
  console.error(error instanceof Error ? error.message : 'Command failed.');
5076
5093
  process.exitCode = 1;