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.
- package/README.md +6 -45
- package/bundle/.agentera-npx-bundle.json +4 -0
- package/bundle/references/adapters/cursor.md +213 -0
- package/bundle/references/adapters/opencode.md +530 -0
- package/bundle/references/adapters/package-manifest-interface-model.yaml +337 -0
- package/bundle/references/adapters/package-registry.yaml +247 -0
- package/bundle/references/adapters/package-surface-characterization.md +48 -0
- package/bundle/references/adapters/runtime-adapter-characterization.md +79 -0
- package/bundle/references/adapters/runtime-adapter-interface-model.yaml +200 -0
- package/bundle/references/adapters/runtime-adapter-registry.yaml +548 -0
- package/bundle/references/adapters/runtime-feature-parity.md +189 -0
- package/bundle/references/analysis/benchmark.md +267 -0
- package/bundle/references/analysis/startup-measurement-contract.yaml +424 -0
- package/bundle/references/artifacts/artifact-registry-interface-model.yaml +288 -0
- package/bundle/references/cli/agent-ready-state-contract.yaml +950 -0
- package/bundle/references/cli/app-lifecycle-vocabulary.yaml +241 -0
- package/bundle/references/cli/audience-namespace-cli-migration.yaml +355 -0
- package/bundle/references/cli/bundle-skill-vocabulary.yaml +278 -0
- package/bundle/references/cli/capability-instruction-contract.yaml +123 -0
- package/bundle/references/cli/capability-tool-classification.yaml +53 -0
- package/bundle/references/cli/routing-execution-vocabulary.yaml +281 -0
- package/bundle/references/cli/update-channels.yaml +147 -0
- package/bundle/references/cli/vocabulary-index.yaml +160 -0
- package/bundle/references/cli/vocabulary.md +566 -0
- package/bundle/references/meta/documentation-inventory.md +43 -0
- package/bundle/references/v1-section-mapping.md +47 -0
- package/bundle/registry.json +39 -0
- package/bundle/skills/agentera/.claude-plugin/plugin.json +27 -0
- package/bundle/skills/agentera/SKILL.md +470 -0
- package/bundle/skills/agentera/agents/dokumentera.toml +6 -0
- package/bundle/skills/agentera/agents/hej.toml +6 -0
- package/bundle/skills/agentera/agents/inspektera.toml +6 -0
- package/bundle/skills/agentera/agents/inspirera.toml +6 -0
- package/bundle/skills/agentera/agents/optimera.toml +6 -0
- package/bundle/skills/agentera/agents/orkestrera.toml +6 -0
- package/bundle/skills/agentera/agents/planera.toml +6 -0
- package/bundle/skills/agentera/agents/profilera.toml +6 -0
- package/bundle/skills/agentera/agents/realisera.toml +6 -0
- package/bundle/skills/agentera/agents/resonera.toml +6 -0
- package/bundle/skills/agentera/agents/visionera.toml +6 -0
- package/bundle/skills/agentera/agents/visualisera.toml +6 -0
- package/bundle/skills/agentera/capabilities/dokumentera/instructions.md +428 -0
- package/bundle/skills/agentera/capabilities/dokumentera/schemas/artifacts.yaml +73 -0
- package/bundle/skills/agentera/capabilities/dokumentera/schemas/exit.yaml +35 -0
- package/bundle/skills/agentera/capabilities/dokumentera/schemas/triggers.yaml +35 -0
- package/bundle/skills/agentera/capabilities/dokumentera/schemas/validation.yaml +139 -0
- package/bundle/skills/agentera/capabilities/hej/instructions.md +331 -0
- package/bundle/skills/agentera/capabilities/hej/schemas/artifacts.yaml +69 -0
- package/bundle/skills/agentera/capabilities/hej/schemas/exit.yaml +32 -0
- package/bundle/skills/agentera/capabilities/hej/schemas/triggers.yaml +58 -0
- package/bundle/skills/agentera/capabilities/hej/schemas/validation.yaml +55 -0
- package/bundle/skills/agentera/capabilities/inspektera/instructions.md +514 -0
- package/bundle/skills/agentera/capabilities/inspektera/schemas/artifacts.yaml +76 -0
- package/bundle/skills/agentera/capabilities/inspektera/schemas/exit.yaml +36 -0
- package/bundle/skills/agentera/capabilities/inspektera/schemas/triggers.yaml +38 -0
- package/bundle/skills/agentera/capabilities/inspektera/schemas/validation.yaml +113 -0
- package/bundle/skills/agentera/capabilities/inspirera/instructions.md +280 -0
- package/bundle/skills/agentera/capabilities/inspirera/schemas/artifacts.yaml +24 -0
- package/bundle/skills/agentera/capabilities/inspirera/schemas/exit.yaml +33 -0
- package/bundle/skills/agentera/capabilities/inspirera/schemas/triggers.yaml +34 -0
- package/bundle/skills/agentera/capabilities/inspirera/schemas/validation.yaml +58 -0
- package/bundle/skills/agentera/capabilities/optimera/instructions.md +437 -0
- package/bundle/skills/agentera/capabilities/optimera/schemas/artifacts.yaml +69 -0
- package/bundle/skills/agentera/capabilities/optimera/schemas/exit.yaml +35 -0
- package/bundle/skills/agentera/capabilities/optimera/schemas/triggers.yaml +39 -0
- package/bundle/skills/agentera/capabilities/optimera/schemas/validation.yaml +91 -0
- package/bundle/skills/agentera/capabilities/orkestrera/instructions.md +433 -0
- package/bundle/skills/agentera/capabilities/orkestrera/schemas/artifacts.yaml +64 -0
- package/bundle/skills/agentera/capabilities/orkestrera/schemas/exit.yaml +34 -0
- package/bundle/skills/agentera/capabilities/orkestrera/schemas/triggers.yaml +42 -0
- package/bundle/skills/agentera/capabilities/orkestrera/schemas/validation.yaml +107 -0
- package/bundle/skills/agentera/capabilities/planera/instructions.md +368 -0
- package/bundle/skills/agentera/capabilities/planera/schemas/artifacts.yaml +62 -0
- package/bundle/skills/agentera/capabilities/planera/schemas/exit.yaml +33 -0
- package/bundle/skills/agentera/capabilities/planera/schemas/triggers.yaml +34 -0
- package/bundle/skills/agentera/capabilities/planera/schemas/validation.yaml +61 -0
- package/bundle/skills/agentera/capabilities/profilera/instructions.md +419 -0
- package/bundle/skills/agentera/capabilities/profilera/schemas/artifacts.yaml +18 -0
- package/bundle/skills/agentera/capabilities/profilera/schemas/exit.yaml +34 -0
- package/bundle/skills/agentera/capabilities/profilera/schemas/triggers.yaml +45 -0
- package/bundle/skills/agentera/capabilities/profilera/schemas/validation.yaml +57 -0
- package/bundle/skills/agentera/capabilities/realisera/instructions.md +403 -0
- package/bundle/skills/agentera/capabilities/realisera/schemas/artifacts.yaml +80 -0
- package/bundle/skills/agentera/capabilities/realisera/schemas/exit.yaml +35 -0
- package/bundle/skills/agentera/capabilities/realisera/schemas/triggers.yaml +39 -0
- package/bundle/skills/agentera/capabilities/realisera/schemas/validation.yaml +110 -0
- package/bundle/skills/agentera/capabilities/resonera/instructions.md +329 -0
- package/bundle/skills/agentera/capabilities/resonera/schemas/artifacts.yaml +47 -0
- package/bundle/skills/agentera/capabilities/resonera/schemas/exit.yaml +35 -0
- package/bundle/skills/agentera/capabilities/resonera/schemas/triggers.yaml +46 -0
- package/bundle/skills/agentera/capabilities/resonera/schemas/validation.yaml +77 -0
- package/bundle/skills/agentera/capabilities/visionera/instructions.md +309 -0
- package/bundle/skills/agentera/capabilities/visionera/schemas/artifacts.yaml +57 -0
- package/bundle/skills/agentera/capabilities/visionera/schemas/exit.yaml +35 -0
- package/bundle/skills/agentera/capabilities/visionera/schemas/triggers.yaml +41 -0
- package/bundle/skills/agentera/capabilities/visionera/schemas/validation.yaml +74 -0
- package/bundle/skills/agentera/capabilities/visualisera/instructions.md +400 -0
- package/bundle/skills/agentera/capabilities/visualisera/schemas/artifacts.yaml +44 -0
- package/bundle/skills/agentera/capabilities/visualisera/schemas/exit.yaml +34 -0
- package/bundle/skills/agentera/capabilities/visualisera/schemas/triggers.yaml +33 -0
- package/bundle/skills/agentera/capabilities/visualisera/schemas/validation.yaml +80 -0
- package/bundle/skills/agentera/capability_schema_contract.yaml +385 -0
- package/bundle/skills/agentera/protocol.yaml +463 -0
- package/bundle/skills/agentera/references/contract.md +1039 -0
- package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +60 -0
- package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +461 -0
- package/bundle/skills/agentera/schemas/artifacts/design.yaml +55 -0
- package/bundle/skills/agentera/schemas/artifacts/docs.yaml +402 -0
- package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +373 -0
- package/bundle/skills/agentera/schemas/artifacts/health.yaml +484 -0
- package/bundle/skills/agentera/schemas/artifacts/objective.yaml +399 -0
- package/bundle/skills/agentera/schemas/artifacts/plan.yaml +342 -0
- package/bundle/skills/agentera/schemas/artifacts/progress.yaml +325 -0
- package/bundle/skills/agentera/schemas/artifacts/todo.yaml +110 -0
- package/bundle/skills/agentera/schemas/artifacts/vision.yaml +262 -0
- package/bundle/skills/hej/.claude-plugin/plugin.json +6 -0
- package/bundle/skills/hej/SKILL.md +69 -0
- package/bundle/skills/hej/agents/hej.toml +11 -0
- package/bundle/skills/hej/agents/openai.yaml +8 -0
- package/dist/analytics/extractCorpus.js +1791 -0
- package/dist/analytics/extractCorpus.js.map +1 -0
- package/dist/analytics/usageStats.js +487 -0
- package/dist/analytics/usageStats.js.map +1 -0
- package/dist/bin/agentera.js +4 -0
- package/dist/bin/agentera.js.map +1 -0
- package/dist/cli/appContext.js +226 -0
- package/dist/cli/appContext.js.map +1 -0
- package/dist/cli/argvalidate.js +41 -0
- package/dist/cli/argvalidate.js.map +1 -0
- package/dist/cli/capabilityContext.js +2421 -0
- package/dist/cli/capabilityContext.js.map +1 -0
- package/dist/cli/commands/backfill.js +84 -0
- package/dist/cli/commands/backfill.js.map +1 -0
- package/dist/cli/commands/capability.js +44 -0
- package/dist/cli/commands/capability.js.map +1 -0
- package/dist/cli/commands/compact.js +148 -0
- package/dist/cli/commands/compact.js.map +1 -0
- package/dist/cli/commands/doctor.js +180 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/lint.js +179 -0
- package/dist/cli/commands/lint.js.map +1 -0
- package/dist/cli/commands/prime.js +544 -0
- package/dist/cli/commands/prime.js.map +1 -0
- package/dist/cli/commands/query.js +346 -0
- package/dist/cli/commands/query.js.map +1 -0
- package/dist/cli/commands/report.js +210 -0
- package/dist/cli/commands/report.js.map +1 -0
- package/dist/cli/commands/schema.js +306 -0
- package/dist/cli/commands/schema.js.map +1 -0
- package/dist/cli/commands/state.js +1012 -0
- package/dist/cli/commands/state.js.map +1 -0
- package/dist/cli/commands/upgrade.js +48 -0
- package/dist/cli/commands/upgrade.js.map +1 -0
- package/dist/cli/commands/validate.js +519 -0
- package/dist/cli/commands/validate.js.map +1 -0
- package/dist/cli/commands/verify.js +204 -0
- package/dist/cli/commands/verify.js.map +1 -0
- package/dist/cli/dispatch.js +958 -0
- package/dist/cli/dispatch.js.map +1 -0
- package/dist/cli/orientation.js +595 -0
- package/dist/cli/orientation.js.map +1 -0
- package/dist/cli/prime-blob.js +3 -0
- package/dist/cli/prime-blob.js.map +1 -0
- package/dist/cli/stateQuery.js +292 -0
- package/dist/cli/stateQuery.js.map +1 -0
- package/dist/cli/structured.js +18 -0
- package/dist/cli/structured.js.map +1 -0
- package/dist/core/difflib.js +274 -0
- package/dist/core/difflib.js.map +1 -0
- package/dist/core/git.js +43 -0
- package/dist/core/git.js.map +1 -0
- package/dist/core/paths.js +50 -0
- package/dist/core/paths.js.map +1 -0
- package/dist/core/pyjson.js +101 -0
- package/dist/core/pyjson.js.map +1 -0
- package/dist/core/sourceRoot.js +72 -0
- package/dist/core/sourceRoot.js.map +1 -0
- package/dist/core/toml.js +11 -0
- package/dist/core/toml.js.map +1 -0
- package/dist/core/yaml.js +25 -0
- package/dist/core/yaml.js.map +1 -0
- package/dist/eval/evalSkills.js +258 -0
- package/dist/eval/evalSkills.js.map +1 -0
- package/dist/eval/semanticEval.js +148 -0
- package/dist/eval/semanticEval.js.map +1 -0
- package/dist/eval/semanticFixtures.js +227 -0
- package/dist/eval/semanticFixtures.js.map +1 -0
- package/dist/hooks/common.js +160 -0
- package/dist/hooks/common.js.map +1 -0
- package/dist/hooks/compaction.js +935 -0
- package/dist/hooks/compaction.js.map +1 -0
- package/dist/hooks/cursorPreToolUse.js +19 -0
- package/dist/hooks/cursorPreToolUse.js.map +1 -0
- package/dist/hooks/cursorSessionStart.js +71 -0
- package/dist/hooks/cursorSessionStart.js.map +1 -0
- package/dist/hooks/sessionStart.js +209 -0
- package/dist/hooks/sessionStart.js.map +1 -0
- package/dist/hooks/sessionStop.js +212 -0
- package/dist/hooks/sessionStop.js.map +1 -0
- package/dist/hooks/validateArtifact.js +933 -0
- package/dist/hooks/validateArtifact.js.map +1 -0
- package/dist/registries/artifactRegistry.js +206 -0
- package/dist/registries/artifactRegistry.js.map +1 -0
- package/dist/registries/capabilityContract.js +310 -0
- package/dist/registries/capabilityContract.js.map +1 -0
- package/dist/registries/packageRegistry.js +641 -0
- package/dist/registries/packageRegistry.js.map +1 -0
- package/dist/registries/runtimeAdapterRegistry.js +315 -0
- package/dist/registries/runtimeAdapterRegistry.js.map +1 -0
- package/dist/setup/codex.js +1056 -0
- package/dist/setup/codex.js.map +1 -0
- package/dist/setup/copilot.js +227 -0
- package/dist/setup/copilot.js.map +1 -0
- package/dist/setup/cursor.js +127 -0
- package/dist/setup/cursor.js.map +1 -0
- package/dist/setup/doctor.js +1276 -0
- package/dist/setup/doctor.js.map +1 -0
- package/dist/state/installRoot.js +279 -0
- package/dist/state/installRoot.js.map +1 -0
- package/dist/state/progressCommit.js +289 -0
- package/dist/state/progressCommit.js.map +1 -0
- package/dist/state/startupAnalysis.js +1953 -0
- package/dist/state/startupAnalysis.js.map +1 -0
- package/dist/upgrade/appModel.js +189 -0
- package/dist/upgrade/appModel.js.map +1 -0
- package/dist/upgrade/channels.js +208 -0
- package/dist/upgrade/channels.js.map +1 -0
- package/dist/upgrade/compatibility.js +201 -0
- package/dist/upgrade/compatibility.js.map +1 -0
- package/dist/upgrade/doctor.js +373 -0
- package/dist/upgrade/doctor.js.map +1 -0
- package/dist/upgrade/migrateArtifactsV2ToV3.js +332 -0
- package/dist/upgrade/migrateArtifactsV2ToV3.js.map +1 -0
- package/dist/upgrade/runtimeMigration.js +484 -0
- package/dist/upgrade/runtimeMigration.js.map +1 -0
- package/dist/upgrade/upgradeCommands.js +36 -0
- package/dist/upgrade/upgradeCommands.js.map +1 -0
- package/dist/upgrade/upgradeOrchestrator.js +299 -0
- package/dist/upgrade/upgradeOrchestrator.js.map +1 -0
- package/dist/upgrade/versionResolution.js +179 -0
- package/dist/upgrade/versionResolution.js.map +1 -0
- package/dist/validate/appHomeContract.js +150 -0
- package/dist/validate/appHomeContract.js.map +1 -0
- package/dist/validate/capability.js +412 -0
- package/dist/validate/capability.js.map +1 -0
- package/dist/validate/crossCapability.js +145 -0
- package/dist/validate/crossCapability.js.map +1 -0
- package/dist/validate/lifecycleAdapters.js +772 -0
- package/dist/validate/lifecycleAdapters.js.map +1 -0
- package/dist/validate/selfAudit.js +107 -0
- package/dist/validate/selfAudit.js.map +1 -0
- package/package.json +28 -8
- package/LICENSE +0 -201
- package/bin/agentera.mjs +0 -50
- package/lib/exec.mjs +0 -116
- 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
|