agentera 0.0.0 → 3.0.0-dev.1

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 (256) hide show
  1. package/README.md +6 -45
  2. package/bundle/.agentera-npx-bundle.json +4 -0
  3. package/bundle/references/adapters/cursor.md +213 -0
  4. package/bundle/references/adapters/opencode.md +530 -0
  5. package/bundle/references/adapters/package-manifest-interface-model.yaml +337 -0
  6. package/bundle/references/adapters/package-registry.yaml +247 -0
  7. package/bundle/references/adapters/package-surface-characterization.md +48 -0
  8. package/bundle/references/adapters/runtime-adapter-characterization.md +79 -0
  9. package/bundle/references/adapters/runtime-adapter-interface-model.yaml +200 -0
  10. package/bundle/references/adapters/runtime-adapter-registry.yaml +548 -0
  11. package/bundle/references/adapters/runtime-feature-parity.md +189 -0
  12. package/bundle/references/analysis/benchmark.md +267 -0
  13. package/bundle/references/analysis/startup-measurement-contract.yaml +424 -0
  14. package/bundle/references/artifacts/artifact-registry-interface-model.yaml +288 -0
  15. package/bundle/references/cli/agent-ready-state-contract.yaml +950 -0
  16. package/bundle/references/cli/app-lifecycle-vocabulary.yaml +241 -0
  17. package/bundle/references/cli/audience-namespace-cli-migration.yaml +355 -0
  18. package/bundle/references/cli/bundle-skill-vocabulary.yaml +278 -0
  19. package/bundle/references/cli/capability-instruction-contract.yaml +123 -0
  20. package/bundle/references/cli/capability-tool-classification.yaml +53 -0
  21. package/bundle/references/cli/routing-execution-vocabulary.yaml +281 -0
  22. package/bundle/references/cli/update-channels.yaml +147 -0
  23. package/bundle/references/cli/vocabulary-index.yaml +160 -0
  24. package/bundle/references/cli/vocabulary.md +566 -0
  25. package/bundle/references/meta/documentation-inventory.md +43 -0
  26. package/bundle/references/v1-section-mapping.md +47 -0
  27. package/bundle/registry.json +39 -0
  28. package/bundle/skills/agentera/.claude-plugin/plugin.json +27 -0
  29. package/bundle/skills/agentera/SKILL.md +470 -0
  30. package/bundle/skills/agentera/agents/dokumentera.toml +6 -0
  31. package/bundle/skills/agentera/agents/hej.toml +6 -0
  32. package/bundle/skills/agentera/agents/inspektera.toml +6 -0
  33. package/bundle/skills/agentera/agents/inspirera.toml +6 -0
  34. package/bundle/skills/agentera/agents/optimera.toml +6 -0
  35. package/bundle/skills/agentera/agents/orkestrera.toml +6 -0
  36. package/bundle/skills/agentera/agents/planera.toml +6 -0
  37. package/bundle/skills/agentera/agents/profilera.toml +6 -0
  38. package/bundle/skills/agentera/agents/realisera.toml +6 -0
  39. package/bundle/skills/agentera/agents/resonera.toml +6 -0
  40. package/bundle/skills/agentera/agents/visionera.toml +6 -0
  41. package/bundle/skills/agentera/agents/visualisera.toml +6 -0
  42. package/bundle/skills/agentera/capabilities/dokumentera/instructions.md +428 -0
  43. package/bundle/skills/agentera/capabilities/dokumentera/schemas/artifacts.yaml +73 -0
  44. package/bundle/skills/agentera/capabilities/dokumentera/schemas/exit.yaml +35 -0
  45. package/bundle/skills/agentera/capabilities/dokumentera/schemas/triggers.yaml +35 -0
  46. package/bundle/skills/agentera/capabilities/dokumentera/schemas/validation.yaml +139 -0
  47. package/bundle/skills/agentera/capabilities/hej/instructions.md +331 -0
  48. package/bundle/skills/agentera/capabilities/hej/schemas/artifacts.yaml +69 -0
  49. package/bundle/skills/agentera/capabilities/hej/schemas/exit.yaml +32 -0
  50. package/bundle/skills/agentera/capabilities/hej/schemas/triggers.yaml +58 -0
  51. package/bundle/skills/agentera/capabilities/hej/schemas/validation.yaml +55 -0
  52. package/bundle/skills/agentera/capabilities/inspektera/instructions.md +514 -0
  53. package/bundle/skills/agentera/capabilities/inspektera/schemas/artifacts.yaml +76 -0
  54. package/bundle/skills/agentera/capabilities/inspektera/schemas/exit.yaml +36 -0
  55. package/bundle/skills/agentera/capabilities/inspektera/schemas/triggers.yaml +38 -0
  56. package/bundle/skills/agentera/capabilities/inspektera/schemas/validation.yaml +113 -0
  57. package/bundle/skills/agentera/capabilities/inspirera/instructions.md +280 -0
  58. package/bundle/skills/agentera/capabilities/inspirera/schemas/artifacts.yaml +24 -0
  59. package/bundle/skills/agentera/capabilities/inspirera/schemas/exit.yaml +33 -0
  60. package/bundle/skills/agentera/capabilities/inspirera/schemas/triggers.yaml +34 -0
  61. package/bundle/skills/agentera/capabilities/inspirera/schemas/validation.yaml +58 -0
  62. package/bundle/skills/agentera/capabilities/optimera/instructions.md +437 -0
  63. package/bundle/skills/agentera/capabilities/optimera/schemas/artifacts.yaml +69 -0
  64. package/bundle/skills/agentera/capabilities/optimera/schemas/exit.yaml +35 -0
  65. package/bundle/skills/agentera/capabilities/optimera/schemas/triggers.yaml +39 -0
  66. package/bundle/skills/agentera/capabilities/optimera/schemas/validation.yaml +91 -0
  67. package/bundle/skills/agentera/capabilities/orkestrera/instructions.md +433 -0
  68. package/bundle/skills/agentera/capabilities/orkestrera/schemas/artifacts.yaml +64 -0
  69. package/bundle/skills/agentera/capabilities/orkestrera/schemas/exit.yaml +34 -0
  70. package/bundle/skills/agentera/capabilities/orkestrera/schemas/triggers.yaml +42 -0
  71. package/bundle/skills/agentera/capabilities/orkestrera/schemas/validation.yaml +107 -0
  72. package/bundle/skills/agentera/capabilities/planera/instructions.md +368 -0
  73. package/bundle/skills/agentera/capabilities/planera/schemas/artifacts.yaml +62 -0
  74. package/bundle/skills/agentera/capabilities/planera/schemas/exit.yaml +33 -0
  75. package/bundle/skills/agentera/capabilities/planera/schemas/triggers.yaml +34 -0
  76. package/bundle/skills/agentera/capabilities/planera/schemas/validation.yaml +61 -0
  77. package/bundle/skills/agentera/capabilities/profilera/instructions.md +419 -0
  78. package/bundle/skills/agentera/capabilities/profilera/schemas/artifacts.yaml +18 -0
  79. package/bundle/skills/agentera/capabilities/profilera/schemas/exit.yaml +34 -0
  80. package/bundle/skills/agentera/capabilities/profilera/schemas/triggers.yaml +45 -0
  81. package/bundle/skills/agentera/capabilities/profilera/schemas/validation.yaml +57 -0
  82. package/bundle/skills/agentera/capabilities/realisera/instructions.md +403 -0
  83. package/bundle/skills/agentera/capabilities/realisera/schemas/artifacts.yaml +80 -0
  84. package/bundle/skills/agentera/capabilities/realisera/schemas/exit.yaml +35 -0
  85. package/bundle/skills/agentera/capabilities/realisera/schemas/triggers.yaml +39 -0
  86. package/bundle/skills/agentera/capabilities/realisera/schemas/validation.yaml +110 -0
  87. package/bundle/skills/agentera/capabilities/resonera/instructions.md +329 -0
  88. package/bundle/skills/agentera/capabilities/resonera/schemas/artifacts.yaml +47 -0
  89. package/bundle/skills/agentera/capabilities/resonera/schemas/exit.yaml +35 -0
  90. package/bundle/skills/agentera/capabilities/resonera/schemas/triggers.yaml +46 -0
  91. package/bundle/skills/agentera/capabilities/resonera/schemas/validation.yaml +77 -0
  92. package/bundle/skills/agentera/capabilities/visionera/instructions.md +309 -0
  93. package/bundle/skills/agentera/capabilities/visionera/schemas/artifacts.yaml +57 -0
  94. package/bundle/skills/agentera/capabilities/visionera/schemas/exit.yaml +35 -0
  95. package/bundle/skills/agentera/capabilities/visionera/schemas/triggers.yaml +41 -0
  96. package/bundle/skills/agentera/capabilities/visionera/schemas/validation.yaml +74 -0
  97. package/bundle/skills/agentera/capabilities/visualisera/instructions.md +400 -0
  98. package/bundle/skills/agentera/capabilities/visualisera/schemas/artifacts.yaml +44 -0
  99. package/bundle/skills/agentera/capabilities/visualisera/schemas/exit.yaml +34 -0
  100. package/bundle/skills/agentera/capabilities/visualisera/schemas/triggers.yaml +33 -0
  101. package/bundle/skills/agentera/capabilities/visualisera/schemas/validation.yaml +80 -0
  102. package/bundle/skills/agentera/capability_schema_contract.yaml +385 -0
  103. package/bundle/skills/agentera/protocol.yaml +463 -0
  104. package/bundle/skills/agentera/references/contract.md +1039 -0
  105. package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +60 -0
  106. package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +461 -0
  107. package/bundle/skills/agentera/schemas/artifacts/design.yaml +55 -0
  108. package/bundle/skills/agentera/schemas/artifacts/docs.yaml +402 -0
  109. package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +373 -0
  110. package/bundle/skills/agentera/schemas/artifacts/health.yaml +484 -0
  111. package/bundle/skills/agentera/schemas/artifacts/objective.yaml +399 -0
  112. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +342 -0
  113. package/bundle/skills/agentera/schemas/artifacts/progress.yaml +325 -0
  114. package/bundle/skills/agentera/schemas/artifacts/todo.yaml +110 -0
  115. package/bundle/skills/agentera/schemas/artifacts/vision.yaml +262 -0
  116. package/bundle/skills/hej/.claude-plugin/plugin.json +6 -0
  117. package/bundle/skills/hej/SKILL.md +69 -0
  118. package/bundle/skills/hej/agents/hej.toml +11 -0
  119. package/bundle/skills/hej/agents/openai.yaml +8 -0
  120. package/dist/analytics/extractCorpus.js +1791 -0
  121. package/dist/analytics/extractCorpus.js.map +1 -0
  122. package/dist/analytics/usageStats.js +487 -0
  123. package/dist/analytics/usageStats.js.map +1 -0
  124. package/dist/bin/agentera.js +4 -0
  125. package/dist/bin/agentera.js.map +1 -0
  126. package/dist/cli/appContext.js +226 -0
  127. package/dist/cli/appContext.js.map +1 -0
  128. package/dist/cli/argvalidate.js +41 -0
  129. package/dist/cli/argvalidate.js.map +1 -0
  130. package/dist/cli/capabilityContext.js +2421 -0
  131. package/dist/cli/capabilityContext.js.map +1 -0
  132. package/dist/cli/commands/backfill.js +84 -0
  133. package/dist/cli/commands/backfill.js.map +1 -0
  134. package/dist/cli/commands/capability.js +44 -0
  135. package/dist/cli/commands/capability.js.map +1 -0
  136. package/dist/cli/commands/compact.js +148 -0
  137. package/dist/cli/commands/compact.js.map +1 -0
  138. package/dist/cli/commands/doctor.js +180 -0
  139. package/dist/cli/commands/doctor.js.map +1 -0
  140. package/dist/cli/commands/lint.js +179 -0
  141. package/dist/cli/commands/lint.js.map +1 -0
  142. package/dist/cli/commands/prime.js +544 -0
  143. package/dist/cli/commands/prime.js.map +1 -0
  144. package/dist/cli/commands/query.js +346 -0
  145. package/dist/cli/commands/query.js.map +1 -0
  146. package/dist/cli/commands/report.js +210 -0
  147. package/dist/cli/commands/report.js.map +1 -0
  148. package/dist/cli/commands/schema.js +306 -0
  149. package/dist/cli/commands/schema.js.map +1 -0
  150. package/dist/cli/commands/state.js +1012 -0
  151. package/dist/cli/commands/state.js.map +1 -0
  152. package/dist/cli/commands/upgrade.js +48 -0
  153. package/dist/cli/commands/upgrade.js.map +1 -0
  154. package/dist/cli/commands/validate.js +519 -0
  155. package/dist/cli/commands/validate.js.map +1 -0
  156. package/dist/cli/commands/verify.js +204 -0
  157. package/dist/cli/commands/verify.js.map +1 -0
  158. package/dist/cli/dispatch.js +958 -0
  159. package/dist/cli/dispatch.js.map +1 -0
  160. package/dist/cli/orientation.js +595 -0
  161. package/dist/cli/orientation.js.map +1 -0
  162. package/dist/cli/prime-blob.js +3 -0
  163. package/dist/cli/prime-blob.js.map +1 -0
  164. package/dist/cli/stateQuery.js +292 -0
  165. package/dist/cli/stateQuery.js.map +1 -0
  166. package/dist/cli/structured.js +18 -0
  167. package/dist/cli/structured.js.map +1 -0
  168. package/dist/core/difflib.js +274 -0
  169. package/dist/core/difflib.js.map +1 -0
  170. package/dist/core/git.js +43 -0
  171. package/dist/core/git.js.map +1 -0
  172. package/dist/core/paths.js +50 -0
  173. package/dist/core/paths.js.map +1 -0
  174. package/dist/core/pyjson.js +101 -0
  175. package/dist/core/pyjson.js.map +1 -0
  176. package/dist/core/sourceRoot.js +72 -0
  177. package/dist/core/sourceRoot.js.map +1 -0
  178. package/dist/core/toml.js +11 -0
  179. package/dist/core/toml.js.map +1 -0
  180. package/dist/core/yaml.js +25 -0
  181. package/dist/core/yaml.js.map +1 -0
  182. package/dist/eval/evalSkills.js +258 -0
  183. package/dist/eval/evalSkills.js.map +1 -0
  184. package/dist/eval/semanticEval.js +148 -0
  185. package/dist/eval/semanticEval.js.map +1 -0
  186. package/dist/eval/semanticFixtures.js +227 -0
  187. package/dist/eval/semanticFixtures.js.map +1 -0
  188. package/dist/hooks/common.js +160 -0
  189. package/dist/hooks/common.js.map +1 -0
  190. package/dist/hooks/compaction.js +935 -0
  191. package/dist/hooks/compaction.js.map +1 -0
  192. package/dist/hooks/cursorPreToolUse.js +19 -0
  193. package/dist/hooks/cursorPreToolUse.js.map +1 -0
  194. package/dist/hooks/cursorSessionStart.js +71 -0
  195. package/dist/hooks/cursorSessionStart.js.map +1 -0
  196. package/dist/hooks/sessionStart.js +209 -0
  197. package/dist/hooks/sessionStart.js.map +1 -0
  198. package/dist/hooks/sessionStop.js +212 -0
  199. package/dist/hooks/sessionStop.js.map +1 -0
  200. package/dist/hooks/validateArtifact.js +933 -0
  201. package/dist/hooks/validateArtifact.js.map +1 -0
  202. package/dist/registries/artifactRegistry.js +206 -0
  203. package/dist/registries/artifactRegistry.js.map +1 -0
  204. package/dist/registries/capabilityContract.js +310 -0
  205. package/dist/registries/capabilityContract.js.map +1 -0
  206. package/dist/registries/packageRegistry.js +641 -0
  207. package/dist/registries/packageRegistry.js.map +1 -0
  208. package/dist/registries/runtimeAdapterRegistry.js +315 -0
  209. package/dist/registries/runtimeAdapterRegistry.js.map +1 -0
  210. package/dist/setup/codex.js +1056 -0
  211. package/dist/setup/codex.js.map +1 -0
  212. package/dist/setup/copilot.js +227 -0
  213. package/dist/setup/copilot.js.map +1 -0
  214. package/dist/setup/cursor.js +127 -0
  215. package/dist/setup/cursor.js.map +1 -0
  216. package/dist/setup/doctor.js +1276 -0
  217. package/dist/setup/doctor.js.map +1 -0
  218. package/dist/state/installRoot.js +279 -0
  219. package/dist/state/installRoot.js.map +1 -0
  220. package/dist/state/progressCommit.js +289 -0
  221. package/dist/state/progressCommit.js.map +1 -0
  222. package/dist/state/startupAnalysis.js +1953 -0
  223. package/dist/state/startupAnalysis.js.map +1 -0
  224. package/dist/upgrade/appModel.js +189 -0
  225. package/dist/upgrade/appModel.js.map +1 -0
  226. package/dist/upgrade/channels.js +208 -0
  227. package/dist/upgrade/channels.js.map +1 -0
  228. package/dist/upgrade/compatibility.js +201 -0
  229. package/dist/upgrade/compatibility.js.map +1 -0
  230. package/dist/upgrade/doctor.js +373 -0
  231. package/dist/upgrade/doctor.js.map +1 -0
  232. package/dist/upgrade/migrateArtifactsV2ToV3.js +332 -0
  233. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +1 -0
  234. package/dist/upgrade/runtimeMigration.js +484 -0
  235. package/dist/upgrade/runtimeMigration.js.map +1 -0
  236. package/dist/upgrade/upgradeCommands.js +36 -0
  237. package/dist/upgrade/upgradeCommands.js.map +1 -0
  238. package/dist/upgrade/upgradeOrchestrator.js +299 -0
  239. package/dist/upgrade/upgradeOrchestrator.js.map +1 -0
  240. package/dist/upgrade/versionResolution.js +179 -0
  241. package/dist/upgrade/versionResolution.js.map +1 -0
  242. package/dist/validate/appHomeContract.js +150 -0
  243. package/dist/validate/appHomeContract.js.map +1 -0
  244. package/dist/validate/capability.js +412 -0
  245. package/dist/validate/capability.js.map +1 -0
  246. package/dist/validate/crossCapability.js +145 -0
  247. package/dist/validate/crossCapability.js.map +1 -0
  248. package/dist/validate/lifecycleAdapters.js +772 -0
  249. package/dist/validate/lifecycleAdapters.js.map +1 -0
  250. package/dist/validate/selfAudit.js +107 -0
  251. package/dist/validate/selfAudit.js.map +1 -0
  252. package/package.json +28 -8
  253. package/LICENSE +0 -201
  254. package/bin/agentera.mjs +0 -50
  255. package/lib/exec.mjs +0 -116
  256. package/lib/resolve.mjs +0 -129
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatch.js","sourceRoot":"","sources":["../../src/cli/dispatch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,595 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { resolveArtifactPath, } from "../registries/artifactRegistry.js";
4
+ import { activeObjectiveName, artifactPath, loadRegistryForSchemas, } from "./appContext.js";
5
+ import { asList, extractEntries, firstPresent, loadArtifact, recentCycles, truncate, } from "./stateQuery.js";
6
+ import { decisionContextEntry, latestHealthAudit, normalizeSeverity } from "./commands/state.js";
7
+ export const DONE_STATUSES = new Set(["complete", "completed", "closed", "done", "resolved", "retired"]);
8
+ export const BLOCKED_STATUSES = new Set(["blocked", "stuck"]);
9
+ export const DECISION_ATTENTION_MAX_ENTRIES = 3;
10
+ export const STARTUP_COMPLETENESS_MISSING_STATE = [];
11
+ const TODO_SEVERITY_ORDER = {
12
+ critical: 0,
13
+ degraded: 1,
14
+ warning: 1,
15
+ normal: 2,
16
+ info: 3,
17
+ annoying: 3,
18
+ };
19
+ const TODO_SECTION_SEVERITIES = {
20
+ critical: "critical",
21
+ degraded: "degraded",
22
+ warning: "warning",
23
+ normal: "normal",
24
+ info: "info",
25
+ annoying: "annoying",
26
+ };
27
+ const TODO_ITEM_RE = /^- \[([^\]]+)\]\s+(.*)/;
28
+ const TODO_PLANERA_SIGNALS = new Set([
29
+ "acceptance", "artifact", "capability", "capability-context", "compatibility", "contract",
30
+ "cross-capability", "docs", "metadata", "migration", "schema", "startup", "surface", "test", "validation",
31
+ ]);
32
+ const PROFILERA_STALE_DAYS_ENV = "AGENTERA_PROFILERA_MAX_AGE_DAYS";
33
+ const DEFAULT_PROFILERA_STALE_DAYS = 7;
34
+ const INSPEKTERA_STALE_DAYS_ENV = "AGENTERA_INSPEKTERA_MAX_AGE_DAYS";
35
+ const DEFAULT_INSPEKTERA_STALE_DAYS = 30;
36
+ const INSPEKTERA_STALE_CYCLES_ENV = "AGENTERA_INSPEKTERA_MAX_CYCLES";
37
+ const DEFAULT_INSPEKTERA_STALE_CYCLES = 10;
38
+ function intEnv(env, key, def) {
39
+ const raw = env[key] ?? String(def);
40
+ const n = parseInt(raw, 10);
41
+ if (Number.isNaN(n))
42
+ return def;
43
+ return n >= 0 ? n : def;
44
+ }
45
+ // ── date helpers (calendar-day arithmetic) ──────────────────────────
46
+ function dateFromIso(s) {
47
+ const m = /^(\d{4})-(\d{2})-(\d{2})/.exec(s.trim());
48
+ if (!m)
49
+ return null;
50
+ const y = Number(m[1]);
51
+ const mo = Number(m[2]);
52
+ const d = Number(m[3]);
53
+ const utc = Date.UTC(y, mo - 1, d);
54
+ const back = new Date(utc);
55
+ if (back.getUTCFullYear() !== y || back.getUTCMonth() !== mo - 1 || back.getUTCDate() !== d)
56
+ return null;
57
+ return utc;
58
+ }
59
+ function todayUtc() {
60
+ const now = new Date();
61
+ return Date.UTC(now.getFullYear(), now.getMonth(), now.getDate());
62
+ }
63
+ function daysSince(genUtc) {
64
+ return Math.round((todayUtc() - genUtc) / 86400000);
65
+ }
66
+ // ── entry helpers ───────────────────────────────────────────────────
67
+ function entryStatusPy(entry, def = "open") {
68
+ const raw = "status" in entry ? entry.status : def;
69
+ return String(raw || def).toLowerCase();
70
+ }
71
+ function isOpenEntry(entry) {
72
+ return !DONE_STATUSES.has(entryStatusPy(entry));
73
+ }
74
+ export function loadNamedArtifact(schemas, name) {
75
+ const info = schemas[name];
76
+ if (!info)
77
+ return null;
78
+ return loadArtifact(artifactPath(info, name));
79
+ }
80
+ export function registryArtifactPath(artifactId, schemasDir) {
81
+ const record = loadRegistryForSchemas(schemasDir).get(artifactId);
82
+ if (record === undefined)
83
+ throw new Error(`artifact registry does not define '${artifactId}'`);
84
+ return resolveArtifactPath(record, process.cwd(), activeObjectiveName());
85
+ }
86
+ // ── staleness ───────────────────────────────────────────────────────
87
+ export function checkProfileraStaleness(profilePath, env = process.env) {
88
+ if (!fs.existsSync(profilePath))
89
+ return null;
90
+ let text;
91
+ try {
92
+ text = fs.readFileSync(profilePath, "utf8");
93
+ }
94
+ catch (exc) {
95
+ process.stderr.write(`warning: failed to read profile path ${profilePath}: ${exc.message}\n`);
96
+ return null;
97
+ }
98
+ const m = /<!-- Generated:\s*(\d{4}-\d{2}-\d{2})/.exec(text);
99
+ if (!m)
100
+ return null;
101
+ const gen = dateFromIso(m[1]);
102
+ if (gen === null)
103
+ return null;
104
+ const staleDays = intEnv(env, PROFILERA_STALE_DAYS_ENV, DEFAULT_PROFILERA_STALE_DAYS);
105
+ const since = daysSince(gen);
106
+ return [since >= staleDays, since, staleDays];
107
+ }
108
+ export function healthAuditDate(entry) {
109
+ for (const key of ["date", "timestamp"]) {
110
+ const value = entry[key];
111
+ if (typeof value === "string" && value.trim()) {
112
+ const d = dateFromIso(value.trim().slice(0, 10));
113
+ if (d !== null)
114
+ return d;
115
+ }
116
+ }
117
+ return null;
118
+ }
119
+ function progressEntryDate(entry) {
120
+ for (const key of ["timestamp", "date"]) {
121
+ const value = entry[key];
122
+ if (typeof value === "string" && value.trim()) {
123
+ const d = dateFromIso(value.trim().slice(0, 10));
124
+ if (d !== null)
125
+ return d;
126
+ }
127
+ }
128
+ return null;
129
+ }
130
+ function cyclesSinceHealthAudit(schemas, auditDate) {
131
+ const entries = extractEntries(loadNamedArtifact(schemas, "progress"));
132
+ if (entries.length === 0)
133
+ return null;
134
+ let count = 0;
135
+ for (const entry of entries) {
136
+ const d = progressEntryDate(entry);
137
+ if (d !== null && d > auditDate)
138
+ count += 1;
139
+ }
140
+ return count;
141
+ }
142
+ function checkInspekteraAuditStaleness(schemas, latest, auditDate, env = process.env) {
143
+ if (latest === null || auditDate === null)
144
+ return null;
145
+ const staleDaysThreshold = intEnv(env, INSPEKTERA_STALE_DAYS_ENV, DEFAULT_INSPEKTERA_STALE_DAYS);
146
+ const staleCyclesThreshold = intEnv(env, INSPEKTERA_STALE_CYCLES_ENV, DEFAULT_INSPEKTERA_STALE_CYCLES);
147
+ const since = daysSince(auditDate);
148
+ const cyclesSince = cyclesSinceHealthAudit(schemas, auditDate);
149
+ const timeStale = since >= staleDaysThreshold;
150
+ const cycleStale = cyclesSince !== null && cyclesSince >= staleCyclesThreshold;
151
+ const isStale = timeStale || cycleStale;
152
+ let triggeringAxis = "none";
153
+ if (isStale) {
154
+ if (timeStale && cycleStale)
155
+ triggeringAxis = "both";
156
+ else if (timeStale)
157
+ triggeringAxis = "time";
158
+ else
159
+ triggeringAxis = "cycles";
160
+ }
161
+ const result = {
162
+ stale: isStale,
163
+ days_since_audit: since,
164
+ stale_threshold_days: staleDaysThreshold,
165
+ stale_threshold_cycles: staleCyclesThreshold,
166
+ triggering_axis: triggeringAxis,
167
+ };
168
+ if (cyclesSince !== null)
169
+ result.cycles_since_audit = cyclesSince;
170
+ if (isStale)
171
+ result.suggested_action = "Run inspektera to refresh health audit";
172
+ return result;
173
+ }
174
+ // ── todo items + issue counts ───────────────────────────────────────
175
+ export function loadTodoItems(schemas) {
176
+ const info = schemas.todo ?? { path: "TODO.md", record: undefined, schema: {}, fields: {} };
177
+ const todoPath = artifactPath(info, "todo");
178
+ if (!fs.existsSync(todoPath))
179
+ return [];
180
+ const data = loadArtifact(todoPath);
181
+ const entries = extractEntries(data);
182
+ if (entries.length > 0) {
183
+ const items = [];
184
+ for (const entry of entries) {
185
+ if (!isOpenEntry(entry))
186
+ continue;
187
+ const text = firstPresent(entry, ["description", "title", "name"], "");
188
+ if (!text)
189
+ continue;
190
+ items.push({
191
+ severity: normalizeSeverity(entry.severity),
192
+ status: entryStatusPy(entry),
193
+ text: String(text),
194
+ });
195
+ }
196
+ return items;
197
+ }
198
+ const items = [];
199
+ let currentSeverity = "";
200
+ const text = fs.readFileSync(todoPath, "utf8");
201
+ for (const line of text.split(/\r\n|\r|\n/)) {
202
+ const stripped = line.trim();
203
+ if (stripped.startsWith("## ")) {
204
+ const heading = stripped.slice(3).trim().toLowerCase();
205
+ if (heading.includes("resolved")) {
206
+ currentSeverity = "";
207
+ }
208
+ else {
209
+ currentSeverity = "normal";
210
+ for (const [marker, sev] of Object.entries(TODO_SECTION_SEVERITIES)) {
211
+ if (heading.includes(marker)) {
212
+ currentSeverity = sev;
213
+ break;
214
+ }
215
+ }
216
+ }
217
+ continue;
218
+ }
219
+ if (currentSeverity) {
220
+ const m = TODO_ITEM_RE.exec(stripped);
221
+ if (m)
222
+ items.push({ severity: currentSeverity, status: "open", text: m[2].trim() });
223
+ }
224
+ }
225
+ return items;
226
+ }
227
+ export function issueCounts(todoItems) {
228
+ const counts = { critical: 0, degraded: 0, normal: 0, annoying: 0 };
229
+ for (const item of todoItems) {
230
+ const severity = item.severity;
231
+ if (severity === "critical")
232
+ counts.critical += 1;
233
+ else if (severity === "degraded" || severity === "warning")
234
+ counts.degraded += 1;
235
+ else if (severity === "info" || severity === "annoying")
236
+ counts.annoying += 1;
237
+ else
238
+ counts.normal += 1;
239
+ }
240
+ return counts;
241
+ }
242
+ function todoNeedsPlanera(item) {
243
+ const text = item.text.toLowerCase();
244
+ let signalCount = 0;
245
+ for (const signal of TODO_PLANERA_SIGNALS)
246
+ if (text.includes(signal))
247
+ signalCount += 1;
248
+ return signalCount >= 2 || (signalCount >= 1 && text.length > 180);
249
+ }
250
+ // ── per-artifact summaries ──────────────────────────────────────────
251
+ export function planSummary(schemas) {
252
+ const data = loadNamedArtifact(schemas, "plan");
253
+ if (!data || typeof data !== "object" || Array.isArray(data)) {
254
+ return {
255
+ exists: false,
256
+ active: false,
257
+ tasks: [],
258
+ status: "absent",
259
+ title: "",
260
+ absence_reason: "No active plan artifact is available from agentera plan.",
261
+ };
262
+ }
263
+ const d = data;
264
+ const legacyEntries = asList(d.entries);
265
+ let tasks;
266
+ let status;
267
+ let title;
268
+ if (legacyEntries.length > 0) {
269
+ tasks = legacyEntries;
270
+ status = entryStatusPy(tasks[0], "");
271
+ title = String(firstPresent(tasks[0], ["title", "name"], ""));
272
+ }
273
+ else {
274
+ const header = d.header && typeof d.header === "object" && !Array.isArray(d.header) ? d.header : {};
275
+ tasks = asList(d.tasks);
276
+ status = String(firstPresent(header, ["status"], d.status ?? "") || "");
277
+ title = String(firstPresent(header, ["title"], d.title ?? "") || "");
278
+ }
279
+ const complete = tasks.filter((task) => DONE_STATUSES.has(entryStatusPy(task, ""))).length;
280
+ const total = tasks.length;
281
+ const completePlan = DONE_STATUSES.has(status.toLowerCase()) && complete === total;
282
+ let firstPending = null;
283
+ if (!completePlan) {
284
+ for (const task of tasks) {
285
+ const ts = entryStatusPy(task, "pending");
286
+ if (DONE_STATUSES.has(ts) || BLOCKED_STATUSES.has(ts))
287
+ continue;
288
+ firstPending = task;
289
+ break;
290
+ }
291
+ }
292
+ return {
293
+ exists: true,
294
+ status,
295
+ title,
296
+ constraints: d.constraints ?? null,
297
+ scope: d.scope ?? null,
298
+ design: d.design ?? null,
299
+ tasks,
300
+ complete,
301
+ total,
302
+ active: !completePlan,
303
+ complete_plan: completePlan,
304
+ first_pending: firstPending,
305
+ };
306
+ }
307
+ export function docsSummary(schemas) {
308
+ const data = loadNamedArtifact(schemas, "docs");
309
+ if (!data || typeof data !== "object" || Array.isArray(data)) {
310
+ return { exists: false, status: "absent", absence_reason: "No docs mapping artifact is available from agentera docs." };
311
+ }
312
+ const d = data;
313
+ const mapping = asList(d.mapping);
314
+ const index = asList(d.index);
315
+ const coverage = d.coverage && typeof d.coverage === "object" && !Array.isArray(d.coverage) ? d.coverage : {};
316
+ const conventions = d.conventions && typeof d.conventions === "object" && !Array.isArray(d.conventions) ? d.conventions : {};
317
+ return {
318
+ exists: true,
319
+ status: "available",
320
+ last_audit: d.last_audit ?? null,
321
+ conventions,
322
+ mapping,
323
+ mapping_entries: mapping.length,
324
+ coverage,
325
+ source_contract: {
326
+ capability_startup_complete: STARTUP_COMPLETENESS_MISSING_STATE.length === 0,
327
+ raw_artifact_reads_required: false,
328
+ state_families: [
329
+ "plan task details, dependencies, acceptance criteria, and evidence summaries",
330
+ "docs artifact mapping and source-contract completeness metadata",
331
+ "latest progress verification metadata needed for Orkestrera evaluation",
332
+ "Dokumentera closeout context metadata for docs/TODO/changelog/progress synchronization",
333
+ ],
334
+ },
335
+ indexed_documents: index.length,
336
+ };
337
+ }
338
+ export function progressSummary(schemas) {
339
+ const data = loadNamedArtifact(schemas, "progress");
340
+ const entries = extractEntries(data);
341
+ if (entries.length === 0) {
342
+ return { exists: false, status: "absent", absence_reason: "No progress cycles are available from agentera progress." };
343
+ }
344
+ const latest = recentCycles(entries, 1)[0];
345
+ return {
346
+ exists: true,
347
+ status: "available",
348
+ latest,
349
+ latest_verification: latest.verified ?? null,
350
+ cycle_count: entries.length,
351
+ };
352
+ }
353
+ export function healthSummary(schemas, env = process.env) {
354
+ const data = loadNamedArtifact(schemas, "health");
355
+ const entries = extractEntries(data);
356
+ if (entries.length === 0)
357
+ return { exists: false };
358
+ const latest = latestHealthAudit(entries);
359
+ if (!latest)
360
+ return { exists: false };
361
+ const grades = latest.grades && typeof latest.grades === "object" && !Array.isArray(latest.grades) ? latest.grades : {};
362
+ const gradeRank = { A: 0, B: 1, C: 2, D: 3, F: 4 };
363
+ let worst = null;
364
+ for (const [name, grade] of Object.entries(grades)) {
365
+ const gradeText = String(grade).toUpperCase();
366
+ const rank = gradeRank[gradeText.slice(0, 1)] ?? -1;
367
+ if (worst === null || rank > worst[2])
368
+ worst = [name, grade, rank];
369
+ }
370
+ const trajectory = String(latest.trajectory ?? "");
371
+ const auditDate = healthAuditDate(latest);
372
+ const dateStr = auditDate !== null ? isoFromUtc(auditDate) : null;
373
+ const summary = {
374
+ exists: true,
375
+ number: latest.number ?? "?",
376
+ date: dateStr,
377
+ timestamp: dateStr ?? latest.timestamp ?? null,
378
+ trajectory,
379
+ grade: worst ? worst[1] : "",
380
+ worst,
381
+ degrading: ["degrading", "declining", "worse"].includes(trajectory.toLowerCase()) ||
382
+ (worst !== null && worst[2] >= gradeRank.D),
383
+ };
384
+ const staleness = checkInspekteraAuditStaleness(schemas, latest, auditDate, env);
385
+ if (staleness !== null)
386
+ Object.assign(summary, staleness);
387
+ return summary;
388
+ }
389
+ function isoFromUtc(utc) {
390
+ const d = new Date(utc);
391
+ const y = d.getUTCFullYear();
392
+ const m = String(d.getUTCMonth() + 1).padStart(2, "0");
393
+ const day = String(d.getUTCDate()).padStart(2, "0");
394
+ return `${y}-${m}-${day}`;
395
+ }
396
+ function objectiveStatus(data) {
397
+ const header = data.header && typeof data.header === "object" && !Array.isArray(data.header) ? data.header : {};
398
+ const objective = data.objective && typeof data.objective === "object" && !Array.isArray(data.objective) ? data.objective : {};
399
+ return String(firstPresent(header, ["status"], data.status ?? objective.status ?? "") || "").toLowerCase();
400
+ }
401
+ export function activeObjectiveSummary() {
402
+ const root = path.join(process.cwd(), ".agentera", "optimera");
403
+ let isDir = false;
404
+ try {
405
+ isDir = fs.statSync(root).isDirectory();
406
+ }
407
+ catch {
408
+ isDir = false;
409
+ }
410
+ if (!isDir)
411
+ return { exists: false };
412
+ const candidates = [];
413
+ let closedCount = 0;
414
+ for (const entry of fs.readdirSync(root)) {
415
+ const candidate = path.join(root, entry);
416
+ try {
417
+ if (!fs.statSync(candidate).isDirectory())
418
+ continue;
419
+ }
420
+ catch {
421
+ continue;
422
+ }
423
+ const objectivePath = path.join(candidate, "objective.yaml");
424
+ if (!fs.existsSync(objectivePath))
425
+ continue;
426
+ const data = loadArtifact(objectivePath);
427
+ if (!data || typeof data !== "object" || Array.isArray(data))
428
+ continue;
429
+ const status = objectiveStatus(data);
430
+ if (DONE_STATUSES.has(status)) {
431
+ closedCount += 1;
432
+ continue;
433
+ }
434
+ candidates.push([candidate, data, status]);
435
+ }
436
+ if (candidates.length === 0)
437
+ return { exists: closedCount > 0, active: false, closed_count: closedCount };
438
+ candidates.sort((a, b) => fs.statSync(b[0]).mtimeMs - fs.statSync(a[0]).mtimeMs);
439
+ const [p, data, status] = candidates[0];
440
+ const header = data.header && typeof data.header === "object" && !Array.isArray(data.header) ? data.header : {};
441
+ const objective = data.objective && typeof data.objective === "object" && !Array.isArray(data.objective) ? data.objective : data;
442
+ const title = firstPresent(header, ["title"], objective.title ?? path.basename(p));
443
+ const metric = firstPresent(objective, ["measurement", "metric", "direction", "target"], title);
444
+ const target = firstPresent(objective, ["target"], "");
445
+ return {
446
+ exists: true,
447
+ active: true,
448
+ name: path.basename(p),
449
+ title: String(title),
450
+ status: status || "active",
451
+ metric: String(metric),
452
+ target: String(target),
453
+ };
454
+ }
455
+ export function statePresence(plan, docs, progress, health, objective) {
456
+ const active = { plan: Boolean(plan.active), objective: Boolean(objective.active) };
457
+ const available = {
458
+ plan: Boolean(plan.exists),
459
+ docs: Boolean(docs.exists),
460
+ progress: Boolean(progress.exists),
461
+ health: Boolean(health.exists),
462
+ objective: Boolean(objective.exists),
463
+ };
464
+ const absence = {};
465
+ for (const [name, summary] of [["plan", plan], ["docs", docs], ["progress", progress]]) {
466
+ if (!summary.exists && summary.absence_reason)
467
+ absence[name] = summary.absence_reason;
468
+ }
469
+ const anyActive = Object.values(active).some(Boolean);
470
+ return {
471
+ active,
472
+ available,
473
+ any_active: anyActive,
474
+ absence_explained: Object.keys(absence).length > 0 || anyActive,
475
+ absence,
476
+ };
477
+ }
478
+ // ── decisions follow-up + attention ─────────────────────────────────
479
+ export function decisionFollowUp(schemas) {
480
+ const data = loadNamedArtifact(schemas, "decisions");
481
+ for (const rawEntry of extractEntries(data)) {
482
+ const entry = decisionContextEntry(rawEntry);
483
+ const satisfaction = entry.satisfaction;
484
+ if (!satisfaction || typeof satisfaction !== "object" || !satisfaction.review_needed)
485
+ continue;
486
+ const number = entry.number ?? "?";
487
+ const title = firstPresent(entry, ["question", "choice"], "decision follow-up");
488
+ return { object: `DECISION ${number} follow-up`, title };
489
+ }
490
+ return null;
491
+ }
492
+ function decisionAttentionState(satisfaction) {
493
+ const state = satisfaction.state;
494
+ if (state === null || state === undefined || state === "")
495
+ return "missing";
496
+ if (state === "user_confirmed_satisfied" && satisfaction.review_needed)
497
+ return "unconfirmed_user_confirmed_satisfied";
498
+ if (["open", "provisionally_satisfied", "review_needed"].includes(state))
499
+ return String(state);
500
+ if (state === "user_confirmed_satisfied")
501
+ return "user_confirmed_satisfied";
502
+ return "unrecognized";
503
+ }
504
+ export function decisionReviewAttention(schemas) {
505
+ const data = loadNamedArtifact(schemas, "decisions");
506
+ const reviewEntries = [];
507
+ const stateCounts = {};
508
+ for (const rawEntry of extractEntries(data)) {
509
+ const entry = decisionContextEntry(rawEntry);
510
+ const satisfaction = entry.satisfaction;
511
+ if (!satisfaction || typeof satisfaction !== "object" || !satisfaction.review_needed)
512
+ continue;
513
+ const state = decisionAttentionState(satisfaction);
514
+ stateCounts[state] = (stateCounts[state] ?? 0) + 1;
515
+ reviewEntries.push({
516
+ number: entry.number ?? "?",
517
+ title: truncate(firstPresent(entry, ["question", "choice", "summary"], "decision review"), 80),
518
+ state,
519
+ source: satisfaction.source ?? null,
520
+ });
521
+ }
522
+ if (reviewEntries.length === 0)
523
+ return null;
524
+ const boundedEntries = reviewEntries.slice(0, DECISION_ATTENTION_MAX_ENTRIES);
525
+ const stateText = Object.keys(stateCounts)
526
+ .sort()
527
+ .map((name) => `${name}=${stateCounts[name]}`)
528
+ .join(", ");
529
+ const refs = boundedEntries.map((entry) => `Decision ${entry.number}: ${entry.title}`).join("; ");
530
+ const more = reviewEntries.length - boundedEntries.length;
531
+ const suffix = more > 0 ? `; +${more} more` : "";
532
+ return {
533
+ type: "decision_satisfaction_review",
534
+ count: reviewEntries.length,
535
+ states: stateCounts,
536
+ entries: boundedEntries,
537
+ max_entries: DECISION_ATTENTION_MAX_ENTRIES,
538
+ bounded: true,
539
+ attention: `normal: decisions need satisfaction review (${reviewEntries.length}; ${stateText}); ${refs}${suffix}`,
540
+ };
541
+ }
542
+ export function formatNextAction(action) {
543
+ if (!action)
544
+ return "object=VISION refresh | capability=visionera | reason=no executable follow-up";
545
+ return `object=${truncate(action.object)} | capability=${action.capability} | reason=${action.reason}`;
546
+ }
547
+ export function selectHejNextAction(plan, health, objective, todoItems, decision, savedContext) {
548
+ const pending = plan.first_pending;
549
+ if (pending && typeof pending === "object" && !Array.isArray(pending)) {
550
+ const number = pending.number ?? "?";
551
+ const title = firstPresent(pending, ["name", "title"], "pending task");
552
+ return { object: `PLAN Task ${number}: ${title}`, capability: "orkestrera", reason: "first pending plan task" };
553
+ }
554
+ if (health.degrading) {
555
+ const worst = health.worst;
556
+ const target = worst ? `${worst[0]}:${worst[1]}` : "degrading health";
557
+ return { object: `HEALTH: ${target}`, capability: "inspektera", reason: "critical or degrading health" };
558
+ }
559
+ if (objective.active) {
560
+ return {
561
+ object: `OBJECTIVE: ${objective.metric || objective.title}`,
562
+ capability: "optimera",
563
+ reason: "active non-closed objective",
564
+ };
565
+ }
566
+ if (todoItems.length > 0) {
567
+ const item = [...todoItems].sort((a, b) => (TODO_SEVERITY_ORDER[a.severity] ?? 2) - (TODO_SEVERITY_ORDER[b.severity] ?? 2))[0];
568
+ if (todoNeedsPlanera(item)) {
569
+ return { object: `TODO: ${item.text}`, capability: "planera", reason: "complex TODO needs planning" };
570
+ }
571
+ return { object: `TODO: ${item.text}`, capability: "realisera", reason: "highest-priority open TODO" };
572
+ }
573
+ if (health.stale && !health.degrading) {
574
+ return {
575
+ object: `HEALTH: Audit ${health.number ?? "?"} stale`,
576
+ capability: "inspektera",
577
+ reason: "stale health audit",
578
+ };
579
+ }
580
+ if (decision) {
581
+ return { object: String(decision.object), capability: "resonera", reason: "unresolved decision follow-up" };
582
+ }
583
+ const visionExists = fs.existsSync(path.join(process.cwd(), ".agentera", "vision.yaml"));
584
+ if (plan.exists && !plan.complete_plan) {
585
+ return { object: "VISION refresh", capability: "planera", reason: "no executable follow-up" };
586
+ }
587
+ if (visionExists) {
588
+ return { object: "VISION refresh", capability: "planera", reason: "no executable follow-up" };
589
+ }
590
+ if (savedContext) {
591
+ return { object: "Direction clarification", capability: "resonera", reason: "saved context without vision" };
592
+ }
593
+ return { object: "VISION refresh", capability: "visionera", reason: "fresh project direction" };
594
+ }
595
+ //# sourceMappingURL=orientation.js.map