@aria_asi/cli 0.2.35 → 0.2.37

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 (195) hide show
  1. package/CLIENT-ONBOARDING.md +4 -2
  2. package/bin/aria.js +11 -7
  3. package/dist/aria-connector/src/auth.d.ts +14 -0
  4. package/dist/aria-connector/src/auth.d.ts.map +1 -1
  5. package/dist/aria-connector/src/auth.js +103 -1
  6. package/dist/aria-connector/src/auth.js.map +1 -1
  7. package/dist/aria-connector/src/chat.d.ts.map +1 -1
  8. package/dist/aria-connector/src/chat.js +13 -8
  9. package/dist/aria-connector/src/chat.js.map +1 -1
  10. package/dist/aria-connector/src/config.d.ts +6 -1
  11. package/dist/aria-connector/src/config.d.ts.map +1 -1
  12. package/dist/aria-connector/src/config.js.map +1 -1
  13. package/dist/aria-connector/src/connectors/claude-code.d.ts.map +1 -1
  14. package/dist/aria-connector/src/connectors/claude-code.js +50 -6
  15. package/dist/aria-connector/src/connectors/claude-code.js.map +1 -1
  16. package/dist/aria-connector/src/connectors/codex.d.ts.map +1 -1
  17. package/dist/aria-connector/src/connectors/codex.js +312 -10
  18. package/dist/aria-connector/src/connectors/codex.js.map +1 -1
  19. package/dist/aria-connector/src/connectors/opencode.d.ts.map +1 -1
  20. package/dist/aria-connector/src/connectors/opencode.js +35 -11
  21. package/dist/aria-connector/src/connectors/opencode.js.map +1 -1
  22. package/dist/aria-connector/src/connectors/repo-guard.d.ts +10 -0
  23. package/dist/aria-connector/src/connectors/repo-guard.d.ts.map +1 -1
  24. package/dist/aria-connector/src/connectors/repo-guard.js +110 -164
  25. package/dist/aria-connector/src/connectors/repo-guard.js.map +1 -1
  26. package/dist/aria-connector/src/connectors/runtime.d.ts.map +1 -1
  27. package/dist/aria-connector/src/connectors/runtime.js +17 -7
  28. package/dist/aria-connector/src/connectors/runtime.js.map +1 -1
  29. package/dist/aria-connector/src/connectors/shell.d.ts.map +1 -1
  30. package/dist/aria-connector/src/connectors/shell.js +12 -8
  31. package/dist/aria-connector/src/connectors/shell.js.map +1 -1
  32. package/dist/aria-connector/src/harness-client.d.ts +3 -1
  33. package/dist/aria-connector/src/harness-client.d.ts.map +1 -1
  34. package/dist/aria-connector/src/harness-client.js +7 -20
  35. package/dist/aria-connector/src/harness-client.js.map +1 -1
  36. package/dist/aria-connector/src/model-context.d.ts.map +1 -1
  37. package/dist/aria-connector/src/model-context.js +5 -0
  38. package/dist/aria-connector/src/model-context.js.map +1 -1
  39. package/dist/aria-connector/src/providers/types.d.ts +1 -1
  40. package/dist/aria-connector/src/providers/types.d.ts.map +1 -1
  41. package/dist/aria-connector/src/providers/xai.d.ts +3 -0
  42. package/dist/aria-connector/src/providers/xai.d.ts.map +1 -0
  43. package/dist/aria-connector/src/providers/xai.js +40 -0
  44. package/dist/aria-connector/src/providers/xai.js.map +1 -0
  45. package/dist/aria-connector/src/setup-wizard.js +1 -0
  46. package/dist/aria-connector/src/setup-wizard.js.map +1 -1
  47. package/dist/aria-connector/src/types.d.ts +2 -0
  48. package/dist/aria-connector/src/types.d.ts.map +1 -1
  49. package/dist/assets/hooks/aria-cognition-substrate-binding.mjs +51 -9
  50. package/dist/assets/hooks/aria-first-class-coach.mjs +129 -0
  51. package/dist/assets/hooks/aria-harness-via-sdk.mjs +33 -6
  52. package/dist/assets/hooks/aria-pre-tool-gate.mjs +33 -8
  53. package/dist/assets/hooks/aria-preprompt-consult.mjs +5 -6
  54. package/dist/assets/hooks/aria-preturn-memory-gate.mjs +5 -0
  55. package/dist/assets/hooks/aria-repo-doctrine-gate.mjs +15 -0
  56. package/dist/assets/hooks/aria-stop-gate.mjs +125 -17
  57. package/dist/assets/hooks/doctrine_trigger_map.json +11 -0
  58. package/dist/assets/hooks/lib/emergency-gateoff-impl.mjs +39 -0
  59. package/dist/assets/hooks/lib/emergency-gateoff.mjs +6 -0
  60. package/dist/assets/hooks/lib/first-class-coach.mjs +755 -0
  61. package/dist/assets/hooks/lib/skill-autoload-gate-impl.mjs +103 -0
  62. package/dist/assets/hooks/lib/skill-autoload-gate.mjs +1 -14
  63. package/dist/assets/opencode-plugins/harness-context/auth-token.mjs +126 -0
  64. package/dist/assets/opencode-plugins/harness-context/inject-context.mjs +62 -22
  65. package/dist/assets/opencode-plugins/harness-context/task-project-ledger.mjs +290 -0
  66. package/dist/assets/opencode-plugins/harness-gate/index.js +87 -27
  67. package/dist/assets/opencode-plugins/harness-gate/lib/skill-autoload-gate.js +1 -14
  68. package/dist/assets/opencode-plugins/harness-outcome/index.js +29 -24
  69. package/dist/assets/opencode-plugins/harness-stop/index.js +229 -68
  70. package/dist/assets/opencode-plugins/harness-stop/lib/skill-autoload-gate.js +1 -14
  71. package/dist/runtime/auth-token.mjs +121 -0
  72. package/dist/runtime/coach-kernel.mjs +371 -0
  73. package/dist/runtime/codex-bridge.mjs +440 -69
  74. package/dist/runtime/discipline/doctrine_trigger_map.json +11 -0
  75. package/dist/runtime/discipline/skills/aria-cognition/aria-essence/SKILL.md +18 -0
  76. package/dist/runtime/discipline/skills/aria-cognition/aria-forge-guardrails/SKILL.md +18 -0
  77. package/dist/runtime/discipline/skills/aria-cognition/aria-repo-doctrine/SKILL.md +18 -0
  78. package/dist/runtime/discipline/skills/aria-cognition/forge-quality-rules/SKILL.md +18 -0
  79. package/dist/runtime/discipline/skills/aria-cognition/ghazali-8lens/SKILL.md +18 -0
  80. package/dist/runtime/discipline/skills/aria-cognition/istiqra-induction/SKILL.md +18 -0
  81. package/dist/runtime/discipline/skills/aria-cognition/ladunni-22/SKILL.md +18 -0
  82. package/dist/runtime/discipline/skills/aria-cognition/mizan/SKILL.md +18 -0
  83. package/dist/runtime/discipline/skills/aria-cognition/nadia/SKILL.md +18 -0
  84. package/dist/runtime/discipline/skills/aria-cognition/nadia-psi/SKILL.md +18 -0
  85. package/dist/runtime/discipline/skills/aria-cognition/predictor/SKILL.md +18 -0
  86. package/dist/runtime/discipline/skills/aria-cognition/qiyas-analogy/SKILL.md +18 -0
  87. package/dist/runtime/discipline/skills/aria-cognition/soul-domains/SKILL.md +18 -0
  88. package/dist/runtime/discipline/skills/aria-harness/aria-aristotle-intra-phase/SKILL.md +18 -0
  89. package/dist/runtime/discipline/skills/aria-harness/aria-aristotle-post-phase/SKILL.md +18 -0
  90. package/dist/runtime/discipline/skills/aria-harness/aria-aristotle-pre-phase/SKILL.md +18 -0
  91. package/dist/runtime/discipline/skills/aria-harness/aria-harness-deploy/SKILL.md +18 -0
  92. package/dist/runtime/discipline/skills/aria-harness/aria-harness-no-stripping/SKILL.md +18 -0
  93. package/dist/runtime/discipline/skills/aria-harness/aria-harness-onboarding/SKILL.md +18 -0
  94. package/dist/runtime/discipline/skills/aria-harness/aria-harness-output-discipline/SKILL.md +18 -0
  95. package/dist/runtime/discipline/skills/aria-harness/aria-harness-substrate-binding/SKILL.md +18 -0
  96. package/dist/runtime/doctrine_trigger_map.json +11 -0
  97. package/dist/runtime/hooks/aria-cognition-substrate-binding.mjs +51 -9
  98. package/dist/runtime/hooks/aria-first-class-coach.mjs +129 -0
  99. package/dist/runtime/hooks/aria-harness-via-sdk.mjs +33 -6
  100. package/dist/runtime/hooks/aria-pre-tool-gate.mjs +33 -8
  101. package/dist/runtime/hooks/aria-preprompt-consult.mjs +5 -6
  102. package/dist/runtime/hooks/aria-preturn-memory-gate.mjs +5 -0
  103. package/dist/runtime/hooks/aria-repo-doctrine-gate.mjs +15 -0
  104. package/dist/runtime/hooks/aria-stop-gate.mjs +125 -17
  105. package/dist/runtime/hooks/doctrine_trigger_map.json +11 -0
  106. package/dist/runtime/hooks/lib/emergency-gateoff-impl.mjs +39 -0
  107. package/dist/runtime/hooks/lib/emergency-gateoff.mjs +6 -0
  108. package/dist/runtime/hooks/lib/first-class-coach.mjs +755 -0
  109. package/dist/runtime/hooks/lib/skill-autoload-gate-impl.mjs +103 -0
  110. package/dist/runtime/hooks/lib/skill-autoload-gate.mjs +1 -14
  111. package/dist/runtime/local-phase.mjs +8 -0
  112. package/dist/runtime/manifest.json +2 -2
  113. package/dist/runtime/provider-proxy.mjs +136 -33
  114. package/dist/runtime/sdk/BUNDLED.json +2 -2
  115. package/dist/runtime/sdk/auth.d.ts +17 -0
  116. package/dist/runtime/sdk/auth.js +158 -0
  117. package/dist/runtime/sdk/auth.js.map +1 -0
  118. package/dist/runtime/sdk/index.d.ts +8 -1
  119. package/dist/runtime/sdk/index.js +15 -1
  120. package/dist/runtime/sdk/index.js.map +1 -1
  121. package/dist/runtime/service.mjs +1711 -74
  122. package/dist/runtime/task-project-ledger.mjs +290 -0
  123. package/dist/sdk/BUNDLED.json +2 -2
  124. package/dist/sdk/auth.d.ts +17 -0
  125. package/dist/sdk/auth.js +158 -0
  126. package/dist/sdk/auth.js.map +1 -0
  127. package/dist/sdk/index.d.ts +8 -1
  128. package/dist/sdk/index.js +15 -1
  129. package/dist/sdk/index.js.map +1 -1
  130. package/hooks/aria-cognition-substrate-binding.mjs +51 -9
  131. package/hooks/aria-first-class-coach.mjs +129 -0
  132. package/hooks/aria-harness-via-sdk.mjs +33 -6
  133. package/hooks/aria-pre-tool-gate.mjs +33 -8
  134. package/hooks/aria-preprompt-consult.mjs +5 -6
  135. package/hooks/aria-preturn-memory-gate.mjs +5 -0
  136. package/hooks/aria-repo-doctrine-gate.mjs +15 -0
  137. package/hooks/aria-stop-gate.mjs +125 -17
  138. package/hooks/doctrine_trigger_map.json +11 -0
  139. package/hooks/lib/emergency-gateoff-impl.mjs +39 -0
  140. package/hooks/lib/emergency-gateoff.mjs +6 -0
  141. package/hooks/lib/first-class-coach.mjs +755 -0
  142. package/hooks/lib/skill-autoload-gate-impl.mjs +103 -0
  143. package/hooks/lib/skill-autoload-gate.mjs +1 -14
  144. package/opencode-plugins/harness-context/auth-token.mjs +126 -0
  145. package/opencode-plugins/harness-context/inject-context.mjs +62 -22
  146. package/opencode-plugins/harness-context/task-project-ledger.mjs +290 -0
  147. package/opencode-plugins/harness-gate/index.js +87 -27
  148. package/opencode-plugins/harness-gate/lib/skill-autoload-gate.js +1 -14
  149. package/opencode-plugins/harness-outcome/index.js +29 -24
  150. package/opencode-plugins/harness-stop/index.js +229 -68
  151. package/opencode-plugins/harness-stop/lib/skill-autoload-gate.js +1 -14
  152. package/package.json +8 -2
  153. package/runtime-src/auth-token.mjs +121 -0
  154. package/runtime-src/coach-kernel.mjs +371 -0
  155. package/runtime-src/codex-bridge.mjs +440 -69
  156. package/runtime-src/local-phase.mjs +8 -0
  157. package/runtime-src/provider-proxy.mjs +136 -33
  158. package/runtime-src/service.mjs +1711 -74
  159. package/scripts/bundle-sdk.mjs +8 -0
  160. package/scripts/check-client-compatibility.mjs +422 -0
  161. package/scripts/check-coach-kernel.mjs +204 -0
  162. package/scripts/check-managed-runtime-ledger.mjs +107 -0
  163. package/scripts/check-opencode-config-contract.mjs +78 -0
  164. package/scripts/check-quality-ledger.mjs +121 -0
  165. package/scripts/self-test-harness-gates.mjs +179 -11
  166. package/scripts/self-test-repo-guard.mjs +38 -0
  167. package/scripts/validate-skill-prompts.mjs +14 -1
  168. package/skills/aria-cognition/aria-essence/SKILL.md +18 -0
  169. package/skills/aria-cognition/aria-forge-guardrails/SKILL.md +18 -0
  170. package/skills/aria-cognition/aria-repo-doctrine/SKILL.md +18 -0
  171. package/skills/aria-cognition/forge-quality-rules/SKILL.md +18 -0
  172. package/skills/aria-cognition/ghazali-8lens/SKILL.md +18 -0
  173. package/skills/aria-cognition/istiqra-induction/SKILL.md +18 -0
  174. package/skills/aria-cognition/ladunni-22/SKILL.md +18 -0
  175. package/skills/aria-cognition/mizan/SKILL.md +18 -0
  176. package/skills/aria-cognition/nadia/SKILL.md +18 -0
  177. package/skills/aria-cognition/nadia-psi/SKILL.md +18 -0
  178. package/skills/aria-cognition/predictor/SKILL.md +18 -0
  179. package/skills/aria-cognition/qiyas-analogy/SKILL.md +18 -0
  180. package/skills/aria-cognition/soul-domains/SKILL.md +18 -0
  181. package/src/auth.ts +136 -1
  182. package/src/chat.ts +13 -8
  183. package/src/config.ts +6 -1
  184. package/src/connectors/claude-code.ts +62 -18
  185. package/src/connectors/codex.ts +310 -10
  186. package/src/connectors/opencode.ts +35 -12
  187. package/src/connectors/repo-guard.ts +117 -172
  188. package/src/connectors/runtime.ts +19 -7
  189. package/src/connectors/shell.ts +12 -8
  190. package/src/harness-client.ts +8 -22
  191. package/src/model-context.ts +6 -0
  192. package/src/providers/types.ts +1 -1
  193. package/src/providers/xai.ts +55 -0
  194. package/src/setup-wizard.ts +1 -0
  195. package/src/types.ts +2 -0
@@ -5,6 +5,7 @@ import * as path from 'path';
5
5
  import { fileURLToPath } from 'node:url';
6
6
  import { connectShell } from './shell.js';
7
7
  import { syncDoctrineTriggerMap } from './doctrine-trigger-map.js';
8
+ import { resolveHarnessToken } from '../auth.js';
8
9
  // ── Bundled OpenCode plugins ────────────────────────────────────────────────
9
10
  //
10
11
  // Two plugins ship with the connector:
@@ -19,6 +20,8 @@ import { syncDoctrineTriggerMap } from './doctrine-trigger-map.js';
19
20
  // Both live at <pkg>/opencode-plugins/<name>/. connectOpenCode copies them
20
21
  // into ~/.opencode/plugins/<name>/ and wires the absolute paths into
21
22
  // ~/.opencode/config.json's `plugin` (singular, OpenCode v2 schema) array.
23
+ // Shared hook helpers are also copied into ~/.opencode/hooks/ because the
24
+ // installed plugins resolve their gate helpers from that OpenCode-owned root.
22
25
  //
23
26
  // Compiled location of THIS file (claude-code path applies the same way):
24
27
  // <pkg>/dist/aria-connector/src/connectors/opencode.js
@@ -34,6 +37,15 @@ function packageOpenCodePluginsDir() {
34
37
  const found = candidates.find((candidate) => existsSync(candidate));
35
38
  return found || candidates[0];
36
39
  }
40
+ function packageOpenCodeHooksDir() {
41
+ const here = path.dirname(fileURLToPath(import.meta.url));
42
+ const candidates = [
43
+ path.resolve(here, '..', '..', '..', '..', 'hooks'),
44
+ path.resolve(here, '..', '..', '..', 'assets', 'hooks'),
45
+ ];
46
+ const found = candidates.find((candidate) => existsSync(candidate));
47
+ return found || candidates[0];
48
+ }
37
49
  function copyPluginDir(srcDir, dstDir, logs) {
38
50
  if (!existsSync(dstDir)) {
39
51
  mkdirSync(dstDir, { recursive: true, mode: 0o755 });
@@ -41,9 +53,13 @@ function copyPluginDir(srcDir, dstDir, logs) {
41
53
  for (const name of readdirSync(srcDir)) {
42
54
  const src = path.join(srcDir, name);
43
55
  const stat = statSync(src);
56
+ const dst = path.join(dstDir, name);
57
+ if (stat.isDirectory()) {
58
+ copyPluginDir(src, dst, logs);
59
+ continue;
60
+ }
44
61
  if (!stat.isFile())
45
62
  continue;
46
- const dst = path.join(dstDir, name);
47
63
  copyFileSync(src, dst);
48
64
  if (name.endsWith('.mjs') || name.endsWith('.js')) {
49
65
  try {
@@ -125,10 +141,22 @@ export async function connectOpenCode(config) {
125
141
  copyPluginDir(srcDir, dstDir, logs);
126
142
  installedPaths.push(dstDir);
127
143
  }
144
+ const bundledHooksDir = packageOpenCodeHooksDir();
145
+ if (existsSync(bundledHooksDir)) {
146
+ copyPluginDir(bundledHooksDir, path.join(opencodeDir, 'hooks'), logs);
147
+ }
148
+ else {
149
+ logs.push(`⚠ Bundled OpenCode hook helpers missing: ${bundledHooksDir} — gate plugins may fail to load`);
150
+ }
128
151
  syncDoctrineTriggerMap(logs);
129
- // ── Wire ~/.opencode/config.json ──────────────────────────────────────────
130
- const configPath = path.join(opencodeDir, 'config.json');
131
- if (existsSync(configPath)) {
152
+ // ── Wire OpenCode config files ────────────────────────────────────────────
153
+ const configPaths = [
154
+ path.join(opencodeDir, 'config.json'),
155
+ path.join(homedir(), '.config', 'opencode', 'config.json'),
156
+ ];
157
+ for (const configPath of configPaths) {
158
+ if (!existsSync(configPath))
159
+ continue;
132
160
  try {
133
161
  const opencodeConfig = JSON.parse(readFileSync(configPath, 'utf-8'));
134
162
  let modified = false;
@@ -165,18 +193,14 @@ export async function connectOpenCode(config) {
165
193
  modified = true;
166
194
  logs.push(`Wired ${installedPaths.length} Aria plugin(s) into OpenCode config.plugin`);
167
195
  }
168
- if (!opencodeConfig.agentsMdPath) {
169
- opencodeConfig.agentsMdPath = path.join(homedir(), '.aria', 'AGENTS.md');
170
- modified = true;
171
- logs.push('Set OpenCode AGENTS.md path to ~/.aria/AGENTS.md');
172
- }
173
196
  const providerMap = opencodeConfig.provider && typeof opencodeConfig.provider === 'object'
174
197
  ? opencodeConfig.provider
175
198
  : {};
176
199
  const currentAriaProvider = providerMap.aria && typeof providerMap.aria === 'object'
177
200
  ? providerMap.aria
178
201
  : {};
179
- const localToken = resolveLocalRuntimeToken();
202
+ const resolvedLocalToken = await resolveHarnessToken({ baseUrl: LOCAL_RUNTIME_V1_URL });
203
+ const localToken = resolvedLocalToken.token || resolveLocalRuntimeToken();
180
204
  const nextAriaProvider = {
181
205
  npm: '@ai-sdk/openai-compatible',
182
206
  name: 'Aria Runtime',
@@ -222,7 +246,7 @@ export async function connectOpenCode(config) {
222
246
  }
223
247
  }
224
248
  catch {
225
- logs.push('Failed to parse OpenCode config.json');
249
+ logs.push(`Failed to parse OpenCode config.json at ${configPath}`);
226
250
  }
227
251
  }
228
252
  // ── Write the harness AGENTS.md ───────────────────────────────────────────
@@ -1 +1 @@
1
- {"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../../../src/connectors/opencode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../../../src/connectors/opencode.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,17 @@ interface RepoGuardOptions {
12
12
  repos?: string[];
13
13
  debounceMs?: number;
14
14
  }
15
+ interface DeleteApproval {
16
+ repoRoot: string;
17
+ relPath: string;
18
+ approvedBy: string;
19
+ approvedAt: string;
20
+ expiresAt: string;
21
+ reason: string;
22
+ }
15
23
  export declare function readGuardState(): GuardState;
24
+ export declare function isRepoGuardedPath(relPath: string): boolean;
25
+ export declare function approveRepoGuardDelete(repoRoot: string, relPath: string, approvedBy?: string, reason?: string, ttlMs?: number): DeleteApproval;
16
26
  export declare function startRepoGuardDaemon(options?: RepoGuardOptions): Promise<void>;
17
27
  export declare function installRepoGuardDaemon(config?: AriaConfig, fallbackRepoPath?: string): Promise<string[]>;
18
28
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"repo-guard.d.ts","sourceRoot":"","sources":["../../../../src/connectors/repo-guard.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAoC/C,KAAK,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,OAAO,CAAC;AAE/D,UAAU,UAAU;IAClB,MAAM,EAAE,WAAW,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,gBAAgB;IACxB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAwBD,wBAAgB,cAAc,IAAI,UAAU,CAqB3C;AAiUD,wBAAsB,oBAAoB,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoFxF;AAsDD,wBAAsB,sBAAsB,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAmB9G"}
1
+ {"version":3,"file":"repo-guard.d.ts","sourceRoot":"","sources":["../../../../src/connectors/repo-guard.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAgC/C,KAAK,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,OAAO,CAAC;AAE/D,UAAU,UAAU;IAClB,MAAM,EAAE,WAAW,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,gBAAgB;IACxB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAYD,UAAU,cAAc;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAcD,wBAAgB,cAAc,IAAI,UAAU,CAqB3C;AA8GD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAM1D;AAoFD,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,SAAU,EAAE,MAAM,SAA4B,EAAE,KAAK,SAA0B,GAAG,cAAc,CAYnL;AAsED,wBAAsB,oBAAoB,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmExF;AAsDD,wBAAsB,sBAAsB,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAkB9G"}
@@ -1,7 +1,6 @@
1
1
  import chokidar from 'chokidar';
2
2
  import { execFileSync } from 'child_process';
3
- import { createHash } from 'crypto';
4
- import { existsSync, mkdirSync, readdirSync, readFileSync, statSync, renameSync, writeFileSync, } from 'fs';
3
+ import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync, } from 'fs';
5
4
  import { homedir } from 'os';
6
5
  import * as path from 'path';
7
6
  import { fileURLToPath } from 'node:url';
@@ -12,17 +11,10 @@ const ENV_PATH = path.join(ARIA_DIR, 'repo-guard.env');
12
11
  const STATE_PATH = path.join(ARIA_DIR, 'repo-guard-state.json');
13
12
  const EVENTS_PATH = path.join(ARIA_DIR, 'repo-guard-events.jsonl');
14
13
  const LAST_ALERT_PATH = path.join(ARIA_DIR, 'repo-guard-last-alert.json');
15
- const SHADOW_ROOT = path.join(ARIA_DIR, 'repo-guard', 'shadow');
14
+ const APPROVALS_PATH = path.join(ARIA_DIR, 'repo-guard-approvals.json');
16
15
  const QUARANTINE_ROOT = path.join(ARIA_DIR, 'repo-guard', 'quarantine');
17
16
  const DEFAULT_DEBOUNCE_MS = Number(process.env.ARIA_REPO_GUARD_DEBOUNCE_MS || 350);
18
17
  const BLOCKING_MODE = !/^(0|false|no)$/i.test(process.env.ARIA_REPO_GUARD_BLOCKING || 'true');
19
- const DOCTRINE_PREFIXES = ['apps/', 'packages/', 'harness/', 'ops/', 'scripts/'];
20
- const DOCTRINE_EXTENSIONS = new Set([
21
- '.js', '.jsx', '.ts', '.tsx', '.mjs', '.cjs',
22
- '.py', '.sh', '.bash', '.zsh', '.rb', '.go',
23
- '.rs', '.java', '.kt', '.cs', '.php', '.swift',
24
- '.scala', '.yml', '.yaml',
25
- ]);
26
18
  const IGNORED_SEGMENTS = new Set([
27
19
  '.git',
28
20
  'node_modules',
@@ -34,10 +26,13 @@ const IGNORED_SEGMENTS = new Set([
34
26
  'coverage',
35
27
  'archive',
36
28
  'generated',
29
+ 'vendor',
37
30
  'telegram_env',
38
31
  'backup-opencode-config',
39
32
  'training-data',
40
33
  ]);
34
+ const IGNORED_FILE_RX = /(?:^|\/)(?:package-lock\.json|pnpm-lock\.yaml|yarn\.lock|bun\.lockb?|\.DS_Store)$/i;
35
+ const DEFAULT_APPROVAL_TTL_MS = Number(process.env.ARIA_REPO_GUARD_APPROVAL_TTL_MS || 10 * 60 * 1000);
41
36
  function writeState(update) {
42
37
  const current = readGuardState();
43
38
  const next = {
@@ -126,16 +121,6 @@ function connectorPackageRoot() {
126
121
  function normalizeRel(input) {
127
122
  return input.split(path.sep).join('/');
128
123
  }
129
- function repoHash(repoRoot) {
130
- return createHash('sha256').update(repoRoot).digest('hex').slice(0, 16);
131
- }
132
- function shadowPath(repoRoot, relPath) {
133
- return path.join(SHADOW_ROOT, repoHash(repoRoot), relPath);
134
- }
135
- function quarantinePath(repoRoot, relPath) {
136
- const stamped = `${Date.now()}-${relPath.replace(/[\\/]/g, '__')}`;
137
- return path.join(QUARANTINE_ROOT, repoHash(repoRoot), stamped);
138
- }
139
124
  function ensureParent(filePath) {
140
125
  mkdirSync(path.dirname(filePath), { recursive: true, mode: 0o755 });
141
126
  }
@@ -175,165 +160,149 @@ function resolveRepos(config, explicit, fallbackRepoPath) {
175
160
  const cwd = findRepoRoot(process.cwd());
176
161
  return cwd ? [cwd] : [];
177
162
  }
178
- function isDoctrineBound(relPath) {
163
+ export function isRepoGuardedPath(relPath) {
179
164
  const normalized = normalizeRel(relPath);
180
- if (!DOCTRINE_PREFIXES.some((prefix) => normalized.startsWith(prefix)))
181
- return false;
182
- if (!DOCTRINE_EXTENSIONS.has(path.extname(normalized)))
183
- return false;
184
165
  const parts = normalized.split('/');
185
166
  if (parts.some((part) => IGNORED_SEGMENTS.has(part)))
186
167
  return false;
187
- if (normalized.endsWith('.map'))
188
- return false;
189
- if (/package-lock\.json$|pnpm-lock\.yaml$|yarn\.lock$/i.test(normalized))
168
+ if (normalized.endsWith('.map') || IGNORED_FILE_RX.test(normalized))
190
169
  return false;
191
170
  return true;
192
171
  }
193
- function walkDoctrineFiles(repoRoot) {
194
- const found = [];
195
- function visit(absPath) {
196
- const stat = statSync(absPath);
197
- if (stat.isDirectory()) {
198
- const base = path.basename(absPath);
199
- if (IGNORED_SEGMENTS.has(base))
200
- return;
201
- for (const child of readdirSync(absPath)) {
202
- visit(path.join(absPath, child));
203
- }
204
- return;
205
- }
206
- const rel = path.relative(repoRoot, absPath);
207
- if (isDoctrineBound(rel))
208
- found.push(absPath);
209
- }
210
- for (const prefix of DOCTRINE_PREFIXES) {
211
- const abs = path.join(repoRoot, prefix.slice(0, -1));
212
- if (existsSync(abs))
213
- visit(abs);
214
- }
215
- return found;
216
- }
217
- function gateFile(repoRoot, relPath) {
218
- const hookPath = path.join(homedir(), '.claude', 'hooks', 'aria-repo-doctrine-gate.mjs');
172
+ function isGitTracked(repoRoot, relPath) {
219
173
  try {
220
- execFileSync('node', [hookPath, '--repo', repoRoot, '--paths', relPath], {
221
- stdio: ['ignore', 'pipe', 'pipe'],
222
- encoding: 'utf8',
174
+ execFileSync('git', ['-C', repoRoot, 'ls-files', '--error-unmatch', normalizeRel(relPath)], {
175
+ stdio: ['ignore', 'ignore', 'ignore'],
223
176
  });
224
- return { ok: true };
177
+ return true;
225
178
  }
226
- catch (error) {
227
- const detail = error instanceof Error && 'stderr' in error
228
- ? String(error.stderr || error.stdout || error.message)
229
- : String(error);
230
- return { ok: false, detail: detail.trim() || 'aria repo doctrine gate rejected the file' };
179
+ catch {
180
+ return false;
231
181
  }
232
182
  }
233
- function writeShadow(repoRoot, relPath, content) {
234
- const dst = shadowPath(repoRoot, relPath);
235
- ensureParent(dst);
236
- writeFileSync(dst, content, { mode: 0o600 });
237
- }
238
- function readShadowContent(repoRoot, relPath) {
239
- const shadow = shadowPath(repoRoot, relPath);
240
- if (!existsSync(shadow))
241
- return null;
183
+ function readTrackedContent(repoRoot, relPath) {
242
184
  try {
243
- return readFileSync(shadow, 'utf8');
185
+ return execFileSync('git', ['-C', repoRoot, 'show', `HEAD:${normalizeRel(relPath)}`], {
186
+ stdio: ['ignore', 'pipe', 'ignore'],
187
+ encoding: 'buffer',
188
+ });
244
189
  }
245
190
  catch {
246
191
  return null;
247
192
  }
248
193
  }
249
- function readTrackedContent(repoRoot, relPath) {
194
+ function isGitDirectory(repoRoot, relPath) {
250
195
  try {
251
- return execFileSync('git', ['-C', repoRoot, 'show', `HEAD:${normalizeRel(relPath)}`], {
196
+ const output = execFileSync('git', ['-C', repoRoot, 'ls-files', `${normalizeRel(relPath).replace(/\/+$/, '')}/`], {
252
197
  stdio: ['ignore', 'pipe', 'ignore'],
253
198
  encoding: 'utf8',
254
199
  });
200
+ return output.trim().length > 0;
255
201
  }
256
202
  catch {
257
- return null;
203
+ return false;
258
204
  }
259
205
  }
260
- function recoveryContent(repoRoot, relPath) {
261
- return readShadowContent(repoRoot, relPath) ?? readTrackedContent(repoRoot, relPath);
262
- }
263
- function restorePriorContent(repoRoot, absPath, relPath) {
264
- const prior = recoveryContent(repoRoot, relPath);
206
+ function restoreTrackedPath(repoRoot, absPath, relPath) {
207
+ const prior = readTrackedContent(repoRoot, relPath);
265
208
  if (prior !== null) {
266
209
  ensureParent(absPath);
267
210
  writeFileSync(absPath, prior, { mode: 0o644 });
268
- writeShadow(repoRoot, relPath, prior);
269
- return 'restored';
211
+ return 'file-restored';
270
212
  }
271
- if (!existsSync(absPath))
213
+ if (!isGitDirectory(repoRoot, relPath))
214
+ return 'none';
215
+ try {
216
+ execFileSync('git', ['-C', repoRoot, 'checkout', 'HEAD', '--', normalizeRel(relPath)], {
217
+ stdio: ['ignore', 'ignore', 'ignore'],
218
+ });
219
+ return 'tree-restored';
220
+ }
221
+ catch {
272
222
  return 'none';
273
- const movedDst = quarantinePath(repoRoot, relPath);
274
- ensureParent(movedDst);
275
- renameSync(absPath, movedDst);
276
- return 'moved';
277
- }
278
- function initializeBaseline(repoRoot) {
279
- for (const absPath of walkDoctrineFiles(repoRoot)) {
280
- const relPath = path.relative(repoRoot, absPath);
281
- try {
282
- writeShadow(repoRoot, relPath, readFileSync(absPath, 'utf8'));
283
- }
284
- catch { }
285
223
  }
286
224
  }
287
- function handleViolation(repoRoot, absPath, relPath, detail) {
288
- const fileContent = existsSync(absPath) ? readFileSync(absPath, 'utf8') : '';
289
- const quarantineDst = quarantinePath(repoRoot, relPath);
290
- ensureParent(quarantineDst);
291
- writeFileSync(quarantineDst, fileContent, { mode: 0o600 });
292
- const action = BLOCKING_MODE ? restorePriorContent(repoRoot, absPath, relPath) : 'none';
293
- const summary = `${repoRoot}:${relPath}`;
294
- writeState({ status: 'violation', lastViolation: summary, lastEvent: summary, lastError: detail });
295
- appendEvent({
296
- type: 'violation',
297
- repoRoot,
298
- relPath,
299
- quarantineDst,
300
- blockingMode: BLOCKING_MODE,
301
- action,
302
- detail,
303
- });
304
- emitAlert({
305
- type: 'violation',
306
- title: 'Aria Repo Guard blocked a doctrine violation',
307
- message: BLOCKING_MODE
308
- ? 'The changed file was quarantined and the last known good content was restored.'
309
- : 'A doctrine violation was detected while repo guard was in non-blocking mode.',
310
- repoRoot,
311
- relPath,
312
- action,
313
- detail,
314
- });
225
+ function readApprovals() {
226
+ try {
227
+ const parsed = JSON.parse(readFileSync(APPROVALS_PATH, 'utf8'));
228
+ if (!Array.isArray(parsed))
229
+ return [];
230
+ return parsed.filter((item) => {
231
+ if (!item || typeof item !== 'object')
232
+ return false;
233
+ const approval = item;
234
+ return Boolean(approval.repoRoot && approval.relPath && approval.approvedBy && approval.expiresAt);
235
+ });
236
+ }
237
+ catch {
238
+ return [];
239
+ }
315
240
  }
316
- function handleDeletedDoctrineFile(repoRoot, absPath, relPath) {
317
- const action = BLOCKING_MODE ? restorePriorContent(repoRoot, absPath, relPath) : 'none';
318
- if (action === 'none')
241
+ function writeApprovals(approvals) {
242
+ mkdirSync(ARIA_DIR, { recursive: true, mode: 0o700 });
243
+ writeFileSync(APPROVALS_PATH, JSON.stringify(approvals, null, 2) + '\n', { mode: 0o600 });
244
+ }
245
+ function hasDeleteApproval(repoRoot, relPath) {
246
+ const now = Date.now();
247
+ const approvals = readApprovals();
248
+ const active = approvals.filter((approval) => Date.parse(approval.expiresAt) > now);
249
+ if (active.length !== approvals.length)
250
+ writeApprovals(active);
251
+ const normalizedRepo = path.resolve(repoRoot);
252
+ const normalizedPath = normalizeRel(relPath);
253
+ return active.some((approval) => path.resolve(approval.repoRoot) === normalizedRepo && normalizeRel(approval.relPath) === normalizedPath);
254
+ }
255
+ export function approveRepoGuardDelete(repoRoot, relPath, approvedBy = 'owner', reason = 'explicit owner approval', ttlMs = DEFAULT_APPROVAL_TTL_MS) {
256
+ const approval = {
257
+ repoRoot: path.resolve(repoRoot),
258
+ relPath: normalizeRel(relPath),
259
+ approvedBy,
260
+ approvedAt: new Date().toISOString(),
261
+ expiresAt: new Date(Date.now() + ttlMs).toISOString(),
262
+ reason,
263
+ };
264
+ writeApprovals([...readApprovals(), approval]);
265
+ appendEvent({ type: 'delete-approved', ...approval });
266
+ return approval;
267
+ }
268
+ function handleDeletedGuardedPath(repoRoot, absPath, relPath) {
269
+ const tracked = isGitTracked(repoRoot, relPath) || isGitDirectory(repoRoot, relPath);
270
+ if (!tracked) {
271
+ appendEvent({
272
+ type: 'ignored-delete',
273
+ repoRoot,
274
+ relPath,
275
+ detail: 'Untracked path deletion observed; nothing can be restored from git.',
276
+ });
277
+ writeState({ status: 'watching', lastEvent: `${repoRoot}:${relPath}`, lastError: null });
278
+ return;
279
+ }
280
+ if (hasDeleteApproval(repoRoot, relPath)) {
281
+ appendEvent({ type: 'approved-delete', repoRoot, relPath });
282
+ writeState({ status: 'watching', lastEvent: `${repoRoot}:${relPath}`, lastError: null });
319
283
  return;
284
+ }
285
+ const action = BLOCKING_MODE ? restoreTrackedPath(repoRoot, absPath, relPath) : 'none';
320
286
  const summary = `${repoRoot}:${relPath}`;
321
- writeState({ status: 'violation', lastViolation: summary, lastEvent: summary, lastError: 'Doctrine-bound deletion blocked.' });
287
+ writeState({ status: 'violation', lastViolation: summary, lastEvent: summary, lastError: 'Tracked path deletion requires explicit approval.' });
322
288
  appendEvent({
323
289
  type: 'blocked-delete',
324
290
  repoRoot,
325
291
  relPath,
326
292
  blockingMode: BLOCKING_MODE,
327
293
  action,
294
+ detail: 'Tracked path deletion restored from git because no active delete approval matched this path.',
328
295
  });
329
296
  emitAlert({
330
297
  type: 'blocked-delete',
331
- title: 'Aria Repo Guard blocked a doctrine-bound deletion',
332
- message: 'A doctrine-bound file deletion was intercepted and restored.',
298
+ title: 'Aria Repo Guard blocked an unapproved tracked deletion',
299
+ message: BLOCKING_MODE
300
+ ? 'A tracked repo path was deleted without active approval and was restored from git.'
301
+ : 'A tracked repo path was deleted without active approval while repo guard was non-blocking.',
333
302
  repoRoot,
334
303
  relPath,
335
304
  action,
336
- detail: 'Doctrine-bound deletion blocked.',
305
+ detail: 'Tracked path deletion requires explicit approval.',
337
306
  });
338
307
  }
339
308
  function shouldIgnoreWatch(absPath) {
@@ -350,22 +319,16 @@ function findOwningRepo(repos, absPath) {
350
319
  }
351
320
  function processChangedFile(repoRoot, absPath) {
352
321
  const relPath = path.relative(repoRoot, absPath);
353
- if (!isDoctrineBound(relPath))
322
+ if (!isRepoGuardedPath(relPath))
354
323
  return;
355
324
  if (!existsSync(absPath)) {
356
- handleDeletedDoctrineFile(repoRoot, absPath, relPath);
325
+ handleDeletedGuardedPath(repoRoot, absPath, relPath);
357
326
  return;
358
327
  }
359
328
  if (statSync(absPath).isDirectory())
360
329
  return;
361
- const gate = gateFile(repoRoot, relPath);
362
- if (gate.ok) {
363
- writeShadow(repoRoot, relPath, readFileSync(absPath, 'utf8'));
364
- const summary = `${repoRoot}:${relPath}`;
365
- writeState({ status: 'watching', lastEvent: summary, lastError: null });
366
- return;
367
- }
368
- handleViolation(repoRoot, absPath, relPath, gate.detail);
330
+ appendEvent({ type: 'observed-change', repoRoot, relPath });
331
+ writeState({ status: 'watching', lastEvent: `${repoRoot}:${relPath}`, lastError: null });
369
332
  }
370
333
  export async function startRepoGuardDaemon(options = {}) {
371
334
  const repos = resolveRepos(undefined, options.repos);
@@ -373,18 +336,14 @@ export async function startRepoGuardDaemon(options = {}) {
373
336
  writeState({ status: 'error', watchedRepos: [], lastError: 'No git repositories configured for repo guard.' });
374
337
  throw new Error('No git repositories configured for repo guard.');
375
338
  }
376
- mkdirSync(SHADOW_ROOT, { recursive: true, mode: 0o700 });
377
339
  mkdirSync(QUARANTINE_ROOT, { recursive: true, mode: 0o700 });
378
- for (const repo of repos)
379
- initializeBaseline(repo);
380
340
  writeState({ status: 'watching', watchedRepos: repos, lastError: null });
381
341
  emitAlert({
382
342
  type: 'status',
383
343
  title: 'Aria Repo Guard watching repositories',
384
- message: `Watching ${repos.length} repo(s) for doctrine-bound changes.`,
344
+ message: `Watching ${repos.length} repo(s) for unapproved tracked deletions.`,
385
345
  });
386
346
  const pending = new Map();
387
- const restoring = new Map();
388
347
  const debounceMs = options.debounceMs ?? DEFAULT_DEBOUNCE_MS;
389
348
  const watcher = chokidar.watch(repos, {
390
349
  ignoreInitial: true,
@@ -403,28 +362,16 @@ export async function startRepoGuardDaemon(options = {}) {
403
362
  clearTimeout(prior);
404
363
  const timer = setTimeout(() => {
405
364
  pending.delete(absPath);
406
- const restoredAt = restoring.get(absPath);
407
- if (restoredAt && Date.now() - restoredAt < 1500) {
408
- restoring.delete(absPath);
409
- return;
410
- }
411
365
  const relPath = path.relative(repoRoot, absPath);
412
- if (!isDoctrineBound(relPath))
366
+ if (!isRepoGuardedPath(relPath))
413
367
  return;
414
368
  if (!existsSync(absPath)) {
415
- handleDeletedDoctrineFile(repoRoot, absPath, relPath);
416
- return;
417
- }
418
- const gate = gateFile(repoRoot, relPath);
419
- if (gate.ok) {
420
- if (!statSync(absPath).isDirectory()) {
421
- writeShadow(repoRoot, relPath, readFileSync(absPath, 'utf8'));
422
- }
423
- writeState({ status: 'watching', lastEvent: `${repoRoot}:${relPath}`, lastError: null });
369
+ handleDeletedGuardedPath(repoRoot, absPath, relPath);
424
370
  return;
425
371
  }
426
- restoring.set(absPath, Date.now());
427
- handleViolation(repoRoot, absPath, relPath, gate.detail);
372
+ if (!statSync(absPath).isDirectory())
373
+ appendEvent({ type: 'observed-change', repoRoot, relPath });
374
+ writeState({ status: 'watching', lastEvent: `${repoRoot}:${relPath}`, lastError: null });
428
375
  }, debounceMs);
429
376
  pending.set(absPath, timer);
430
377
  }
@@ -496,7 +443,6 @@ export async function installRepoGuardDaemon(config, fallbackRepoPath) {
496
443
  return logs;
497
444
  }
498
445
  mkdirSync(BIN_DIR, { recursive: true, mode: 0o755 });
499
- mkdirSync(SHADOW_ROOT, { recursive: true, mode: 0o700 });
500
446
  mkdirSync(QUARANTINE_ROOT, { recursive: true, mode: 0o700 });
501
447
  const envPath = writeRepoGuardEnv(repos);
502
448
  writeWrapper(path.join(BIN_DIR, 'aria-repo-guard'), ['repo-guard']);