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,122 @@
1
+ import crypto from "node:crypto";
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+ import { loadYamlMapping } from "../../core/yaml.js";
5
+ import { resolveSourceRoot } from "../../core/sourceRoot.js";
6
+ export const TRANSCRIPT_KEYS = new Set([
7
+ "content",
8
+ "text",
9
+ "prompt",
10
+ "message",
11
+ "preceding_context",
12
+ "input_text",
13
+ "output_text",
14
+ "transcript",
15
+ ]);
16
+ export const SESSION_KEYS = new Set(["session_id", "sessionID", "sessionId", "conversation_id"]);
17
+ export const PATH_KEYS = new Set(["path", "project_path", "store_path", "file_path", "cwd", "report_path"]);
18
+ export function contractPath(root = resolveSourceRoot()) {
19
+ return path.join(root, "references", "analysis", "startup-measurement-contract.yaml");
20
+ }
21
+ export function loadContract(p = contractPath()) {
22
+ return loadYamlMapping(fs.readFileSync(p, "utf8"));
23
+ }
24
+ export function hashLabel(kind, value, salt) {
25
+ if (!salt) {
26
+ throw new Error("salt is required for private labels");
27
+ }
28
+ const digest = crypto
29
+ .createHash("sha256")
30
+ .update(`${salt}\0${pyStr(value)}`, "utf8")
31
+ .digest("hex")
32
+ .slice(0, 16);
33
+ return `${kind}:${digest}`;
34
+ }
35
+ /** Approximate Python str() for the scalar/id values hashLabel receives. */
36
+ function pyStr(value) {
37
+ if (value === null)
38
+ return "None";
39
+ if (value === undefined)
40
+ return "None";
41
+ if (value === true)
42
+ return "True";
43
+ if (value === false)
44
+ return "False";
45
+ return String(value);
46
+ }
47
+ const FALLBACK_ARTIFACT_LABELS = [
48
+ [".agentera/plan.yaml", "plan"],
49
+ [".agentera/progress.yaml", "progress"],
50
+ [".agentera/docs.yaml", "docs"],
51
+ [".agentera/decisions.yaml", "decisions"],
52
+ [".agentera/health.yaml", "health"],
53
+ [".agentera/vision.yaml", "vision"],
54
+ [".agentera/objective.yaml", "objective"],
55
+ [".agentera/experiments.yaml", "experiments"],
56
+ ];
57
+ export function canonicalArtifactLabel(value, contract = null) {
58
+ const text = String(value).replace(/\\/g, "/");
59
+ const loaded = contract ?? loadContract();
60
+ const labels = (loaded.privacy_boundary ?? {}).canonical_artifact_labels;
61
+ if (labels && typeof labels === "object" && !Array.isArray(labels)) {
62
+ for (const [suffix, label] of Object.entries(labels)) {
63
+ const normalized = String(suffix).replace(/\\/g, "/");
64
+ if (text === normalized || text.endsWith("/" + normalized) || text.includes(normalized)) {
65
+ return String(label);
66
+ }
67
+ }
68
+ }
69
+ for (const [suffix, label] of FALLBACK_ARTIFACT_LABELS) {
70
+ if (text === suffix || text.endsWith("/" + suffix) || text.includes(suffix)) {
71
+ return label;
72
+ }
73
+ }
74
+ if (text.includes(".agentera/")) {
75
+ return "AGENTERA_ARTIFACTS";
76
+ }
77
+ return null;
78
+ }
79
+ export function redactForStartupOutput(value, salt, contract = null) {
80
+ const loaded = contract ?? loadContract();
81
+ if (Array.isArray(value)) {
82
+ return value.map((item) => redactForStartupOutput(item, salt, loaded));
83
+ }
84
+ if (value === null || typeof value !== "object") {
85
+ return value;
86
+ }
87
+ const redacted = {};
88
+ for (const [key, item] of Object.entries(value)) {
89
+ const keyText = String(key);
90
+ if (TRANSCRIPT_KEYS.has(keyText)) {
91
+ redacted[keyText] = "<redacted:transcript_text>";
92
+ }
93
+ else if (SESSION_KEYS.has(keyText)) {
94
+ redacted[keyText] = hashLabel("session", item, salt);
95
+ }
96
+ else if (PATH_KEYS.has(keyText)) {
97
+ const label = canonicalArtifactLabel(item, loaded);
98
+ redacted[keyText] = label || hashLabel("path", item, salt);
99
+ }
100
+ else {
101
+ redacted[keyText] = redactForStartupOutput(item, salt, loaded);
102
+ }
103
+ }
104
+ return redacted;
105
+ }
106
+ // --- Timestamp helpers -----------------------------------------------------
107
+ export function parseTimestamp(value) {
108
+ if (typeof value !== "string" || !value) {
109
+ return null;
110
+ }
111
+ const text = value.replace("Z", "+00:00");
112
+ const ms = Date.parse(text);
113
+ return Number.isNaN(ms) ? null : new Date(ms);
114
+ }
115
+ export function formatTimestamp(value) {
116
+ if (value === null) {
117
+ return null;
118
+ }
119
+ // ISO 8601 UTC, seconds precision (mirrors Python isoformat(timespec="seconds")).
120
+ return value.toISOString().replace(/\.\d{3}Z$/, "+00:00");
121
+ }
122
+ //# sourceMappingURL=contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../../../src/state/startupAnalysis/contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,332 @@
1
+ import { hashLabel } from "./contract.js";
2
+ export const CLI_COMMAND_ARTIFACTS = {
3
+ plan: new Set(["plan"]),
4
+ progress: new Set(["progress"]),
5
+ health: new Set(["health"]),
6
+ todo: new Set(["todo"]),
7
+ decisions: new Set(["decisions"]),
8
+ docs: new Set(["docs"]),
9
+ objective: new Set(["objective"]),
10
+ experiments: new Set(["experiments"]),
11
+ hej: new Set(["plan", "progress", "health", "todo", "docs", "decisions"]),
12
+ prime: new Set(["plan", "progress", "health", "todo", "docs", "decisions", "changelog"]),
13
+ };
14
+ export const QUERY_ARTIFACTS = {
15
+ plan: "plan",
16
+ progress: "progress",
17
+ health: "health",
18
+ todo: "todo",
19
+ decisions: "decisions",
20
+ docs: "docs",
21
+ vision: "vision",
22
+ objective: "objective",
23
+ experiments: "experiments",
24
+ };
25
+ const PRIMARY_ROUTE_TO_CAPABILITY = {
26
+ build: "realisera",
27
+ plan: "planera",
28
+ status: "hej",
29
+ discuss: "resonera",
30
+ research: "inspirera",
31
+ optimize: "optimera",
32
+ audit: "inspektera",
33
+ document: "dokumentera",
34
+ profile: "profilera",
35
+ design: "visualisera",
36
+ orchestrate: "orkestrera",
37
+ vision: "visionera",
38
+ };
39
+ const CAPABILITIES_WITH_HEJ = new Set([...Object.values(PRIMARY_ROUTE_TO_CAPABILITY), "hej"]);
40
+ const MARKER_RE = /─{2,}\s+(\S)\s+([a-z]+era|hej)\s+·\s+([a-z]+(?:\s+\d+)?)\s+─{2,}/g;
41
+ const BARE_AGENTERA_ROUTE_RE = /^\s*\/agentera(?:\s+([A-Za-z0-9._:-]+))?/m;
42
+ const BARE_CAPABILITY_ROUTE_RE = /^\s*\/([a-z]+era|hej)(?:\s|$)/m;
43
+ const XML_ROUTE_RE = /<command-name>\s*\/(?:agentera\s+)?([A-Za-z0-9._:-]+)\s*<\/command-name>/;
44
+ export const THRESHOLD_WARNING_PATTERNS = [
45
+ [
46
+ "self_audit",
47
+ "verbosity",
48
+ "self_audit.verbosity",
49
+ /verbosity(?: mismatch)?|exceeds(?: the)?(?: advisory| compact)?(?: prose| word| entry)? budget|\b\d+\s+words?\s+exceeds\s+\d+\s+budget\b|full plans? exceed/i,
50
+ ],
51
+ ["self_audit", "abstraction", "self_audit.abstraction", /abstraction creep/i],
52
+ ["self_audit", "filler", "self_audit.filler", /\bfiller\s*:/i],
53
+ ["compaction", "over_limit", "compaction.uniform_10_40_50", /over(?:\s+|_)limit|uniform_10_40_50/i],
54
+ ["compaction", "protected_overflow", "compaction.protected_overflow", /protected[-_ ]overflow/i],
55
+ ];
56
+ export const POST_AUDIT_FLAG_RE = /\[post-audit-flagged(?::[^\]]*)?\]/gi;
57
+ export const BUDGET_PRESSURE_RE = THRESHOLD_WARNING_PATTERNS[0][3];
58
+ export const FULL_PLAN_BUDGET_RE = /full[- ]plan|full plans?|\bplan\b/i;
59
+ const DETAIL_ANCHOR_RE = /`[^`]+`|\b(?:[A-Za-z0-9_.-]+\/)+[A-Za-z0-9_.-]+\b|:\d{2,}\b|\b[0-9a-fA-F]{7,}\b/g;
60
+ export function inc(counter, key) {
61
+ counter[key] = (counter[key] ?? 0) + 1;
62
+ }
63
+ export function counterDict(counter) {
64
+ const out = {};
65
+ for (const key of Object.keys(counter).sort())
66
+ out[key] = counter[key];
67
+ return out;
68
+ }
69
+ export function countMatches(re, text) {
70
+ const g = new RegExp(re.source, re.flags.includes("g") ? re.flags : re.flags + "g");
71
+ let n = 0;
72
+ while (g.exec(text) !== null)
73
+ n += 1;
74
+ return n;
75
+ }
76
+ export function wordCount(text) {
77
+ return (text.match(/\S+/g) ?? []).length;
78
+ }
79
+ let _fallbackIdSeq = 0;
80
+ const _fallbackIds = new WeakMap();
81
+ export function recordLabel(record, salt) {
82
+ let key = record.source_id;
83
+ if (key === null || key === undefined || key === "") {
84
+ let id = _fallbackIds.get(record);
85
+ if (id === undefined) {
86
+ id = ++_fallbackIdSeq;
87
+ _fallbackIds.set(record, id);
88
+ }
89
+ key = id;
90
+ }
91
+ return hashLabel("record", key, salt);
92
+ }
93
+ export function extractText(record) {
94
+ const data = record.data;
95
+ if (data && typeof data === "object" && !Array.isArray(data)) {
96
+ const value = data.content || data.text || data.message || data.prompt;
97
+ return typeof value === "string" ? value : "";
98
+ }
99
+ return "";
100
+ }
101
+ export function toolArguments(record) {
102
+ const data = record.data;
103
+ if (data && typeof data === "object" && !Array.isArray(data)) {
104
+ const args = data.arguments;
105
+ if (args && typeof args === "object" && !Array.isArray(args))
106
+ return args;
107
+ if (typeof args === "string") {
108
+ try {
109
+ const parsed = JSON.parse(args);
110
+ return parsed && typeof parsed === "object" && !Array.isArray(parsed) ? parsed : { value: parsed };
111
+ }
112
+ catch {
113
+ return { raw: args };
114
+ }
115
+ }
116
+ return data;
117
+ }
118
+ return record;
119
+ }
120
+ export function toolName(record) {
121
+ const data = record.data;
122
+ const values = [record.tool, record.tool_name, record.name];
123
+ if (data && typeof data === "object" && !Array.isArray(data)) {
124
+ values.push(data.tool, data.tool_name, data.name);
125
+ }
126
+ for (const value of values) {
127
+ if (typeof value === "string" && value)
128
+ return value;
129
+ }
130
+ return "";
131
+ }
132
+ export function toolArgument(record, ...keys) {
133
+ const args = toolArguments(record);
134
+ const candidates = keys.map((k) => args[k]);
135
+ candidates.push(...keys.map((k) => record[k]));
136
+ for (const candidate of candidates) {
137
+ if (typeof candidate === "string" && candidate)
138
+ return candidate;
139
+ }
140
+ return "";
141
+ }
142
+ export function pyJsonString(str) {
143
+ let out = '"';
144
+ for (const ch of str) {
145
+ const cp = ch.codePointAt(0);
146
+ if (ch === '"')
147
+ out += '\\"';
148
+ else if (ch === "\\")
149
+ out += "\\\\";
150
+ else if (cp === 0x08)
151
+ out += "\\b";
152
+ else if (cp === 0x09)
153
+ out += "\\t";
154
+ else if (cp === 0x0a)
155
+ out += "\\n";
156
+ else if (cp === 0x0c)
157
+ out += "\\f";
158
+ else if (cp === 0x0d)
159
+ out += "\\r";
160
+ else if (cp < 0x20)
161
+ out += "\\u" + cp.toString(16).padStart(4, "0");
162
+ else if (cp < 0x80)
163
+ out += ch;
164
+ else if (cp > 0xffff) {
165
+ const v = cp - 0x10000;
166
+ const hi = 0xd800 + (v >> 10);
167
+ const lo = 0xdc00 + (v & 0x3ff);
168
+ out += "\\u" + hi.toString(16).padStart(4, "0") + "\\u" + lo.toString(16).padStart(4, "0");
169
+ }
170
+ else {
171
+ out += "\\u" + cp.toString(16).padStart(4, "0");
172
+ }
173
+ }
174
+ return out + '"';
175
+ }
176
+ /** Mirror Python json.dumps(value, sort_keys=True) (separators ", "/": ", ensure_ascii). */
177
+ export function pyJsonDumps(value) {
178
+ if (value === null || value === undefined)
179
+ return "null";
180
+ if (value === true)
181
+ return "true";
182
+ if (value === false)
183
+ return "false";
184
+ if (value instanceof Flt)
185
+ return formatFloat(value.v);
186
+ if (typeof value === "number")
187
+ return String(value);
188
+ if (typeof value === "string")
189
+ return pyJsonString(value);
190
+ if (Array.isArray(value))
191
+ return "[" + value.map((v) => pyJsonDumps(v)).join(", ") + "]";
192
+ if (typeof value === "object") {
193
+ const keys = Object.keys(value).sort();
194
+ return "{" + keys.map((k) => `${pyJsonString(k)}: ${pyJsonDumps(value[k])}`).join(", ") + "}";
195
+ }
196
+ return "null";
197
+ }
198
+ export function argumentsText(record) {
199
+ return pyJsonDumps(toolArguments(record));
200
+ }
201
+ export function introCapability(text) {
202
+ const g = new RegExp(MARKER_RE.source, "g");
203
+ let m;
204
+ while ((m = g.exec(text)) !== null) {
205
+ const word = m[3];
206
+ if (!["complete", "flagged", "stuck", "waiting"].includes(word)) {
207
+ return m[2];
208
+ }
209
+ }
210
+ return null;
211
+ }
212
+ export function routeCapability(text) {
213
+ let m = XML_ROUTE_RE.exec(text);
214
+ if (m) {
215
+ const route = m[1].toLowerCase();
216
+ return CAPABILITIES_WITH_HEJ.has(route) ? route : (PRIMARY_ROUTE_TO_CAPABILITY[route] ?? null);
217
+ }
218
+ m = BARE_AGENTERA_ROUTE_RE.exec(text);
219
+ if (m) {
220
+ const route = (m[1] || "status").toLowerCase();
221
+ return CAPABILITIES_WITH_HEJ.has(route) ? route : (PRIMARY_ROUTE_TO_CAPABILITY[route] ?? null);
222
+ }
223
+ m = BARE_CAPABILITY_ROUTE_RE.exec(text);
224
+ if (m) {
225
+ return m[1].toLowerCase();
226
+ }
227
+ return null;
228
+ }
229
+ export function capabilityInvocation(text) {
230
+ const route = routeCapability(text);
231
+ if (route)
232
+ return route;
233
+ const marker = introCapability(text);
234
+ if (marker)
235
+ return marker;
236
+ const lowered = text.toLowerCase();
237
+ for (const capability of [...CAPABILITIES_WITH_HEJ].sort()) {
238
+ if (new RegExp(`\\b${capability.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}\\b`).test(lowered)) {
239
+ return capability;
240
+ }
241
+ }
242
+ if (lowered.includes("agentera"))
243
+ return "agentera";
244
+ return null;
245
+ }
246
+ export function recordThresholdText(record) {
247
+ const parts = [extractText(record)];
248
+ if (record.source_kind === "tool_call")
249
+ parts.push(argumentsText(record));
250
+ return parts.filter((p) => p).join("\n");
251
+ }
252
+ export function detailMetrics(text) {
253
+ return { word_count: wordCount(text), anchor_count: countMatches(DETAIL_ANCHOR_RE, text) };
254
+ }
255
+ export function thresholdWarnings(text) {
256
+ const warnings = [];
257
+ const seen = new Set();
258
+ for (const [family, category, source, pattern] of THRESHOLD_WARNING_PATTERNS) {
259
+ if (pattern.test(text)) {
260
+ const key = `${family}\0${category}\0${source}`;
261
+ if (!seen.has(key)) {
262
+ warnings.push({ family, category, threshold_source: source });
263
+ seen.add(key);
264
+ }
265
+ }
266
+ }
267
+ return warnings;
268
+ }
269
+ export function detailLossStatus(before, after) {
270
+ if (before.word_count === 0 || after.word_count === 0)
271
+ return "not_assessed";
272
+ const wordDrop = after.word_count < before.word_count * 0.75;
273
+ const anchorDrop = after.anchor_count < before.anchor_count;
274
+ if (wordDrop && anchorDrop)
275
+ return "possible_useful_detail_removed";
276
+ if (wordDrop)
277
+ return "possible_compression_without_anchor_loss";
278
+ return "not_detected";
279
+ }
280
+ /** Python round() — round half to even on IEEE-754 doubles. */
281
+ export function pyRound(x, ndigits) {
282
+ const m = 10 ** ndigits;
283
+ const v = x * m;
284
+ const f = Math.floor(v);
285
+ const diff = v - f;
286
+ let r;
287
+ if (diff > 0.5)
288
+ r = f + 1;
289
+ else if (diff < 0.5)
290
+ r = f;
291
+ else
292
+ r = f % 2 === 0 ? f : f + 1;
293
+ return r / m;
294
+ }
295
+ /** Python float marker: serializes with a trailing .0 for whole numbers. */
296
+ export class Flt {
297
+ v;
298
+ constructor(v) {
299
+ this.v = v;
300
+ }
301
+ valueOf() {
302
+ return this.v;
303
+ }
304
+ toJSON() {
305
+ return this.v;
306
+ }
307
+ }
308
+ export function flt(n) {
309
+ return new Flt(n);
310
+ }
311
+ export function formatFloat(v) {
312
+ return Number.isInteger(v) ? `${v}.0` : String(v);
313
+ }
314
+ /** Python str()/f-string rendering for report scalars. */
315
+ export function pyFmt(value) {
316
+ if (value instanceof Flt)
317
+ return formatFloat(value.v);
318
+ if (value === null || value === undefined)
319
+ return "None";
320
+ if (value === true)
321
+ return "True";
322
+ if (value === false)
323
+ return "False";
324
+ return String(value);
325
+ }
326
+ export function safeInt(value) {
327
+ return typeof value === "number" && Number.isInteger(value) ? value : 0;
328
+ }
329
+ export function nowIsoSeconds() {
330
+ return new Date().toISOString().replace(/\.\d{3}Z$/, "+00:00");
331
+ }
332
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/state/startupAnalysis/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export { TRANSCRIPT_KEYS, SESSION_KEYS, PATH_KEYS, contractPath, loadContract, hashLabel, canonicalArtifactLabel, redactForStartupOutput, parseTimestamp, formatTimestamp, } from "./contract.js";
2
+ export { THRESHOLD_EVIDENCE_ENVELOPE, THRESHOLD_CLASSIFICATION_ENVELOPE, STATE_EVENT_CLASSES, BOUNDARY_DEGRADATION_REASONS, BOUNDED_RUNTIME_STATUSES, BOUNDED_RUNTIME_REASONS, STATE_CLI_COMMANDS, classifyStartupEvent, boundedRuntimeStatus, startupConversationKey, scanThresholdEvidence, scanRetainedThresholdEvidence, classifyThresholdEvidence, } from "./threshold.js";
3
+ export { classifyStartupRecords } from "./records.js";
4
+ export { STARTUP_METRICS_ENVELOPE, TOKEN_ESTIMATOR_VERSION, aggregateStartupMetrics, } from "./metrics.js";
5
+ export { STARTUP_REPORT_MARKDOWN, STARTUP_REPORT_JSON, renderStartupReport, writeStartupReports, } from "./report.js";
6
+ export { STARTUP_INTERMEDIATE_ENVELOPE, BENCHMARK_HISTORY_JSONL, BENCHMARK_LATEST_REPORT_JSON, BENCHMARK_LATEST_REPORT_MARKDOWN, previousBenchmarkWatermark, buildBenchmarkHistoryRow, persistStartupBenchmark, buildStartupIntermediate, buildNoRuntimeStartupIntermediate, extractStartupIntermediateFromCorpusFile, } from "./benchmark.js";
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/state/startupAnalysis/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,sBAAsB,EACtB,sBAAsB,EACtB,cAAc,EACd,eAAe,GAChB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,2BAA2B,EAC3B,iCAAiC,EACjC,mBAAmB,EACnB,4BAA4B,EAC5B,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,6BAA6B,EAC7B,yBAAyB,GAC1B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,GACxB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,6BAA6B,EAC7B,uBAAuB,EACvB,4BAA4B,EAC5B,gCAAgC,EAChC,0BAA0B,EAC1B,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,EACxB,iCAAiC,EACjC,wCAAwC,GACzC,MAAM,gBAAgB,CAAC"}