@bradygaster/squad-sdk 0.9.6-insider.2 → 0.10.0

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 (127) hide show
  1. package/dist/adapter/client.d.ts.map +1 -1
  2. package/dist/adapter/client.js +16 -3
  3. package/dist/adapter/client.js.map +1 -1
  4. package/dist/adapter/types.d.ts +6 -1
  5. package/dist/adapter/types.d.ts.map +1 -1
  6. package/dist/agents/charter-compiler.d.ts +2 -0
  7. package/dist/agents/charter-compiler.d.ts.map +1 -1
  8. package/dist/agents/charter-compiler.js +6 -1
  9. package/dist/agents/charter-compiler.js.map +1 -1
  10. package/dist/agents/index.d.ts.map +1 -1
  11. package/dist/agents/index.js +24 -25
  12. package/dist/agents/index.js.map +1 -1
  13. package/dist/agents/lifecycle.d.ts.map +1 -1
  14. package/dist/agents/lifecycle.js +11 -2
  15. package/dist/agents/lifecycle.js.map +1 -1
  16. package/dist/agents/onboarding.d.ts.map +1 -1
  17. package/dist/agents/onboarding.js +24 -0
  18. package/dist/agents/onboarding.js.map +1 -1
  19. package/dist/config/agent-source.d.ts.map +1 -1
  20. package/dist/config/agent-source.js +60 -33
  21. package/dist/config/agent-source.js.map +1 -1
  22. package/dist/config/feature-audit.js +1 -1
  23. package/dist/config/feature-audit.js.map +1 -1
  24. package/dist/config/init.d.ts +4 -0
  25. package/dist/config/init.d.ts.map +1 -1
  26. package/dist/config/init.js +177 -44
  27. package/dist/config/init.js.map +1 -1
  28. package/dist/index.d.ts +4 -2
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +3 -2
  31. package/dist/index.js.map +1 -1
  32. package/dist/marketplace/index.d.ts +7 -0
  33. package/dist/marketplace/index.d.ts.map +1 -1
  34. package/dist/marketplace/index.js +4 -0
  35. package/dist/marketplace/index.js.map +1 -1
  36. package/dist/marketplace/plugin-manifest.d.ts +113 -0
  37. package/dist/marketplace/plugin-manifest.d.ts.map +1 -0
  38. package/dist/marketplace/plugin-manifest.js +820 -0
  39. package/dist/marketplace/plugin-manifest.js.map +1 -0
  40. package/dist/marketplace/plugin-runtime.d.ts +37 -0
  41. package/dist/marketplace/plugin-runtime.d.ts.map +1 -0
  42. package/dist/marketplace/plugin-runtime.js +217 -0
  43. package/dist/marketplace/plugin-runtime.js.map +1 -0
  44. package/dist/marketplace/plugin-state.d.ts +89 -0
  45. package/dist/marketplace/plugin-state.d.ts.map +1 -0
  46. package/dist/marketplace/plugin-state.js +278 -0
  47. package/dist/marketplace/plugin-state.js.map +1 -0
  48. package/dist/memory/index.d.ts +262 -0
  49. package/dist/memory/index.d.ts.map +1 -0
  50. package/dist/memory/index.js +1122 -0
  51. package/dist/memory/index.js.map +1 -0
  52. package/dist/multi-squad.d.ts.map +1 -1
  53. package/dist/multi-squad.js +5 -2
  54. package/dist/multi-squad.js.map +1 -1
  55. package/dist/platform/azure-devops.d.ts.map +1 -1
  56. package/dist/platform/azure-devops.js +17 -3
  57. package/dist/platform/azure-devops.js.map +1 -1
  58. package/dist/platform/detect.d.ts.map +1 -1
  59. package/dist/platform/detect.js +12 -5
  60. package/dist/platform/detect.js.map +1 -1
  61. package/dist/platform/index.d.ts.map +1 -1
  62. package/dist/platform/index.js +26 -0
  63. package/dist/platform/index.js.map +1 -1
  64. package/dist/ralph/triage.js +1 -1
  65. package/dist/ralph/triage.js.map +1 -1
  66. package/dist/resolution.d.ts +18 -0
  67. package/dist/resolution.d.ts.map +1 -1
  68. package/dist/resolution.js +64 -2
  69. package/dist/resolution.js.map +1 -1
  70. package/dist/runtime/memory-value-benchmark.d.ts +61 -0
  71. package/dist/runtime/memory-value-benchmark.d.ts.map +1 -0
  72. package/dist/runtime/memory-value-benchmark.js +245 -0
  73. package/dist/runtime/memory-value-benchmark.js.map +1 -0
  74. package/dist/runtime/scheduler.d.ts +8 -0
  75. package/dist/runtime/scheduler.d.ts.map +1 -1
  76. package/dist/runtime/scheduler.js +52 -5
  77. package/dist/runtime/scheduler.js.map +1 -1
  78. package/dist/sharing/export.d.ts +1 -0
  79. package/dist/sharing/export.d.ts.map +1 -1
  80. package/dist/sharing/export.js +10 -0
  81. package/dist/sharing/export.js.map +1 -1
  82. package/dist/sharing/import.d.ts.map +1 -1
  83. package/dist/sharing/import.js +3 -2
  84. package/dist/sharing/import.js.map +1 -1
  85. package/dist/sharing/index.d.ts +1 -0
  86. package/dist/sharing/index.d.ts.map +1 -1
  87. package/dist/sharing/index.js +1 -0
  88. package/dist/sharing/index.js.map +1 -1
  89. package/dist/sharing/repo-sync.d.ts +80 -0
  90. package/dist/sharing/repo-sync.d.ts.map +1 -0
  91. package/dist/sharing/repo-sync.js +138 -0
  92. package/dist/sharing/repo-sync.js.map +1 -0
  93. package/dist/state-backend.d.ts +154 -9
  94. package/dist/state-backend.d.ts.map +1 -1
  95. package/dist/state-backend.js +729 -184
  96. package/dist/state-backend.js.map +1 -1
  97. package/dist/tools/index.d.ts +39 -1
  98. package/dist/tools/index.d.ts.map +1 -1
  99. package/dist/tools/index.js +395 -2
  100. package/dist/tools/index.js.map +1 -1
  101. package/dist/utils/map-with-limit.d.ts +37 -0
  102. package/dist/utils/map-with-limit.d.ts.map +1 -0
  103. package/dist/utils/map-with-limit.js +81 -0
  104. package/dist/utils/map-with-limit.js.map +1 -0
  105. package/package.json +6 -2
  106. package/templates/after-agent-reference.md +64 -0
  107. package/templates/ceremony-reference.md +82 -0
  108. package/templates/client-compatibility-reference.md +46 -0
  109. package/templates/copilot-agent.md +96 -0
  110. package/templates/copilot-instructions.md +14 -0
  111. package/templates/model-selection-reference.md +101 -0
  112. package/templates/prd-intake.md +105 -0
  113. package/templates/rai-charter.md +110 -0
  114. package/templates/rai-policy.md +103 -0
  115. package/templates/ralph-reference.md +141 -0
  116. package/templates/routing.md +1 -0
  117. package/templates/scribe-charter.md +18 -151
  118. package/templates/session-init-reference.md +199 -0
  119. package/templates/skills/e2e-template-testing/SKILL.md +557 -0
  120. package/templates/skills/fact-checking/SKILL.md +61 -0
  121. package/templates/spawn-reference.md +131 -0
  122. package/templates/squad.agent.md.template +200 -625
  123. package/templates/workflow-wiring-appendix-a-code-reviewer.md +131 -0
  124. package/templates/workflow-wiring-appendix-b-documenter.md +140 -0
  125. package/templates/workflow-wiring-guide.md +276 -0
  126. package/templates/workflows/squad-heartbeat.yml +167 -167
  127. package/templates/worktree-reference.md +126 -0
@@ -0,0 +1,278 @@
1
+ import { createHash } from 'node:crypto';
2
+ import { isAbsolute, join, normalize } from 'node:path';
3
+ import { derivePluginRoles, } from './plugin-manifest.js';
4
+ export const PLUGIN_STATE_DIR = 'plugins';
5
+ export const INSTALLED_PLUGINS_FILE = join(PLUGIN_STATE_DIR, 'installed.json');
6
+ export const PLUGIN_LOCK_FILE = join(PLUGIN_STATE_DIR, 'lock.json');
7
+ export const PLUGIN_RUNTIME_FILE = join(PLUGIN_STATE_DIR, 'runtime.json');
8
+ export const PLUGIN_AUDIT_FILE = join(PLUGIN_STATE_DIR, 'audit.jsonl');
9
+ export async function readPluginStates(storage, stateRoot = '') {
10
+ const [installed, lock, runtime, audit] = await Promise.all([
11
+ readJsonState(storage, join(stateRoot, INSTALLED_PLUGINS_FILE), { plugins: [] }),
12
+ readJsonState(storage, join(stateRoot, PLUGIN_LOCK_FILE), { plugins: {} }),
13
+ readJsonState(storage, join(stateRoot, PLUGIN_RUNTIME_FILE), { plugins: {}, active: {} }),
14
+ readAuditState(storage, join(stateRoot, PLUGIN_AUDIT_FILE)),
15
+ ]);
16
+ runtime.active ??= {};
17
+ return { installed, lock, runtime, audit };
18
+ }
19
+ export async function buildActivePluginContext(storage, stateRoot = '', options = {}) {
20
+ const states = await readPluginStates(storage, stateRoot);
21
+ const maxArtifactChars = options.maxArtifactChars ?? 12_000;
22
+ const activePluginIds = Array.from(new Set(Object.values(states.runtime.active)
23
+ .filter((pluginId) => typeof pluginId === 'string')
24
+ .filter((pluginId) => states.runtime.plugins[pluginId]?.enabled === true))).sort((a, b) => a.localeCompare(b));
25
+ if (activePluginIds.length === 0) {
26
+ return '';
27
+ }
28
+ const sections = [
29
+ '## Active Squad Plugins',
30
+ [
31
+ 'The following enabled Squad plugins contributed declarative static artifacts.',
32
+ 'Squad has not installed upstream packages, started MCP servers, or run external plugin commands.',
33
+ 'Use these artifacts as guidance and metadata when they are relevant to the task.',
34
+ ].join(' '),
35
+ ];
36
+ for (const pluginId of activePluginIds) {
37
+ const plugin = states.installed.plugins.find((candidate) => candidate.id === pluginId);
38
+ if (!plugin?.enabled) {
39
+ continue;
40
+ }
41
+ const activeRoles = Object.entries(states.runtime.active)
42
+ .filter(([, activePluginId]) => activePluginId === plugin.id)
43
+ .map(([role]) => role)
44
+ .sort((a, b) => a.localeCompare(b));
45
+ sections.push([
46
+ `### ${plugin.name} (${plugin.id}@${plugin.version})`,
47
+ `Roles: ${activeRoles.length > 0 ? activeRoles.join(', ') : plugin.roles.join(', ')}`,
48
+ plugin.repository?.url ? `Repository: ${plugin.repository.url}` : undefined,
49
+ plugin.upstream?.package ? `Upstream package: ${plugin.upstream.package}${plugin.upstream.registry ? ` (${plugin.upstream.registry})` : ''}` : undefined,
50
+ plugin.mcp?.available ? `MCP metadata: ${plugin.mcp.server ?? plugin.mcp.entryPoint ?? 'available'} (metadata only)` : undefined,
51
+ ].filter((line) => typeof line === 'string').join('\n'));
52
+ if (plugin.providers && plugin.providers.length > 0) {
53
+ sections.push(formatProviderContracts(plugin.providers));
54
+ }
55
+ for (const file of [...plugin.files].sort((a, b) => a.target.localeCompare(b.target))) {
56
+ if (!isSafeInstalledPluginTarget(file.target)) {
57
+ sections.push(`#### Installed artifact: .squad/${file.target}\nSkipped unsafe plugin state target.`);
58
+ continue;
59
+ }
60
+ const content = await storage.read(join(stateRoot, file.target));
61
+ if (content === undefined) {
62
+ sections.push(`#### Installed artifact: .squad/${file.target}\nArtifact listed in plugin state but not found on disk.`);
63
+ continue;
64
+ }
65
+ const trimmed = content.trim();
66
+ const excerpt = trimmed.length > maxArtifactChars
67
+ ? `${trimmed.slice(0, maxArtifactChars)}\n\n[truncated: ${trimmed.length - maxArtifactChars} characters omitted]`
68
+ : trimmed;
69
+ sections.push(`#### Installed artifact: .squad/${file.target}\n${excerpt}`);
70
+ }
71
+ }
72
+ return sections.join('\n\n');
73
+ }
74
+ export async function writePluginStates(storage, states, stateRoot = '') {
75
+ await storage.mkdir(join(stateRoot, PLUGIN_STATE_DIR), { recursive: true });
76
+ await Promise.all([
77
+ writeJsonState(storage, join(stateRoot, INSTALLED_PLUGINS_FILE), states.installed),
78
+ writeJsonState(storage, join(stateRoot, PLUGIN_LOCK_FILE), states.lock),
79
+ writeJsonState(storage, join(stateRoot, PLUGIN_RUNTIME_FILE), states.runtime),
80
+ writeAuditState(storage, join(stateRoot, PLUGIN_AUDIT_FILE), states.audit),
81
+ ]);
82
+ }
83
+ export function upsertInstalledPlugin(states, manifest, options) {
84
+ const now = options.now ?? new Date().toISOString();
85
+ const existing = states.installed.plugins.find((plugin) => plugin.id === manifest.id);
86
+ const enabled = existing?.enabled ?? false;
87
+ const installed = {
88
+ id: manifest.id,
89
+ name: manifest.name,
90
+ version: manifest.version,
91
+ enabled,
92
+ source: options.source,
93
+ installed_at: now,
94
+ roles: derivePluginRoles(manifest),
95
+ copilot: manifest.copilot,
96
+ repository: manifest.repository,
97
+ upstream: manifest.upstream,
98
+ mcp: manifest.mcp,
99
+ providers: manifest.providers,
100
+ runtime: manifest.runtime,
101
+ files: options.files,
102
+ };
103
+ states.installed.plugins = [
104
+ ...states.installed.plugins.filter((plugin) => plugin.id !== manifest.id),
105
+ installed,
106
+ ].sort((a, b) => a.id.localeCompare(b.id));
107
+ states.lock.plugins[manifest.id] = {
108
+ id: manifest.id,
109
+ version: manifest.version,
110
+ source: options.source,
111
+ manifest_sha256: sha256(options.manifestContent),
112
+ files: options.files,
113
+ installed_at: now,
114
+ };
115
+ states.runtime.plugins[manifest.id] = {
116
+ enabled,
117
+ active_version: manifest.version,
118
+ updated_at: now,
119
+ };
120
+ appendAuditEvent(states.audit, {
121
+ type: 'install',
122
+ plugin_id: manifest.id,
123
+ version: manifest.version,
124
+ timestamp: now,
125
+ message: `Installed ${manifest.id}@${manifest.version}`,
126
+ });
127
+ return installed;
128
+ }
129
+ export function setPluginEnabled(states, pluginId, enabled, now = new Date().toISOString()) {
130
+ const plugin = states.installed.plugins.find((candidate) => candidate.id === pluginId);
131
+ if (!plugin) {
132
+ throw new Error(`Plugin "${pluginId}" is not installed`);
133
+ }
134
+ plugin.enabled = enabled;
135
+ states.runtime.plugins[plugin.id] = {
136
+ enabled,
137
+ active_version: plugin.version,
138
+ updated_at: now,
139
+ };
140
+ if (!enabled) {
141
+ for (const [role, activePluginId] of Object.entries(states.runtime.active)) {
142
+ if (activePluginId === plugin.id) {
143
+ delete states.runtime.active[role];
144
+ }
145
+ }
146
+ }
147
+ else {
148
+ for (const role of plugin.roles) {
149
+ const activePluginId = states.runtime.active[role];
150
+ if (activePluginId && activePluginId !== plugin.id) {
151
+ throw new Error(`Role "${role}" is already active for plugin "${activePluginId}"`);
152
+ }
153
+ states.runtime.active[role] = plugin.id;
154
+ }
155
+ }
156
+ appendAuditEvent(states.audit, {
157
+ type: enabled ? 'enable' : 'disable',
158
+ plugin_id: plugin.id,
159
+ version: plugin.version,
160
+ timestamp: now,
161
+ message: `${enabled ? 'Enabled' : 'Disabled'} ${plugin.id}@${plugin.version}`,
162
+ });
163
+ return plugin;
164
+ }
165
+ export function switchActivePlugin(states, role, pluginId, now = new Date().toISOString()) {
166
+ const plugin = states.installed.plugins.find((candidate) => candidate.id === pluginId);
167
+ if (!plugin) {
168
+ throw new Error(`Plugin "${pluginId}" is not installed`);
169
+ }
170
+ if (!plugin.roles.includes(role)) {
171
+ throw new Error(`Plugin "${pluginId}" does not declare role "${role}"`);
172
+ }
173
+ plugin.enabled = true;
174
+ states.runtime.active[role] = plugin.id;
175
+ states.runtime.plugins[plugin.id] = {
176
+ enabled: true,
177
+ active_version: plugin.version,
178
+ updated_at: now,
179
+ };
180
+ appendAuditEvent(states.audit, {
181
+ type: 'switch',
182
+ plugin_id: plugin.id,
183
+ version: plugin.version,
184
+ timestamp: now,
185
+ message: `Switched ${role} to ${plugin.id}@${plugin.version}`,
186
+ });
187
+ return plugin;
188
+ }
189
+ export function removeInstalledPlugin(states, pluginId, now = new Date().toISOString()) {
190
+ const plugin = states.installed.plugins.find((candidate) => candidate.id === pluginId);
191
+ if (!plugin) {
192
+ throw new Error(`Plugin "${pluginId}" is not installed`);
193
+ }
194
+ states.installed.plugins = states.installed.plugins.filter((candidate) => candidate.id !== pluginId);
195
+ delete states.lock.plugins[pluginId];
196
+ delete states.runtime.plugins[pluginId];
197
+ for (const [role, activePluginId] of Object.entries(states.runtime.active)) {
198
+ if (activePluginId === pluginId) {
199
+ delete states.runtime.active[role];
200
+ }
201
+ }
202
+ appendAuditEvent(states.audit, {
203
+ type: 'uninstall',
204
+ plugin_id: plugin.id,
205
+ version: plugin.version,
206
+ timestamp: now,
207
+ message: `Uninstalled ${plugin.id}@${plugin.version}`,
208
+ });
209
+ return plugin;
210
+ }
211
+ export function appendAuditEvent(audit, event) {
212
+ audit.events = [...audit.events, event];
213
+ }
214
+ export function sha256(content) {
215
+ return createHash('sha256').update(content).digest('hex');
216
+ }
217
+ async function readJsonState(storage, filePath, fallback) {
218
+ const content = await storage.read(filePath);
219
+ if (content === undefined) {
220
+ return fallback;
221
+ }
222
+ try {
223
+ return JSON.parse(content);
224
+ }
225
+ catch (err) {
226
+ const message = err instanceof Error ? err.message : String(err);
227
+ throw new Error(`Could not parse ${filePath}: ${message}`);
228
+ }
229
+ }
230
+ async function writeJsonState(storage, filePath, data) {
231
+ await storage.write(filePath, `${JSON.stringify(data, null, 2)}\n`);
232
+ }
233
+ async function readAuditState(storage, filePath) {
234
+ const content = await storage.read(filePath);
235
+ if (content === undefined || content.trim() === '') {
236
+ return { events: [] };
237
+ }
238
+ const events = content
239
+ .split(/\r?\n/)
240
+ .filter((line) => line.trim().length > 0)
241
+ .map((line) => JSON.parse(line));
242
+ return { events };
243
+ }
244
+ async function writeAuditState(storage, filePath, audit) {
245
+ const content = audit.events.map((event) => JSON.stringify(event)).join('\n');
246
+ await storage.write(filePath, content.length > 0 ? `${content}\n` : '');
247
+ }
248
+ function isSafeInstalledPluginTarget(target) {
249
+ const normalized = normalize(target).replaceAll('\\', '/');
250
+ return !isAbsolute(target)
251
+ && normalized !== '..'
252
+ && !normalized.startsWith('../')
253
+ && !normalized.split('/').includes('..');
254
+ }
255
+ function formatProviderContracts(providers) {
256
+ const lines = [
257
+ '#### Provider contracts',
258
+ 'Provider contracts are declarative metadata only. Squad does not start MCP servers, call provider tools, or query live provider backends during agent spawn.',
259
+ ];
260
+ for (const provider of [...providers].sort((a, b) => a.id.localeCompare(b.id))) {
261
+ const details = [
262
+ `type=${provider.type}`,
263
+ provider.mode ? `mode=${provider.mode}` : undefined,
264
+ provider.protocol ? `protocol=${provider.protocol}` : undefined,
265
+ provider.artifact ? `artifact=.squad/${provider.artifact}` : undefined,
266
+ provider.capabilities && provider.capabilities.length > 0 ? `capabilities=${provider.capabilities.join(', ')}` : undefined,
267
+ provider.mcp?.server ? `mcp.server=${provider.mcp.server}` : undefined,
268
+ provider.mcp?.tool ? `mcp.tool=${provider.mcp.tool}` : undefined,
269
+ provider.mcp?.capability ? `mcp.capability=${provider.mcp.capability}` : undefined,
270
+ ].filter((detail) => typeof detail === 'string');
271
+ lines.push(`- ${provider.id}: ${details.join('; ')}`);
272
+ if (provider.description) {
273
+ lines.push(` ${provider.description}`);
274
+ }
275
+ }
276
+ return lines.join('\n');
277
+ }
278
+ //# sourceMappingURL=plugin-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-state.js","sourceRoot":"","sources":["../../src/marketplace/plugin-state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,262 @@
1
+ import type { StorageProvider } from '../storage/storage-provider.js';
2
+ export type MemoryClass = 'TRANSIENT' | 'LOCAL' | 'DECISION' | 'POLICY' | 'COPILOT_MEMORY' | 'FORBIDDEN';
3
+ export type MemoryLoadGuidance = 'ALWAYS' | 'ON-DEMAND' | 'ARCHIVE' | 'NEVER';
4
+ export interface MemoryGovernanceConfig {
5
+ version: 1;
6
+ defaultProvider: 'local' | 'hostInjectedCopilotAdapter' | 'copilot';
7
+ promptOnlyFallback: true;
8
+ externalProviders: {
9
+ hostInjectedCopilotAdapter: {
10
+ enabled: boolean;
11
+ requireApproval: boolean;
12
+ };
13
+ };
14
+ policy: {
15
+ rejectForbidden: true;
16
+ rejectTransientDurableWrites: true;
17
+ auditContent: false;
18
+ auditMaxBytes: number;
19
+ auditMaxArchives: number;
20
+ };
21
+ }
22
+ export interface MemoryClassification {
23
+ class: MemoryClass;
24
+ allowed: boolean;
25
+ reason: string;
26
+ destination: 'none' | 'local' | 'decision-inbox' | 'policy-inbox' | 'external-semantic';
27
+ loadGuidance: MemoryLoadGuidance;
28
+ }
29
+ export interface MemoryWriteRequest {
30
+ content: string;
31
+ title?: string;
32
+ author?: string;
33
+ requestedClass?: MemoryClass;
34
+ approved?: boolean;
35
+ metadata?: Record<string, string>;
36
+ }
37
+ export interface MemoryWriteResult {
38
+ stored: boolean;
39
+ id?: string;
40
+ classification: MemoryClassification;
41
+ path?: string;
42
+ }
43
+ export interface MemorySearchResult {
44
+ id: string;
45
+ class: MemoryClass;
46
+ loadGuidance: MemoryLoadGuidance;
47
+ title: string;
48
+ path: string;
49
+ snippet: string;
50
+ provider?: string;
51
+ score?: number;
52
+ }
53
+ export interface MemoryAuditRecord {
54
+ timestamp: string;
55
+ action: 'classify' | 'write' | 'reject' | 'promote' | 'delete' | 'search' | 'configure' | 'provider-error';
56
+ id?: string;
57
+ class?: MemoryClass;
58
+ title?: string;
59
+ path?: string;
60
+ reason?: string;
61
+ actor?: string;
62
+ provider?: string;
63
+ }
64
+ export interface CopilotMemoryProviderWriteRequest {
65
+ content: string;
66
+ title: string;
67
+ author?: string;
68
+ metadata?: Record<string, string>;
69
+ classification: MemoryClassification;
70
+ }
71
+ export interface CopilotMemoryProviderWriteResult {
72
+ id: string;
73
+ path?: string;
74
+ }
75
+ export interface CopilotMemoryProviderSearchResult {
76
+ id: string;
77
+ title: string;
78
+ snippet: string;
79
+ path?: string;
80
+ }
81
+ export interface MemoryProviderSearchResult extends CopilotMemoryProviderSearchResult {
82
+ class: MemoryClass;
83
+ loadGuidance: MemoryLoadGuidance;
84
+ score?: number;
85
+ }
86
+ export interface CopilotMemoryProviderClient {
87
+ write(request: CopilotMemoryProviderWriteRequest): Promise<CopilotMemoryProviderWriteResult>;
88
+ search(query: string): Promise<CopilotMemoryProviderSearchResult[]>;
89
+ delete(id: string): Promise<boolean>;
90
+ }
91
+ export interface MemoryProviderStatus {
92
+ id: string;
93
+ name: string;
94
+ available: boolean;
95
+ reason?: string;
96
+ }
97
+ /**
98
+ * Generic external memory provider contract.
99
+ *
100
+ * Implementations receive only pre-classified, non-forbidden, non-transient
101
+ * memory. The {@link LocalMemoryStore} enforces governance before routing
102
+ * to any registered provider.
103
+ */
104
+ export interface MemoryProvider {
105
+ readonly id: string;
106
+ readonly name: string;
107
+ /** Memory classes this provider is designed to store and retrieve. */
108
+ readonly supportedClasses: ReadonlyArray<MemoryClass>;
109
+ status(): Promise<MemoryProviderStatus>;
110
+ write(request: CopilotMemoryProviderWriteRequest): Promise<CopilotMemoryProviderWriteResult>;
111
+ search(query: string): Promise<MemoryProviderSearchResult[]>;
112
+ delete(id: string): Promise<boolean>;
113
+ }
114
+ /**
115
+ * MemPalace — in-memory test double for an external spatial memory provider.
116
+ *
117
+ * Models a "memory palace" (method of loci) where memories are stored at
118
+ * named loci. In production this would be replaced by a real spatial/external
119
+ * memory service. Set `metadata.locus` on a write request to tag the
120
+ * destination locus; defaults to `'default'`.
121
+ *
122
+ * Accepts: LOCAL, DECISION, POLICY.
123
+ * Never receives FORBIDDEN, TRANSIENT, or COPILOT_MEMORY (filtered upstream).
124
+ */
125
+ export declare class MemPalaceMemoryProvider implements MemoryProvider {
126
+ private readonly maxEntries;
127
+ readonly id = "mempalace";
128
+ readonly name = "MemPalace";
129
+ readonly supportedClasses: ReadonlyArray<MemoryClass>;
130
+ private readonly loci;
131
+ constructor(maxEntries?: number);
132
+ status(): Promise<MemoryProviderStatus>;
133
+ write(request: CopilotMemoryProviderWriteRequest): Promise<CopilotMemoryProviderWriteResult>;
134
+ search(query: string): Promise<MemoryProviderSearchResult[]>;
135
+ delete(id: string): Promise<boolean>;
136
+ /** Number of stored loci entries — for test introspection only. */
137
+ get size(): number;
138
+ }
139
+ /**
140
+ * IndexServer — in-memory test double for a governed knowledge/instruction catalog.
141
+ *
142
+ * Models a server-side index of stable instructions and reference knowledge.
143
+ * In production this would be replaced by a real embedding-search or BM25 index.
144
+ * Set `metadata.topic` on a write request to tag the catalog entry; defaults to
145
+ * the memory class (lowercased).
146
+ *
147
+ * Accepts: LOCAL, DECISION, POLICY.
148
+ * Never receives FORBIDDEN, TRANSIENT, or COPILOT_MEMORY (filtered upstream).
149
+ */
150
+ export declare class IndexServerMemoryProvider implements MemoryProvider {
151
+ private readonly maxEntries;
152
+ readonly id = "indexserver";
153
+ readonly name = "IndexServer";
154
+ readonly supportedClasses: ReadonlyArray<MemoryClass>;
155
+ private readonly catalog;
156
+ constructor(maxEntries?: number);
157
+ status(): Promise<MemoryProviderStatus>;
158
+ write(request: CopilotMemoryProviderWriteRequest): Promise<CopilotMemoryProviderWriteResult>;
159
+ search(query: string): Promise<MemoryProviderSearchResult[]>;
160
+ delete(id: string): Promise<boolean>;
161
+ /** Number of catalog entries — for test introspection only. */
162
+ get size(): number;
163
+ }
164
+ export interface LocalMemoryStoreOptions {
165
+ rootKind?: 'project' | 'squad';
166
+ hostInjectedCopilotAdapterClient?: CopilotMemoryProviderClient;
167
+ /** @deprecated Use hostInjectedCopilotAdapterClient. */
168
+ copilotMemoryClient?: CopilotMemoryProviderClient;
169
+ /**
170
+ * Optional additional external memory providers.
171
+ * Each provider receives writes/searches for its supported memory classes
172
+ * AFTER governance classification. FORBIDDEN and TRANSIENT content never
173
+ * reaches these providers. Results are merged with local search results.
174
+ */
175
+ registeredProviders?: MemoryProvider[];
176
+ }
177
+ export declare const REAL_COPILOT_UNAVAILABLE_REASON = "Real Copilot Memory API unavailable: no concrete callable API was found in installed @github/copilot SDK/tooling. Squad will not fake provider=copilot; use hostInjectedCopilotAdapter only when a host supplies a client.";
178
+ export declare class HostInjectedCopilotMemoryAdapter {
179
+ private readonly client?;
180
+ constructor(client?: CopilotMemoryProviderClient | undefined);
181
+ isAvailable(): boolean;
182
+ write(request: CopilotMemoryProviderWriteRequest): Promise<CopilotMemoryProviderWriteResult>;
183
+ search(query: string): Promise<CopilotMemoryProviderSearchResult[]>;
184
+ delete(id: string): Promise<boolean>;
185
+ private requireClient;
186
+ }
187
+ export declare function ensureMemoryGovernanceDefaults(storage: StorageProvider, projectRoot: string): Promise<string[]>;
188
+ export declare class LocalMemoryStore {
189
+ private readonly storage;
190
+ private readonly squadDir;
191
+ private readonly copilotProvider;
192
+ private readonly registeredProviders;
193
+ /**
194
+ * Async mutex tail for index read-modify-write operations.
195
+ * Each caller enqueues behind the current tail so concurrent writes
196
+ * are serialized without OS-level file locking.
197
+ */
198
+ private indexLockTail;
199
+ constructor(storage: StorageProvider, rootDir: string, options?: LocalMemoryStoreOptions);
200
+ /**
201
+ * Serialize all index read-modify-write operations.
202
+ *
203
+ * All callers that do readIndex() → mutate → writeIndex() must go through
204
+ * this method so concurrent writes within the same store instance cannot
205
+ * interleave and lose entries. The critical section is purely async
206
+ * (no thread blocking), so this is safe in Node.js single-thread land.
207
+ */
208
+ private withIndexLock;
209
+ classify(request: Pick<MemoryWriteRequest, 'content' | 'requestedClass' | 'metadata'>, options?: {
210
+ audit?: boolean;
211
+ actor?: string;
212
+ title?: string;
213
+ }): Promise<MemoryClassification>;
214
+ write(request: MemoryWriteRequest): Promise<MemoryWriteResult>;
215
+ search(query: string): Promise<MemorySearchResult[]>;
216
+ promote(id: string, targetClass: Exclude<MemoryClass, 'FORBIDDEN' | 'TRANSIENT'>, actor?: string): Promise<MemoryWriteResult>;
217
+ delete(id: string, actor?: string): Promise<boolean>;
218
+ providerStatus(): Promise<{
219
+ defaultProvider: MemoryGovernanceConfig['defaultProvider'];
220
+ realCopilotMemory: {
221
+ available: false;
222
+ configured: boolean;
223
+ reason: string;
224
+ };
225
+ hostInjectedCopilotAdapter: MemoryGovernanceConfig['externalProviders']['hostInjectedCopilotAdapter'] & {
226
+ clientAvailable: boolean;
227
+ configured: boolean;
228
+ };
229
+ registeredProviders: MemoryProviderStatus[];
230
+ }>;
231
+ configureHostInjectedCopilotAdapter(options: {
232
+ enabled: boolean;
233
+ requireApproval?: boolean;
234
+ defaultProvider?: Exclude<MemoryGovernanceConfig['defaultProvider'], 'copilot'>;
235
+ actor?: string;
236
+ }): Promise<MemoryGovernanceConfig>;
237
+ configureCopilotProvider(options: {
238
+ enabled: boolean;
239
+ adapter?: 'host' | 'hostInjectedCopilotAdapter';
240
+ requireApproval?: boolean;
241
+ defaultProvider?: MemoryGovernanceConfig['defaultProvider'];
242
+ actor?: string;
243
+ }): Promise<MemoryGovernanceConfig>;
244
+ auditLog(): Promise<MemoryAuditRecord[]>;
245
+ private ensureInitialized;
246
+ private readConfig;
247
+ private readIndex;
248
+ /**
249
+ * Best-effort backup of a corrupt index file.
250
+ * Writes the raw content to a `.corrupt` path alongside the index.
251
+ * Failure to write the backup is suppressed so callers see the original error.
252
+ */
253
+ private backupCorruptIndex;
254
+ private writeIndex;
255
+ private audit;
256
+ private rotateAuditIfNeeded;
257
+ private destinationPath;
258
+ private renderMemoryFile;
259
+ private absoluteFromEntryPath;
260
+ private updateMemoryFileMetadata;
261
+ }
262
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"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"}