agentera 3.0.0-dev.4 → 3.0.0-dev.6

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 (321) hide show
  1. package/README.md +4 -3
  2. package/bundle/.agentera-npx-bundle.json +1 -1
  3. package/bundle/references/adapters/opencode.md +1 -1
  4. package/bundle/references/adapters/package-registry.yaml +0 -1
  5. package/bundle/references/adapters/package-surface-characterization.md +1 -2
  6. package/bundle/references/analysis/startup-measurement-contract.yaml +11 -11
  7. package/bundle/references/cli/agent-ready-state-contract.yaml +5 -5
  8. package/bundle/references/cli/audience-namespace-cli-migration.yaml +40 -26
  9. package/bundle/references/cli/bundle-skill-vocabulary.yaml +2 -30
  10. package/bundle/references/cli/capability-instruction-contract.yaml +98 -57
  11. package/bundle/references/cli/coexistence-probe.yaml +9 -0
  12. package/bundle/references/cli/routing-execution-vocabulary.yaml +6 -6
  13. package/bundle/references/cli/single-name-protocol.yaml +42 -0
  14. package/bundle/references/cli/update-channels.yaml +18 -2
  15. package/bundle/references/cli/upgrade-repair-wording.md +31 -0
  16. package/bundle/references/cli/v3-handoff-manifest.schema.yaml +98 -0
  17. package/bundle/references/cli/vocabulary-index.yaml +3 -3
  18. package/bundle/references/cli/vocabulary.md +34 -26
  19. package/bundle/references/meta/documentation-inventory.md +9 -3
  20. package/bundle/registry.json +1 -1
  21. package/bundle/skills/agentera/SKILL.md +50 -33
  22. package/bundle/skills/agentera/agents/dokumentera.toml +1 -1
  23. package/bundle/skills/agentera/agents/hej.toml +1 -1
  24. package/bundle/skills/agentera/agents/inspektera.toml +1 -1
  25. package/bundle/skills/agentera/agents/inspirera.toml +1 -1
  26. package/bundle/skills/agentera/agents/optimera.toml +1 -1
  27. package/bundle/skills/agentera/agents/orkestrera.toml +1 -1
  28. package/bundle/skills/agentera/agents/planera.toml +1 -1
  29. package/bundle/skills/agentera/agents/profilera.toml +1 -1
  30. package/bundle/skills/agentera/agents/realisera.toml +1 -1
  31. package/bundle/skills/agentera/agents/resonera.toml +1 -1
  32. package/bundle/skills/agentera/agents/visionera.toml +1 -1
  33. package/bundle/skills/agentera/agents/visualisera.toml +1 -1
  34. package/bundle/skills/agentera/capabilities/orkestrera/schemas/validation.yaml +26 -13
  35. package/bundle/skills/agentera/capability_schema_contract.yaml +33 -14
  36. package/bundle/skills/agentera/references/contract.md +2 -2
  37. package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +1 -1
  38. package/bundle/skills/agentera/schemas/artifacts/progress.yaml +15 -36
  39. package/bundle/skills/agentera/schemas/artifacts/todo.yaml +14 -0
  40. package/dist/analytics/extractCorpus/cli.js +101 -0
  41. package/dist/analytics/extractCorpus/cli.js.map +1 -0
  42. package/dist/analytics/extractCorpus/copilotSessions.js +231 -0
  43. package/dist/analytics/extractCorpus/copilotSessions.js.map +1 -0
  44. package/dist/analytics/extractCorpus/core.js +357 -0
  45. package/dist/analytics/extractCorpus/core.js.map +1 -0
  46. package/dist/analytics/extractCorpus/corpus.js +132 -0
  47. package/dist/analytics/extractCorpus/corpus.js.map +1 -0
  48. package/dist/analytics/extractCorpus/cursorSessions.js +420 -0
  49. package/dist/analytics/extractCorpus/cursorSessions.js.map +1 -0
  50. package/dist/analytics/extractCorpus/filesystemSources.js +122 -0
  51. package/dist/analytics/extractCorpus/filesystemSources.js.map +1 -0
  52. package/dist/analytics/extractCorpus/index.js +9 -0
  53. package/dist/analytics/extractCorpus/index.js.map +1 -0
  54. package/dist/analytics/extractCorpus/jsonlSessions.js +185 -0
  55. package/dist/analytics/extractCorpus/jsonlSessions.js.map +1 -0
  56. package/dist/analytics/extractCorpus/sqliteSessions.js +275 -0
  57. package/dist/analytics/extractCorpus/sqliteSessions.js.map +1 -0
  58. package/dist/analytics/extractCorpus.js +2 -1790
  59. package/dist/analytics/extractCorpus.js.map +1 -1
  60. package/dist/analytics/usageStats.js +1 -1
  61. package/dist/analytics/usageStats.js.map +1 -1
  62. package/dist/capabilities/dokumentera/instructions.js +6 -0
  63. package/dist/capabilities/dokumentera/instructions.js.map +1 -0
  64. package/dist/capabilities/hej/instructions.js +6 -0
  65. package/dist/capabilities/hej/instructions.js.map +1 -0
  66. package/dist/capabilities/index.js +38 -0
  67. package/dist/capabilities/index.js.map +1 -0
  68. package/dist/capabilities/inspektera/instructions.js +6 -0
  69. package/dist/capabilities/inspektera/instructions.js.map +1 -0
  70. package/dist/capabilities/inspirera/instructions.js +6 -0
  71. package/dist/capabilities/inspirera/instructions.js.map +1 -0
  72. package/dist/capabilities/optimera/instructions.js +6 -0
  73. package/dist/capabilities/optimera/instructions.js.map +1 -0
  74. package/dist/capabilities/orkestrera/instructions.js +6 -0
  75. package/dist/capabilities/orkestrera/instructions.js.map +1 -0
  76. package/dist/capabilities/planera/instructions.js +6 -0
  77. package/dist/capabilities/planera/instructions.js.map +1 -0
  78. package/dist/capabilities/profilera/instructions.js +6 -0
  79. package/dist/capabilities/profilera/instructions.js.map +1 -0
  80. package/dist/capabilities/realisera/instructions.js +6 -0
  81. package/dist/capabilities/realisera/instructions.js.map +1 -0
  82. package/dist/capabilities/resonera/instructions.js +6 -0
  83. package/dist/capabilities/resonera/instructions.js.map +1 -0
  84. package/dist/capabilities/visionera/instructions.js +6 -0
  85. package/dist/capabilities/visionera/instructions.js.map +1 -0
  86. package/dist/capabilities/visualisera/instructions.js +6 -0
  87. package/dist/capabilities/visualisera/instructions.js.map +1 -0
  88. package/dist/cli/capabilityContext/benchmark.js +557 -0
  89. package/dist/cli/capabilityContext/benchmark.js.map +1 -0
  90. package/dist/cli/capabilityContext/bespoke.js +25 -0
  91. package/dist/cli/capabilityContext/bespoke.js.map +1 -0
  92. package/dist/cli/capabilityContext/closeout.js +230 -0
  93. package/dist/cli/capabilityContext/closeout.js.map +1 -0
  94. package/dist/cli/capabilityContext/contract.js +186 -0
  95. package/dist/cli/capabilityContext/contract.js.map +1 -0
  96. package/dist/cli/capabilityContext/evidence.js +446 -0
  97. package/dist/cli/capabilityContext/evidence.js.map +1 -0
  98. package/dist/cli/capabilityContext/index.js +4 -0
  99. package/dist/cli/capabilityContext/index.js.map +1 -0
  100. package/dist/cli/capabilityContext/orchestration.js +107 -0
  101. package/dist/cli/capabilityContext/orchestration.js.map +1 -0
  102. package/dist/cli/capabilityContext/planState.js +271 -0
  103. package/dist/cli/capabilityContext/planState.js.map +1 -0
  104. package/dist/cli/capabilityContext/progress.js +96 -0
  105. package/dist/cli/capabilityContext/progress.js.map +1 -0
  106. package/dist/cli/capabilityContext/realisera.js +174 -0
  107. package/dist/cli/capabilityContext/realisera.js.map +1 -0
  108. package/dist/cli/capabilityContext/shared.js +94 -0
  109. package/dist/cli/capabilityContext/shared.js.map +1 -0
  110. package/dist/cli/capabilityContext/slim.js +106 -0
  111. package/dist/cli/capabilityContext/slim.js.map +1 -0
  112. package/dist/cli/capabilityContext/startup.js +208 -0
  113. package/dist/cli/capabilityContext/startup.js.map +1 -0
  114. package/dist/cli/capabilityContext/types.js +43 -0
  115. package/dist/cli/capabilityContext/types.js.map +1 -0
  116. package/dist/cli/capabilityContext.js +1 -2420
  117. package/dist/cli/capabilityContext.js.map +1 -1
  118. package/dist/cli/commands/capability.js +1 -8
  119. package/dist/cli/commands/capability.js.map +1 -1
  120. package/dist/cli/commands/compact.js +1 -1
  121. package/dist/cli/commands/compact.js.map +1 -1
  122. package/dist/cli/commands/doctor.js +35 -6
  123. package/dist/cli/commands/doctor.js.map +1 -1
  124. package/dist/cli/commands/lint.js +4 -36
  125. package/dist/cli/commands/lint.js.map +1 -1
  126. package/dist/cli/commands/query.js +1 -1
  127. package/dist/cli/commands/query.js.map +1 -1
  128. package/dist/cli/commands/report.js +11 -2
  129. package/dist/cli/commands/report.js.map +1 -1
  130. package/dist/cli/commands/schema.js +1 -2
  131. package/dist/cli/commands/schema.js.map +1 -1
  132. package/dist/cli/commands/state/decisions.js +397 -0
  133. package/dist/cli/commands/state/decisions.js.map +1 -0
  134. package/dist/cli/commands/state/docs.js +93 -0
  135. package/dist/cli/commands/state/docs.js.map +1 -0
  136. package/dist/cli/commands/state/experiments.js +67 -0
  137. package/dist/cli/commands/state/experiments.js.map +1 -0
  138. package/dist/cli/commands/state/health.js +114 -0
  139. package/dist/cli/commands/state/health.js.map +1 -0
  140. package/dist/cli/commands/state/index.js +51 -0
  141. package/dist/cli/commands/state/index.js.map +1 -0
  142. package/dist/cli/commands/state/objective.js +68 -0
  143. package/dist/cli/commands/state/objective.js.map +1 -0
  144. package/dist/cli/commands/state/plan.js +172 -0
  145. package/dist/cli/commands/state/plan.js.map +1 -0
  146. package/dist/cli/commands/state/progress.js +47 -0
  147. package/dist/cli/commands/state/progress.js.map +1 -0
  148. package/dist/cli/commands/state/shared.js +15 -0
  149. package/dist/cli/commands/state/shared.js.map +1 -0
  150. package/dist/cli/commands/state/todo.js +121 -0
  151. package/dist/cli/commands/state/todo.js.map +1 -0
  152. package/dist/cli/commands/state.js +29 -18
  153. package/dist/cli/commands/state.js.map +1 -1
  154. package/dist/cli/commands/validate.js +44 -20
  155. package/dist/cli/commands/validate.js.map +1 -1
  156. package/dist/cli/dispatch/check.js +328 -0
  157. package/dist/cli/dispatch/check.js.map +1 -0
  158. package/dist/cli/dispatch/index.js +177 -0
  159. package/dist/cli/dispatch/index.js.map +1 -0
  160. package/dist/cli/dispatch/lifecycle.js +492 -0
  161. package/dist/cli/dispatch/lifecycle.js.map +1 -0
  162. package/dist/cli/dispatch/prime.js +100 -0
  163. package/dist/cli/dispatch/prime.js.map +1 -0
  164. package/dist/cli/dispatch/shared.js +64 -0
  165. package/dist/cli/dispatch/shared.js.map +1 -0
  166. package/dist/cli/dispatch/state.js +149 -0
  167. package/dist/cli/dispatch/state.js.map +1 -0
  168. package/dist/cli/dispatch.js +1 -995
  169. package/dist/cli/dispatch.js.map +1 -1
  170. package/dist/cli/errors.js +53 -0
  171. package/dist/cli/errors.js.map +1 -0
  172. package/dist/cli/help.js +1 -3
  173. package/dist/cli/help.js.map +1 -1
  174. package/dist/cli/orientation.js +10 -7
  175. package/dist/cli/orientation.js.map +1 -1
  176. package/dist/cli/stateQuery.js +7 -0
  177. package/dist/cli/stateQuery.js.map +1 -1
  178. package/dist/cli/todoMarkdown.js +33 -0
  179. package/dist/cli/todoMarkdown.js.map +1 -0
  180. package/dist/hooks/common.js +8 -25
  181. package/dist/hooks/common.js.map +1 -1
  182. package/dist/hooks/compaction/apply.js +244 -0
  183. package/dist/hooks/compaction/apply.js.map +1 -0
  184. package/dist/hooks/compaction/dryRun.js +181 -0
  185. package/dist/hooks/compaction/dryRun.js.map +1 -0
  186. package/dist/hooks/compaction/index.js +23 -0
  187. package/dist/hooks/compaction/index.js.map +1 -0
  188. package/dist/hooks/compaction/parse.js +129 -0
  189. package/dist/hooks/compaction/parse.js.map +1 -0
  190. package/dist/hooks/compaction/retention.js +197 -0
  191. package/dist/hooks/compaction/retention.js.map +1 -0
  192. package/dist/hooks/compaction/status.js +243 -0
  193. package/dist/hooks/compaction/status.js.map +1 -0
  194. package/dist/hooks/compaction/types.js +6 -0
  195. package/dist/hooks/compaction/types.js.map +1 -0
  196. package/dist/hooks/compaction.js +20 -20
  197. package/dist/hooks/compaction.js.map +1 -1
  198. package/dist/hooks/cursorPreToolUse.js +1 -1
  199. package/dist/hooks/cursorPreToolUse.js.map +1 -1
  200. package/dist/hooks/sessionStart.js +4 -4
  201. package/dist/hooks/sessionStart.js.map +1 -1
  202. package/dist/hooks/sessionStop.js +3 -12
  203. package/dist/hooks/sessionStop.js.map +1 -1
  204. package/dist/hooks/validateArtifact/agentFacing.js +10 -0
  205. package/dist/hooks/validateArtifact/agentFacing.js.map +1 -0
  206. package/dist/hooks/validateArtifact/index.js +149 -0
  207. package/dist/hooks/validateArtifact/index.js.map +1 -0
  208. package/dist/hooks/validateArtifact/markdown.js +95 -0
  209. package/dist/hooks/validateArtifact/markdown.js.map +1 -0
  210. package/dist/hooks/validateArtifact/runtime.js +83 -0
  211. package/dist/hooks/validateArtifact/runtime.js.map +1 -0
  212. package/dist/hooks/validateArtifact/schema.js +455 -0
  213. package/dist/hooks/validateArtifact/schema.js.map +1 -0
  214. package/dist/hooks/validateArtifact/traversal.js +105 -0
  215. package/dist/hooks/validateArtifact/traversal.js.map +1 -0
  216. package/dist/hooks/validateArtifact/violations.js +105 -0
  217. package/dist/hooks/validateArtifact/violations.js.map +1 -0
  218. package/dist/hooks/validateArtifact.js +40 -49
  219. package/dist/hooks/validateArtifact.js.map +1 -1
  220. package/dist/migrate/v2HandoffManifest.js +333 -0
  221. package/dist/migrate/v2HandoffManifest.js.map +1 -0
  222. package/dist/registries/artifactProtocolIds.js +77 -0
  223. package/dist/registries/artifactProtocolIds.js.map +1 -0
  224. package/dist/registries/capabilityContract.js +12 -11
  225. package/dist/registries/capabilityContract.js.map +1 -1
  226. package/dist/registries/evaluatorHandoffContract.js +171 -0
  227. package/dist/registries/evaluatorHandoffContract.js.map +1 -0
  228. package/dist/release/releaseMetadata.js +235 -0
  229. package/dist/release/releaseMetadata.js.map +1 -0
  230. package/dist/setup/codex/agents.js +96 -0
  231. package/dist/setup/codex/agents.js.map +1 -0
  232. package/dist/setup/codex/cli.js +161 -0
  233. package/dist/setup/codex/cli.js.map +1 -0
  234. package/dist/setup/codex/configToml.js +644 -0
  235. package/dist/setup/codex/configToml.js.map +1 -0
  236. package/dist/setup/codex/constants.js +29 -0
  237. package/dist/setup/codex/constants.js.map +1 -0
  238. package/dist/setup/codex/installRoot.js +64 -0
  239. package/dist/setup/codex/installRoot.js.map +1 -0
  240. package/dist/setup/codex/state.js +270 -0
  241. package/dist/setup/codex/state.js.map +1 -0
  242. package/dist/setup/codex.js +11 -1055
  243. package/dist/setup/codex.js.map +1 -1
  244. package/dist/setup/doctor/core.js +300 -0
  245. package/dist/setup/doctor/core.js.map +1 -0
  246. package/dist/setup/doctor/diagnostics.js +247 -0
  247. package/dist/setup/doctor/diagnostics.js.map +1 -0
  248. package/dist/setup/doctor/opencode.js +281 -0
  249. package/dist/setup/doctor/opencode.js.map +1 -0
  250. package/dist/setup/doctor/report.js +474 -0
  251. package/dist/setup/doctor/report.js.map +1 -0
  252. package/dist/setup/doctor.js +9 -1296
  253. package/dist/setup/doctor.js.map +1 -1
  254. package/dist/setup/opencode.js +13 -0
  255. package/dist/setup/opencode.js.map +1 -0
  256. package/dist/setup/smokeChecks.js +1 -1
  257. package/dist/setup/smokeChecks.js.map +1 -1
  258. package/dist/state/progressCommit.js +1 -1
  259. package/dist/state/progressCommit.js.map +1 -1
  260. package/dist/state/startupAnalysis/benchmark.js +367 -0
  261. package/dist/state/startupAnalysis/benchmark.js.map +1 -0
  262. package/dist/state/startupAnalysis/contract.js +122 -0
  263. package/dist/state/startupAnalysis/contract.js.map +1 -0
  264. package/dist/state/startupAnalysis/helpers.js +332 -0
  265. package/dist/state/startupAnalysis/helpers.js.map +1 -0
  266. package/dist/state/startupAnalysis/index.js +7 -0
  267. package/dist/state/startupAnalysis/index.js.map +1 -0
  268. package/dist/state/startupAnalysis/metrics.js +334 -0
  269. package/dist/state/startupAnalysis/metrics.js.map +1 -0
  270. package/dist/state/startupAnalysis/records.js +195 -0
  271. package/dist/state/startupAnalysis/records.js.map +1 -0
  272. package/dist/state/startupAnalysis/report.js +123 -0
  273. package/dist/state/startupAnalysis/report.js.map +1 -0
  274. package/dist/state/startupAnalysis/threshold.js +500 -0
  275. package/dist/state/startupAnalysis/threshold.js.map +1 -0
  276. package/dist/state/startupAnalysis.js +2 -1952
  277. package/dist/state/startupAnalysis.js.map +1 -1
  278. package/dist/upgrade/coexistenceProbe.js +83 -0
  279. package/dist/upgrade/coexistenceProbe.js.map +1 -0
  280. package/dist/upgrade/doctor.js +41 -2
  281. package/dist/upgrade/doctor.js.map +1 -1
  282. package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -1
  283. package/dist/upgrade/migrateArtifactsV1ToV2.js.map +1 -1
  284. package/dist/upgrade/migrateArtifactsV2ToV3.js +5 -83
  285. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +1 -1
  286. package/dist/upgrade/nextMajorDoctor.js +136 -0
  287. package/dist/upgrade/nextMajorDoctor.js.map +1 -0
  288. package/dist/upgrade/projectIntegration.js +3 -1
  289. package/dist/upgrade/projectIntegration.js.map +1 -1
  290. package/dist/upgrade/runtimeMigration.js +32 -5
  291. package/dist/upgrade/runtimeMigration.js.map +1 -1
  292. package/dist/upgrade/v3CapabilitySurface.js +15 -0
  293. package/dist/upgrade/v3CapabilitySurface.js.map +1 -0
  294. package/dist/upgrade/versionResolution.js +12 -4
  295. package/dist/upgrade/versionResolution.js.map +1 -1
  296. package/dist/validate/appHomeContract.js +4 -4
  297. package/dist/validate/appHomeContract.js.map +1 -1
  298. package/dist/validate/capability.js +11 -3
  299. package/dist/validate/capability.js.map +1 -1
  300. package/dist/validate/selfAudit.js +62 -20
  301. package/dist/validate/selfAudit.js.map +1 -1
  302. package/dist/validate/vocabularyAuthority.js +298 -0
  303. package/dist/validate/vocabularyAuthority.js.map +1 -0
  304. package/package.json +4 -4
  305. package/bundle/references/v1-section-mapping.md +0 -47
  306. package/bundle/skills/agentera/capabilities/dokumentera/instructions.md +0 -428
  307. package/bundle/skills/agentera/capabilities/hej/instructions.md +0 -331
  308. package/bundle/skills/agentera/capabilities/inspektera/instructions.md +0 -514
  309. package/bundle/skills/agentera/capabilities/inspirera/instructions.md +0 -280
  310. package/bundle/skills/agentera/capabilities/optimera/instructions.md +0 -437
  311. package/bundle/skills/agentera/capabilities/orkestrera/instructions.md +0 -433
  312. package/bundle/skills/agentera/capabilities/planera/instructions.md +0 -368
  313. package/bundle/skills/agentera/capabilities/profilera/instructions.md +0 -419
  314. package/bundle/skills/agentera/capabilities/realisera/instructions.md +0 -403
  315. package/bundle/skills/agentera/capabilities/resonera/instructions.md +0 -329
  316. package/bundle/skills/agentera/capabilities/visionera/instructions.md +0 -309
  317. package/bundle/skills/agentera/capabilities/visualisera/instructions.md +0 -400
  318. package/bundle/skills/hej/.claude-plugin/plugin.json +0 -6
  319. package/bundle/skills/hej/SKILL.md +0 -69
  320. package/bundle/skills/hej/agents/hej.toml +0 -11
  321. package/bundle/skills/hej/agents/openai.yaml +0 -8
@@ -0,0 +1,474 @@
1
+ import fs from "node:fs";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { expanduser, pathExists, resolvePath } from "../../core/paths.js";
5
+ import { planChange as codexPlanChange } from "../codex.js";
6
+ import { resolveSourceRootStrict } from "../../upgrade/appModel.js";
7
+ import { runNpmSmokeChecks } from "../smokeChecks.js";
8
+ import { SCHEMA_VERSION, STATUSES, RUNTIMES, INSTALLER_SCHEMA_VERSION, INSTALLER_FIXABLE_GAPS, WARN_STATUSES, FAIL_STATUSES, mkCheck, summarizeStatuses, classifyInstallRoot, runtimeResult, } from "./core.js";
9
+ import { smokeCheck } from "./opencode.js";
10
+ import { CODEX_HOME_CHECK, CODEX_RUNTIME_CONFIG_GAP, DIAGNOSTICS } from "./diagnostics.js";
11
+ function jsonAscii(str) {
12
+ let out = '"';
13
+ for (const ch of str) {
14
+ const cp = ch.codePointAt(0);
15
+ if (ch === '"')
16
+ out += '\\"';
17
+ else if (ch === "\\")
18
+ out += "\\\\";
19
+ else if (cp === 0x08)
20
+ out += "\\b";
21
+ else if (cp === 0x09)
22
+ out += "\\t";
23
+ else if (cp === 0x0a)
24
+ out += "\\n";
25
+ else if (cp === 0x0c)
26
+ out += "\\f";
27
+ else if (cp === 0x0d)
28
+ out += "\\r";
29
+ else if (cp < 0x20)
30
+ out += "\\u" + cp.toString(16).padStart(4, "0");
31
+ else if (cp < 0x80)
32
+ out += ch;
33
+ else if (cp > 0xffff) {
34
+ const v = cp - 0x10000;
35
+ out += "\\u" + (0xd800 + (v >> 10)).toString(16).padStart(4, "0");
36
+ out += "\\u" + (0xdc00 + (v & 0x3ff)).toString(16).padStart(4, "0");
37
+ }
38
+ else
39
+ out += "\\u" + cp.toString(16).padStart(4, "0");
40
+ }
41
+ return out + '"';
42
+ }
43
+ export function pyJsonIndent(value, level = 0) {
44
+ const pad = " ".repeat(level);
45
+ const padIn = " ".repeat(level + 1);
46
+ if (value === null || value === undefined)
47
+ return "null";
48
+ if (value === true)
49
+ return "true";
50
+ if (value === false)
51
+ return "false";
52
+ if (typeof value === "number")
53
+ return Number.isInteger(value) ? String(value) : String(value);
54
+ if (typeof value === "string")
55
+ return jsonAscii(value);
56
+ if (Array.isArray(value)) {
57
+ if (value.length === 0)
58
+ return "[]";
59
+ const items = value.map((v) => padIn + pyJsonIndent(v, level + 1));
60
+ return "[\n" + items.join(",\n") + "\n" + pad + "]";
61
+ }
62
+ if (typeof value === "object") {
63
+ const keys = Object.keys(value).sort();
64
+ if (keys.length === 0)
65
+ return "{}";
66
+ const items = keys.map((k) => padIn + jsonAscii(k) + ": " + pyJsonIndent(value[k], level + 1));
67
+ return "{\n" + items.join(",\n") + "\n" + pad + "}";
68
+ }
69
+ return "null";
70
+ }
71
+ function summarize(runtimes) {
72
+ return summarizeStatuses(runtimes);
73
+ }
74
+ export function buildReport(opts = {}) {
75
+ const runtimes = opts.runtimes ?? RUNTIMES;
76
+ const liveModelAllowed = opts.liveModelAllowed ?? false;
77
+ const sourceEnv = { ...(opts.env ?? process.env) };
78
+ const rootReport = classifyInstallRoot(opts.installRoot ?? null, sourceEnv);
79
+ const rootPath = rootReport.path ? rootReport.path : null;
80
+ const homePath = resolvePath(expanduser(opts.home ?? os.homedir()));
81
+ const runtimeReports = {};
82
+ if (rootPath === null || rootReport.status === "fail") {
83
+ for (const runtime of runtimes) {
84
+ runtimeReports[runtime] = runtimeResult(runtime, sourceEnv, [
85
+ mkCheck("install_root", "fail", "runtime diagnosis requires a valid Agentera install root", {
86
+ gap: rootReport.gap,
87
+ details: rootReport.missing,
88
+ }),
89
+ ]);
90
+ }
91
+ }
92
+ else {
93
+ for (const runtime of runtimes) {
94
+ runtimeReports[runtime] = DIAGNOSTICS[runtime](rootPath, homePath, sourceEnv);
95
+ }
96
+ }
97
+ const summaryCounts = summarize(runtimeReports);
98
+ const emptySummary = {};
99
+ for (const status of STATUSES)
100
+ emptySummary[status] = 0;
101
+ let smokeReport = {
102
+ enabled: false,
103
+ liveModelAllowed,
104
+ modelCallsAttempted: false,
105
+ summary: emptySummary,
106
+ checks: [],
107
+ };
108
+ if (opts.runSmoke) {
109
+ try {
110
+ const sourceRoot = resolveSourceRootStrict(sourceEnv);
111
+ smokeReport = runNpmSmokeChecks(sourceRoot, sourceEnv, {
112
+ liveModelAllowed,
113
+ runtimes,
114
+ });
115
+ }
116
+ catch (exc) {
117
+ smokeReport = {
118
+ enabled: true,
119
+ liveModelAllowed,
120
+ modelCallsAttempted: false,
121
+ summary: { ...emptySummary, fail: 1 },
122
+ checks: [
123
+ smokeCheck("source_root", "helper", "fail", exc.message, {
124
+ details: ["resolveSourceRootStrict"],
125
+ }),
126
+ ],
127
+ };
128
+ }
129
+ }
130
+ const ok = rootReport.status !== "fail" && summaryCounts.fail === 0 && smokeReport.summary.fail === 0;
131
+ return {
132
+ schemaVersion: SCHEMA_VERSION,
133
+ ok,
134
+ installRoot: rootReport,
135
+ runtimes: runtimeReports,
136
+ summary: summaryCounts,
137
+ smoke: smokeReport,
138
+ };
139
+ }
140
+ export function renderHuman(report) {
141
+ const lines = [
142
+ "Agentera setup doctor",
143
+ `install root: ${report.installRoot.status} - ${report.installRoot.message}`,
144
+ ];
145
+ if (report.installRoot.path)
146
+ lines.push(` path: ${report.installRoot.path}`);
147
+ if (report.installRoot.missing && report.installRoot.missing.length > 0) {
148
+ lines.push(" missing: " + report.installRoot.missing.join(", "));
149
+ }
150
+ for (const [runtime, result] of Object.entries(report.runtimes)) {
151
+ lines.push(`${runtime}: ${result.status}`);
152
+ for (const check of result.checks) {
153
+ const suffix = check.gap ? ` [${check.gap}]` : "";
154
+ lines.push(` - ${check.name}: ${check.status} - ${check.message}${suffix}`);
155
+ if (check.path)
156
+ lines.push(` path: ${check.path}`);
157
+ if (check.details && check.details.length > 0)
158
+ lines.push(" details: " + check.details.join(", "));
159
+ }
160
+ }
161
+ const smoke = report.smoke ?? {};
162
+ if (smoke.enabled) {
163
+ lines.push("smoke: enabled");
164
+ lines.push(` model calls attempted: ${pyBool(smoke.modelCallsAttempted)}`);
165
+ for (const check of (smoke.checks ?? [])) {
166
+ lines.push(` - ${check.name}: ${check.status} - ${check.message} [${check.category}]`);
167
+ if (check.path)
168
+ lines.push(` path: ${check.path}`);
169
+ if (check.details && check.details.length > 0)
170
+ lines.push(" details: " + check.details.join(", "));
171
+ }
172
+ }
173
+ return lines.join("\n");
174
+ }
175
+ function pyBool(value) {
176
+ return value ? "True" : "False";
177
+ }
178
+ export function renderInstaller(installer) {
179
+ const lines = ["Agentera setup installer", `status: ${installer.message}`];
180
+ if (!installer.changes || installer.changes.length === 0)
181
+ return lines.join("\n");
182
+ for (const change of installer.changes) {
183
+ lines.push(`${change.runtime}: ${change.status}`);
184
+ lines.push(` target: ${change.target || "(none)"}`);
185
+ lines.push(` reason: ${change.reason}`);
186
+ lines.push(` action: ${change.action} - ${change.message}`);
187
+ }
188
+ if (installer.afterDoctor !== null && installer.afterDoctor !== undefined) {
189
+ const after = installer.afterDoctor;
190
+ lines.push(`doctor after install: ${after.ok ? "pass" : "fail"} (summary: ${pyDict(after.summary)})`);
191
+ }
192
+ else if (installer.summary.pending && !installer.dryRun) {
193
+ lines.push("confirmation required: re-run with --yes to apply these changes");
194
+ }
195
+ return lines.join("\n");
196
+ }
197
+ /** Python str(dict) repr for the summary line. */
198
+ function pyDict(obj) {
199
+ const parts = Object.entries(obj).map(([k, v]) => `'${k}': ${typeof v === "string" ? `'${v}'` : v}`);
200
+ return "{" + parts.join(", ") + "}";
201
+ }
202
+ export function publicInstaller(installer) {
203
+ if (installer === null)
204
+ return null;
205
+ const pub = { ...installer };
206
+ pub.changes = installer.changes.map((change) => {
207
+ const c = {};
208
+ for (const [key, value] of Object.entries(change)) {
209
+ if (key !== "newText" && key !== "diff")
210
+ c[key] = value;
211
+ }
212
+ return c;
213
+ });
214
+ return pub;
215
+ }
216
+ // ── installer ───────────────────────────────────────────────────────
217
+ function installerChange(opts) {
218
+ return {
219
+ runtime: opts.runtime,
220
+ target: opts.target,
221
+ reason: opts.reason,
222
+ status: opts.status,
223
+ action: opts.action,
224
+ message: opts.message,
225
+ newText: opts.newText ?? "",
226
+ diff: opts.diff ?? "",
227
+ };
228
+ }
229
+ function fixableReason(runtimeReport, checkName, gaps = null) {
230
+ if (!runtimeReport.available)
231
+ return null;
232
+ const runtime = String(runtimeReport.runtime ?? "");
233
+ const fixableGaps = gaps ?? INSTALLER_FIXABLE_GAPS[runtime] ?? [];
234
+ for (const check of (runtimeReport.checks ?? [])) {
235
+ if (check.name !== checkName)
236
+ continue;
237
+ if (check.status !== WARN_STATUSES[runtime] && check.status !== FAIL_STATUSES[runtime])
238
+ continue;
239
+ if (!fixableGaps.includes(check.gap))
240
+ continue;
241
+ return String(check.message || "doctor found a fixable setup gap");
242
+ }
243
+ return null;
244
+ }
245
+ function planCodexInstallerChange(installRoot, home, runtimeReport) {
246
+ const reason = fixableReason(runtimeReport, CODEX_HOME_CHECK, [CODEX_RUNTIME_CONFIG_GAP]);
247
+ if (reason === null)
248
+ return null;
249
+ const target = path.join(home, ".codex", "config.toml");
250
+ let outcome;
251
+ try {
252
+ const currentText = pathExists(target) ? fs.readFileSync(target, "utf8") : null;
253
+ outcome = codexPlanChange(currentText, installRoot, { force: false });
254
+ }
255
+ catch (exc) {
256
+ return installerChange({
257
+ runtime: "codex",
258
+ target,
259
+ reason,
260
+ status: "blocked",
261
+ action: "blocked",
262
+ message: `cannot safely plan Codex config change: ${exc.message}`,
263
+ });
264
+ }
265
+ if (outcome.action === "noop") {
266
+ return installerChange({ runtime: "codex", target, reason, status: "noop", action: outcome.action, message: outcome.message });
267
+ }
268
+ if (outcome.action === "conflict") {
269
+ return installerChange({
270
+ runtime: "codex",
271
+ target,
272
+ reason,
273
+ status: "blocked",
274
+ action: outcome.action,
275
+ message: outcome.message,
276
+ diff: outcome.diff,
277
+ });
278
+ }
279
+ return installerChange({
280
+ runtime: "codex",
281
+ target,
282
+ reason,
283
+ status: "pending",
284
+ action: outcome.action,
285
+ message: outcome.message,
286
+ newText: outcome.newText,
287
+ diff: outcome.diff,
288
+ });
289
+ }
290
+ function planCopilotInstallerChange() {
291
+ return null;
292
+ }
293
+ function summarizeInstaller(changes) {
294
+ const statuses = ["pending", "applied", "noop", "blocked", "failed"];
295
+ const summary = {};
296
+ for (const status of statuses)
297
+ summary[status] = 0;
298
+ for (const change of changes)
299
+ summary[change.status] += 1;
300
+ return summary;
301
+ }
302
+ export function buildInstallerPlan(report, opts) {
303
+ const changes = [];
304
+ const rootPath = report.installRoot?.path;
305
+ if (!rootPath || report.installRoot?.status === "fail") {
306
+ return {
307
+ schemaVersion: INSTALLER_SCHEMA_VERSION,
308
+ confirmed: opts.confirmed,
309
+ dryRun: opts.dryRun,
310
+ changes,
311
+ summary: summarizeInstaller(changes),
312
+ afterDoctor: null,
313
+ message: "installer requires a valid Agentera install root",
314
+ };
315
+ }
316
+ const installRoot = rootPath;
317
+ for (const runtime of opts.runtimes) {
318
+ const runtimeReport = report.runtimes[runtime];
319
+ let change = null;
320
+ if (runtime === "codex")
321
+ change = planCodexInstallerChange(installRoot, opts.home, runtimeReport);
322
+ else if (runtime === "copilot")
323
+ change = planCopilotInstallerChange();
324
+ if (change !== null)
325
+ changes.push(change);
326
+ }
327
+ return {
328
+ schemaVersion: INSTALLER_SCHEMA_VERSION,
329
+ confirmed: opts.confirmed,
330
+ dryRun: opts.dryRun,
331
+ changes,
332
+ summary: summarizeInstaller(changes),
333
+ afterDoctor: null,
334
+ message: changes.length === 0 ? "no installer changes needed" : "installer changes planned",
335
+ };
336
+ }
337
+ export function applyInstallerPlan(plan) {
338
+ for (const change of plan.changes) {
339
+ if (change.status !== "pending")
340
+ continue;
341
+ const target = change.target;
342
+ try {
343
+ fs.mkdirSync(path.dirname(target), { recursive: true });
344
+ fs.writeFileSync(target, change.newText, "utf8");
345
+ }
346
+ catch (exc) {
347
+ change.status = "failed";
348
+ change.message = `error writing ${target}: ${exc.message}`;
349
+ continue;
350
+ }
351
+ change.status = "applied";
352
+ change.message = `wrote ${target}: ${String(change.message).replaceAll("would ", "")}`;
353
+ }
354
+ plan.summary = summarizeInstaller(plan.changes);
355
+ }
356
+ export function doctorMain(argv = [], io = {}) {
357
+ const writeOut = io.out ?? ((text) => process.stdout.write(text));
358
+ const writeErr = io.err ?? ((text) => process.stderr.write(text));
359
+ const out = (line) => writeOut(line + "\n");
360
+ const env = io.env ?? process.env;
361
+ const args = {
362
+ installRoot: null,
363
+ home: null,
364
+ runtime: [],
365
+ smoke: false,
366
+ install: false,
367
+ yes: false,
368
+ dryRun: false,
369
+ allowLiveModel: false,
370
+ json: false,
371
+ };
372
+ const valueFlag = (a, name) => {
373
+ if (a === name)
374
+ return "__NEXT__";
375
+ if (a.startsWith(name + "="))
376
+ return a.slice(name.length + 1);
377
+ return null;
378
+ };
379
+ for (let i = 0; i < argv.length; i++) {
380
+ const a = argv[i];
381
+ let v;
382
+ if ((v = valueFlag(a, "--install-root")) !== null)
383
+ args.installRoot = v === "__NEXT__" ? argv[++i] : v;
384
+ else if ((v = valueFlag(a, "--home")) !== null)
385
+ args.home = v === "__NEXT__" ? argv[++i] : v;
386
+ else if ((v = valueFlag(a, "--runtime")) !== null) {
387
+ const rt = v === "__NEXT__" ? argv[++i] : v;
388
+ if (!RUNTIMES.includes(rt)) {
389
+ writeErr(`setup_doctor: error: argument --runtime: invalid choice: '${rt}'\n`);
390
+ return 2;
391
+ }
392
+ args.runtime.push(rt);
393
+ }
394
+ else if (a === "--smoke")
395
+ args.smoke = true;
396
+ else if (a === "--install")
397
+ args.install = true;
398
+ else if (a === "--yes")
399
+ args.yes = true;
400
+ else if (a === "--dry-run")
401
+ args.dryRun = true;
402
+ else if (a === "--allow-live-model")
403
+ args.allowLiveModel = true;
404
+ else if (a === "--json")
405
+ args.json = true;
406
+ else {
407
+ writeErr(`setup_doctor: error: unrecognized arguments: ${a}\n`);
408
+ return 2;
409
+ }
410
+ }
411
+ if (args.yes && !args.install) {
412
+ writeErr("setup_doctor: error: --yes requires --install\n");
413
+ return 2;
414
+ }
415
+ if (args.dryRun && !args.install) {
416
+ writeErr("setup_doctor: error: --dry-run requires --install\n");
417
+ return 2;
418
+ }
419
+ const runtimes = args.runtime.length > 0 ? args.runtime : RUNTIMES;
420
+ const sourceEnv = { ...env };
421
+ const home = resolvePath(expanduser(args.home ?? os.homedir()));
422
+ const report = buildReport({
423
+ installRoot: args.installRoot,
424
+ home,
425
+ env: sourceEnv,
426
+ runtimes,
427
+ runSmoke: args.smoke,
428
+ liveModelAllowed: args.allowLiveModel,
429
+ });
430
+ let installer = null;
431
+ if (args.install) {
432
+ installer = buildInstallerPlan(report, {
433
+ home,
434
+ env: sourceEnv,
435
+ runtimes,
436
+ confirmed: args.yes,
437
+ dryRun: args.dryRun,
438
+ });
439
+ if (args.yes) {
440
+ applyInstallerPlan(installer);
441
+ installer.afterDoctor = buildReport({
442
+ installRoot: args.installRoot,
443
+ home,
444
+ env: sourceEnv,
445
+ runtimes,
446
+ runSmoke: args.smoke,
447
+ liveModelAllowed: args.allowLiveModel,
448
+ });
449
+ }
450
+ }
451
+ if (args.json) {
452
+ const payload = installer !== null ? { doctor: report, installer: publicInstaller(installer) } : report;
453
+ out(pyJsonIndent(payload));
454
+ }
455
+ else {
456
+ out(renderHuman(report));
457
+ if (installer !== null) {
458
+ out("");
459
+ out(renderInstaller(installer));
460
+ }
461
+ }
462
+ if (installer === null)
463
+ return report.ok ? 0 : 1;
464
+ if (installer.summary.failed || installer.summary.blocked)
465
+ return 1;
466
+ if (installer.summary.pending && !args.dryRun && !args.yes)
467
+ return 1;
468
+ if (installer.afterDoctor !== null && installer.afterDoctor !== undefined && !installer.afterDoctor.ok)
469
+ return 1;
470
+ if (!report.ok && !(installer.summary.pending || installer.summary.applied))
471
+ return 1;
472
+ return 0;
473
+ }
474
+ //# sourceMappingURL=report.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.js","sourceRoot":"","sources":["../../../src/setup/doctor/report.ts"],"names":[],"mappings":"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"}