opencode-telos 1.0.0 β 1.0.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.
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/opencode/hooks.d.ts +1 -1
- package/dist/opencode/hooks.d.ts.map +1 -1
- package/dist/opencode/hooks.js +35 -35
- package/dist/opencode/hooks.js.map +1 -1
- package/package.json +1 -1
- package/src/index.ts +4 -1
- package/src/opencode/hooks.ts +35 -35
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;;;;;AAiBjD,wBAGC;AAED,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,10 @@ import { createSddTools } from "./opencode/tools.js";
|
|
|
2
2
|
import { createSddHooks } from "./opencode/hooks.js";
|
|
3
3
|
const SddPlugin = async (_ctx) => {
|
|
4
4
|
const tools = createSddTools();
|
|
5
|
-
|
|
5
|
+
// OpenCode can load npm plugins while its process cwd is unrelated to the
|
|
6
|
+
// active workspace. Always bind hook state to the project directory supplied
|
|
7
|
+
// by the plugin runtime so .sdd stays inside the project.
|
|
8
|
+
const hooks = createSddHooks(_ctx.directory);
|
|
6
9
|
return {
|
|
7
10
|
tool: tools,
|
|
8
11
|
...hooks,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,MAAM,SAAS,GAAW,KAAK,EAAE,IAAI,EAAE,EAAE;IACvC,MAAM,KAAK,GAAG,cAAc,EAAE,CAAA;IAC9B,MAAM,KAAK,GAAG,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,MAAM,SAAS,GAAW,KAAK,EAAE,IAAI,EAAE,EAAE;IACvC,MAAM,KAAK,GAAG,cAAc,EAAE,CAAA;IAC9B,0EAA0E;IAC1E,6EAA6E;IAC7E,0DAA0D;IAC1D,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAE5C,OAAO;QACL,IAAI,EAAE,KAAK;QACX,GAAG,KAAK;KACT,CAAA;AACH,CAAC,CAAA;AAED,eAAe;IACb,EAAE,EAAE,gBAAgB;IACpB,MAAM,EAAE,SAAS;CAClB,CAAA;AAED,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA"}
|
package/dist/opencode/hooks.d.ts
CHANGED
|
@@ -5,5 +5,5 @@ import type { Hooks } from "@opencode-ai/plugin";
|
|
|
5
5
|
* Exported for testing.
|
|
6
6
|
*/
|
|
7
7
|
export declare function detectShellFileWrites(command: string): string[];
|
|
8
|
-
export declare function createSddHooks(): Hooks;
|
|
8
|
+
export declare function createSddHooks(projectDir: string): Hooks;
|
|
9
9
|
//# sourceMappingURL=hooks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/opencode/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AA8GhD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAwD/D;AAED,wBAAgB,cAAc,
|
|
1
|
+
{"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/opencode/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AA8GhD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAwD/D;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,KAAK,CA0iBxD"}
|
package/dist/opencode/hooks.js
CHANGED
|
@@ -158,18 +158,18 @@ export function detectShellFileWrites(command) {
|
|
|
158
158
|
}
|
|
159
159
|
return [...new Set(files)];
|
|
160
160
|
}
|
|
161
|
-
export function createSddHooks() {
|
|
161
|
+
export function createSddHooks(projectDir) {
|
|
162
162
|
let systemInjected = false;
|
|
163
163
|
return {
|
|
164
164
|
"experimental.chat.system.transform": async (_input, output) => {
|
|
165
165
|
if (systemInjected)
|
|
166
166
|
return;
|
|
167
|
-
if (!isSddEnabled(
|
|
167
|
+
if (!isSddEnabled(projectDir))
|
|
168
168
|
return;
|
|
169
169
|
// Run pending migrations on first load
|
|
170
|
-
if (hasPendingMigrations(
|
|
170
|
+
if (hasPendingMigrations(projectDir)) {
|
|
171
171
|
try {
|
|
172
|
-
const migrationResults = runMigrations(
|
|
172
|
+
const migrationResults = runMigrations(projectDir);
|
|
173
173
|
const successful = migrationResults.filter(r => r.success);
|
|
174
174
|
if (successful.length > 0) {
|
|
175
175
|
output.system.push(`## π opencode-telos Migrations: ${successful.length} fix(es) applied`);
|
|
@@ -180,16 +180,16 @@ export function createSddHooks() {
|
|
|
180
180
|
console.error("[opencode-telos] Migration error:", err);
|
|
181
181
|
}
|
|
182
182
|
}
|
|
183
|
-
const repo = createRepository(
|
|
183
|
+
const repo = createRepository(projectDir);
|
|
184
184
|
if (repo.isInitialized()) {
|
|
185
185
|
// Restore persistent cache from disk (cross-session)
|
|
186
|
-
const cacheMgr = getCacheManager(
|
|
186
|
+
const cacheMgr = getCacheManager(projectDir);
|
|
187
187
|
cacheMgr.restoreFromPersistentCache();
|
|
188
188
|
output.system.push(SDD_CORE_SYSTEM_PROMPT);
|
|
189
189
|
// Tool Registry: injeta tools relevantes para o estado atual do grafo
|
|
190
190
|
try {
|
|
191
191
|
const { getGraphSnapshot } = await import("./router/graph-state-snapshot.js");
|
|
192
|
-
const snapshot = getGraphSnapshot(
|
|
192
|
+
const snapshot = getGraphSnapshot(projectDir);
|
|
193
193
|
const { formatGraphState } = await import("./router/graph-state-snapshot.js");
|
|
194
194
|
output.system.push(formatGraphState(snapshot));
|
|
195
195
|
}
|
|
@@ -219,7 +219,7 @@ export function createSddHooks() {
|
|
|
219
219
|
}
|
|
220
220
|
// G: Save graph snapshot to disk for fast cross-session restore
|
|
221
221
|
try {
|
|
222
|
-
const cacheMgrForSnapshot = getCacheManager(
|
|
222
|
+
const cacheMgrForSnapshot = getCacheManager(projectDir);
|
|
223
223
|
cacheMgrForSnapshot.saveGraphSnapshot(graph);
|
|
224
224
|
}
|
|
225
225
|
catch { }
|
|
@@ -229,7 +229,7 @@ export function createSddHooks() {
|
|
|
229
229
|
}
|
|
230
230
|
// Persist cache to disk for cross-session reuse
|
|
231
231
|
try {
|
|
232
|
-
const cacheMgr = getCacheManager(
|
|
232
|
+
const cacheMgr = getCacheManager(projectDir);
|
|
233
233
|
cacheMgr.persistToDisk();
|
|
234
234
|
}
|
|
235
235
|
catch { }
|
|
@@ -245,27 +245,27 @@ export function createSddHooks() {
|
|
|
245
245
|
const text = part.text.trim();
|
|
246
246
|
// Detect /sdd commands
|
|
247
247
|
if (text === "/sdd on") {
|
|
248
|
-
const state = setToggleState(
|
|
248
|
+
const state = setToggleState(projectDir, true);
|
|
249
249
|
systemInjected = false;
|
|
250
250
|
part.text = `β
SDD enforcement **enabled** at ${state.changed_at}.\n\nSpec-Driven Development is now active. All code changes will go through the SDD workflow.`;
|
|
251
251
|
return;
|
|
252
252
|
}
|
|
253
253
|
if (text === "/sdd off") {
|
|
254
|
-
const state = setToggleState(
|
|
254
|
+
const state = setToggleState(projectDir, false);
|
|
255
255
|
systemInjected = false;
|
|
256
256
|
resetWorkflowState();
|
|
257
257
|
part.text = `βΈοΈ SDD enforcement **disabled** at ${state.changed_at}.\n\nYou can now make code changes freely without SDD workflow. Use \`/sdd on\` to re-enable.`;
|
|
258
258
|
return;
|
|
259
259
|
}
|
|
260
260
|
if (text === "/sdd status") {
|
|
261
|
-
const state = getToggleState(
|
|
261
|
+
const state = getToggleState(projectDir);
|
|
262
262
|
const status = state.enabled ? "π’ ON" : "π΄ OFF";
|
|
263
263
|
part.text = `SDD Status: ${status}\nLast changed: ${state.changed_at}\n\nCommands: \`/sdd on\`, \`/sdd off\`, \`/sdd status\`, \`/sdd cache reset\``;
|
|
264
264
|
return;
|
|
265
265
|
}
|
|
266
266
|
// H: /sdd cache reset β full cache reset without killing the process
|
|
267
267
|
if (text === "/sdd cache reset") {
|
|
268
|
-
const cacheMgr = getCacheManager(
|
|
268
|
+
const cacheMgr = getCacheManager(projectDir);
|
|
269
269
|
const result = cacheMgr.fullReset();
|
|
270
270
|
const lines = ["## π§Ή Cache Reset Complete"];
|
|
271
271
|
lines.push(`- Memory cache: ${result.cleared.memory ? "β
cleared" : "βοΈ skipped"}`);
|
|
@@ -278,7 +278,7 @@ export function createSddHooks() {
|
|
|
278
278
|
return;
|
|
279
279
|
}
|
|
280
280
|
// Semantic nudge β replaces regex-based pattern detection
|
|
281
|
-
if (isSddEnabled(
|
|
281
|
+
if (isSddEnabled(projectDir)) {
|
|
282
282
|
const nudge = formatNudgeInput(text);
|
|
283
283
|
if (nudge) {
|
|
284
284
|
part.text += `\n\n${nudge}`;
|
|
@@ -288,13 +288,13 @@ export function createSddHooks() {
|
|
|
288
288
|
},
|
|
289
289
|
"tool.execute.before": async (input, output) => {
|
|
290
290
|
// Skip enforcement if SDD is disabled
|
|
291
|
-
if (!isSddEnabled(
|
|
291
|
+
if (!isSddEnabled(projectDir))
|
|
292
292
|
return;
|
|
293
293
|
// Enforce workflow context for SDD graph mutation tools
|
|
294
294
|
if (input.tool.startsWith("sdd.")) {
|
|
295
295
|
const access = checkToolAccess(input.tool);
|
|
296
296
|
if (!access.allowed) {
|
|
297
|
-
addAuditEntry(
|
|
297
|
+
addAuditEntry(projectDir, process.env.USER || "current", input.tool, "graph", "denied", access.reason || "Workflow not active");
|
|
298
298
|
throw new Error(access.reason);
|
|
299
299
|
}
|
|
300
300
|
}
|
|
@@ -304,7 +304,7 @@ export function createSddHooks() {
|
|
|
304
304
|
if (typeof command === "string" && command.length > 0) {
|
|
305
305
|
// ENFORCEMENT: Block shell writes to .sdd/ directory
|
|
306
306
|
if (command.includes(".sdd/") && (/[>]|writeFile|open\(['"].*['"],\s*['"]w/.test(command))) {
|
|
307
|
-
addAuditEntry(
|
|
307
|
+
addAuditEntry(projectDir, process.env.USER || "current", "shell_command", ".sdd/", "denied", "Shell command writes to .sdd/ directory");
|
|
308
308
|
throw new Error([
|
|
309
309
|
`[SDD BLOCKED] Shell command detected that writes to .sdd/ directory.`,
|
|
310
310
|
` Command: ${command.slice(0, 200)}`,
|
|
@@ -315,7 +315,7 @@ export function createSddHooks() {
|
|
|
315
315
|
}
|
|
316
316
|
const detectedFiles = detectShellFileWrites(command);
|
|
317
317
|
if (detectedFiles.length > 0) {
|
|
318
|
-
const repo = createRepository(
|
|
318
|
+
const repo = createRepository(projectDir);
|
|
319
319
|
if (!repo.isInitialized())
|
|
320
320
|
return;
|
|
321
321
|
const graph = repo.loadGraph();
|
|
@@ -323,7 +323,7 @@ export function createSddHooks() {
|
|
|
323
323
|
const specNodeTypes = ["feature", "entity", "requirement", "architecture_component", "module"];
|
|
324
324
|
const hasSpecNodes = graph.nodes.some(n => specNodeTypes.includes(n.type));
|
|
325
325
|
if (!hasSpecNodes && graph.nodes.length > 0) {
|
|
326
|
-
addAuditEntry(
|
|
326
|
+
addAuditEntry(projectDir, process.env.USER || "current", "shell_command", detectedFiles.join(", "), "denied", "Shell command writes source files without spec nodes");
|
|
327
327
|
throw new Error([
|
|
328
328
|
`[SDD BLOCKED] Shell command detected that writes source files:`,
|
|
329
329
|
` Files: ${detectedFiles.join(", ")}`,
|
|
@@ -346,7 +346,7 @@ export function createSddHooks() {
|
|
|
346
346
|
return detectedFiles.some((f) => affectedFiles.some((af) => f.includes(af) || af.includes(f)));
|
|
347
347
|
});
|
|
348
348
|
if (approvedChanges.length === 0) {
|
|
349
|
-
addAuditEntry(
|
|
349
|
+
addAuditEntry(projectDir, process.env.USER || "current", "shell_command", detectedFiles.join(", "), "denied", "No approved Change node for shell-written files");
|
|
350
350
|
throw new Error([
|
|
351
351
|
`[SDD BLOCKED] Shell command detected that writes source files without SDD approval:`,
|
|
352
352
|
` Command: ${command.slice(0, 200)}`,
|
|
@@ -366,7 +366,7 @@ export function createSddHooks() {
|
|
|
366
366
|
// ENFORCEMENT: Require spec update before shell write
|
|
367
367
|
const shellWorkflow = getWorkflowState();
|
|
368
368
|
if (shellWorkflow.enforced && !shellWorkflow.specUpdated) {
|
|
369
|
-
addAuditEntry(
|
|
369
|
+
addAuditEntry(projectDir, process.env.USER || "current", "shell_command", detectedFiles.join(", "), "denied", "SDD spec not updated after enforce");
|
|
370
370
|
throw new Error([
|
|
371
371
|
`[SDD BLOCKED] Cannot write code before updating the specification.`,
|
|
372
372
|
` Files: ${detectedFiles.join(", ")}`,
|
|
@@ -384,9 +384,9 @@ export function createSddHooks() {
|
|
|
384
384
|
}
|
|
385
385
|
// Approved β create snapshots
|
|
386
386
|
for (const change of approvedChanges) {
|
|
387
|
-
createSnapshot(graph, change.id,
|
|
387
|
+
createSnapshot(graph, change.id, projectDir);
|
|
388
388
|
}
|
|
389
|
-
addAuditEntry(
|
|
389
|
+
addAuditEntry(projectDir, process.env.USER || "current", "shell_command", detectedFiles.join(", "), "allowed", `Approved changes: ${approvedChanges.map((c) => c.id).join(", ")}`);
|
|
390
390
|
return;
|
|
391
391
|
}
|
|
392
392
|
}
|
|
@@ -397,7 +397,7 @@ export function createSddHooks() {
|
|
|
397
397
|
// ENFORCEMENT: Block direct writes to .sdd/ directory
|
|
398
398
|
// The SDD graph can ONLY be modified through sdd.* tools
|
|
399
399
|
if (filePath.includes(".sdd/")) {
|
|
400
|
-
addAuditEntry(
|
|
400
|
+
addAuditEntry(projectDir, process.env.USER || "current", input.tool, filePath, "denied", "Direct .sdd/ modification blocked");
|
|
401
401
|
throw new Error([
|
|
402
402
|
`[SDD BLOCKED] Cannot write directly to .sdd/ directory.`,
|
|
403
403
|
` File: ${filePath}`,
|
|
@@ -416,7 +416,7 @@ export function createSddHooks() {
|
|
|
416
416
|
if (!isSourceFile)
|
|
417
417
|
return;
|
|
418
418
|
// Check if SDD is initialized
|
|
419
|
-
const repo = createRepository(
|
|
419
|
+
const repo = createRepository(projectDir);
|
|
420
420
|
if (!repo.isInitialized())
|
|
421
421
|
return;
|
|
422
422
|
const graph = repo.loadGraph();
|
|
@@ -424,7 +424,7 @@ export function createSddHooks() {
|
|
|
424
424
|
const specNodeTypes = ["feature", "entity", "requirement", "architecture_component", "module"];
|
|
425
425
|
const hasSpecNodes = graph.nodes.some(n => specNodeTypes.includes(n.type));
|
|
426
426
|
if (!hasSpecNodes && graph.nodes.length > 0) {
|
|
427
|
-
addAuditEntry(
|
|
427
|
+
addAuditEntry(projectDir, process.env.USER || "current", "write_file", filePath, "denied", "No spec nodes in graph");
|
|
428
428
|
throw new Error([
|
|
429
429
|
`[SDD BLOCKED] Cannot create code without specification.`,
|
|
430
430
|
"",
|
|
@@ -439,10 +439,10 @@ export function createSddHooks() {
|
|
|
439
439
|
].join("\n"));
|
|
440
440
|
}
|
|
441
441
|
// Check permissions before allowing changes
|
|
442
|
-
const userRole = getUserRoleWithAuth(
|
|
443
|
-
const hasPermission = checkPermission(userRole, "create_change",
|
|
442
|
+
const userRole = getUserRoleWithAuth(projectDir, process.env.USER || "current");
|
|
443
|
+
const hasPermission = checkPermission(userRole, "create_change", projectDir);
|
|
444
444
|
if (!hasPermission) {
|
|
445
|
-
addAuditEntry(
|
|
445
|
+
addAuditEntry(projectDir, process.env.USER || "current", "write_file", filePath, "denied", "Insufficient permissions");
|
|
446
446
|
throw new Error([
|
|
447
447
|
`[SDD PERMISSION DENIED] Cannot modify ${filePath}.`,
|
|
448
448
|
"",
|
|
@@ -461,7 +461,7 @@ export function createSddHooks() {
|
|
|
461
461
|
// ENFORCEMENT: Require spec update before code write
|
|
462
462
|
const workflow = getWorkflowState();
|
|
463
463
|
if (workflow.enforced && !workflow.specUpdated) {
|
|
464
|
-
addAuditEntry(
|
|
464
|
+
addAuditEntry(projectDir, process.env.USER || "current", "write_file", filePath, "denied", "SDD spec not updated after enforce");
|
|
465
465
|
throw new Error([
|
|
466
466
|
`[SDD BLOCKED] Cannot write code before updating the specification.`,
|
|
467
467
|
` File: ${filePath}`,
|
|
@@ -479,13 +479,13 @@ export function createSddHooks() {
|
|
|
479
479
|
}
|
|
480
480
|
// Create snapshot before approving change
|
|
481
481
|
for (const change of approvedChanges) {
|
|
482
|
-
createSnapshot(graph, change.id,
|
|
482
|
+
createSnapshot(graph, change.id, projectDir);
|
|
483
483
|
}
|
|
484
|
-
addAuditEntry(
|
|
484
|
+
addAuditEntry(projectDir, process.env.USER || "current", "write_file", filePath, "allowed", `Approved changes: ${approvedChanges.map((c) => c.id).join(", ")}`);
|
|
485
485
|
return;
|
|
486
486
|
}
|
|
487
487
|
// File not covered by any approved Change β BLOCK the write
|
|
488
|
-
addAuditEntry(
|
|
488
|
+
addAuditEntry(projectDir, process.env.USER || "current", "write_file", filePath, "denied", "No approved Change node");
|
|
489
489
|
throw new Error([
|
|
490
490
|
`[SDD BLOCKED] Cannot modify ${filePath}.`,
|
|
491
491
|
"",
|
|
@@ -543,7 +543,7 @@ export function createSddHooks() {
|
|
|
543
543
|
}
|
|
544
544
|
},
|
|
545
545
|
"tool.definition": async (input, output) => {
|
|
546
|
-
if (!isSddEnabled(
|
|
546
|
+
if (!isSddEnabled(projectDir))
|
|
547
547
|
return;
|
|
548
548
|
// Inject SDD enforcement warning into run_terminal_command description
|
|
549
549
|
if (input.toolID === "run_terminal_command") {
|
|
@@ -572,7 +572,7 @@ export function createSddHooks() {
|
|
|
572
572
|
dispose: async () => {
|
|
573
573
|
// E: Persist cache and release resources on session end
|
|
574
574
|
try {
|
|
575
|
-
const cacheMgr = getCacheManager(
|
|
575
|
+
const cacheMgr = getCacheManager(projectDir);
|
|
576
576
|
cacheMgr.persistToDisk();
|
|
577
577
|
cacheMgr.releaseWriteLock();
|
|
578
578
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/opencode/hooks.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/opencode/hooks.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -4,7 +4,10 @@ import { createSddHooks } from "./opencode/hooks.js"
|
|
|
4
4
|
|
|
5
5
|
const SddPlugin: Plugin = async (_ctx) => {
|
|
6
6
|
const tools = createSddTools()
|
|
7
|
-
|
|
7
|
+
// OpenCode can load npm plugins while its process cwd is unrelated to the
|
|
8
|
+
// active workspace. Always bind hook state to the project directory supplied
|
|
9
|
+
// by the plugin runtime so .sdd stays inside the project.
|
|
10
|
+
const hooks = createSddHooks(_ctx.directory)
|
|
8
11
|
|
|
9
12
|
return {
|
|
10
13
|
tool: tools,
|
package/src/opencode/hooks.ts
CHANGED
|
@@ -171,18 +171,18 @@ export function detectShellFileWrites(command: string): string[] {
|
|
|
171
171
|
return [...new Set(files)]
|
|
172
172
|
}
|
|
173
173
|
|
|
174
|
-
export function createSddHooks(): Hooks {
|
|
174
|
+
export function createSddHooks(projectDir: string): Hooks {
|
|
175
175
|
let systemInjected = false
|
|
176
176
|
|
|
177
177
|
return {
|
|
178
178
|
"experimental.chat.system.transform": async (_input, output) => {
|
|
179
179
|
if (systemInjected) return
|
|
180
|
-
if (!isSddEnabled(
|
|
180
|
+
if (!isSddEnabled(projectDir)) return
|
|
181
181
|
|
|
182
182
|
// Run pending migrations on first load
|
|
183
|
-
if (hasPendingMigrations(
|
|
183
|
+
if (hasPendingMigrations(projectDir)) {
|
|
184
184
|
try {
|
|
185
|
-
const migrationResults = runMigrations(
|
|
185
|
+
const migrationResults = runMigrations(projectDir)
|
|
186
186
|
const successful = migrationResults.filter(r => r.success)
|
|
187
187
|
if (successful.length > 0) {
|
|
188
188
|
output.system.push(`## π opencode-telos Migrations: ${successful.length} fix(es) applied`)
|
|
@@ -193,10 +193,10 @@ export function createSddHooks(): Hooks {
|
|
|
193
193
|
}
|
|
194
194
|
}
|
|
195
195
|
|
|
196
|
-
const repo = createRepository(
|
|
196
|
+
const repo = createRepository(projectDir)
|
|
197
197
|
if (repo.isInitialized()) {
|
|
198
198
|
// Restore persistent cache from disk (cross-session)
|
|
199
|
-
const cacheMgr = getCacheManager(
|
|
199
|
+
const cacheMgr = getCacheManager(projectDir)
|
|
200
200
|
cacheMgr.restoreFromPersistentCache()
|
|
201
201
|
|
|
202
202
|
output.system.push(SDD_CORE_SYSTEM_PROMPT)
|
|
@@ -204,7 +204,7 @@ export function createSddHooks(): Hooks {
|
|
|
204
204
|
// Tool Registry: injeta tools relevantes para o estado atual do grafo
|
|
205
205
|
try {
|
|
206
206
|
const { getGraphSnapshot } = await import("./router/graph-state-snapshot.js")
|
|
207
|
-
const snapshot = getGraphSnapshot(
|
|
207
|
+
const snapshot = getGraphSnapshot(projectDir)
|
|
208
208
|
const { formatGraphState } = await import("./router/graph-state-snapshot.js")
|
|
209
209
|
output.system.push(formatGraphState(snapshot))
|
|
210
210
|
} catch {}
|
|
@@ -235,7 +235,7 @@ export function createSddHooks(): Hooks {
|
|
|
235
235
|
|
|
236
236
|
// G: Save graph snapshot to disk for fast cross-session restore
|
|
237
237
|
try {
|
|
238
|
-
const cacheMgrForSnapshot = getCacheManager(
|
|
238
|
+
const cacheMgrForSnapshot = getCacheManager(projectDir)
|
|
239
239
|
cacheMgrForSnapshot.saveGraphSnapshot(graph)
|
|
240
240
|
} catch {}
|
|
241
241
|
} catch {
|
|
@@ -243,7 +243,7 @@ export function createSddHooks(): Hooks {
|
|
|
243
243
|
}
|
|
244
244
|
// Persist cache to disk for cross-session reuse
|
|
245
245
|
try {
|
|
246
|
-
const cacheMgr = getCacheManager(
|
|
246
|
+
const cacheMgr = getCacheManager(projectDir)
|
|
247
247
|
cacheMgr.persistToDisk()
|
|
248
248
|
} catch {}
|
|
249
249
|
systemInjected = true
|
|
@@ -260,14 +260,14 @@ export function createSddHooks(): Hooks {
|
|
|
260
260
|
|
|
261
261
|
// Detect /sdd commands
|
|
262
262
|
if (text === "/sdd on") {
|
|
263
|
-
const state = setToggleState(
|
|
263
|
+
const state = setToggleState(projectDir, true)
|
|
264
264
|
systemInjected = false
|
|
265
265
|
part.text = `β
SDD enforcement **enabled** at ${state.changed_at}.\n\nSpec-Driven Development is now active. All code changes will go through the SDD workflow.`
|
|
266
266
|
return
|
|
267
267
|
}
|
|
268
268
|
|
|
269
269
|
if (text === "/sdd off") {
|
|
270
|
-
const state = setToggleState(
|
|
270
|
+
const state = setToggleState(projectDir, false)
|
|
271
271
|
systemInjected = false
|
|
272
272
|
resetWorkflowState()
|
|
273
273
|
part.text = `βΈοΈ SDD enforcement **disabled** at ${state.changed_at}.\n\nYou can now make code changes freely without SDD workflow. Use \`/sdd on\` to re-enable.`
|
|
@@ -275,7 +275,7 @@ export function createSddHooks(): Hooks {
|
|
|
275
275
|
}
|
|
276
276
|
|
|
277
277
|
if (text === "/sdd status") {
|
|
278
|
-
const state = getToggleState(
|
|
278
|
+
const state = getToggleState(projectDir)
|
|
279
279
|
const status = state.enabled ? "π’ ON" : "π΄ OFF"
|
|
280
280
|
part.text = `SDD Status: ${status}\nLast changed: ${state.changed_at}\n\nCommands: \`/sdd on\`, \`/sdd off\`, \`/sdd status\`, \`/sdd cache reset\``
|
|
281
281
|
return
|
|
@@ -283,7 +283,7 @@ export function createSddHooks(): Hooks {
|
|
|
283
283
|
|
|
284
284
|
// H: /sdd cache reset β full cache reset without killing the process
|
|
285
285
|
if (text === "/sdd cache reset") {
|
|
286
|
-
const cacheMgr = getCacheManager(
|
|
286
|
+
const cacheMgr = getCacheManager(projectDir)
|
|
287
287
|
const result = cacheMgr.fullReset()
|
|
288
288
|
const lines = ["## π§Ή Cache Reset Complete"]
|
|
289
289
|
lines.push(`- Memory cache: ${result.cleared.memory ? "β
cleared" : "βοΈ skipped"}`)
|
|
@@ -297,7 +297,7 @@ export function createSddHooks(): Hooks {
|
|
|
297
297
|
}
|
|
298
298
|
|
|
299
299
|
// Semantic nudge β replaces regex-based pattern detection
|
|
300
|
-
if (isSddEnabled(
|
|
300
|
+
if (isSddEnabled(projectDir)) {
|
|
301
301
|
const nudge = formatNudgeInput(text)
|
|
302
302
|
if (nudge) {
|
|
303
303
|
part.text += `\n\n${nudge}`
|
|
@@ -308,14 +308,14 @@ export function createSddHooks(): Hooks {
|
|
|
308
308
|
|
|
309
309
|
"tool.execute.before": async (input, output) => {
|
|
310
310
|
// Skip enforcement if SDD is disabled
|
|
311
|
-
if (!isSddEnabled(
|
|
311
|
+
if (!isSddEnabled(projectDir)) return
|
|
312
312
|
|
|
313
313
|
// Enforce workflow context for SDD graph mutation tools
|
|
314
314
|
if (input.tool.startsWith("sdd.")) {
|
|
315
315
|
const access = checkToolAccess(input.tool)
|
|
316
316
|
if (!access.allowed) {
|
|
317
317
|
addAuditEntry(
|
|
318
|
-
|
|
318
|
+
projectDir,
|
|
319
319
|
process.env.USER || "current",
|
|
320
320
|
input.tool,
|
|
321
321
|
"graph",
|
|
@@ -333,7 +333,7 @@ export function createSddHooks(): Hooks {
|
|
|
333
333
|
// ENFORCEMENT: Block shell writes to .sdd/ directory
|
|
334
334
|
if (command.includes(".sdd/") && (/[>]|writeFile|open\(['"].*['"],\s*['"]w/.test(command))) {
|
|
335
335
|
addAuditEntry(
|
|
336
|
-
|
|
336
|
+
projectDir,
|
|
337
337
|
process.env.USER || "current",
|
|
338
338
|
"shell_command",
|
|
339
339
|
".sdd/",
|
|
@@ -353,7 +353,7 @@ export function createSddHooks(): Hooks {
|
|
|
353
353
|
|
|
354
354
|
const detectedFiles = detectShellFileWrites(command)
|
|
355
355
|
if (detectedFiles.length > 0) {
|
|
356
|
-
const repo = createRepository(
|
|
356
|
+
const repo = createRepository(projectDir)
|
|
357
357
|
if (!repo.isInitialized()) return
|
|
358
358
|
|
|
359
359
|
const graph = repo.loadGraph()
|
|
@@ -364,7 +364,7 @@ export function createSddHooks(): Hooks {
|
|
|
364
364
|
|
|
365
365
|
if (!hasSpecNodes && graph.nodes.length > 0) {
|
|
366
366
|
addAuditEntry(
|
|
367
|
-
|
|
367
|
+
projectDir,
|
|
368
368
|
process.env.USER || "current",
|
|
369
369
|
"shell_command",
|
|
370
370
|
detectedFiles.join(", "),
|
|
@@ -399,7 +399,7 @@ export function createSddHooks(): Hooks {
|
|
|
399
399
|
|
|
400
400
|
if (approvedChanges.length === 0) {
|
|
401
401
|
addAuditEntry(
|
|
402
|
-
|
|
402
|
+
projectDir,
|
|
403
403
|
process.env.USER || "current",
|
|
404
404
|
"shell_command",
|
|
405
405
|
detectedFiles.join(", "),
|
|
@@ -429,7 +429,7 @@ export function createSddHooks(): Hooks {
|
|
|
429
429
|
const shellWorkflow = getWorkflowState()
|
|
430
430
|
if (shellWorkflow.enforced && !shellWorkflow.specUpdated) {
|
|
431
431
|
addAuditEntry(
|
|
432
|
-
|
|
432
|
+
projectDir,
|
|
433
433
|
process.env.USER || "current",
|
|
434
434
|
"shell_command",
|
|
435
435
|
detectedFiles.join(", "),
|
|
@@ -456,10 +456,10 @@ export function createSddHooks(): Hooks {
|
|
|
456
456
|
|
|
457
457
|
// Approved β create snapshots
|
|
458
458
|
for (const change of approvedChanges) {
|
|
459
|
-
createSnapshot(graph, change.id,
|
|
459
|
+
createSnapshot(graph, change.id, projectDir)
|
|
460
460
|
}
|
|
461
461
|
addAuditEntry(
|
|
462
|
-
|
|
462
|
+
projectDir,
|
|
463
463
|
process.env.USER || "current",
|
|
464
464
|
"shell_command",
|
|
465
465
|
detectedFiles.join(", "),
|
|
@@ -479,7 +479,7 @@ export function createSddHooks(): Hooks {
|
|
|
479
479
|
// The SDD graph can ONLY be modified through sdd.* tools
|
|
480
480
|
if (filePath.includes(".sdd/")) {
|
|
481
481
|
addAuditEntry(
|
|
482
|
-
|
|
482
|
+
projectDir,
|
|
483
483
|
process.env.USER || "current",
|
|
484
484
|
input.tool,
|
|
485
485
|
filePath,
|
|
@@ -508,7 +508,7 @@ export function createSddHooks(): Hooks {
|
|
|
508
508
|
if (!isSourceFile) return
|
|
509
509
|
|
|
510
510
|
// Check if SDD is initialized
|
|
511
|
-
const repo = createRepository(
|
|
511
|
+
const repo = createRepository(projectDir)
|
|
512
512
|
if (!repo.isInitialized()) return
|
|
513
513
|
|
|
514
514
|
const graph = repo.loadGraph()
|
|
@@ -519,7 +519,7 @@ export function createSddHooks(): Hooks {
|
|
|
519
519
|
|
|
520
520
|
if (!hasSpecNodes && graph.nodes.length > 0) {
|
|
521
521
|
addAuditEntry(
|
|
522
|
-
|
|
522
|
+
projectDir,
|
|
523
523
|
process.env.USER || "current",
|
|
524
524
|
"write_file",
|
|
525
525
|
filePath,
|
|
@@ -543,12 +543,12 @@ export function createSddHooks(): Hooks {
|
|
|
543
543
|
}
|
|
544
544
|
|
|
545
545
|
// Check permissions before allowing changes
|
|
546
|
-
const userRole = getUserRoleWithAuth(
|
|
547
|
-
const hasPermission = checkPermission(userRole, "create_change",
|
|
546
|
+
const userRole = getUserRoleWithAuth(projectDir, process.env.USER || "current")
|
|
547
|
+
const hasPermission = checkPermission(userRole, "create_change", projectDir)
|
|
548
548
|
|
|
549
549
|
if (!hasPermission) {
|
|
550
550
|
addAuditEntry(
|
|
551
|
-
|
|
551
|
+
projectDir,
|
|
552
552
|
process.env.USER || "current",
|
|
553
553
|
"write_file",
|
|
554
554
|
filePath,
|
|
@@ -577,7 +577,7 @@ export function createSddHooks(): Hooks {
|
|
|
577
577
|
const workflow = getWorkflowState()
|
|
578
578
|
if (workflow.enforced && !workflow.specUpdated) {
|
|
579
579
|
addAuditEntry(
|
|
580
|
-
|
|
580
|
+
projectDir,
|
|
581
581
|
process.env.USER || "current",
|
|
582
582
|
"write_file",
|
|
583
583
|
filePath,
|
|
@@ -604,10 +604,10 @@ export function createSddHooks(): Hooks {
|
|
|
604
604
|
|
|
605
605
|
// Create snapshot before approving change
|
|
606
606
|
for (const change of approvedChanges) {
|
|
607
|
-
createSnapshot(graph, change.id,
|
|
607
|
+
createSnapshot(graph, change.id, projectDir)
|
|
608
608
|
}
|
|
609
609
|
addAuditEntry(
|
|
610
|
-
|
|
610
|
+
projectDir,
|
|
611
611
|
process.env.USER || "current",
|
|
612
612
|
"write_file",
|
|
613
613
|
filePath,
|
|
@@ -619,7 +619,7 @@ export function createSddHooks(): Hooks {
|
|
|
619
619
|
|
|
620
620
|
// File not covered by any approved Change β BLOCK the write
|
|
621
621
|
addAuditEntry(
|
|
622
|
-
|
|
622
|
+
projectDir,
|
|
623
623
|
process.env.USER || "current",
|
|
624
624
|
"write_file",
|
|
625
625
|
filePath,
|
|
@@ -689,7 +689,7 @@ export function createSddHooks(): Hooks {
|
|
|
689
689
|
},
|
|
690
690
|
|
|
691
691
|
"tool.definition": async (input, output) => {
|
|
692
|
-
if (!isSddEnabled(
|
|
692
|
+
if (!isSddEnabled(projectDir)) return
|
|
693
693
|
|
|
694
694
|
// Inject SDD enforcement warning into run_terminal_command description
|
|
695
695
|
if (input.toolID === "run_terminal_command") {
|
|
@@ -719,7 +719,7 @@ export function createSddHooks(): Hooks {
|
|
|
719
719
|
dispose: async () => {
|
|
720
720
|
// E: Persist cache and release resources on session end
|
|
721
721
|
try {
|
|
722
|
-
const cacheMgr = getCacheManager(
|
|
722
|
+
const cacheMgr = getCacheManager(projectDir)
|
|
723
723
|
cacheMgr.persistToDisk()
|
|
724
724
|
cacheMgr.releaseWriteLock()
|
|
725
725
|
} catch {}
|