agentera 3.0.0-dev.25 → 3.0.0-dev.26

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 (270) hide show
  1. package/README.md +16 -20
  2. package/bundle/CHANGELOG.md +15 -25
  3. package/bundle/README.md +13 -34
  4. package/bundle/UPGRADE.md +71 -165
  5. package/bundle/references/adapters/package-manifest-interface-model.yaml +40 -241
  6. package/bundle/references/adapters/package-registry.yaml +0 -145
  7. package/bundle/references/adapters/package-surface-characterization.md +13 -38
  8. package/bundle/references/adapters/runtime-lifecycle-adapters.yaml +5 -219
  9. package/bundle/references/adapters/runtime-lifecycle-authority.yaml +2 -29
  10. package/bundle/references/adapters/runtime-lifecycle-operation-contract.yaml +1 -1
  11. package/bundle/references/artifacts/state-storage-authority.yaml +43 -447
  12. package/bundle/references/cli/agent-ready-state-contract.yaml +9 -9
  13. package/bundle/references/cli/app-lifecycle-vocabulary.yaml +3 -4
  14. package/bundle/references/cli/bundle-skill-vocabulary.yaml +9 -18
  15. package/bundle/references/cli/capability-tool-classification.yaml +2 -2
  16. package/bundle/references/cli/prime-consumer-compatibility.yaml +28 -98
  17. package/bundle/references/cli/routing-execution-vocabulary.yaml +4 -22
  18. package/bundle/references/cli/upgrade-repair-wording.md +8 -28
  19. package/bundle/references/cli/v3-handoff-manifest.schema.yaml +2 -3
  20. package/bundle/references/cli/vocabulary.md +18 -23
  21. package/bundle/references/meta/documentation-inventory.md +1 -1
  22. package/bundle/skills/agentera/schemas/artifacts/docs.yaml +3 -11
  23. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +1 -1
  24. package/dist/cli/capabilityContext/bespoke.js +8 -2
  25. package/dist/cli/capabilityContext/bespoke.js.map +1 -1
  26. package/dist/cli/capabilityContext/closeout.js +3 -3
  27. package/dist/cli/capabilityContext/closeout.js.map +1 -1
  28. package/dist/cli/capabilityContext/evidence.js +52 -40
  29. package/dist/cli/capabilityContext/evidence.js.map +1 -1
  30. package/dist/cli/capabilityContext/startup.js +1 -1
  31. package/dist/cli/capabilityContext/startup.js.map +1 -1
  32. package/dist/cli/commands/doctor.js +6 -64
  33. package/dist/cli/commands/doctor.js.map +1 -1
  34. package/dist/cli/commands/durability.js +12 -48
  35. package/dist/cli/commands/durability.js.map +1 -1
  36. package/dist/cli/commands/prime/briefOrientation.js +2 -19
  37. package/dist/cli/commands/prime/briefOrientation.js.map +1 -1
  38. package/dist/cli/commands/prime/bundleStatus.js +8 -2
  39. package/dist/cli/commands/prime/bundleStatus.js.map +1 -1
  40. package/dist/cli/commands/prime/collectEntityOrientation.js +27 -14
  41. package/dist/cli/commands/prime/collectEntityOrientation.js.map +1 -1
  42. package/dist/cli/commands/prime/collectOrientationState.js +31 -52
  43. package/dist/cli/commands/prime/collectOrientationState.js.map +1 -1
  44. package/dist/cli/commands/prime/orientationOutput.js +3 -11
  45. package/dist/cli/commands/prime/orientationOutput.js.map +1 -1
  46. package/dist/cli/commands/prime.js +0 -5
  47. package/dist/cli/commands/prime.js.map +1 -1
  48. package/dist/cli/commands/query.js +17 -49
  49. package/dist/cli/commands/query.js.map +1 -1
  50. package/dist/cli/commands/schema.js +19 -78
  51. package/dist/cli/commands/schema.js.map +1 -1
  52. package/dist/cli/commands/state/decisions.js +11 -57
  53. package/dist/cli/commands/state/decisions.js.map +1 -1
  54. package/dist/cli/commands/state/docs.js +56 -120
  55. package/dist/cli/commands/state/docs.js.map +1 -1
  56. package/dist/cli/commands/state/experimentRecords.js +22 -121
  57. package/dist/cli/commands/state/experimentRecords.js.map +1 -1
  58. package/dist/cli/commands/state/experiments.js +9 -75
  59. package/dist/cli/commands/state/experiments.js.map +1 -1
  60. package/dist/cli/commands/state/get.js +62 -143
  61. package/dist/cli/commands/state/get.js.map +1 -1
  62. package/dist/cli/commands/state/health.js +9 -123
  63. package/dist/cli/commands/state/health.js.map +1 -1
  64. package/dist/cli/commands/state/index.js +2 -2
  65. package/dist/cli/commands/state/index.js.map +1 -1
  66. package/dist/cli/commands/state/list.js +20 -36
  67. package/dist/cli/commands/state/list.js.map +1 -1
  68. package/dist/cli/commands/state/objective.js +19 -86
  69. package/dist/cli/commands/state/objective.js.map +1 -1
  70. package/dist/cli/commands/state/plan.js +9 -388
  71. package/dist/cli/commands/state/plan.js.map +1 -1
  72. package/dist/cli/commands/state/planTasks.js +58 -93
  73. package/dist/cli/commands/state/planTasks.js.map +1 -1
  74. package/dist/cli/commands/state/plans.js +13 -40
  75. package/dist/cli/commands/state/plans.js.map +1 -1
  76. package/dist/cli/commands/state/progress.js +10 -55
  77. package/dist/cli/commands/state/progress.js.map +1 -1
  78. package/dist/cli/commands/state/todo.js +24 -133
  79. package/dist/cli/commands/state/todo.js.map +1 -1
  80. package/dist/cli/commands/state/write.js +11 -33
  81. package/dist/cli/commands/state/write.js.map +1 -1
  82. package/dist/cli/commands/upgrade.js +48 -18
  83. package/dist/cli/commands/upgrade.js.map +1 -1
  84. package/dist/cli/commands/upgradeVerify.js +21 -15
  85. package/dist/cli/commands/upgradeVerify.js.map +1 -1
  86. package/dist/cli/commands/validate.js +1 -9
  87. package/dist/cli/commands/validate.js.map +1 -1
  88. package/dist/cli/dispatch/check.js +5 -12
  89. package/dist/cli/dispatch/check.js.map +1 -1
  90. package/dist/cli/dispatch/index.js +30 -29
  91. package/dist/cli/dispatch/index.js.map +1 -1
  92. package/dist/cli/dispatch/lifecycle.js +23 -40
  93. package/dist/cli/dispatch/lifecycle.js.map +1 -1
  94. package/dist/cli/help.js +20 -100
  95. package/dist/cli/help.js.map +1 -1
  96. package/dist/cli/migrationRequired.js +22 -19
  97. package/dist/cli/migrationRequired.js.map +1 -1
  98. package/dist/cli/orientation/attention.js +1 -97
  99. package/dist/cli/orientation/attention.js.map +1 -1
  100. package/dist/cli/stateQuery.js +1 -2
  101. package/dist/cli/stateQuery.js.map +1 -1
  102. package/dist/core/skillIdentity.js +24 -0
  103. package/dist/core/skillIdentity.js.map +1 -0
  104. package/dist/hooks/common.js +1 -1
  105. package/dist/hooks/common.js.map +1 -1
  106. package/dist/hooks/compaction/status.js +2 -1
  107. package/dist/hooks/compaction/status.js.map +1 -1
  108. package/dist/hooks/cursorSessionStart.js +4 -25
  109. package/dist/hooks/cursorSessionStart.js.map +1 -1
  110. package/dist/hooks/projectHookInput.js +26 -0
  111. package/dist/hooks/projectHookInput.js.map +1 -0
  112. package/dist/hooks/sessionStart.js +23 -239
  113. package/dist/hooks/sessionStart.js.map +1 -1
  114. package/dist/hooks/sessionStop.js +4 -12
  115. package/dist/hooks/sessionStop.js.map +1 -1
  116. package/dist/hooks/validateArtifact/traversal.js +1 -1
  117. package/dist/hooks/validateArtifact/traversal.js.map +1 -1
  118. package/dist/registries/artifactRegistry.js +2 -1
  119. package/dist/registries/artifactRegistry.js.map +1 -1
  120. package/dist/registries/packageRegistry.js +57 -231
  121. package/dist/registries/packageRegistry.js.map +1 -1
  122. package/dist/release/releaseMetadata.js +1 -13
  123. package/dist/release/releaseMetadata.js.map +1 -1
  124. package/dist/runtime/lifecycleAdapterContract.js +4 -4
  125. package/dist/runtime/lifecycleAdapterContract.js.map +1 -1
  126. package/dist/runtime/lifecycleAdapters.js +14 -2
  127. package/dist/runtime/lifecycleAdapters.js.map +1 -1
  128. package/dist/runtime/lifecycleAuthority.js +5 -43
  129. package/dist/runtime/lifecycleAuthority.js.map +1 -1
  130. package/dist/runtime/lifecycleOperationContract.js +3 -2
  131. package/dist/runtime/lifecycleOperationContract.js.map +1 -1
  132. package/dist/runtime/lifecyclePublication.js +21 -0
  133. package/dist/runtime/lifecyclePublication.js.map +1 -1
  134. package/dist/setup/opencode.js +20 -12
  135. package/dist/setup/opencode.js.map +1 -1
  136. package/dist/setup/sharedSkill.js +46 -0
  137. package/dist/setup/sharedSkill.js.map +1 -0
  138. package/dist/setup/smokeChecks.js +16 -43
  139. package/dist/setup/smokeChecks.js.map +1 -1
  140. package/dist/state/decisionEntities.js +7 -4
  141. package/dist/state/decisionEntities.js.map +1 -1
  142. package/dist/state/durability.js +4 -240
  143. package/dist/state/durability.js.map +1 -1
  144. package/dist/state/entityCutover.js +90 -186
  145. package/dist/state/entityCutover.js.map +1 -1
  146. package/dist/state/entityStorage.js +27 -8
  147. package/dist/state/entityStorage.js.map +1 -1
  148. package/dist/state/healthEntities.js +7 -4
  149. package/dist/state/healthEntities.js.map +1 -1
  150. package/dist/state/objectiveExperimentEntities.js +7 -5
  151. package/dist/state/objectiveExperimentEntities.js.map +1 -1
  152. package/dist/state/planEntities.js +14 -10
  153. package/dist/state/planEntities.js.map +1 -1
  154. package/dist/state/progressEntities.js +4 -2
  155. package/dist/state/progressEntities.js.map +1 -1
  156. package/dist/state/startupProjection.js +3 -2
  157. package/dist/state/startupProjection.js.map +1 -1
  158. package/dist/state/stateMode.js +7 -0
  159. package/dist/state/stateMode.js.map +1 -1
  160. package/dist/state/todoDocsEntities.js +6 -4
  161. package/dist/state/todoDocsEntities.js.map +1 -1
  162. package/dist/state/write/explain.js +1 -9
  163. package/dist/state/write/explain.js.map +1 -1
  164. package/dist/state/write/transaction.js +22 -532
  165. package/dist/state/write/transaction.js.map +1 -1
  166. package/dist/upgrade/appContentRefresh.js +43 -28
  167. package/dist/upgrade/appContentRefresh.js.map +1 -1
  168. package/dist/upgrade/doctor.js +5 -1
  169. package/dist/upgrade/doctor.js.map +1 -1
  170. package/dist/upgrade/installedHooksRetirement.js +46 -39
  171. package/dist/upgrade/installedHooksRetirement.js.map +1 -1
  172. package/dist/upgrade/legacyAgentCleanup.js +132 -32
  173. package/dist/upgrade/legacyAgentCleanup.js.map +1 -1
  174. package/dist/upgrade/lifecycleUpgrade.js +65 -378
  175. package/dist/upgrade/lifecycleUpgrade.js.map +1 -1
  176. package/dist/upgrade/migrateArtifactsV2ToV3.js +151 -52
  177. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +1 -1
  178. package/dist/upgrade/migrationPublication.js +123 -0
  179. package/dist/upgrade/migrationPublication.js.map +1 -0
  180. package/dist/upgrade/projectIntegration.js +46 -113
  181. package/dist/upgrade/projectIntegration.js.map +1 -1
  182. package/dist/upgrade/projectIntegrationDecision.js +6 -96
  183. package/dist/upgrade/projectIntegrationDecision.js.map +1 -1
  184. package/dist/upgrade/runtimeMigration.js +222 -402
  185. package/dist/upgrade/runtimeMigration.js.map +1 -1
  186. package/dist/upgrade/upgradeCommands.js +5 -4
  187. package/dist/upgrade/upgradeCommands.js.map +1 -1
  188. package/dist/upgrade/upgradeLock.js +73 -41
  189. package/dist/upgrade/upgradeLock.js.map +1 -1
  190. package/dist/upgrade/upgradeOrchestrator.js +91 -158
  191. package/dist/upgrade/upgradeOrchestrator.js.map +1 -1
  192. package/dist/upgrade/v3CapabilitySurface.js +2 -2
  193. package/dist/validate/appHomeContract.js +0 -4
  194. package/dist/validate/appHomeContract.js.map +1 -1
  195. package/package.json +7 -5
  196. package/bundle/.codex-plugin/plugin.json +0 -92
  197. package/bundle/.cursor/agents/agentera.md +0 -7
  198. package/bundle/.cursor/hooks.json +0 -32
  199. package/bundle/.cursor-plugin/plugin.json +0 -34
  200. package/bundle/.github/hooks/postToolUse.json +0 -9
  201. package/bundle/.github/hooks/preToolUse.json +0 -8
  202. package/bundle/.github/hooks/sessionEnd.json +0 -8
  203. package/bundle/.github/hooks/sessionStart.json +0 -8
  204. package/bundle/.github/plugin/plugin.json +0 -7
  205. package/bundle/.opencode/agents/agentera.md +0 -12
  206. package/bundle/.opencode/commands/agentera.md +0 -5
  207. package/bundle/.opencode/package.json +0 -31
  208. package/bundle/.opencode/plugins/agentera.js +0 -820
  209. package/bundle/agents/openai.yaml +0 -87
  210. package/bundle/hooks/codex-hooks.json +0 -31
  211. package/bundle/hooks/codex-plugin-hooks.json +0 -31
  212. package/bundle/plugin.json +0 -13
  213. package/bundle/references/adapters/cursor.md +0 -224
  214. package/bundle/references/adapters/opencode.md +0 -529
  215. package/bundle/references/adapters/runtime-adapter-characterization.md +0 -44
  216. package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
  217. package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -387
  218. package/bundle/references/adapters/runtime-feature-parity.md +0 -129
  219. package/dist/cli/commands/backfill.js +0 -231
  220. package/dist/cli/commands/backfill.js.map +0 -1
  221. package/dist/cli/commands/migrate.js +0 -681
  222. package/dist/cli/commands/migrate.js.map +0 -1
  223. package/dist/registries/runtimeAdapterRegistry.js +0 -324
  224. package/dist/registries/runtimeAdapterRegistry.js.map +0 -1
  225. package/dist/setup/copilot.js +0 -227
  226. package/dist/setup/copilot.js.map +0 -1
  227. package/dist/setup/cursor.js +0 -129
  228. package/dist/setup/cursor.js.map +0 -1
  229. package/dist/setup/cursorSurfaces.js +0 -67
  230. package/dist/setup/cursorSurfaces.js.map +0 -1
  231. package/dist/setup/doctor/core.js +0 -296
  232. package/dist/setup/doctor/core.js.map +0 -1
  233. package/dist/setup/doctor/diagnostics.js +0 -201
  234. package/dist/setup/doctor/diagnostics.js.map +0 -1
  235. package/dist/setup/doctor/opencode.js +0 -301
  236. package/dist/setup/doctor/opencode.js.map +0 -1
  237. package/dist/setup/doctor/report.js +0 -425
  238. package/dist/setup/doctor/report.js.map +0 -1
  239. package/dist/setup/doctor.js +0 -10
  240. package/dist/setup/doctor.js.map +0 -1
  241. package/dist/state/gitBackfill.js +0 -561
  242. package/dist/state/gitBackfill.js.map +0 -1
  243. package/dist/state/gitBackfillAuthority.js +0 -141
  244. package/dist/state/gitBackfillAuthority.js.map +0 -1
  245. package/dist/state/gitBackfillHistory.js +0 -278
  246. package/dist/state/gitBackfillHistory.js.map +0 -1
  247. package/dist/state/gitBackfillOutput.js +0 -209
  248. package/dist/state/gitBackfillOutput.js.map +0 -1
  249. package/dist/state/legacyMigration.js +0 -516
  250. package/dist/state/legacyMigration.js.map +0 -1
  251. package/dist/state/legacyMigrationParser.js +0 -489
  252. package/dist/state/legacyMigrationParser.js.map +0 -1
  253. package/dist/state/migrationAuthority.js +0 -413
  254. package/dist/state/migrationAuthority.js.map +0 -1
  255. package/dist/state/migrationEnrichment.js +0 -35
  256. package/dist/state/migrationEnrichment.js.map +0 -1
  257. package/dist/state/projectionRecovery.js +0 -458
  258. package/dist/state/projectionRecovery.js.map +0 -1
  259. package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -568
  260. package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
  261. package/dist/validate/lifecycleAdapters/legacyPythonParity.js +0 -93
  262. package/dist/validate/lifecycleAdapters/legacyPythonParity.js.map +0 -1
  263. package/dist/validate/lifecycleAdapters/lifecycleMain.js +0 -154
  264. package/dist/validate/lifecycleAdapters/lifecycleMain.js.map +0 -1
  265. package/dist/validate/lifecycleAdapters/nodeFormChecks.js +0 -481
  266. package/dist/validate/lifecycleAdapters/nodeFormChecks.js.map +0 -1
  267. package/dist/validate/lifecycleAdapters/shared.js +0 -198
  268. package/dist/validate/lifecycleAdapters/shared.js.map +0 -1
  269. package/dist/validate/lifecycleAdapters.js +0 -10
  270. package/dist/validate/lifecycleAdapters.js.map +0 -1
@@ -1,129 +0,0 @@
1
- import fs from "node:fs";
2
- import path from "node:path";
3
- import { isFile, pathExists, resolvePath } from "../core/paths.js";
4
- import { findExistingCursorHooks, formatCursorProbePaths, resolveCursorProject } from "./cursorSurfaces.js";
5
- import { SETUP_EVIDENCE, classifyResolvedRoot } from "../state/installRoot.js";
6
- export const MANAGED_KEY = "AGENTERA_HOME";
7
- export const MARKER_COMMENT = `# agentera: ${MANAGED_KEY} (managed)`;
8
- const ENV_FALLBACKS = ["AGENTERA_HOME"];
9
- export class InstallRootError extends Error {
10
- constructor(message) {
11
- super(message);
12
- this.name = "InstallRootError";
13
- }
14
- }
15
- export function verifyInstallRoot(root) {
16
- const classification = classifyResolvedRoot(root, { source: "explicit" });
17
- if (classification.kind === "managed_fresh") {
18
- return [];
19
- }
20
- return SETUP_EVIDENCE.filter((entry) => !pathExists(path.join(root, entry)));
21
- }
22
- export function autoDetectInstallRoot(start = null, env = process.env) {
23
- for (const variable of ENV_FALLBACKS) {
24
- const candidate = env[variable];
25
- if (candidate) {
26
- const p = resolvePath(candidate);
27
- if (verifyInstallRoot(p).length === 0) {
28
- return p;
29
- }
30
- }
31
- }
32
- const startDir = start === null ? process.cwd() : start;
33
- let current = resolvePath(startDir);
34
- for (;;) {
35
- if (verifyInstallRoot(current).length === 0) {
36
- return current;
37
- }
38
- const parent = path.dirname(current);
39
- if (parent === current) {
40
- return null;
41
- }
42
- current = parent;
43
- }
44
- }
45
- export function resolveInstallRoot(explicit, env = process.env) {
46
- if (explicit !== null && explicit !== undefined) {
47
- const root = resolvePath(explicit);
48
- if (classifyResolvedRoot(root, { source: "explicit" }).kind !== "managed_fresh") {
49
- const missing = verifyInstallRoot(root);
50
- throw new InstallRootError(`--install-root ${root} is not a valid Agentera directory: ` +
51
- `missing canonical entries: ${missing.join(", ")}`);
52
- }
53
- return root;
54
- }
55
- const detected = autoDetectInstallRoot(null, env);
56
- if (detected === null) {
57
- throw new InstallRootError("could not auto-detect the Agentera directory; pass --install-root PATH");
58
- }
59
- return detected;
60
- }
61
- function rcPaths(home) {
62
- return [
63
- path.join(home, ".bashrc"),
64
- path.join(home, ".zshrc"),
65
- path.join(home, ".config", "fish", "config.fish"),
66
- ];
67
- }
68
- function findMarker(text) {
69
- for (const line of text.split(/\r\n|\r|\n/)) {
70
- if (line.trim() === MARKER_COMMENT) {
71
- return line;
72
- }
73
- }
74
- return null;
75
- }
76
- export function diagnose(installRoot, home, env = process.env) {
77
- const checks = [];
78
- const envValue = env[MANAGED_KEY];
79
- if (envValue) {
80
- checks.push({
81
- name: MANAGED_KEY,
82
- status: resolvePath(envValue) === resolvePath(installRoot) ? "pass" : "warn",
83
- message: `${MANAGED_KEY}=${envValue}`,
84
- });
85
- }
86
- else {
87
- checks.push({
88
- name: MANAGED_KEY,
89
- status: "warn",
90
- message: `${MANAGED_KEY} is unset in this process; Cursor sessionStart hook ` +
91
- "should export it for IDE sessions",
92
- });
93
- }
94
- const project = resolveCursorProject(env);
95
- const hooksPath = findExistingCursorHooks(project, home);
96
- if (hooksPath) {
97
- checks.push({ name: "cursor.hooks", status: "pass", message: hooksPath });
98
- }
99
- else {
100
- checks.push({
101
- name: "cursor.hooks",
102
- status: "fail",
103
- message: `missing project or user .cursor/hooks.json (${formatCursorProbePaths(project, home, "hooks.json")})`,
104
- });
105
- }
106
- for (const rc of rcPaths(home)) {
107
- if (!isFile(rc)) {
108
- continue;
109
- }
110
- const text = fs.readFileSync(rc, "utf8");
111
- if (findMarker(text)) {
112
- checks.push({
113
- name: `rc.${path.basename(rc)}`,
114
- status: "warn",
115
- message: `legacy managed ${MANAGED_KEY} marker found in ${rc}; Agentera will not edit it automatically`,
116
- });
117
- }
118
- }
119
- const overall = checks.some((item) => item.status === "fail") ? "fail" : "pass";
120
- return {
121
- runtime: "cursor",
122
- status: overall,
123
- install_root: installRoot,
124
- checks,
125
- guidance: "Prefer Cursor sessionStart env export. Use per-invocation " +
126
- `export ${MANAGED_KEY}=${installRoot} for cursor-agent when shell smoke fails.`,
127
- };
128
- }
129
- //# sourceMappingURL=cursor.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/setup/cursor.ts"],"names":[],"mappings":"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"}
@@ -1,67 +0,0 @@
1
- import fs from "node:fs";
2
- import path from "node:path";
3
- import { expanduser, isFile, pathExists, resolvePath } from "../core/paths.js";
4
- export const CURSOR_MANAGED_AGENT = "agentera.md";
5
- export function resolveCursorProject(env = process.env) {
6
- const explicit = env.AGENTERA_PROJECT;
7
- return resolvePath(expanduser(explicit ?? process.cwd()));
8
- }
9
- export function cursorHooksCandidates(project, home) {
10
- return [
11
- path.join(project, ".cursor", "hooks.json"),
12
- path.join(home, ".cursor", "hooks.json"),
13
- ];
14
- }
15
- export function cursorAgentsCandidates(project, home) {
16
- return [
17
- path.join(project, ".cursor", "agents"),
18
- path.join(home, ".cursor", "agents"),
19
- ];
20
- }
21
- export function findExistingCursorHooks(project, home) {
22
- for (const candidate of cursorHooksCandidates(project, home)) {
23
- if (isFile(candidate))
24
- return candidate;
25
- }
26
- return null;
27
- }
28
- /** Human-readable probe locations for doctor failure messages. */
29
- export function formatCursorProbePaths(project, home, leaf) {
30
- const projectLabel = path.join(project, ".cursor", leaf);
31
- const userLabel = path.join(home, ".cursor", leaf);
32
- return `${projectLabel} and ${userLabel}`;
33
- }
34
- export function hasAgenteraHookReferences(text) {
35
- const v2 = text.includes("cursor_session_start.py") && text.includes("cursor_pre_tool_use.py");
36
- const v3 = text.includes("hook cursor-session-start") && text.includes("hook cursor-pre-tool-use");
37
- return v2 || v3;
38
- }
39
- function globCursorAgentMdFiles(dir) {
40
- let entries;
41
- try {
42
- entries = fs.readdirSync(dir);
43
- }
44
- catch {
45
- return [];
46
- }
47
- return entries.filter((entry) => entry.endsWith(".md") && isFile(path.join(dir, entry))).sort();
48
- }
49
- export function findCursorAgentsSurface(project, home) {
50
- for (const dir of cursorAgentsCandidates(project, home)) {
51
- if (!pathExists(dir))
52
- continue;
53
- const managed = globCursorAgentMdFiles(dir);
54
- const hasManagedAgent = isFile(path.join(dir, CURSOR_MANAGED_AGENT));
55
- if (hasManagedAgent || managed.length > 0) {
56
- return { dir, managed, hasManagedAgent };
57
- }
58
- }
59
- return { dir: null, managed: [], hasManagedAgent: false };
60
- }
61
- export const V3_CURSOR_HOOKS_FIXTURE = JSON.stringify({
62
- hooks: {
63
- sessionStart: [{ command: "npx -y agentera@next hook cursor-session-start" }],
64
- preToolUse: [{ command: "npx -y agentera@next hook cursor-pre-tool-use", matcher: "Write|Edit" }],
65
- },
66
- });
67
- //# sourceMappingURL=cursorSurfaces.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cursorSurfaces.js","sourceRoot":"","sources":["../../src/setup/cursorSurfaces.ts"],"names":[],"mappings":"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"}
@@ -1,296 +0,0 @@
1
- import fs from "node:fs";
2
- import { fileURLToPath } from "node:url";
3
- import path from "node:path";
4
- import { expanduser, isFile, pathExists, resolvePath } from "../../core/paths.js";
5
- import { SETUP_EVIDENCE, classifyResolvedRoot, } from "../../state/installRoot.js";
6
- import { loadRegistry } from "../../registries/runtimeAdapterRegistry.js";
7
- export const SCHEMA_VERSION = "agentera.setupDoctor.v1";
8
- export const STATUSES = ["pass", "warn", "fail", "skip"];
9
- const REGISTRY = loadRegistry();
10
- export const DOCTOR_RUNTIME_VIEWS = Object.fromEntries(REGISTRY.adapterIds.map((runtime) => [runtime, REGISTRY.consumerView("doctor", runtime)]));
11
- export const RUNTIMES = REGISTRY.adapterIds;
12
- export const WRITABLE_RUNTIMES = ["copilot", "codex"];
13
- export const RUNTIME_BINARIES = Object.fromEntries(RUNTIMES.map((runtime) => [runtime, DOCTOR_RUNTIME_VIEWS[runtime].host_detection.binary_names[0]]));
14
- export { OPENCODE_SKILL_NAMES } from "../opencodeConstants.js";
15
- export const CANONICAL_ENTRIES = SETUP_EVIDENCE;
16
- // Self-contained model: runtime hooks invoke the bundled CLI (npx -y agentera
17
- // hook <name>); there are no per-install helper script files to verify.
18
- export const HELPER_ENTRIES = [];
19
- export const SMOKE_TIMEOUT_SECONDS = 30;
20
- export const ENV_FALLBACKS = ["AGENTERA_HOME"];
21
- export const COPILOT_MARKER = "# agentera: AGENTERA_HOME (managed)";
22
- export const INSTALLER_SCHEMA_VERSION = "agentera.setupInstaller.v1";
23
- export const SUPPORT_PATH_RE = /(?<![\w/.$-])(?<path>references\/[A-Za-z0-9][A-Za-z0-9_./-]*)/;
24
- // ── registry-view accessors (mirror the Python helpers) ─────────────
25
- export function diagnosticCheckNames(runtime) {
26
- return DOCTOR_RUNTIME_VIEWS[runtime].diagnostics.check_names; // cast: parsed registry IO data
27
- }
28
- export function diagnosticMessages(runtime) {
29
- return DOCTOR_RUNTIME_VIEWS[runtime].diagnostics.primary_messages; // cast: parsed registry IO data
30
- }
31
- export function diagnosticStatusLabels(runtime) {
32
- return DOCTOR_RUNTIME_VIEWS[runtime].diagnostics.status_labels; // cast: parsed registry IO data
33
- }
34
- export function diagnosticGapLabels(runtime) {
35
- return DOCTOR_RUNTIME_VIEWS[runtime].diagnostics.gap_labels; // cast: parsed registry IO data
36
- }
37
- export function availabilityProbeLabel(runtime) {
38
- return String(DOCTOR_RUNTIME_VIEWS[runtime].host_detection.availability_probe_label); // cast: parsed registry IO data
39
- }
40
- export const AVAILABILITY_CHECKS = Object.fromEntries(RUNTIMES.map((rt) => [rt, availabilityProbeLabel(rt)]));
41
- export const PASS_STATUSES = Object.fromEntries(RUNTIMES.map((rt) => [rt, diagnosticStatusLabels(rt)[0]]));
42
- export const WARN_STATUSES = Object.fromEntries(RUNTIMES.map((rt) => [rt, diagnosticStatusLabels(rt)[1]]));
43
- export const FAIL_STATUSES = Object.fromEntries(RUNTIMES.map((rt) => [rt, diagnosticStatusLabels(rt)[2]]));
44
- export const SKIP_STATUSES = Object.fromEntries(RUNTIMES.map((rt) => [rt, diagnosticStatusLabels(rt)[3]]));
45
- export const USER_ENVIRONMENT_GAPS = Object.fromEntries(RUNTIMES.map((rt) => [rt, diagnosticGapLabels(rt)[1]]));
46
- export const RUNTIME_CONFIG_GAPS = Object.fromEntries(RUNTIMES.map((rt) => [rt, diagnosticGapLabels(rt)[0]]));
47
- export const INSTALLER_FIXABLE_GAPS = {
48
- copilot: [RUNTIME_CONFIG_GAPS.copilot, USER_ENVIRONMENT_GAPS.copilot],
49
- codex: [RUNTIME_CONFIG_GAPS.codex, USER_ENVIRONMENT_GAPS.codex],
50
- };
51
- // ── install-root classification ─────────────────────────────────────
52
- export function verifyInstallRoot(root) {
53
- const classification = classifyResolvedRoot(root, { source: "explicit" });
54
- if (classification.kind === "managed_fresh")
55
- return [];
56
- return SETUP_EVIDENCE.filter((entry) => !pathExists(path.join(root, entry)));
57
- }
58
- export function verifyHelperAccess(root) {
59
- return HELPER_ENTRIES.filter((entry) => !isFile(path.join(root, entry)));
60
- }
61
- function moduleDir() {
62
- try {
63
- return path.dirname(fileURLToPath(import.meta.url));
64
- }
65
- catch {
66
- return process.cwd();
67
- }
68
- }
69
- export function autoDetectInstallRoot(env, start = null) {
70
- for (const variable of ENV_FALLBACKS) {
71
- const value = env[variable];
72
- if (value) {
73
- const candidate = resolvePath(value);
74
- if (verifyInstallRoot(candidate).length === 0)
75
- return candidate;
76
- }
77
- }
78
- let current = resolvePath(start ?? moduleDir());
79
- for (;;) {
80
- if (verifyInstallRoot(current).length === 0)
81
- return current;
82
- const parent = path.dirname(current);
83
- if (parent === current)
84
- return null;
85
- current = parent;
86
- }
87
- }
88
- function setupMissing(root) {
89
- return SETUP_EVIDENCE.filter((entry) => !pathExists(path.join(root, entry)));
90
- }
91
- export function classifyInstallRoot(explicitRoot, env) {
92
- const source = explicitRoot !== null ? "argument" : "auto";
93
- const root = explicitRoot !== null ? resolvePath(expanduser(explicitRoot)) : autoDetectInstallRoot(env);
94
- if (root === null) {
95
- return {
96
- status: "fail",
97
- path: null,
98
- source,
99
- kind: null,
100
- gap: "user_environment",
101
- message: "could not resolve an Agentera install root; pass --install-root or set AGENTERA_HOME",
102
- missing: [...SETUP_EVIDENCE],
103
- };
104
- }
105
- const classification = classifyResolvedRoot(root, { source: explicitRoot !== null ? "explicit" : "default" });
106
- if (classification.kind !== "managed_fresh") {
107
- return {
108
- status: "fail",
109
- path: root,
110
- source,
111
- kind: null,
112
- gap: "bundle_packaging",
113
- message: "install root is missing canonical Agentera entries",
114
- missing: setupMissing(root),
115
- };
116
- }
117
- const helperMissing = verifyHelperAccess(root);
118
- const status = helperMissing.length === 0 ? "pass" : "fail";
119
- return {
120
- status,
121
- path: root,
122
- source,
123
- kind: pathExists(path.join(root, ".git")) ? "local-clone" : "installed-bundle",
124
- gap: status === "pass" ? null : "bundle_packaging",
125
- message: status === "pass"
126
- ? "install root is valid"
127
- : "install root is valid but shared helper scripts are missing",
128
- missing: helperMissing,
129
- };
130
- }
131
- // ── generic check / aggregation helpers ─────────────────────────────
132
- export function mkCheck(name, status, message, opts = {}) {
133
- return {
134
- name,
135
- status,
136
- message,
137
- source: opts.source ?? null,
138
- path: opts.path ?? null,
139
- gap: opts.gap ?? null,
140
- details: opts.details ?? [],
141
- };
142
- }
143
- export function aggregateStatus(checks) {
144
- const statuses = checks.map((c) => c.status);
145
- if (statuses.length > 0 && statuses.every((s) => s === "skip"))
146
- return "skip";
147
- if (statuses.includes("fail"))
148
- return "fail";
149
- if (statuses.includes("warn"))
150
- return "warn";
151
- if (statuses.includes("pass"))
152
- return "pass";
153
- return "skip";
154
- }
155
- export function summarizeStatuses(items) {
156
- const counts = {};
157
- for (const status of STATUSES)
158
- counts[status] = 0;
159
- const values = Array.isArray(items) ? items : Object.values(items);
160
- for (const item of values)
161
- counts[String(item.status)] += 1;
162
- return counts;
163
- }
164
- export function tail(text, limit = 5) {
165
- const lines = text.split(/\r\n|\r|\n/).filter((line) => line.trim());
166
- return lines.slice(-limit);
167
- }
168
- import { classifyResolvedRoot as _classifyResolvedRoot } from "../../state/installRoot.js";
169
- function rootClassification(root, source) {
170
- return _classifyResolvedRoot(root, { source });
171
- }
172
- /** shutil.which: first PATH entry whose `${dir}/${cmd}` is an executable file. */
173
- export function which(cmd, pathStr) {
174
- const accessCheck = (fn) => {
175
- try {
176
- const st = fs.statSync(fn);
177
- if (st.isDirectory())
178
- return false;
179
- fs.accessSync(fn, fs.constants.X_OK);
180
- return true;
181
- }
182
- catch {
183
- return false;
184
- }
185
- };
186
- if (cmd.includes("/")) {
187
- return accessCheck(cmd) ? cmd : null;
188
- }
189
- const entries = (pathStr ?? "").split(path.delimiter);
190
- const seen = new Set();
191
- for (const dir of entries) {
192
- if (!dir || seen.has(dir))
193
- continue;
194
- seen.add(dir);
195
- const fn = path.join(dir, cmd);
196
- if (accessCheck(fn))
197
- return fn;
198
- }
199
- return null;
200
- }
201
- export function runtimeSkip(runtime, env) {
202
- const binary = RUNTIME_BINARIES[runtime];
203
- return {
204
- runtime,
205
- status: SKIP_STATUSES[runtime],
206
- available: false,
207
- binary: null,
208
- checks: [
209
- mkCheck(AVAILABILITY_CHECKS[runtime], SKIP_STATUSES[runtime], `${binary} executable not found on PATH`, {
210
- source: "PATH",
211
- gap: USER_ENVIRONMENT_GAPS[runtime],
212
- details: [env.PATH ?? ""],
213
- }),
214
- ],
215
- };
216
- }
217
- export function configuredRootCheck(runtime, name, candidate, installRoot, source) {
218
- const classification = rootClassification(candidate, "environment");
219
- if (String(classification.kind).startsWith("missing_")) {
220
- return mkCheck(name, FAIL_STATUSES[runtime], "configured Agentera root does not exist", {
221
- source,
222
- path: candidate,
223
- gap: RUNTIME_CONFIG_GAPS[runtime],
224
- });
225
- }
226
- if (classification.kind !== "managed_fresh") {
227
- return mkCheck(name, FAIL_STATUSES[runtime], "configured Agentera root is not a valid suite bundle", {
228
- source,
229
- path: candidate,
230
- gap: "bundle_packaging",
231
- details: setupMissing(candidate),
232
- });
233
- }
234
- const helperMissing = verifyHelperAccess(candidate);
235
- if (helperMissing.length > 0) {
236
- return mkCheck(name, FAIL_STATUSES[runtime], "configured Agentera root cannot reach shared helper scripts", {
237
- source,
238
- path: candidate,
239
- gap: "bundle_packaging",
240
- details: helperMissing,
241
- });
242
- }
243
- if (resolvePath(candidate) !== resolvePath(installRoot)) {
244
- return mkCheck(name, WARN_STATUSES[runtime], "runtime points at a different valid Agentera install root", {
245
- source,
246
- path: candidate,
247
- gap: RUNTIME_CONFIG_GAPS[runtime],
248
- });
249
- }
250
- return mkCheck(name, PASS_STATUSES[runtime], HELPER_ACCESS_MESSAGE, { source, path: candidate });
251
- }
252
- export function binaryPath(runtime, env) {
253
- return which(RUNTIME_BINARIES[runtime], env.PATH);
254
- }
255
- export function runtimeHostPathProblem(runtime, env) {
256
- const binary = RUNTIME_BINARIES[runtime];
257
- for (const entry of (env.PATH ?? "").split(path.delimiter)) {
258
- if (!entry)
259
- continue;
260
- const candidate = path.join(entry, binary);
261
- try {
262
- if (fs.statSync(candidate).isDirectory()) {
263
- return [candidate, `${binary} PATH candidate is a directory, not an executable`];
264
- }
265
- }
266
- catch {
267
- /* not present */
268
- }
269
- if (pathExists(candidate)) {
270
- try {
271
- fs.accessSync(candidate, fs.constants.X_OK);
272
- }
273
- catch {
274
- return [candidate, `${binary} PATH candidate is not executable`];
275
- }
276
- }
277
- }
278
- return null;
279
- }
280
- export function runtimeResult(runtime, env, checks) {
281
- const binary = binaryPath(runtime, env);
282
- if (binary === null)
283
- return runtimeSkip(runtime, env);
284
- const binaryCheck = mkCheck(AVAILABILITY_CHECKS[runtime], PASS_STATUSES[runtime], `${RUNTIME_BINARIES[runtime]} executable found`, { source: "PATH", path: binary });
285
- const allChecks = [binaryCheck, ...checks];
286
- return {
287
- runtime,
288
- status: aggregateStatus(allChecks),
289
- available: true,
290
- binary,
291
- checks: allChecks,
292
- };
293
- }
294
- // HELPER_ACCESS_MESSAGE mirrors COPILOT_HELPER_MESSAGE (registry-derived).
295
- export const HELPER_ACCESS_MESSAGE = diagnosticMessages("copilot")[0];
296
- //# sourceMappingURL=core.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/setup/doctor/core.ts"],"names":[],"mappings":"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"}