@harness-engineering/cli 2.6.0 → 2.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 (156) hide show
  1. package/dist/agents/skills/claude-code/align-design-system/SKILL.md +174 -0
  2. package/dist/agents/skills/claude-code/align-design-system/skill.yaml +57 -0
  3. package/dist/agents/skills/claude-code/audit-brand-compliance/SKILL.md +189 -0
  4. package/dist/agents/skills/claude-code/audit-brand-compliance/skill.yaml +50 -0
  5. package/dist/agents/skills/claude-code/audit-component-anatomy/SKILL.md +181 -0
  6. package/dist/agents/skills/claude-code/audit-component-anatomy/skill.yaml +51 -0
  7. package/dist/agents/skills/claude-code/copy-craft/SKILL.md +192 -0
  8. package/dist/agents/skills/claude-code/copy-craft/skill.yaml +52 -0
  9. package/dist/agents/skills/claude-code/detect-design-drift/SKILL.md +139 -0
  10. package/dist/agents/skills/claude-code/detect-design-drift/skill.yaml +50 -0
  11. package/dist/agents/skills/claude-code/harness-accessibility/SKILL.md +10 -0
  12. package/dist/agents/skills/claude-code/harness-design-craft/SKILL.md +212 -0
  13. package/dist/agents/skills/claude-code/harness-design-craft/skill.yaml +57 -0
  14. package/dist/agents/skills/claude-code/harness-design-pipeline/SKILL.md +266 -0
  15. package/dist/agents/skills/claude-code/harness-design-pipeline/skill.yaml +70 -0
  16. package/dist/agents/skills/claude-code/knowledge-craft/SKILL.md +180 -0
  17. package/dist/agents/skills/claude-code/knowledge-craft/skill.yaml +49 -0
  18. package/dist/agents/skills/claude-code/naming-craft/SKILL.md +172 -0
  19. package/dist/agents/skills/claude-code/naming-craft/skill.yaml +51 -0
  20. package/dist/agents/skills/claude-code/security-craft/SKILL.md +205 -0
  21. package/dist/agents/skills/claude-code/security-craft/skill.yaml +58 -0
  22. package/dist/agents/skills/claude-code/spec-craft/SKILL.md +184 -0
  23. package/dist/agents/skills/claude-code/spec-craft/skill.yaml +55 -0
  24. package/dist/agents/skills/claude-code/test-craft/SKILL.md +212 -0
  25. package/dist/agents/skills/claude-code/test-craft/skill.yaml +58 -0
  26. package/dist/agents/skills/codex/align-design-system/SKILL.md +174 -0
  27. package/dist/agents/skills/codex/align-design-system/skill.yaml +57 -0
  28. package/dist/agents/skills/codex/audit-brand-compliance/SKILL.md +189 -0
  29. package/dist/agents/skills/codex/audit-brand-compliance/skill.yaml +50 -0
  30. package/dist/agents/skills/codex/audit-component-anatomy/SKILL.md +181 -0
  31. package/dist/agents/skills/codex/audit-component-anatomy/skill.yaml +51 -0
  32. package/dist/agents/skills/codex/copy-craft/SKILL.md +192 -0
  33. package/dist/agents/skills/codex/copy-craft/skill.yaml +52 -0
  34. package/dist/agents/skills/codex/detect-design-drift/SKILL.md +139 -0
  35. package/dist/agents/skills/codex/detect-design-drift/skill.yaml +50 -0
  36. package/dist/agents/skills/codex/harness-accessibility/SKILL.md +10 -0
  37. package/dist/agents/skills/codex/harness-design-craft/SKILL.md +212 -0
  38. package/dist/agents/skills/codex/harness-design-craft/skill.yaml +57 -0
  39. package/dist/agents/skills/codex/harness-design-pipeline/SKILL.md +266 -0
  40. package/dist/agents/skills/codex/harness-design-pipeline/skill.yaml +70 -0
  41. package/dist/agents/skills/codex/knowledge-craft/SKILL.md +180 -0
  42. package/dist/agents/skills/codex/knowledge-craft/skill.yaml +49 -0
  43. package/dist/agents/skills/codex/naming-craft/SKILL.md +172 -0
  44. package/dist/agents/skills/codex/naming-craft/skill.yaml +51 -0
  45. package/dist/agents/skills/codex/security-craft/SKILL.md +205 -0
  46. package/dist/agents/skills/codex/security-craft/skill.yaml +58 -0
  47. package/dist/agents/skills/codex/spec-craft/SKILL.md +184 -0
  48. package/dist/agents/skills/codex/spec-craft/skill.yaml +55 -0
  49. package/dist/agents/skills/codex/test-craft/SKILL.md +212 -0
  50. package/dist/agents/skills/codex/test-craft/skill.yaml +58 -0
  51. package/dist/agents/skills/cursor/align-design-system/SKILL.md +174 -0
  52. package/dist/agents/skills/cursor/align-design-system/skill.yaml +57 -0
  53. package/dist/agents/skills/cursor/audit-brand-compliance/SKILL.md +189 -0
  54. package/dist/agents/skills/cursor/audit-brand-compliance/skill.yaml +50 -0
  55. package/dist/agents/skills/cursor/audit-component-anatomy/SKILL.md +181 -0
  56. package/dist/agents/skills/cursor/audit-component-anatomy/skill.yaml +51 -0
  57. package/dist/agents/skills/cursor/copy-craft/SKILL.md +192 -0
  58. package/dist/agents/skills/cursor/copy-craft/skill.yaml +52 -0
  59. package/dist/agents/skills/cursor/detect-design-drift/SKILL.md +139 -0
  60. package/dist/agents/skills/cursor/detect-design-drift/skill.yaml +50 -0
  61. package/dist/agents/skills/cursor/harness-accessibility/SKILL.md +10 -0
  62. package/dist/agents/skills/cursor/harness-design-craft/SKILL.md +212 -0
  63. package/dist/agents/skills/cursor/harness-design-craft/skill.yaml +57 -0
  64. package/dist/agents/skills/cursor/harness-design-pipeline/SKILL.md +266 -0
  65. package/dist/agents/skills/cursor/harness-design-pipeline/skill.yaml +70 -0
  66. package/dist/agents/skills/cursor/knowledge-craft/SKILL.md +180 -0
  67. package/dist/agents/skills/cursor/knowledge-craft/skill.yaml +49 -0
  68. package/dist/agents/skills/cursor/naming-craft/SKILL.md +172 -0
  69. package/dist/agents/skills/cursor/naming-craft/skill.yaml +51 -0
  70. package/dist/agents/skills/cursor/security-craft/SKILL.md +205 -0
  71. package/dist/agents/skills/cursor/security-craft/skill.yaml +58 -0
  72. package/dist/agents/skills/cursor/spec-craft/SKILL.md +184 -0
  73. package/dist/agents/skills/cursor/spec-craft/skill.yaml +55 -0
  74. package/dist/agents/skills/cursor/test-craft/SKILL.md +212 -0
  75. package/dist/agents/skills/cursor/test-craft/skill.yaml +58 -0
  76. package/dist/agents/skills/gemini-cli/align-design-system/SKILL.md +174 -0
  77. package/dist/agents/skills/gemini-cli/align-design-system/skill.yaml +57 -0
  78. package/dist/agents/skills/gemini-cli/audit-brand-compliance/SKILL.md +189 -0
  79. package/dist/agents/skills/gemini-cli/audit-brand-compliance/skill.yaml +50 -0
  80. package/dist/agents/skills/gemini-cli/audit-component-anatomy/SKILL.md +181 -0
  81. package/dist/agents/skills/gemini-cli/audit-component-anatomy/skill.yaml +51 -0
  82. package/dist/agents/skills/gemini-cli/copy-craft/SKILL.md +192 -0
  83. package/dist/agents/skills/gemini-cli/copy-craft/skill.yaml +52 -0
  84. package/dist/agents/skills/gemini-cli/detect-design-drift/SKILL.md +139 -0
  85. package/dist/agents/skills/gemini-cli/detect-design-drift/skill.yaml +50 -0
  86. package/dist/agents/skills/gemini-cli/harness-accessibility/SKILL.md +10 -0
  87. package/dist/agents/skills/gemini-cli/harness-design-craft/SKILL.md +212 -0
  88. package/dist/agents/skills/gemini-cli/harness-design-craft/skill.yaml +57 -0
  89. package/dist/agents/skills/gemini-cli/harness-design-pipeline/SKILL.md +266 -0
  90. package/dist/agents/skills/gemini-cli/harness-design-pipeline/skill.yaml +70 -0
  91. package/dist/agents/skills/gemini-cli/knowledge-craft/SKILL.md +180 -0
  92. package/dist/agents/skills/gemini-cli/knowledge-craft/skill.yaml +49 -0
  93. package/dist/agents/skills/gemini-cli/naming-craft/SKILL.md +172 -0
  94. package/dist/agents/skills/gemini-cli/naming-craft/skill.yaml +51 -0
  95. package/dist/agents/skills/gemini-cli/security-craft/SKILL.md +205 -0
  96. package/dist/agents/skills/gemini-cli/security-craft/skill.yaml +58 -0
  97. package/dist/agents/skills/gemini-cli/spec-craft/SKILL.md +184 -0
  98. package/dist/agents/skills/gemini-cli/spec-craft/skill.yaml +55 -0
  99. package/dist/agents/skills/gemini-cli/test-craft/SKILL.md +212 -0
  100. package/dist/agents/skills/gemini-cli/test-craft/skill.yaml +58 -0
  101. package/dist/{agents-md-2JUQ4FE2.js → agents-md-267R2NUJ.js} +4 -4
  102. package/dist/{analyzer-VY6DJVOU-4AHIJLNS.js → analyzer-VY6DJVOU-WYKV3TTW.js} +2 -2
  103. package/dist/{architecture-CXAVNB5X.js → architecture-ZTEHGIHD.js} +6 -6
  104. package/dist/{assess-project-M626SSPN.js → assess-project-OKDW3YSK.js} +2 -1
  105. package/dist/bin/harness-mcp.js +17 -17
  106. package/dist/bin/harness.js +27 -27
  107. package/dist/{check-phase-gate-XMU6LLUQ.js → check-phase-gate-YJWFDW66.js} +5 -5
  108. package/dist/{chunk-ORNMAYHB.js → chunk-4EGPFB7V.js} +6196 -125
  109. package/dist/{chunk-HFOB2MPQ.js → chunk-67RP7MLR.js} +3 -3
  110. package/dist/{chunk-5JNSFYZU.js → chunk-6T5AYG5S.js} +6 -6
  111. package/dist/{chunk-5XLLIYYL.js → chunk-6UHDQP2N.js} +1 -1
  112. package/dist/{chunk-YP7I25SL.js → chunk-B3B64OPD.js} +1 -1
  113. package/dist/{chunk-VTTNIZJL.js → chunk-B4OLYXZ4.js} +93 -3
  114. package/dist/{chunk-6AX6R3LM.js → chunk-CXAHK5PJ.js} +9 -9
  115. package/dist/{chunk-BCFDGOMA.js → chunk-H2ZJOJ7A.js} +81 -1
  116. package/dist/{chunk-NX6A24DS.js → chunk-HLPY3RHE.js} +1641 -292
  117. package/dist/{chunk-Q6ZR2L6Q.js → chunk-HMMSWRWR.js} +2 -2
  118. package/dist/{chunk-YYRQCQPZ.js → chunk-IY2TZLY5.js} +176 -107
  119. package/dist/{chunk-I6K43QQS.js → chunk-MQG7FHXX.js} +3 -3
  120. package/dist/{chunk-43M3RLFQ.js → chunk-OLTVDPA2.js} +2 -2
  121. package/dist/{chunk-JFZOWO7D.js → chunk-OQE6ME2Z.js} +1 -1
  122. package/dist/{chunk-GWE5LL3R.js → chunk-P7EO7USC.js} +10 -10
  123. package/dist/{chunk-24KCOJJG.js → chunk-PARV3G2F.js} +1 -1
  124. package/dist/{chunk-QOKMDDBJ.js → chunk-QUPC37UB.js} +6 -6
  125. package/dist/{chunk-EPUKTTJZ.js → chunk-RC3OI5NK.js} +5 -1
  126. package/dist/{chunk-L5BCZ5XS.js → chunk-S7GEONXL.js} +1 -1
  127. package/dist/{chunk-5FDBXUFW.js → chunk-TIH53QXY.js} +1 -1
  128. package/dist/{chunk-OA6SWTU4.js → chunk-TIZ3L6CU.js} +11 -8
  129. package/dist/{chunk-GWF2OILZ.js → chunk-VG6UK6G6.js} +1 -1
  130. package/dist/{chunk-SZEFU6XC.js → chunk-W3PDVZ4I.js} +1 -1
  131. package/dist/{chunk-HYTRDAHV.js → chunk-WOXR6I3R.js} +3 -1
  132. package/dist/{chunk-K246XQ2L.js → chunk-XTIPZUPR.js} +1 -1
  133. package/dist/{chunk-HMW3VKUF.js → chunk-Z2GUITAS.js} +10 -10
  134. package/dist/{chunk-PFZEADQM.js → chunk-ZKA3TGYS.js} +79 -2
  135. package/dist/{ci-workflow-3JNDZQYD.js → ci-workflow-YGTQTNVC.js} +4 -4
  136. package/dist/{dist-QPWXPCPL.js → dist-R3TOOPJ7.js} +1 -1
  137. package/dist/{dist-OHDQBTSO.js → dist-XIJWWQ5N.js} +3 -3
  138. package/dist/{docs-5RYMDHN3.js → docs-KCTLXK2G.js} +6 -6
  139. package/dist/{engine-KZ3PPUYE.js → engine-J64WPH5K.js} +4 -4
  140. package/dist/{entropy-DQTAPSSE.js → entropy-M27JUL3V.js} +5 -5
  141. package/dist/{feedback-WH6XPQJS.js → feedback-W25QO3OL.js} +2 -2
  142. package/dist/{generate-agent-definitions-SZA4QIHN.js → generate-agent-definitions-RNMU5U5R.js} +5 -5
  143. package/dist/{glob-helper-XE2UGEOV.js → glob-helper-EX4YZKZO.js} +1 -1
  144. package/dist/{graph-loader-EQBOIHFZ.js → graph-loader-EIFEOUVI.js} +1 -1
  145. package/dist/index.d.ts +587 -6
  146. package/dist/index.js +27 -27
  147. package/dist/{loader-BNKGM23C.js → loader-HZKJ5ABV.js} +4 -4
  148. package/dist/{mcp-GZH4EYGD.js → mcp-NEAPIDTT.js} +17 -17
  149. package/dist/{performance-54TMJOEU.js → performance-3AVQUDRG.js} +6 -6
  150. package/dist/{review-pipeline-OTDDVPNY.js → review-pipeline-KA7SGUXJ.js} +4 -4
  151. package/dist/{runtime-W5THSNAL.js → runtime-IP6FVV5M.js} +4 -4
  152. package/dist/{scan-4PPP6ZXT.js → scan-LYKLM4EQ.js} +1 -1
  153. package/dist/{security-27HW7CYT.js → security-EAR4FJWI.js} +1 -1
  154. package/dist/{validate-QRVCD4GP.js → validate-EVH3UXIC.js} +5 -5
  155. package/dist/{validate-cross-check-BUAGBAPO.js → validate-cross-check-SNE3SQOB.js} +4 -4
  156. package/package.json +8 -7
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-KET4QQZB.js";
4
4
  import {
5
5
  init_dist
6
- } from "./chunk-YYRQCQPZ.js";
6
+ } from "./chunk-IY2TZLY5.js";
7
7
  import {
8
8
  Err,
9
9
  Ok
@@ -15,7 +15,7 @@ function evictIfNeeded() {
15
15
  }
16
16
  }
17
17
  async function doLoadGraphStore(projectRoot) {
18
- const { GraphStore } = await import("./dist-QPWXPCPL.js");
18
+ const { GraphStore } = await import("./dist-R3TOOPJ7.js");
19
19
  const graphDir = path.join(projectRoot, ".harness", "graph");
20
20
  const store = new GraphStore();
21
21
  const loaded = await store.load(graphDir);
@@ -1,3 +1,6 @@
1
+ import {
2
+ bigIntSafeReplacer
3
+ } from "./chunk-RC3OI5NK.js";
1
4
  import {
2
5
  sanitizePath
3
6
  } from "./chunk-W6Y7ZW3Y.js";
@@ -72,7 +75,7 @@ async function handleAssessProject(input) {
72
75
  let validateResult = null;
73
76
  if (checksToRun.has("validate")) {
74
77
  try {
75
- const { handleValidateProject } = await import("./validate-QRVCD4GP.js");
78
+ const { handleValidateProject } = await import("./validate-EVH3UXIC.js");
76
79
  const result = await handleValidateProject({ path: projectPath });
77
80
  const out = parseToolResponse(result, "validate");
78
81
  if ("error" in out) {
@@ -101,7 +104,7 @@ async function handleAssessProject(input) {
101
104
  parallelChecks.push(
102
105
  (async () => {
103
106
  try {
104
- const { handleCheckDependencies } = await import("./architecture-CXAVNB5X.js");
107
+ const { handleCheckDependencies } = await import("./architecture-ZTEHGIHD.js");
105
108
  const result = await handleCheckDependencies({ path: projectPath });
106
109
  const out = parseToolResponse(result, "deps");
107
110
  if ("error" in out) return out.error;
@@ -129,7 +132,7 @@ async function handleAssessProject(input) {
129
132
  parallelChecks.push(
130
133
  (async () => {
131
134
  try {
132
- const { handleCheckDocs } = await import("./docs-5RYMDHN3.js");
135
+ const { handleCheckDocs } = await import("./docs-KCTLXK2G.js");
133
136
  const result = await handleCheckDocs({ path: projectPath, scope: "coverage" });
134
137
  const out = parseToolResponse(result, "docs");
135
138
  if ("error" in out) return out.error;
@@ -157,7 +160,7 @@ async function handleAssessProject(input) {
157
160
  parallelChecks.push(
158
161
  (async () => {
159
162
  try {
160
- const { handleDetectEntropy } = await import("./entropy-DQTAPSSE.js");
163
+ const { handleDetectEntropy } = await import("./entropy-M27JUL3V.js");
161
164
  const result = await handleDetectEntropy({ path: projectPath, type: "all" });
162
165
  const out = parseToolResponse(result, "entropy");
163
166
  if ("error" in out) return out.error;
@@ -188,7 +191,7 @@ async function handleAssessProject(input) {
188
191
  parallelChecks.push(
189
192
  (async () => {
190
193
  try {
191
- const { handleRunSecurityScan } = await import("./security-27HW7CYT.js");
194
+ const { handleRunSecurityScan } = await import("./security-EAR4FJWI.js");
192
195
  const result = await handleRunSecurityScan({ path: projectPath });
193
196
  const out = parseToolResponse(result, "security");
194
197
  if ("error" in out) return out.error;
@@ -221,7 +224,7 @@ async function handleAssessProject(input) {
221
224
  parallelChecks.push(
222
225
  (async () => {
223
226
  try {
224
- const { handleCheckPerformance } = await import("./performance-54TMJOEU.js");
227
+ const { handleCheckPerformance } = await import("./performance-3AVQUDRG.js");
225
228
  const result = await handleCheckPerformance({ path: projectPath });
226
229
  if ("isError" in result && result.isError) {
227
230
  const msg = result.content[0]?.text ?? "Performance check failed";
@@ -305,7 +308,7 @@ async function handleAssessProject(input) {
305
308
  content: [
306
309
  {
307
310
  type: "text",
308
- text: JSON.stringify({ healthy, checks: summaryChecks, assessedIn })
311
+ text: JSON.stringify({ healthy, checks: summaryChecks, assessedIn }, bigIntSafeReplacer)
309
312
  }
310
313
  ]
311
314
  };
@@ -314,7 +317,7 @@ async function handleAssessProject(input) {
314
317
  content: [
315
318
  {
316
319
  type: "text",
317
- text: JSON.stringify({ healthy, checks: allChecks, assessedIn })
320
+ text: JSON.stringify({ healthy, checks: allChecks, assessedIn }, bigIntSafeReplacer)
318
321
  }
319
322
  ]
320
323
  };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  init_dist
3
- } from "./chunk-YYRQCQPZ.js";
3
+ } from "./chunk-IY2TZLY5.js";
4
4
  import {
5
5
  Err,
6
6
  Ok
@@ -7,7 +7,7 @@ import {
7
7
  DEFAULT_SKIP_DIRS,
8
8
  init_dist as init_dist2,
9
9
  skipDirGlobs
10
- } from "./chunk-BCFDGOMA.js";
10
+ } from "./chunk-H2ZJOJ7A.js";
11
11
  import {
12
12
  __esm
13
13
  } from "./chunk-KFQGP6VL.js";
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  init_dist
3
- } from "./chunk-YYRQCQPZ.js";
3
+ } from "./chunk-IY2TZLY5.js";
4
4
  import {
5
5
  Err,
6
6
  Ok
@@ -93,6 +93,7 @@ var NON_JSON_PACKAGE_CONFIGS = /* @__PURE__ */ new Set([
93
93
  "build.gradle.kts"
94
94
  ]);
95
95
  var HARNESS_CONFIG_FILES = /* @__PURE__ */ new Set(["harness.config.json", "AGENTS.md", ".harness/.gitignore"]);
96
+ var IGNORED_TEMPLATE_FILES = /* @__PURE__ */ new Set([".DS_Store", "Thumbs.db", "desktop.ini"]);
96
97
  function isHarnessConfigFile(relativePath) {
97
98
  return HARNESS_CONFIG_FILES.has(relativePath);
98
99
  }
@@ -372,6 +373,7 @@ var TemplateEngine = class {
372
373
  const walk = (currentDir) => {
373
374
  const entries = fs.readdirSync(currentDir, { withFileTypes: true });
374
375
  for (const entry of entries) {
376
+ if (IGNORED_TEMPLATE_FILES.has(entry.name)) continue;
375
377
  const fullPath = path.join(currentDir, entry.name);
376
378
  if (entry.isDirectory()) {
377
379
  walk(fullPath);
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  init_dist
3
- } from "./chunk-YYRQCQPZ.js";
3
+ } from "./chunk-IY2TZLY5.js";
4
4
  import {
5
5
  Err,
6
6
  Ok
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resultToMcpResponse
3
- } from "./chunk-EPUKTTJZ.js";
3
+ } from "./chunk-RC3OI5NK.js";
4
4
  import {
5
5
  sanitizePath
6
6
  } from "./chunk-W6Y7ZW3Y.js";
@@ -33,7 +33,7 @@ var createSelfReviewDefinition = {
33
33
  };
34
34
  async function handleCreateSelfReview(input) {
35
35
  try {
36
- const { parseDiff, createSelfReview } = await import("./dist-OHDQBTSO.js");
36
+ const { parseDiff, createSelfReview } = await import("./dist-XIJWWQ5N.js");
37
37
  const parseResult = parseDiff(input.diff);
38
38
  if (!parseResult.ok) {
39
39
  return resultToMcpResponse(parseResult);
@@ -53,11 +53,11 @@ async function handleCreateSelfReview(input) {
53
53
  ...input.maxFileCount !== void 0 ? { maxChangedFiles: input.maxFileCount } : {}
54
54
  }
55
55
  };
56
- const { loadGraphStore } = await import("./graph-loader-EQBOIHFZ.js");
56
+ const { loadGraphStore } = await import("./graph-loader-EIFEOUVI.js");
57
57
  const store = await loadGraphStore(projectPath);
58
58
  let graphData;
59
59
  if (store) {
60
- const { GraphFeedbackAdapter } = await import("./dist-QPWXPCPL.js");
60
+ const { GraphFeedbackAdapter } = await import("./dist-R3TOOPJ7.js");
61
61
  const adapter = new GraphFeedbackAdapter(store);
62
62
  const changedFiles = parseResult.value.files.map((f) => f.path);
63
63
  const impact = adapter.computeImpactData(changedFiles);
@@ -119,7 +119,7 @@ var analyzeDiffDefinition = {
119
119
  };
120
120
  async function handleAnalyzeDiff(input) {
121
121
  try {
122
- const { parseDiff, analyzeDiff } = await import("./dist-OHDQBTSO.js");
122
+ const { parseDiff, analyzeDiff } = await import("./dist-XIJWWQ5N.js");
123
123
  const parseResult = parseDiff(input.diff);
124
124
  if (!parseResult.ok) {
125
125
  return resultToMcpResponse(parseResult);
@@ -139,10 +139,10 @@ async function handleAnalyzeDiff(input) {
139
139
  let graphImpactData;
140
140
  if (input.path) {
141
141
  try {
142
- const { loadGraphStore } = await import("./graph-loader-EQBOIHFZ.js");
142
+ const { loadGraphStore } = await import("./graph-loader-EIFEOUVI.js");
143
143
  const store = await loadGraphStore(sanitizePath(input.path));
144
144
  if (store) {
145
- const { GraphFeedbackAdapter } = await import("./dist-QPWXPCPL.js");
145
+ const { GraphFeedbackAdapter } = await import("./dist-R3TOOPJ7.js");
146
146
  const adapter = new GraphFeedbackAdapter(store);
147
147
  const changedFiles = parseResult.value.files.map((f) => f.path);
148
148
  const impact = adapter.computeImpactData(changedFiles);
@@ -195,7 +195,7 @@ var requestPeerReviewDefinition = {
195
195
  };
196
196
  async function handleRequestPeerReview(input) {
197
197
  try {
198
- const { parseDiff, requestPeerReview } = await import("./dist-OHDQBTSO.js");
198
+ const { parseDiff, requestPeerReview } = await import("./dist-XIJWWQ5N.js");
199
199
  const parseResult = parseDiff(input.diff);
200
200
  if (!parseResult.ok) {
201
201
  return resultToMcpResponse(parseResult);
@@ -206,10 +206,10 @@ async function handleRequestPeerReview(input) {
206
206
  ...input.context ? { metadata: { context: input.context } } : {}
207
207
  };
208
208
  try {
209
- const { loadGraphStore } = await import("./graph-loader-EQBOIHFZ.js");
209
+ const { loadGraphStore } = await import("./graph-loader-EIFEOUVI.js");
210
210
  const store = await loadGraphStore(sanitizePath(input.path));
211
211
  if (store) {
212
- const { GraphFeedbackAdapter } = await import("./dist-QPWXPCPL.js");
212
+ const { GraphFeedbackAdapter } = await import("./dist-R3TOOPJ7.js");
213
213
  const adapter = new GraphFeedbackAdapter(store);
214
214
  const changedFiles = parseResult.value.files.map((f) => f.path);
215
215
  const impactData = adapter.computeImpactData(changedFiles);
@@ -4,7 +4,7 @@ import {
4
4
  import {
5
5
  listPersonas,
6
6
  loadPersona
7
- } from "./chunk-K246XQ2L.js";
7
+ } from "./chunk-XTIPZUPR.js";
8
8
  import {
9
9
  GENERATED_HEADER_AGENT,
10
10
  VALID_PLATFORMS,
@@ -223,6 +223,78 @@ function renderCursorAgent(def) {
223
223
  return lines.join("\n");
224
224
  }
225
225
 
226
+ // src/agent-definitions/render-codex.ts
227
+ function tomlBasicString(value) {
228
+ const escaped = value.replace(/\\/g, "\\\\").replace(/"/g, '\\"').replace(/\n/g, " ").replace(/\r/g, "").replace(/\t/g, " ");
229
+ return `"${escaped}"`;
230
+ }
231
+ function tomlMultilineString(value) {
232
+ if (!value.includes("'''")) {
233
+ return `'''
234
+ ${value}
235
+ '''`;
236
+ }
237
+ const escaped = value.replace(/\\/g, "\\\\").replace(
238
+ /"{3,}/g,
239
+ (run) => run.split("").map((ch) => `\\${ch}`).join("")
240
+ );
241
+ return `"""
242
+ ${escaped}
243
+ """`;
244
+ }
245
+ function formatStep4(step, index) {
246
+ if ("command" in step && step.command) {
247
+ const cmd = step.command;
248
+ const when = step.when ?? "always";
249
+ return `${index + 1}. Run \`harness ${cmd}\` (${when})`;
250
+ }
251
+ if ("skill" in step && step.skill) {
252
+ const skill = step.skill;
253
+ const when = step.when ?? "always";
254
+ return `${index + 1}. Execute ${skill} skill (${when})`;
255
+ }
256
+ return `${index + 1}. Unknown step`;
257
+ }
258
+ function buildInstructionsBody(def) {
259
+ const sections = [];
260
+ sections.push("## Role");
261
+ sections.push("");
262
+ sections.push(def.role);
263
+ if (def.skills.length > 0) {
264
+ sections.push("");
265
+ sections.push("## Skills");
266
+ sections.push("");
267
+ for (const skill of def.skills) {
268
+ sections.push(`- ${skill}`);
269
+ }
270
+ }
271
+ if (def.steps.length > 0) {
272
+ sections.push("");
273
+ sections.push("## Steps");
274
+ sections.push("");
275
+ def.steps.forEach((step, i) => {
276
+ sections.push(formatStep4(step, i));
277
+ });
278
+ }
279
+ if (def.methodology) {
280
+ sections.push("");
281
+ sections.push("## Methodology");
282
+ sections.push("");
283
+ sections.push(def.methodology);
284
+ }
285
+ return sections.join("\n");
286
+ }
287
+ function renderCodexAgent(def) {
288
+ const lines = [];
289
+ lines.push(`# ${GENERATED_HEADER_AGENT}`);
290
+ lines.push("");
291
+ lines.push(`name = ${tomlBasicString(def.name)}`);
292
+ lines.push(`description = ${tomlBasicString(def.description)}`);
293
+ lines.push(`developer_instructions = ${tomlMultilineString(buildInstructionsBody(def))}`);
294
+ lines.push("");
295
+ return lines.join("\n");
296
+ }
297
+
226
298
  // src/commands/generate-agent-definitions.ts
227
299
  function resolveOutputDir(platform, opts) {
228
300
  if (opts.output) {
@@ -246,8 +318,13 @@ function loadSkillContent(skillName) {
246
318
  function getRenderer(platform) {
247
319
  if (platform === "claude-code") return renderClaudeCodeAgent;
248
320
  if (platform === "cursor") return renderCursorAgent;
321
+ if (platform === "codex") return renderCodexAgent;
249
322
  return renderGeminiAgent;
250
323
  }
324
+ function agentFilename(platform, name) {
325
+ if (platform === "codex") return `${name}.toml`;
326
+ return `${name}.md`;
327
+ }
251
328
  function generateAgentDefinitions(opts) {
252
329
  const personasDir = resolvePersonasDir();
253
330
  const personaList = listPersonas(personasDir);
@@ -268,7 +345,7 @@ function generateAgentDefinitions(opts) {
268
345
  const renderer = getRenderer(platform);
269
346
  const rendered = /* @__PURE__ */ new Map();
270
347
  for (const def of definitions) {
271
- const filename = `${def.name}.md`;
348
+ const filename = agentFilename(platform, def.name);
272
349
  rendered.set(filename, renderer(def));
273
350
  }
274
351
  const plan = computeSyncPlan(outputDir, rendered);
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  generateCIWorkflow
3
- } from "./chunk-YP7I25SL.js";
4
- import "./chunk-YYRQCQPZ.js";
5
- import "./chunk-SZEFU6XC.js";
3
+ } from "./chunk-B3B64OPD.js";
4
+ import "./chunk-IY2TZLY5.js";
5
+ import "./chunk-W3PDVZ4I.js";
6
6
  import "./chunk-OH3NXXUY.js";
7
- import "./chunk-BCFDGOMA.js";
7
+ import "./chunk-H2ZJOJ7A.js";
8
8
  import "./chunk-QCLOIUMX.js";
9
9
  import "./chunk-XARGEOJV.js";
10
10
  import "./chunk-KFQGP6VL.js";
@@ -80,7 +80,7 @@ import {
80
80
  resolveSkipDirs,
81
81
  saveGraph,
82
82
  skipDirGlobs
83
- } from "./chunk-BCFDGOMA.js";
83
+ } from "./chunk-H2ZJOJ7A.js";
84
84
  import "./chunk-KFQGP6VL.js";
85
85
  init_dist();
86
86
  export {
@@ -417,7 +417,7 @@ import {
417
417
  writeSessionSummary,
418
418
  writeTaint,
419
419
  xssRules
420
- } from "./chunk-YYRQCQPZ.js";
420
+ } from "./chunk-IY2TZLY5.js";
421
421
  import {
422
422
  EXTENSION_MAP,
423
423
  EntropyAnalyzer,
@@ -443,7 +443,7 @@ import {
443
443
  resetParserCache,
444
444
  resolveFileToLayer,
445
445
  validateDependencies
446
- } from "./chunk-SZEFU6XC.js";
446
+ } from "./chunk-W3PDVZ4I.js";
447
447
  import {
448
448
  AuthAuditEntrySchema,
449
449
  AuthTokenPublicSchema,
@@ -489,7 +489,7 @@ import {
489
489
  isErr,
490
490
  isOk
491
491
  } from "./chunk-OH3NXXUY.js";
492
- import "./chunk-BCFDGOMA.js";
492
+ import "./chunk-H2ZJOJ7A.js";
493
493
  import {
494
494
  ArchBaselineSchema,
495
495
  ArchConfigSchema,
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  checkDocsDefinition,
3
3
  handleCheckDocs
4
- } from "./chunk-GWE5LL3R.js";
5
- import "./chunk-EPUKTTJZ.js";
4
+ } from "./chunk-P7EO7USC.js";
5
+ import "./chunk-RC3OI5NK.js";
6
6
  import "./chunk-W6Y7ZW3Y.js";
7
- import "./chunk-VTTNIZJL.js";
7
+ import "./chunk-B4OLYXZ4.js";
8
8
  import "./chunk-ZCZD7FHU.js";
9
9
  import "./chunk-3WGJMBKH.js";
10
- import "./chunk-YYRQCQPZ.js";
11
- import "./chunk-SZEFU6XC.js";
10
+ import "./chunk-IY2TZLY5.js";
11
+ import "./chunk-W3PDVZ4I.js";
12
12
  import "./chunk-OH3NXXUY.js";
13
- import "./chunk-BCFDGOMA.js";
13
+ import "./chunk-H2ZJOJ7A.js";
14
14
  import "./chunk-QCLOIUMX.js";
15
15
  import "./chunk-XARGEOJV.js";
16
16
  import "./chunk-KFQGP6VL.js";
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  TemplateEngine
3
- } from "./chunk-HYTRDAHV.js";
4
- import "./chunk-YYRQCQPZ.js";
5
- import "./chunk-SZEFU6XC.js";
3
+ } from "./chunk-WOXR6I3R.js";
4
+ import "./chunk-IY2TZLY5.js";
5
+ import "./chunk-W3PDVZ4I.js";
6
6
  import "./chunk-OH3NXXUY.js";
7
- import "./chunk-BCFDGOMA.js";
7
+ import "./chunk-H2ZJOJ7A.js";
8
8
  import "./chunk-QCLOIUMX.js";
9
9
  import "./chunk-XARGEOJV.js";
10
10
  import "./chunk-KFQGP6VL.js";
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  detectEntropyDefinition,
3
3
  handleDetectEntropy
4
- } from "./chunk-QOKMDDBJ.js";
5
- import "./chunk-EPUKTTJZ.js";
4
+ } from "./chunk-QUPC37UB.js";
5
+ import "./chunk-RC3OI5NK.js";
6
6
  import "./chunk-W6Y7ZW3Y.js";
7
- import "./chunk-YYRQCQPZ.js";
8
- import "./chunk-SZEFU6XC.js";
7
+ import "./chunk-IY2TZLY5.js";
8
+ import "./chunk-W3PDVZ4I.js";
9
9
  import "./chunk-OH3NXXUY.js";
10
- import "./chunk-BCFDGOMA.js";
10
+ import "./chunk-H2ZJOJ7A.js";
11
11
  import "./chunk-QCLOIUMX.js";
12
12
  import "./chunk-XARGEOJV.js";
13
13
  import "./chunk-KFQGP6VL.js";
@@ -5,8 +5,8 @@ import {
5
5
  handleCreateSelfReview,
6
6
  handleRequestPeerReview,
7
7
  requestPeerReviewDefinition
8
- } from "./chunk-HMW3VKUF.js";
9
- import "./chunk-EPUKTTJZ.js";
8
+ } from "./chunk-Z2GUITAS.js";
9
+ import "./chunk-RC3OI5NK.js";
10
10
  import "./chunk-W6Y7ZW3Y.js";
11
11
  import "./chunk-KFQGP6VL.js";
12
12
  export {
@@ -1,16 +1,16 @@
1
1
  import {
2
2
  createGenerateAgentDefinitionsCommand,
3
3
  generateAgentDefinitions
4
- } from "./chunk-PFZEADQM.js";
4
+ } from "./chunk-ZKA3TGYS.js";
5
5
  import "./chunk-KET4QQZB.js";
6
- import "./chunk-K246XQ2L.js";
6
+ import "./chunk-XTIPZUPR.js";
7
7
  import "./chunk-3ISINLYT.js";
8
8
  import "./chunk-6B6UN6SG.js";
9
9
  import "./chunk-3WGJMBKH.js";
10
- import "./chunk-YYRQCQPZ.js";
11
- import "./chunk-SZEFU6XC.js";
10
+ import "./chunk-IY2TZLY5.js";
11
+ import "./chunk-W3PDVZ4I.js";
12
12
  import "./chunk-OH3NXXUY.js";
13
- import "./chunk-BCFDGOMA.js";
13
+ import "./chunk-H2ZJOJ7A.js";
14
14
  import "./chunk-QCLOIUMX.js";
15
15
  import "./chunk-XARGEOJV.js";
16
16
  import "./chunk-KFQGP6VL.js";
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  DEFAULT_SKIP_DIRS,
3
3
  init_dist
4
- } from "./chunk-BCFDGOMA.js";
4
+ } from "./chunk-H2ZJOJ7A.js";
5
5
  import "./chunk-KFQGP6VL.js";
6
6
 
7
7
  // src/mcp/utils/glob-helper.ts
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  clearGraphStoreCache,
3
3
  loadGraphStore
4
- } from "./chunk-5FDBXUFW.js";
4
+ } from "./chunk-TIH53QXY.js";
5
5
  import "./chunk-KFQGP6VL.js";
6
6
  export {
7
7
  clearGraphStoreCache,