agentopology 0.5.2 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/README.md +5 -5
  2. package/dist/__tests__/e2e/compile.test.d.ts +12 -0
  3. package/dist/__tests__/e2e/compile.test.d.ts.map +1 -0
  4. package/dist/__tests__/e2e/compile.test.js +219 -0
  5. package/dist/__tests__/e2e/compile.test.js.map +1 -0
  6. package/dist/__tests__/e2e/roundtrip.test.d.ts +16 -0
  7. package/dist/__tests__/e2e/roundtrip.test.d.ts.map +1 -0
  8. package/dist/__tests__/e2e/roundtrip.test.js +178 -0
  9. package/dist/__tests__/e2e/roundtrip.test.js.map +1 -0
  10. package/dist/__tests__/e2e/scaffold-owns.test.d.ts +10 -0
  11. package/dist/__tests__/e2e/scaffold-owns.test.d.ts.map +1 -0
  12. package/dist/__tests__/e2e/scaffold-owns.test.js +163 -0
  13. package/dist/__tests__/e2e/scaffold-owns.test.js.map +1 -0
  14. package/dist/__tests__/e2e/sync-cycle.test.d.ts +10 -0
  15. package/dist/__tests__/e2e/sync-cycle.test.d.ts.map +1 -0
  16. package/dist/__tests__/e2e/sync-cycle.test.js +49 -0
  17. package/dist/__tests__/e2e/sync-cycle.test.js.map +1 -0
  18. package/dist/__tests__/global-setup.d.ts +7 -0
  19. package/dist/__tests__/global-setup.d.ts.map +1 -0
  20. package/dist/__tests__/global-setup.js +16 -0
  21. package/dist/__tests__/global-setup.js.map +1 -0
  22. package/dist/__tests__/live/claude-code.live.test.d.ts +20 -0
  23. package/dist/__tests__/live/claude-code.live.test.d.ts.map +1 -0
  24. package/dist/__tests__/live/claude-code.live.test.js +198 -0
  25. package/dist/__tests__/live/claude-code.live.test.js.map +1 -0
  26. package/dist/__tests__/live/zz-debug.test.d.ts +2 -0
  27. package/dist/__tests__/live/zz-debug.test.d.ts.map +1 -0
  28. package/dist/__tests__/live/zz-debug.test.js +4 -0
  29. package/dist/__tests__/live/zz-debug.test.js.map +1 -0
  30. package/dist/__tests__/open-findings.test.d.ts +10 -0
  31. package/dist/__tests__/open-findings.test.d.ts.map +1 -0
  32. package/dist/__tests__/open-findings.test.js +15 -0
  33. package/dist/__tests__/open-findings.test.js.map +1 -0
  34. package/dist/__tests__/spec-testing-sync.test.d.ts +10 -0
  35. package/dist/__tests__/spec-testing-sync.test.d.ts.map +1 -0
  36. package/dist/__tests__/spec-testing-sync.test.js +57 -0
  37. package/dist/__tests__/spec-testing-sync.test.js.map +1 -0
  38. package/dist/bindings/__tests__/bindings.test.js +19 -19
  39. package/dist/bindings/__tests__/bindings.test.js.map +1 -1
  40. package/dist/bindings/__tests__/claude-code-hybrid.test.js +5 -5
  41. package/dist/bindings/__tests__/claude-code-hybrid.test.js.map +1 -1
  42. package/dist/bindings/__tests__/hook-command.test.d.ts +9 -0
  43. package/dist/bindings/__tests__/hook-command.test.d.ts.map +1 -0
  44. package/dist/bindings/__tests__/hook-command.test.js +88 -0
  45. package/dist/bindings/__tests__/hook-command.test.js.map +1 -0
  46. package/dist/bindings/__tests__/hybrid-e2e.test.js +1 -1
  47. package/dist/bindings/__tests__/hybrid-e2e.test.js.map +1 -1
  48. package/dist/bindings/__tests__/mod-plugin.test.d.ts +9 -0
  49. package/dist/bindings/__tests__/mod-plugin.test.d.ts.map +1 -0
  50. package/dist/bindings/__tests__/mod-plugin.test.js +164 -0
  51. package/dist/bindings/__tests__/mod-plugin.test.js.map +1 -0
  52. package/dist/bindings/claude-code.d.ts +50 -1
  53. package/dist/bindings/claude-code.d.ts.map +1 -1
  54. package/dist/bindings/claude-code.js +636 -231
  55. package/dist/bindings/claude-code.js.map +1 -1
  56. package/dist/bindings/index.d.ts +7 -0
  57. package/dist/bindings/index.d.ts.map +1 -1
  58. package/dist/bindings/index.js +26 -7
  59. package/dist/bindings/index.js.map +1 -1
  60. package/dist/bindings/lib/prompt-fence.d.ts +22 -0
  61. package/dist/bindings/lib/prompt-fence.d.ts.map +1 -0
  62. package/dist/bindings/lib/prompt-fence.js +29 -0
  63. package/dist/bindings/lib/prompt-fence.js.map +1 -0
  64. package/dist/bindings/types.d.ts +6 -0
  65. package/dist/bindings/types.d.ts.map +1 -1
  66. package/dist/bindings/types.js.map +1 -1
  67. package/dist/cli/__tests__/cli.test.d.ts +1 -1
  68. package/dist/cli/__tests__/cli.test.js +1 -1
  69. package/dist/cli/index.js +124 -76
  70. package/dist/cli/index.js.map +1 -1
  71. package/dist/docs/content.d.ts.map +1 -1
  72. package/dist/docs/content.js +39 -3
  73. package/dist/docs/content.js.map +1 -1
  74. package/dist/docs/teach.d.ts.map +1 -1
  75. package/dist/docs/teach.js +46 -0
  76. package/dist/docs/teach.js.map +1 -1
  77. package/dist/import/__tests__/import.test.js +21 -9
  78. package/dist/import/__tests__/import.test.js.map +1 -1
  79. package/dist/import/claude-code.d.ts.map +1 -1
  80. package/dist/import/claude-code.js +128 -44
  81. package/dist/import/claude-code.js.map +1 -1
  82. package/dist/import/serializer.d.ts.map +1 -1
  83. package/dist/import/serializer.js +10 -0
  84. package/dist/import/serializer.js.map +1 -1
  85. package/dist/parser/__tests__/mod-hooks.test.d.ts +10 -0
  86. package/dist/parser/__tests__/mod-hooks.test.d.ts.map +1 -0
  87. package/dist/parser/__tests__/mod-hooks.test.js +136 -0
  88. package/dist/parser/__tests__/mod-hooks.test.js.map +1 -0
  89. package/dist/parser/ast.d.ts +29 -2
  90. package/dist/parser/ast.d.ts.map +1 -1
  91. package/dist/parser/ast.js.map +1 -1
  92. package/dist/parser/index.d.ts +6 -1
  93. package/dist/parser/index.d.ts.map +1 -1
  94. package/dist/parser/index.js +102 -25
  95. package/dist/parser/index.js.map +1 -1
  96. package/dist/parser/paths.d.ts +15 -0
  97. package/dist/parser/paths.d.ts.map +1 -0
  98. package/dist/parser/paths.js +34 -0
  99. package/dist/parser/paths.js.map +1 -0
  100. package/dist/parser/run.d.ts +45 -0
  101. package/dist/parser/run.d.ts.map +1 -0
  102. package/dist/parser/run.js +91 -0
  103. package/dist/parser/run.js.map +1 -0
  104. package/dist/parser/validator.d.ts +12 -0
  105. package/dist/parser/validator.d.ts.map +1 -1
  106. package/dist/parser/validator.js +268 -2
  107. package/dist/parser/validator.js.map +1 -1
  108. package/dist/scaffold/__tests__/safety.test.d.ts +11 -0
  109. package/dist/scaffold/__tests__/safety.test.d.ts.map +1 -0
  110. package/dist/scaffold/__tests__/safety.test.js +184 -0
  111. package/dist/scaffold/__tests__/safety.test.js.map +1 -0
  112. package/dist/scaffold/__tests__/scaffold.test.js +2 -1
  113. package/dist/scaffold/__tests__/scaffold.test.js.map +1 -1
  114. package/dist/scaffold/__tests__/settings-merge.test.js +40 -9
  115. package/dist/scaffold/__tests__/settings-merge.test.js.map +1 -1
  116. package/dist/scaffold/diff.d.ts +17 -0
  117. package/dist/scaffold/diff.d.ts.map +1 -0
  118. package/dist/scaffold/diff.js +66 -0
  119. package/dist/scaffold/diff.js.map +1 -0
  120. package/dist/scaffold/incremental.d.ts +49 -13
  121. package/dist/scaffold/incremental.d.ts.map +1 -1
  122. package/dist/scaffold/incremental.js +235 -95
  123. package/dist/scaffold/incremental.js.map +1 -1
  124. package/dist/scaffold/manifest.d.ts +8 -1
  125. package/dist/scaffold/manifest.d.ts.map +1 -1
  126. package/dist/scaffold/manifest.js +32 -8
  127. package/dist/scaffold/manifest.js.map +1 -1
  128. package/dist/scaffold/merge.d.ts +15 -4
  129. package/dist/scaffold/merge.d.ts.map +1 -1
  130. package/dist/scaffold/merge.js +123 -18
  131. package/dist/scaffold/merge.js.map +1 -1
  132. package/dist/scaffold/types.d.ts +17 -0
  133. package/dist/scaffold/types.d.ts.map +1 -1
  134. package/dist/sync/index.d.ts +1 -0
  135. package/dist/sync/index.d.ts.map +1 -1
  136. package/dist/sync/index.js +40 -2
  137. package/dist/sync/index.js.map +1 -1
  138. package/package.json +1 -1
  139. package/spec/grammar.md +24 -5
  140. package/spec/testing.md +85 -0
  141. package/spec/validation.md +8 -2
@@ -9,6 +9,7 @@
9
9
  */
10
10
  import { extractSectionUntilKnownHeading, CLAUDE_CODE_STRUCTURAL_HEADINGS, COPILOT_STRUCTURAL_HEADINGS, } from "../sync/index.js";
11
11
  import { hashContent } from "./manifest.js";
12
+ import { fenceSpan } from "../bindings/lib/prompt-fence.js";
12
13
  /**
13
14
  * Return the list of known structural headings for a binding.
14
15
  * Falls back to the Claude Code list for unknown bindings.
@@ -38,6 +39,19 @@ function getStructuralHeadings(binding) {
38
39
  * @returns Merged file content
39
40
  */
40
41
  export function mergeAgentFile(existing, generated, binding) {
42
+ // Files with prompt markers: keep the user's text between them, take
43
+ // everything else from the generated file.
44
+ const mine = fenceSpan(existing);
45
+ const theirs = fenceSpan(generated);
46
+ if (mine && theirs) {
47
+ return generated.slice(0, theirs.start) + existing.slice(mine.start, mine.end) + generated.slice(theirs.end);
48
+ }
49
+ // A file from before the markers: its instructions move inside them once.
50
+ if (theirs) {
51
+ const legacy = extractSectionUntilKnownHeading(existing, "## Instructions", getStructuralHeadings(binding));
52
+ if (legacy !== null)
53
+ return generated.slice(0, theirs.start) + "\n" + legacy + "\n" + generated.slice(theirs.end);
54
+ }
41
55
  const structuralHeadings = getStructuralHeadings(binding);
42
56
  // Extract the HUMAN zone from the existing file
43
57
  const humanContent = extractSectionUntilKnownHeading(existing, "## Instructions", structuralHeadings);
@@ -107,24 +121,38 @@ export function deepMergeJson(existingRaw, generatedRaw) {
107
121
  return existingRaw;
108
122
  }
109
123
  const merged = mergeObjects(existing, generated);
124
+ // Nothing to add: keep the user's bytes, formatting included.
125
+ if (JSON.stringify(merged) === JSON.stringify(existing))
126
+ return existingRaw;
110
127
  return JSON.stringify(merged, null, 2) + "\n";
111
128
  }
112
129
  /**
113
130
  * Merge settings.json files with domain-aware logic for Claude Code settings.
114
131
  *
132
+ * The user's file is the base; scaffold only adds or replaces what it owns.
133
+ *
115
134
  * Rules:
116
- * - permissions.allow: union-merge (deduplicated)
117
- * - permissions.deny: union-merge (deduplicated)
135
+ * - permissions: every existing key is kept (ask, defaultMode,
136
+ * additionalDirectories, ...); allow, deny and ask arrays are
137
+ * union-merged; a generated scalar is added only where none exists
118
138
  * - env: shallow-merge (generated wins on key conflict)
119
- * - hooks: rewritten entirely from generated (topology owns hooks)
139
+ * - hooks: a hook group is the topology's when one of its commands names a
140
+ * path in `ownedPaths`; those are replaced by the generated hooks, and
141
+ * every other group — the user's — is kept. Without `ownedPaths`, nothing
142
+ * existing is treated as owned, so nothing is removed
120
143
  * - All other top-level keys: existing wins (user-only keys preserved)
121
144
  *
145
+ * This used to rebuild permissions from allow/deny alone and replace hooks
146
+ * wholesale, so a re-scaffold deleted the user's own hooks, ask rules and
147
+ * defaultMode, and two topologies in one repo deleted each other's hooks.
148
+ *
122
149
  * @param existingRaw - Current settings.json content on disk (JSON string, or empty string)
123
150
  * @param generatedRaw - Freshly generated settings.json content (JSON string)
151
+ * @param ownedPaths - Paths this topology writes or wrote (generated + manifest)
124
152
  * @returns Merged JSON string
125
153
  * @throws {Error} if existingRaw is non-empty and is invalid JSON
126
154
  */
127
- export function deepMergeSettingsJson(existingRaw, generatedRaw) {
155
+ export function deepMergeSettingsJson(existingRaw, generatedRaw, ownedPaths = []) {
128
156
  // Empty existing means first scaffold — return generated unchanged
129
157
  if (existingRaw.trim() === "") {
130
158
  return generatedRaw;
@@ -145,22 +173,35 @@ export function deepMergeSettingsJson(existingRaw, generatedRaw) {
145
173
  }
146
174
  // Start with existing (preserves all user-only top-level keys)
147
175
  const merged = { ...existing };
148
- // --- permissions: union-merge allow and deny arrays ---
149
- const existingPerms = (existing.permissions ?? {});
150
- const generatedPerms = (generated.permissions ?? {});
151
- if (generated.permissions !== undefined || existing.permissions !== undefined) {
152
- const mergedPerms = {};
153
- for (const key of ["allow", "deny"]) {
154
- const ex = Array.isArray(existingPerms[key]) ? existingPerms[key] : [];
155
- const gen = Array.isArray(generatedPerms[key]) ? generatedPerms[key] : [];
156
- const union = Array.from(new Set([...ex, ...gen]));
157
- if (union.length > 0) {
176
+ // --- permissions: keep every existing key; union the rule arrays ---
177
+ if (isPlainObject(generated.permissions) || isPlainObject(existing.permissions)) {
178
+ const ex = isPlainObject(existing.permissions) ? existing.permissions : {};
179
+ const gen = isPlainObject(generated.permissions) ? generated.permissions : {};
180
+ const mergedPerms = { ...ex };
181
+ for (const [key, value] of Object.entries(gen)) {
182
+ const current = mergedPerms[key];
183
+ if (Array.isArray(value) || Array.isArray(current)) {
184
+ const union = Array.from(new Set([
185
+ ...(Array.isArray(current) ? current : []),
186
+ ...(Array.isArray(value) ? value : []),
187
+ ]));
158
188
  mergedPerms[key] = union;
159
189
  }
190
+ else if (current === undefined) {
191
+ mergedPerms[key] = value;
192
+ }
193
+ }
194
+ for (const key of Object.keys(mergedPerms)) {
195
+ if (Array.isArray(mergedPerms[key]) && mergedPerms[key].length === 0) {
196
+ delete mergedPerms[key];
197
+ }
160
198
  }
161
199
  if (Object.keys(mergedPerms).length > 0) {
162
200
  merged.permissions = mergedPerms;
163
201
  }
202
+ else {
203
+ delete merged.permissions;
204
+ }
164
205
  }
165
206
  // --- env: shallow-merge, generated wins on conflict ---
166
207
  if (generated.env !== undefined) {
@@ -168,12 +209,12 @@ export function deepMergeSettingsJson(existingRaw, generatedRaw) {
168
209
  const generatedEnv = generated.env;
169
210
  merged.env = { ...existingEnv, ...generatedEnv };
170
211
  }
171
- // --- hooks: rewritten entirely from generated (topology owns hooks) ---
172
- if (generated.hooks !== undefined) {
173
- merged.hooks = generated.hooks;
212
+ // --- hooks: replace the topology's own groups, keep the user's ---
213
+ const mergedHooks = mergeHooks(existing.hooks, generated.hooks, ownedPaths);
214
+ if (mergedHooks) {
215
+ merged.hooks = mergedHooks;
174
216
  }
175
217
  else {
176
- // No hooks in generated — remove the hooks key (topology no longer declares any)
177
218
  delete merged.hooks;
178
219
  }
179
220
  // --- all other generated keys: add if missing, do NOT overwrite existing ---
@@ -184,8 +225,72 @@ export function deepMergeSettingsJson(existingRaw, generatedRaw) {
184
225
  merged[key] = value;
185
226
  }
186
227
  }
228
+ // Nothing to add: keep the user's bytes, formatting included.
229
+ if (JSON.stringify(merged) === JSON.stringify(existing))
230
+ return existingRaw;
187
231
  return JSON.stringify(merged, null, 2) + "\n";
188
232
  }
233
+ function isPlainObject(v) {
234
+ return v !== null && typeof v === "object" && !Array.isArray(v);
235
+ }
236
+ /**
237
+ * Identity of a hook group for deduplication: matcher plus each command with
238
+ * the project-dir prefix, quotes and "./" removed. An imported hook written
239
+ * as `bash .claude/hooks/x.sh` and the same hook compiled as
240
+ * `bash "$CLAUDE_PROJECT_DIR/.claude/hooks/x.sh"` are one hook, not two that
241
+ * both fire.
242
+ */
243
+ function hookGroupKey(group) {
244
+ if (!isPlainObject(group) || !Array.isArray(group.hooks))
245
+ return JSON.stringify(group);
246
+ const commands = group.hooks.map((h) => isPlainObject(h) && typeof h.command === "string"
247
+ ? h.command.replace(/"?\$CLAUDE_PROJECT_DIR\/?/g, "").replace(/["']/g, "").replace(/(^|\s)\.\//g, "$1").replace(/\s+/g, " ").trim()
248
+ : JSON.stringify(h));
249
+ return JSON.stringify([group.matcher ?? "", commands]);
250
+ }
251
+ /** Whether a hook group runs a script this topology owns. */
252
+ function isOwnedHookGroup(group, scripts) {
253
+ if (!isPlainObject(group) || !Array.isArray(group.hooks))
254
+ return false;
255
+ return group.hooks.some((h) => {
256
+ if (!isPlainObject(h) || typeof h.command !== "string")
257
+ return false;
258
+ const tokens = h.command.split(/\s+/).map((t) => t.replace(/^\.\//, ""));
259
+ return tokens.some((t) => scripts.includes(t));
260
+ });
261
+ }
262
+ /**
263
+ * Per event: the user's groups first, then the generated ones, deduplicated.
264
+ * Returns undefined when no event keeps any group.
265
+ */
266
+ function mergeHooks(existingHooks, generatedHooks, ownedPaths) {
267
+ // Config files are never hook scripts; matching them would claim a user hook
268
+ // that merely mentions CLAUDE.md.
269
+ const scripts = ownedPaths
270
+ .filter((p) => !/\.(md|json)$/.test(p))
271
+ .map((p) => p.replace(/^\.\//, ""));
272
+ const ex = isPlainObject(existingHooks) ? existingHooks : {};
273
+ const gen = isPlainObject(generatedHooks) ? generatedHooks : {};
274
+ const out = {};
275
+ for (const event of new Set([...Object.keys(ex), ...Object.keys(gen)])) {
276
+ // A group generated again stays where it is, so reruns (and two
277
+ // topologies taking turns) do not reorder the file.
278
+ const regenerated = new Set((Array.isArray(gen[event]) ? gen[event] : []).map(hookGroupKey));
279
+ const kept = (Array.isArray(ex[event]) ? ex[event] : []).filter((g) => regenerated.has(hookGroupKey(g)) || !isOwnedHookGroup(g, scripts));
280
+ const seen = new Set();
281
+ const groups = [];
282
+ for (const g of [...kept, ...(Array.isArray(gen[event]) ? gen[event] : [])]) {
283
+ const key = hookGroupKey(g);
284
+ if (seen.has(key))
285
+ continue;
286
+ seen.add(key);
287
+ groups.push(g);
288
+ }
289
+ if (groups.length > 0)
290
+ out[event] = groups;
291
+ }
292
+ return Object.keys(out).length > 0 ? out : undefined;
293
+ }
189
294
  function mergeObjects(existing, generated) {
190
295
  // Start with a copy of existing (preserves user-only keys)
191
296
  const result = { ...existing };
@@ -1 +1 @@
1
- {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/scaffold/merge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/scaffold/merge.ts"],"names":[],"mappings":"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"}
@@ -49,5 +49,22 @@ export type FileAction = {
49
49
  path: string;
50
50
  content: string;
51
51
  detail: string;
52
+ }
53
+ /**
54
+ * Never written or deleted, even with --force. `unsafe` marks a path that
55
+ * must abort the whole run before anything is written (an empty or
56
+ * malformed file name — the EISDIR class).
57
+ */
58
+ | {
59
+ type: "blocked";
60
+ path: string;
61
+ detail: string;
62
+ unsafe?: boolean;
63
+ }
64
+ /** A create-only file already there: the user's. Never written or claimed. */
65
+ | {
66
+ type: "kept";
67
+ path: string;
68
+ detail: string;
52
69
  };
53
70
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/scaffold/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,+CAA+C;AAC/C,MAAM,WAAW,aAAa;IAC5B,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,QAAQ,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,eAAe,CAAC;CAC5D;AAED,wDAAwD;AACxD,MAAM,WAAW,gBAAgB;IAC/B,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CACtC;AAED,yEAAyE;AACzE,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GACvF;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/scaffold/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,+CAA+C;AAC/C,MAAM,WAAW,aAAa;IAC5B,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,QAAQ,EAAE,SAAS,GAAG,OAAO,GAAG,QAAQ,GAAG,eAAe,CAAC;CAC5D;AAED,wDAAwD;AACxD,MAAM,WAAW,gBAAgB;IAC/B,4BAA4B;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,8DAA8D;IAC9D,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,MAAM,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,WAAW,EAAE,MAAM,CAAC;IACpB,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CACtC;AAED,yEAAyE;AACzE,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GACvE;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GACvF;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;AACrE;;;;GAIG;GACD;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE;AACrE,8EAA8E;GAC5E;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC"}
@@ -3,6 +3,7 @@
3
3
  * and writes it back into .at file prompt {} blocks.
4
4
  * @module
5
5
  */
6
+ export { PROMPT_FENCE_OPEN, PROMPT_FENCE_CLOSE, fencedPrompt } from "../bindings/lib/prompt-fence.js";
6
7
  /** A platform file with its path and content. */
7
8
  export interface PlatformFile {
8
9
  path: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,iDAAiD;AACjD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAQD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,YAAY,EAAE,EACrB,OAAO,EAAE,MAAM,GACd,MAAM,CAqBR;AAsCD,4FAA4F;AAC5F,eAAO,MAAM,+BAA+B,UAM3C,CAAC;AAEF,4DAA4D;AAC5D,eAAO,MAAM,2BAA2B,UAMvC,CAAC;AA8LF;;;;;;;;GAQG;AACH,wBAAgB,+BAA+B,CAC7C,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EAAE,GACtB,MAAM,GAAG,IAAI,CAgCf"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAQtG,iDAAiD;AACjD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAQD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,YAAY,EAAE,EACrB,OAAO,EAAE,MAAM,GACd,MAAM,CAqBR;AAmED,4FAA4F;AAC5F,eAAO,MAAM,+BAA+B,UAM3C,CAAC;AAEF,4DAA4D;AAC5D,eAAO,MAAM,2BAA2B,UAMvC,CAAC;AA8LF;;;;;;;;GAQG;AACH,wBAAgB,+BAA+B,CAC7C,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,MAAM,EAAE,GACtB,MAAM,GAAG,IAAI,CAgCf"}
@@ -4,6 +4,14 @@
4
4
  * @module
5
5
  */
6
6
  import { escapeRegex } from "../parser/lexer.js";
7
+ import { parse } from "../parser/index.js";
8
+ import { claudeCodeBinding } from "../bindings/claude-code.js";
9
+ export { PROMPT_FENCE_OPEN, PROMPT_FENCE_CLOSE, fencedPrompt } from "../bindings/lib/prompt-fence.js";
10
+ import { fencedPrompt } from "../bindings/lib/prompt-fence.js";
11
+ /** Undo the binding's heading downshift (### → ##), so a prompt round-trips unchanged. */
12
+ function upshiftHeadings(text) {
13
+ return text.replace(/^#(#{2,6})(\s)/gm, "$1$2");
14
+ }
7
15
  /**
8
16
  * Sync prompt content from platform agent files back into an .at source string.
9
17
  *
@@ -16,7 +24,7 @@ export function syncFromPlatform(atSource, files, binding) {
16
24
  let prompts;
17
25
  switch (binding) {
18
26
  case "claude-code":
19
- prompts = extractClaudeCodePrompts(files);
27
+ prompts = withoutUnchanged(atSource, extractClaudeCodePrompts(files), files);
20
28
  break;
21
29
  case "codex":
22
30
  prompts = extractCodexPrompts(files);
@@ -32,6 +40,32 @@ export function syncFromPlatform(atSource, files, binding) {
32
40
  }
33
41
  return insertPromptBlocks(atSource, prompts);
34
42
  }
43
+ /**
44
+ * Drop prompts whose fenced text is exactly what scaffold would write from the
45
+ * .at as it stands: sync brings back edits, never the generator's own output
46
+ * (a description-only agent would otherwise gain a prompt block on every sync).
47
+ */
48
+ function withoutUnchanged(atSource, prompts, files) {
49
+ let generated;
50
+ const warn = console.warn;
51
+ console.warn = () => { };
52
+ try {
53
+ generated = new Map(claudeCodeBinding.scaffold(parse(atSource))
54
+ .map((f) => [f.path.match(/agents\/([^/]+)\/AGENT\.md$/)?.[1] ?? "", fencedPrompt(f.content)])
55
+ .filter(([id]) => id !== ""));
56
+ }
57
+ catch {
58
+ return prompts;
59
+ }
60
+ finally {
61
+ console.warn = warn;
62
+ }
63
+ const onDisk = new Map(files.map((f) => [f.path.match(/agents[\\/]([^\\/]+)[\\/]AGENT\.md$/)?.[1] ?? "", fencedPrompt(f.content)]));
64
+ return prompts.filter((p) => {
65
+ const disk = onDisk.get(p.agentId);
66
+ return disk === null || disk === undefined || disk !== generated.get(p.agentId);
67
+ });
68
+ }
35
69
  // ---------------------------------------------------------------------------
36
70
  // Per-binding extractors
37
71
  // ---------------------------------------------------------------------------
@@ -51,7 +85,11 @@ function extractClaudeCodePrompts(files) {
51
85
  if (!match)
52
86
  continue;
53
87
  const agentId = match[1];
54
- const content = extractSectionUntilKnownHeading(file.content, "## Instructions", CLAUDE_CODE_STRUCTURAL_HEADINGS);
88
+ const fenced = fencedPrompt(file.content);
89
+ // Files scaffolded before the markers: the old heuristic.
90
+ const content = fenced !== null
91
+ ? upshiftHeadings(fenced)
92
+ : extractSectionUntilKnownHeading(file.content, "## Instructions", CLAUDE_CODE_STRUCTURAL_HEADINGS);
55
93
  if (content) {
56
94
  prompts.push({ agentId, content });
57
95
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sync/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentopology",
3
- "version": "0.5.2",
3
+ "version": "0.7.0",
4
4
  "description": "The declarative language for multi-agent systems. Write once, scaffold for any platform.",
5
5
  "author": "Nadav Naveh",
6
6
  "license": "Apache-2.0",
package/spec/grammar.md CHANGED
@@ -368,6 +368,7 @@ scale-field = 'mode' ':' ('auto' | 'fixed' | 'config')
368
368
 
369
369
  | Field | Type | Required | Default | Description |
370
370
  |-------|------|----------|---------|-------------|
371
+ | `file` | string | no | -- | Project-relative path of the hand-written file holding this node's internals. Bindings reference it and never generate or overwrite it (V97). `import` sets it on every file it did not generate, so a hand-built system comes in without losing anything. |
371
372
  | `role` | identifier | no | -- | Maps to a role defined in the `roles` block |
372
373
  | `model` | model-id | yes | -- | LLM model identifier (e.g., `opus`, `gpt-4o`, `gemini-pro`) |
373
374
  | `permissions` | perm-enum | no | `autonomous` | Permission mode |
@@ -1088,7 +1089,7 @@ Environment blocks have no fixed schema -- fields are identifier/string key-valu
1088
1089
  ```ebnf
1089
1090
  triggers = 'triggers' '{' command-decl* '}'
1090
1091
  command-decl = 'command' identifier '{' command-fields '}'
1091
- command-fields = 'pattern' ':' string ('argument' ':' template-var)?
1092
+ command-fields = 'pattern' ':' string ('argument' ':' template-var)? ('file' ':' string)?
1092
1093
  ```
1093
1094
 
1094
1095
  ```agenttopology
@@ -1108,6 +1109,7 @@ triggers {
1108
1109
  |-------|------|----------|---------|
1109
1110
  | `pattern` | string | yes | -- |
1110
1111
  | `argument` | template-var | no | -- |
1112
+ | `file` | string | no | -- |
1111
1113
 
1112
1114
  ---
1113
1115
 
@@ -1117,9 +1119,12 @@ triggers {
1117
1119
  hooks = 'hooks' '{' hook-decl* '}'
1118
1120
  hook-decl = 'hook' identifier '{' hook-fields '}'
1119
1121
  hook-fields = ('on' ':' hook-event | 'matcher' ':' string | 'run' ':' string
1120
- | 'type' ':' hook-type | 'timeout' ':' number)*
1121
- hook-event = <universal-event> | <platform-event>
1122
- hook-type = 'command' | 'prompt'
1122
+ | 'type' ':' hook-type | 'flag' ':' env-name | 'timeout' ':' number)*
1123
+ hook-event = <universal-event> | <platform-event> | <engine-event>
1124
+ hook-type = 'command' | 'prompt' | 'mod'
1125
+ engine-event = 'tool.call' | 'prompt.submit' | 'prompt.context' | 'session.start'
1126
+ | 'session.end' | 'model.complete' | 'message.received'
1127
+
1123
1128
  ```
1124
1129
 
1125
1130
  **Universal hook events** -- these are defined by the spec and must be supported by all bindings:
@@ -1170,8 +1175,14 @@ hooks {
1170
1175
  | `matcher` | string | no | -- |
1171
1176
  | `run` | string | yes | -- |
1172
1177
  | `type` | hook-type | no | `command` |
1178
+ | `flag` | env-name | no (mod only) | -- |
1173
1179
  | `timeout` | number | no | `600` |
1174
1180
 
1181
+ A `type: mod` hook is a TypeScript module loaded inside the engine (Claude
1182
+ Code function hooks). Its `on:` is an `engine-event` (V95); a command or
1183
+ prompt hook takes a PascalCase event. `flag:` names the env variable that
1184
+ switches the Mod on. Fields are one per line (V90).
1185
+
1175
1186
  ---
1176
1187
 
1177
1188
  ### 4.17 `settings`
@@ -1351,6 +1362,10 @@ agent processor {
1351
1362
 
1352
1363
  ---
1353
1364
 
1365
+ ### 4.20a `file:` — hand-written internals
1366
+
1367
+ Any node (`agent`, `group`, `human`, ...), any `skill` and any trigger `command` may carry `file: "<project-relative path>"`. It says: the structure is described here, the internals live in that file, and they are the author's. A binding never generates or overwrites a file so marked; for a skill it leaves the whole skill folder alone, for a group its skill and runtime folder too. Gates and hooks still wire to the node by name. `agentopology import` sets `file:` on every file it finds that no scaffold manifest lists as generated, which is what makes import followed by scaffold lossless.
1368
+
1354
1369
  ### 4.21 `skill` (declarations)
1355
1370
 
1356
1371
  Topology-level skill declarations. Each `skill` block declares a self-contained application that bundles executable scripts, domain knowledge, reference docs, and instructions into a coherent capability. Agents load skills via their `skills` field.
@@ -1364,6 +1379,7 @@ skill-fields = ('description' ':' string
1364
1379
  | 'domains' ':' path-list
1365
1380
  | 'references' ':' path-list
1366
1381
  | 'prompt' ':' string
1382
+ | 'prompt' '{' text '}'
1367
1383
  | 'disable-model-invocation' ':' boolean
1368
1384
  | 'user-invocable' ':' boolean
1369
1385
  | 'context' ':' identifier
@@ -1394,11 +1410,12 @@ skill classification {
1394
1410
 
1395
1411
  | Field | Type | Required | Default |
1396
1412
  |-------|------|----------|---------|
1413
+ | `file` | string | no | -- |
1397
1414
  | `description` | string | no | -- |
1398
1415
  | `scripts` | name-list | no | `[]` |
1399
1416
  | `domains` | path-list | no | `[]` |
1400
1417
  | `references` | path-list | no | `[]` |
1401
- | `prompt` | string | no | -- |
1418
+ | `prompt` | string or block | no | -- |
1402
1419
  | `disable-model-invocation` | boolean | no | -- |
1403
1420
  | `user-invocable` | boolean | no | -- |
1404
1421
  | `context` | identifier | no | -- |
@@ -1406,6 +1423,8 @@ skill classification {
1406
1423
  | `allowed-tools` | tool-list | no | `[]` |
1407
1424
  | `extensions` | skill-extensions | no | -- |
1408
1425
 
1426
+ A skill's `prompt { }` block is its SKILL.md instructions; `prompt: "path"` names a file holding them, and the SKILL.md tells Claude to read and follow it.
1427
+
1409
1428
  **`disable-model-invocation`** -- When `true`, prevents the skill from automatically invoking the model. Useful for skills that only run scripts.
1410
1429
 
1411
1430
  **`user-invocable`** -- When `true`, the skill appears in user-facing menus and can be triggered directly.
@@ -0,0 +1,85 @@
1
+ # Testing spec: what the suite proves
2
+
3
+ Every guarantee has an id. A test carries that id in its name (`[G3] ...`), and
4
+ `src/__tests__/spec-testing-sync.test.ts` fails when an id here has no test, or
5
+ a test names an id that isn't here. Open findings are listed as `it.todo` in
6
+ `src/__tests__/open-findings.test.ts`, so the suite shows what is not yet
7
+ guaranteed instead of hiding it.
8
+
9
+ ## How to run
10
+
11
+ | Suite | Command | Needs |
12
+ |---|---|---|
13
+ | Everything offline (unit, CLI, e2e) | `npx vitest run` | nothing; the build runs first (vitest globalSetup), so tests never see a stale `dist/` |
14
+ | Live Claude Code | `AT_LIVE=1 npx vitest run src/__tests__/live` | the `claude` CLI; one small haiku call per project; `AT_CLAUDE_BIN` overrides the binary |
15
+
16
+ Run the live suite before every release, and after any change to a binding.
17
+
18
+ ## Guarantees
19
+
20
+ | Id | Guarantee | Where |
21
+ |---|---|---|
22
+ | G1 | The first scaffold keeps a file it did not create (conflict, kept unless `--force`) | e2e/scaffold-owns.test.ts |
23
+ | G2 | Scaffold never writes or deletes through a symlink, even with `--force` | e2e/scaffold-owns.test.ts |
24
+ | G3 | Re-scaffolding keeps the user's hooks, `ask`, `defaultMode` and other permission keys | e2e/scaffold-owns.test.ts |
25
+ | G4 | A second scaffold with no changes writes nothing | e2e/scaffold-owns.test.ts |
26
+ | G5 | `--dry-run` writes nothing | e2e/scaffold-owns.test.ts |
27
+ | G6 | Prose in a gate's `run` fails validate (V96) and scaffold, and nothing is written | e2e/scaffold-owns.test.ts |
28
+ | G7 | An edited file that scaffold owns is kept on the next run | e2e/scaffold-owns.test.ts |
29
+ | G8 | `--prune` removes untouched leftovers and keeps edited ones | e2e/scaffold-owns.test.ts |
30
+ | G9 | Two topologies in one project keep separate manifests | e2e/scaffold-owns.test.ts |
31
+ | G10 | No `${…}` reference or `#`-key reaches settings `env` (Claude Code applies env literally) | e2e/scaffold-owns.test.ts |
32
+ | C1 | `scaffold --dry-run` lists, key by key, what a config merge would add or change in settings.json and .mcp.json | e2e/scaffold-owns.test.ts |
33
+ | G11 | An unsafe generated path aborts the run before any file is written | scaffold/__tests__/safety.test.ts |
34
+ | G12 | A second scaffold of an imported project changes nothing | e2e/roundtrip.test.ts |
35
+ | G13 | An agent's `extensions` never leak into project-wide settings (only a topology-level `extensions` block is top-level) | e2e/roundtrip.test.ts |
36
+ | G14 | An imported hook and its compiled form (`$CLAUDE_PROJECT_DIR`) merge as one hook, not two | e2e/roundtrip.test.ts |
37
+ | G15 | V97 refuses a `file:` outside the project | e2e/roundtrip.test.ts |
38
+ | G16 | Scaffold names every hand-written `file:` the project lacks | e2e/roundtrip.test.ts |
39
+ | G17 | V11 does not demand a flow path for an on-demand (`invocation: manual`) agent | e2e/roundtrip.test.ts |
40
+ | R1 | Import then scaffold keeps every hand-built file (was: 37 of 72 missing) | e2e/roundtrip.test.ts |
41
+ | R2 | Import then scaffold leaves every hand-built file byte-identical, settings.json included (was: 2,957 lines cut to 1,706) | e2e/roundtrip.test.ts |
42
+ | R3 | The imported .at validates with no errors (was: 22) | e2e/roundtrip.test.ts |
43
+ | R4 | Import keeps frontmatter the language has no field for, comma-string lists, and the real `permissions` block | e2e/roundtrip.test.ts |
44
+ | A4 | Agents, groups, skills and commands found on disk are imported with `file:` and never generated | e2e/roundtrip.test.ts |
45
+ | F3 | `--allow-invalid` compiles despite validation errors; `--force` only overwrites kept files | e2e/roundtrip.test.ts |
46
+ | C5 | A hook's own script is created only when missing: never overwritten (even with `--force`), reported or claimed | e2e/roundtrip.test.ts |
47
+ | N4 | A url MCP server gets `type: http` (Claude Code skipped it) | e2e/compile.test.ts |
48
+ | N5 | A `type: prompt` hook compiles to a prompt handler, in settings and in agent frontmatter | e2e/compile.test.ts |
49
+ | N6 | Universal hook events map to Claude Code events (AgentStop → SubagentStop; Stop inside an agent) | e2e/compile.test.ts |
50
+ | N7 | MCP names convert in whole-server, wildcard and dotted forms, in tools and in permission rules | e2e/compile.test.ts |
51
+ | N8 | `permissions: confirm` and `bypass` compile to real `permissionMode` values; an unknown value is never emitted | e2e/compile.test.ts |
52
+ | N9 | A regex hook matcher stays a valid YAML string in agent frontmatter | e2e/compile.test.ts |
53
+ | N10 | A manual agent keeps its description (Claude Code skips an agent without one) | e2e/compile.test.ts |
54
+ | N14 | `settings.ask` rules are emitted | e2e/compile.test.ts |
55
+ | N17 | A scalar YAML would read as another type (`yes`, `1.0`) is quoted | e2e/compile.test.ts |
56
+ | N19 | Scaffold output is byte-stable: no date in any generated file | e2e/compile.test.ts |
57
+ | C3 | A `run:` line's script is the word after its interpreter, never an argument; a project script runs in place, from the project root | e2e/compile.test.ts |
58
+ | C4 | A gate after an action or a human runs before its next agent launches (PreToolUse on the Agent tool; exit 2 blocks) | e2e/compile.test.ts |
59
+ | H1 | A human node compiles to an approval step: Claude Code asks before launching the next agent, and the playbook says to ask; no ignored AGENT.md | e2e/compile.test.ts |
60
+ | L4 | Real Claude Code blocks launching an agent when its gate fails, and stops at its approval step when the gate passes | live/claude-code.live.test.ts |
61
+ | C2 | The topology context is written to `.claude/rules/<topology>.md`, never a CLAUDE.md, so it never competes with the project's own | e2e/compile.test.ts |
62
+ | L5 | Real Claude Code loads the topology context from `.claude/rules/<topology>.md` | live/claude-code.live.test.ts |
63
+ | N12 | A skill's instructions reach the model: a `prompt { }` block is the SKILL.md body; `prompt: "path"` tells Claude to read and follow the file | e2e/compile.test.ts |
64
+ | A3 | An action's `commands:` are emitted whatever its kind; a non-inline action without commands is a marked stub that fails | e2e/compile.test.ts |
65
+ | A3b | A tool's stub goes where its `script:` points (create-only for a project path), never a copy beside it | e2e/compile.test.ts |
66
+ | B4 | A schedule runs headless from the project root, calls the real action path, and `every:` converts to cron (or warns) | e2e/compile.test.ts |
67
+ | N21 | A `gate`, `hook`, `tool`, `job`, `command` or `level` outside its container block is a V98 error, never dropped silently | e2e/compile.test.ts |
68
+ | N18 | An agent's `skills:`/`mcp-servers:` or a skill's `agent:` naming nothing declared is a V99 warning | e2e/compile.test.ts |
69
+ | N16 | A model id Claude Code does not have is omitted with a warning; aliases, `inherit` and `claude-*` ids pass | e2e/compile.test.ts |
70
+ | N11 | scaffold → sync is a fixed point: no edits leave the .at byte-identical; an edit between the prompt markers comes back once; re-scaffold keeps it | e2e/sync-cycle.test.ts |
71
+ | L2 | Real Claude Code loads a hand-built project after import then scaffold | live/claude-code.live.test.ts |
72
+ | L3 | Real Claude Code registers a manual agent and an agent with a regex matcher, and runs a prompt hook | live/claude-code.live.test.ts |
73
+ | L1 | Real Claude Code loads every scaffolded example: every agent, skill and command registers, and the session succeeds | live/claude-code.live.test.ts |
74
+
75
+ ## Open findings (not yet guaranteed)
76
+
77
+ Each is an `it.todo` with the same id. When one is fixed, its todo becomes a
78
+ real test and the row moves to Guarantees. Source: the compile audit,
79
+ 2026-10-28/29 (plan page and `.history/2026-10-28-content-harness-gaps.md`).
80
+
81
+ | Id | Finding | Phase |
82
+ |---|---|---|
83
+ | B5 | An agent's permissions read as per-agent grants; Claude Code allow rules are session-wide | 4 |
84
+ | F1 | Missing first-class fields: agent effort, initialPrompt, omitClaudeMd, cache TTL, color; skill when_to_use, arguments, paths, shell | 4 |
85
+ | F2 | Hooks as a typed union (http, mcp_tool, agent; once, async, if) | 4 |