agentera 3.0.0-dev.3 → 3.0.0-dev.5

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 (131) hide show
  1. package/README.md +39 -6
  2. package/bundle/.agentera-npx-bundle.json +1 -1
  3. package/bundle/references/cli/agent-ready-state-contract.yaml +20 -17
  4. package/bundle/references/cli/bundle-skill-vocabulary.yaml +1 -1
  5. package/bundle/references/cli/capability-instruction-contract.yaml +98 -57
  6. package/bundle/references/cli/routing-execution-vocabulary.yaml +6 -6
  7. package/bundle/references/cli/update-channels.yaml +27 -7
  8. package/bundle/references/cli/vocabulary-index.yaml +3 -3
  9. package/bundle/references/cli/vocabulary.md +28 -19
  10. package/bundle/registry.json +1 -1
  11. package/bundle/skills/agentera/SKILL.md +38 -21
  12. package/bundle/skills/agentera/agents/dokumentera.toml +1 -1
  13. package/bundle/skills/agentera/agents/hej.toml +1 -1
  14. package/bundle/skills/agentera/agents/inspektera.toml +1 -1
  15. package/bundle/skills/agentera/agents/inspirera.toml +1 -1
  16. package/bundle/skills/agentera/agents/optimera.toml +1 -1
  17. package/bundle/skills/agentera/agents/orkestrera.toml +1 -1
  18. package/bundle/skills/agentera/agents/planera.toml +1 -1
  19. package/bundle/skills/agentera/agents/profilera.toml +1 -1
  20. package/bundle/skills/agentera/agents/realisera.toml +1 -1
  21. package/bundle/skills/agentera/agents/resonera.toml +1 -1
  22. package/bundle/skills/agentera/agents/visionera.toml +1 -1
  23. package/bundle/skills/agentera/agents/visualisera.toml +1 -1
  24. package/bundle/skills/agentera/capabilities/orkestrera/schemas/validation.yaml +26 -13
  25. package/bundle/skills/agentera/capability_schema_contract.yaml +33 -14
  26. package/bundle/skills/agentera/references/contract.md +2 -2
  27. package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +1 -1
  28. package/bundle/skills/agentera/schemas/artifacts/progress.yaml +15 -36
  29. package/bundle/skills/agentera/schemas/artifacts/todo.yaml +14 -0
  30. package/bundle/skills/hej/SKILL.md +1 -1
  31. package/dist/analytics/usageStats.js +23 -1
  32. package/dist/analytics/usageStats.js.map +1 -1
  33. package/dist/capabilities/dokumentera/instructions.js +6 -0
  34. package/dist/capabilities/dokumentera/instructions.js.map +1 -0
  35. package/dist/capabilities/hej/instructions.js +6 -0
  36. package/dist/capabilities/hej/instructions.js.map +1 -0
  37. package/dist/capabilities/index.js +38 -0
  38. package/dist/capabilities/index.js.map +1 -0
  39. package/dist/capabilities/inspektera/instructions.js +6 -0
  40. package/dist/capabilities/inspektera/instructions.js.map +1 -0
  41. package/dist/capabilities/inspirera/instructions.js +6 -0
  42. package/dist/capabilities/inspirera/instructions.js.map +1 -0
  43. package/dist/capabilities/optimera/instructions.js +6 -0
  44. package/dist/capabilities/optimera/instructions.js.map +1 -0
  45. package/dist/capabilities/orkestrera/instructions.js +6 -0
  46. package/dist/capabilities/orkestrera/instructions.js.map +1 -0
  47. package/dist/capabilities/planera/instructions.js +6 -0
  48. package/dist/capabilities/planera/instructions.js.map +1 -0
  49. package/dist/capabilities/profilera/instructions.js +6 -0
  50. package/dist/capabilities/profilera/instructions.js.map +1 -0
  51. package/dist/capabilities/realisera/instructions.js +6 -0
  52. package/dist/capabilities/realisera/instructions.js.map +1 -0
  53. package/dist/capabilities/resonera/instructions.js +6 -0
  54. package/dist/capabilities/resonera/instructions.js.map +1 -0
  55. package/dist/capabilities/visionera/instructions.js +6 -0
  56. package/dist/capabilities/visionera/instructions.js.map +1 -0
  57. package/dist/capabilities/visualisera/instructions.js +6 -0
  58. package/dist/capabilities/visualisera/instructions.js.map +1 -0
  59. package/dist/cli/capabilityContext.js +92 -26
  60. package/dist/cli/capabilityContext.js.map +1 -1
  61. package/dist/cli/commands/capability.js +1 -8
  62. package/dist/cli/commands/capability.js.map +1 -1
  63. package/dist/cli/commands/doctor.js +42 -3
  64. package/dist/cli/commands/doctor.js.map +1 -1
  65. package/dist/cli/commands/report.js +5 -1
  66. package/dist/cli/commands/report.js.map +1 -1
  67. package/dist/cli/commands/state.js +22 -11
  68. package/dist/cli/commands/state.js.map +1 -1
  69. package/dist/cli/commands/validate.js +12 -2
  70. package/dist/cli/commands/validate.js.map +1 -1
  71. package/dist/cli/commands/verify.js +6 -0
  72. package/dist/cli/commands/verify.js.map +1 -1
  73. package/dist/cli/dispatch.js +508 -172
  74. package/dist/cli/dispatch.js.map +1 -1
  75. package/dist/cli/errors.js +53 -0
  76. package/dist/cli/errors.js.map +1 -0
  77. package/dist/cli/help.js +201 -0
  78. package/dist/cli/help.js.map +1 -0
  79. package/dist/cli/orientation.js +9 -6
  80. package/dist/cli/orientation.js.map +1 -1
  81. package/dist/cli/stateQuery.js +7 -0
  82. package/dist/cli/stateQuery.js.map +1 -1
  83. package/dist/cli/todoMarkdown.js +33 -0
  84. package/dist/cli/todoMarkdown.js.map +1 -0
  85. package/dist/hooks/common.js +0 -2
  86. package/dist/hooks/common.js.map +1 -1
  87. package/dist/hooks/validateArtifact.js +10 -8
  88. package/dist/hooks/validateArtifact.js.map +1 -1
  89. package/dist/registries/capabilityContract.js +12 -11
  90. package/dist/registries/capabilityContract.js.map +1 -1
  91. package/dist/registries/evaluatorHandoffContract.js +171 -0
  92. package/dist/registries/evaluatorHandoffContract.js.map +1 -0
  93. package/dist/setup/codex.js +146 -5
  94. package/dist/setup/codex.js.map +1 -1
  95. package/dist/setup/doctor.js +22 -1
  96. package/dist/setup/doctor.js.map +1 -1
  97. package/dist/setup/smokeChecks.js +111 -0
  98. package/dist/setup/smokeChecks.js.map +1 -0
  99. package/dist/upgrade/channels.js +9 -3
  100. package/dist/upgrade/channels.js.map +1 -1
  101. package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -1
  102. package/dist/upgrade/migrateArtifactsV1ToV2.js.map +1 -1
  103. package/dist/upgrade/nextMajorDoctor.js +121 -0
  104. package/dist/upgrade/nextMajorDoctor.js.map +1 -0
  105. package/dist/upgrade/runtimeMigration.js +19 -3
  106. package/dist/upgrade/runtimeMigration.js.map +1 -1
  107. package/dist/upgrade/versionResolution.js +4 -4
  108. package/dist/upgrade/versionResolution.js.map +1 -1
  109. package/dist/validate/appHomeContract.js +1 -1
  110. package/dist/validate/appHomeContract.js.map +1 -1
  111. package/dist/validate/capability.js +11 -3
  112. package/dist/validate/capability.js.map +1 -1
  113. package/package.json +3 -3
  114. package/bundle/skills/agentera/capabilities/dokumentera/instructions.md +0 -428
  115. package/bundle/skills/agentera/capabilities/hej/instructions.md +0 -331
  116. package/bundle/skills/agentera/capabilities/inspektera/instructions.md +0 -514
  117. package/bundle/skills/agentera/capabilities/inspirera/instructions.md +0 -280
  118. package/bundle/skills/agentera/capabilities/optimera/instructions.md +0 -437
  119. package/bundle/skills/agentera/capabilities/orkestrera/instructions.md +0 -433
  120. package/bundle/skills/agentera/capabilities/planera/instructions.md +0 -368
  121. package/bundle/skills/agentera/capabilities/profilera/instructions.md +0 -419
  122. package/bundle/skills/agentera/capabilities/realisera/instructions.md +0 -403
  123. package/bundle/skills/agentera/capabilities/resonera/instructions.md +0 -329
  124. package/bundle/skills/agentera/capabilities/visionera/instructions.md +0 -309
  125. package/bundle/skills/agentera/capabilities/visualisera/instructions.md +0 -400
  126. package/dist/cli/commands/backfill.js +0 -84
  127. package/dist/cli/commands/backfill.js.map +0 -1
  128. package/dist/core/git.js +0 -43
  129. package/dist/core/git.js.map +0 -1
  130. package/dist/state/progressCommit.js +0 -289
  131. package/dist/state/progressCommit.js.map +0 -1
@@ -1,289 +0,0 @@
1
- import { ancestorState } from "../core/git.js";
2
- import { loadYamlMapping } from "../core/yaml.js";
3
- /**
4
- * Shared progress-commit and git-ancestry logic. Faithful TS port of
5
- * `scripts/progress_commit.py`.
6
- */
7
- export const COMMIT_HASH_RE = /^[0-9a-fA-F]{7,40}$/;
8
- /**
9
- * Leading verifiable git hash in a cycle `commit` value, else `null`. `pending`,
10
- * `N/A …` and non-hash free text are exempt; non-string values return `null`.
11
- */
12
- export function commitToken(value) {
13
- if (typeof value !== "string") {
14
- return null;
15
- }
16
- const text = value.trim();
17
- if (!text) {
18
- return null;
19
- }
20
- const token = text.split(/\s+/)[0];
21
- const low = token.toLowerCase();
22
- if (low === "pending" || low.startsWith("n/a")) {
23
- return null;
24
- }
25
- return COMMIT_HASH_RE.test(token) ? token : null;
26
- }
27
- function changeHas(changes, key) {
28
- return changes instanceof Map ? changes.has(key) : Object.prototype.hasOwnProperty.call(changes, key);
29
- }
30
- function changeGet(changes, key) {
31
- return changes instanceof Map ? changes.get(key) : changes[key];
32
- }
33
- function changeSize(changes) {
34
- return changes instanceof Map ? changes.size : Object.keys(changes).length;
35
- }
36
- function splitKeepEnds(text) {
37
- const matches = text.match(/[^\n]*\n|[^\n]+/g);
38
- return matches ?? [];
39
- }
40
- /**
41
- * Replace the `commit:` field of specific cycles, preserving the rest. `changes`
42
- * maps cycle number to the new `commit` value. Multi-line commit scalars are
43
- * replaced wholesale, dropping their continuation lines.
44
- */
45
- export function rewriteCycleCommits(text, changes) {
46
- if (changeSize(changes) === 0) {
47
- return text;
48
- }
49
- const numberRe = /^-\s+number:\s*(\d+)\s*$/;
50
- const listItemRe = /^-\s/;
51
- const commitRe = /^(\s+)commit:\s*.*$/;
52
- const topKeyRe = /^[A-Za-z_]/;
53
- const lines = splitKeepEnds(text);
54
- const out = [];
55
- let inCycles = false;
56
- let current = null;
57
- let i = 0;
58
- const total = lines.length;
59
- while (i < total) {
60
- const line = lines[i];
61
- const body = line.endsWith("\n") ? line.slice(0, -1) : line;
62
- if (topKeyRe.test(body)) {
63
- inCycles = body.startsWith("cycles:");
64
- current = null;
65
- out.push(line);
66
- i += 1;
67
- continue;
68
- }
69
- if (inCycles) {
70
- const numberMatch = numberRe.exec(body);
71
- if (numberMatch) {
72
- current = parseInt(numberMatch[1], 10);
73
- out.push(line);
74
- i += 1;
75
- continue;
76
- }
77
- if (listItemRe.test(body)) {
78
- current = null;
79
- out.push(line);
80
- i += 1;
81
- continue;
82
- }
83
- const commitMatch = commitRe.exec(body);
84
- if (commitMatch && current !== null && changeHas(changes, current)) {
85
- const indent = commitMatch[1];
86
- const keyIndent = indent.length;
87
- const newline = line.endsWith("\n") ? "\n" : "";
88
- out.push(`${indent}commit: ${changeGet(changes, current)}${newline}`);
89
- i += 1;
90
- while (i < total) {
91
- const cont = lines[i].endsWith("\n") ? lines[i].slice(0, -1) : lines[i];
92
- if (!cont.trim()) {
93
- break;
94
- }
95
- const leading = (cont.match(/^ */)?.[0].length) ?? 0;
96
- if (leading > keyIndent && !listItemRe.test(cont)) {
97
- i += 1;
98
- continue;
99
- }
100
- break;
101
- }
102
- current = null;
103
- continue;
104
- }
105
- }
106
- out.push(line);
107
- i += 1;
108
- }
109
- return out.join("");
110
- }
111
- /**
112
- * Classify progress cycle commits and decide the backfill outcome. Pure with
113
- * respect to the artifact: parses `text` and inspects git ancestry but never
114
- * reads or writes the progress file.
115
- */
116
- export function computeBackfill(text, options = {}) {
117
- const mode = options.mode ?? "check";
118
- const targetCommit = options.targetCommit ?? null;
119
- let targetCycle = options.targetCycle ?? null;
120
- const cwd = options.cwd ?? ".";
121
- let data;
122
- try {
123
- data = loadYamlMapping(text);
124
- }
125
- catch (exc) {
126
- return {
127
- status: "error",
128
- exitCode: 2,
129
- operations: [],
130
- changes: [],
131
- message: `cannot parse progress artifact: ${exc.message}`,
132
- };
133
- }
134
- const cyclesRaw = data && typeof data === "object" ? data.cycles : null;
135
- if (!Array.isArray(cyclesRaw)) {
136
- return {
137
- status: "noop",
138
- exitCode: 0,
139
- operations: [],
140
- changes: [],
141
- message: "progress artifact has no cycles list",
142
- };
143
- }
144
- if (ancestorState("HEAD", cwd) === "unavailable") {
145
- return {
146
- status: "noop",
147
- exitCode: 0,
148
- operations: [],
149
- changes: [],
150
- message: "git HEAD unavailable; cannot verify commit ancestry",
151
- };
152
- }
153
- const fullCycles = [];
154
- for (const c of cyclesRaw) {
155
- if (c && typeof c === "object" && !Array.isArray(c)) {
156
- const num = c.number;
157
- if (typeof num === "number" && Number.isInteger(num)) {
158
- fullCycles.push([num, c.commit]);
159
- }
160
- }
161
- }
162
- let targetToken = null;
163
- if (targetCommit) {
164
- const trimmed = targetCommit.trim();
165
- targetToken = trimmed ? trimmed.split(/\s+/)[0] : "";
166
- const state = targetToken ? ancestorState(targetToken, cwd) : "unknown";
167
- if (state !== "ancestor") {
168
- return {
169
- status: "error",
170
- exitCode: 2,
171
- operations: [],
172
- changes: [],
173
- message: `refusing to backfill commit '${targetCommit}': it is ${state} relative to HEAD. ` +
174
- "Backfill only a commit already in HEAD's history; commit the product change first, " +
175
- "then backfill from a later commit (never amend to backfill).",
176
- };
177
- }
178
- const known = new Set(fullCycles.map(([n]) => n));
179
- if (targetCycle !== null && !known.has(targetCycle)) {
180
- return {
181
- status: "error",
182
- exitCode: 2,
183
- operations: [],
184
- changes: [],
185
- message: `cycle ${targetCycle} not found in progress cycles`,
186
- };
187
- }
188
- if (targetCycle === null) {
189
- targetCycle =
190
- fullCycles.find(([, cv]) => {
191
- const tok = commitToken(cv);
192
- return tok === null || ancestorState(tok ?? "", cwd) === "stale";
193
- })?.[0] ?? null;
194
- }
195
- if (targetCycle === null) {
196
- return {
197
- status: "noop",
198
- exitCode: 0,
199
- operations: [],
200
- changes: [],
201
- message: "no pending or stale cycle to backfill; pass --cycle N to target one",
202
- };
203
- }
204
- }
205
- const changes = new Map();
206
- const operations = [];
207
- for (const [number, commitValue] of fullCycles) {
208
- if (number === targetCycle && targetToken) {
209
- let action = "set-commit";
210
- let state = "ancestor";
211
- if (commitToken(commitValue) === targetToken) {
212
- action = "none";
213
- state = "ancestor";
214
- }
215
- else {
216
- changes.set(number, targetToken);
217
- }
218
- operations.push({ cycle: number, commit: targetToken, state, action });
219
- continue;
220
- }
221
- const token = commitToken(commitValue);
222
- if (token === null) {
223
- operations.push({ cycle: number, commit: commitValue, state: "exempt", action: "none" });
224
- continue;
225
- }
226
- const state = ancestorState(token, cwd);
227
- if (state === "stale") {
228
- changes.set(number, "pending");
229
- operations.push({ cycle: number, commit: token, state: "stale", action: "reset-to-pending" });
230
- }
231
- else {
232
- operations.push({ cycle: number, commit: token, state, action: "none" });
233
- }
234
- }
235
- const sortedChanges = [...changes.entries()].sort((a, b) => b[0] - a[0]);
236
- if (changes.size === 0) {
237
- return { status: "clean", exitCode: 0, operations, changes: sortedChanges, message: null };
238
- }
239
- if (mode === "fix") {
240
- return { status: "fixed", exitCode: 0, operations, changes: sortedChanges, message: null };
241
- }
242
- return { status: "action-needed", exitCode: 1, operations, changes: sortedChanges, message: null };
243
- }
244
- /**
245
- * Flag progress cycle `commit` hashes that are not ancestors of HEAD. Faithful
246
- * port of progress_commit.validate_progress_commits.
247
- */
248
- export function validateProgressCommits(content, cwd = ".") {
249
- let data;
250
- try {
251
- data = loadYamlMapping(content);
252
- }
253
- catch {
254
- return [];
255
- }
256
- if (!data || typeof data !== "object" || Array.isArray(data)) {
257
- return [];
258
- }
259
- const cycles = data.cycles;
260
- if (!Array.isArray(cycles)) {
261
- return [];
262
- }
263
- if (ancestorState("HEAD", cwd) === "unavailable") {
264
- return [];
265
- }
266
- const violations = [];
267
- for (const entry of cycles) {
268
- if (!entry || typeof entry !== "object" || Array.isArray(entry)) {
269
- continue;
270
- }
271
- const raw = entry.commit;
272
- if (typeof raw !== "string") {
273
- continue;
274
- }
275
- const token = commitToken(raw);
276
- if (token === null) {
277
- continue;
278
- }
279
- if (ancestorState(token, cwd) === "stale") {
280
- const number = entry.number ?? "?";
281
- violations.push(`progress: cycle ${number} commit '${token}' is not an ancestor of HEAD ` +
282
- "(stale or self-referential); set it to `pending` or run " +
283
- "`agentera check backfill --mode fix`, then forward-fill the product commit " +
284
- "(never amend to backfill)");
285
- }
286
- }
287
- return violations;
288
- }
289
- //# sourceMappingURL=progressCommit.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"progressCommit.js","sourceRoot":"","sources":["../../src/state/progressCommit.ts"],"names":[],"mappings":"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"}