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.
@@ -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;;;;;AAcjD,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"}
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
- const hooks = createSddHooks();
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,EAAE,CAAA;IAE9B,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"}
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"}
@@ -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,IAAI,KAAK,CA0iBtC"}
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"}
@@ -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(process.cwd()))
167
+ if (!isSddEnabled(projectDir))
168
168
  return;
169
169
  // Run pending migrations on first load
170
- if (hasPendingMigrations(process.cwd())) {
170
+ if (hasPendingMigrations(projectDir)) {
171
171
  try {
172
- const migrationResults = runMigrations(process.cwd());
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(process.cwd());
183
+ const repo = createRepository(projectDir);
184
184
  if (repo.isInitialized()) {
185
185
  // Restore persistent cache from disk (cross-session)
186
- const cacheMgr = getCacheManager(process.cwd());
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(process.cwd());
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(process.cwd());
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(process.cwd());
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(process.cwd(), true);
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(process.cwd(), false);
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(process.cwd());
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(process.cwd());
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(process.cwd())) {
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(process.cwd()))
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(process.cwd(), process.env.USER || "current", input.tool, "graph", "denied", access.reason || "Workflow not active");
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(process.cwd(), process.env.USER || "current", "shell_command", ".sdd/", "denied", "Shell command writes to .sdd/ directory");
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(process.cwd());
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(process.cwd(), process.env.USER || "current", "shell_command", detectedFiles.join(", "), "denied", "Shell command writes source files without spec nodes");
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(process.cwd(), process.env.USER || "current", "shell_command", detectedFiles.join(", "), "denied", "No approved Change node for shell-written files");
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(process.cwd(), process.env.USER || "current", "shell_command", detectedFiles.join(", "), "denied", "SDD spec not updated after enforce");
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, process.cwd());
387
+ createSnapshot(graph, change.id, projectDir);
388
388
  }
389
- addAuditEntry(process.cwd(), process.env.USER || "current", "shell_command", detectedFiles.join(", "), "allowed", `Approved changes: ${approvedChanges.map((c) => c.id).join(", ")}`);
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(process.cwd(), process.env.USER || "current", input.tool, filePath, "denied", "Direct .sdd/ modification blocked");
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(process.cwd());
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(process.cwd(), process.env.USER || "current", "write_file", filePath, "denied", "No spec nodes in graph");
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(process.cwd(), process.env.USER || "current");
443
- const hasPermission = checkPermission(userRole, "create_change", process.cwd());
442
+ const userRole = getUserRoleWithAuth(projectDir, process.env.USER || "current");
443
+ const hasPermission = checkPermission(userRole, "create_change", projectDir);
444
444
  if (!hasPermission) {
445
- addAuditEntry(process.cwd(), process.env.USER || "current", "write_file", filePath, "denied", "Insufficient permissions");
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(process.cwd(), process.env.USER || "current", "write_file", filePath, "denied", "SDD spec not updated after enforce");
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, process.cwd());
482
+ createSnapshot(graph, change.id, projectDir);
483
483
  }
484
- addAuditEntry(process.cwd(), process.env.USER || "current", "write_file", filePath, "allowed", `Approved changes: ${approvedChanges.map((c) => c.id).join(", ")}`);
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(process.cwd(), process.env.USER || "current", "write_file", filePath, "denied", "No approved Change node");
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(process.cwd()))
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(process.cwd());
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-telos",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "OpenCode Telos - Spec-Driven Development plugin with Knowledge Graph enforcement",
5
5
  "license": "MIT",
6
6
  "files": [
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
- const hooks = createSddHooks()
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,
@@ -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(process.cwd())) return
180
+ if (!isSddEnabled(projectDir)) return
181
181
 
182
182
  // Run pending migrations on first load
183
- if (hasPendingMigrations(process.cwd())) {
183
+ if (hasPendingMigrations(projectDir)) {
184
184
  try {
185
- const migrationResults = runMigrations(process.cwd())
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(process.cwd())
196
+ const repo = createRepository(projectDir)
197
197
  if (repo.isInitialized()) {
198
198
  // Restore persistent cache from disk (cross-session)
199
- const cacheMgr = getCacheManager(process.cwd())
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(process.cwd())
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(process.cwd())
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(process.cwd())
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(process.cwd(), true)
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(process.cwd(), false)
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(process.cwd())
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(process.cwd())
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(process.cwd())) {
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(process.cwd())) return
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
- process.cwd(),
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
- process.cwd(),
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(process.cwd())
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
- process.cwd(),
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
- process.cwd(),
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
- process.cwd(),
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, process.cwd())
459
+ createSnapshot(graph, change.id, projectDir)
460
460
  }
461
461
  addAuditEntry(
462
- process.cwd(),
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
- process.cwd(),
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(process.cwd())
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
- process.cwd(),
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(process.cwd(), process.env.USER || "current")
547
- const hasPermission = checkPermission(userRole, "create_change", process.cwd())
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
- process.cwd(),
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
- process.cwd(),
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, process.cwd())
607
+ createSnapshot(graph, change.id, projectDir)
608
608
  }
609
609
  addAuditEntry(
610
- process.cwd(),
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
- process.cwd(),
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(process.cwd())) return
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(process.cwd())
722
+ const cacheMgr = getCacheManager(projectDir)
723
723
  cacheMgr.persistToDisk()
724
724
  cacheMgr.releaseWriteLock()
725
725
  } catch {}