agentera 3.0.0-dev.20 → 3.0.0-dev.21

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 (228) hide show
  1. package/README.md +19 -0
  2. package/bundle/CHANGELOG.md +63 -70
  3. package/bundle/README.md +17 -0
  4. package/bundle/UPGRADE.md +38 -0
  5. package/bundle/references/adapters/package-surface-characterization.md +7 -0
  6. package/bundle/references/artifacts/artifact-registry-interface-model.yaml +3 -3
  7. package/bundle/references/artifacts/state-storage-authority.yaml +1446 -0
  8. package/bundle/references/cli/agent-ready-state-contract.yaml +11 -39
  9. package/bundle/references/cli/audience-namespace-cli-migration.yaml +30 -15
  10. package/bundle/references/meta/documentation-inventory.md +1 -0
  11. package/bundle/skills/agentera/capabilities/audit/schemas/artifacts.yaml +18 -10
  12. package/bundle/skills/agentera/capabilities/audit/schemas/validation.yaml +10 -10
  13. package/bundle/skills/agentera/capabilities/build/schemas/artifacts.yaml +11 -6
  14. package/bundle/skills/agentera/capabilities/discuss/schemas/artifacts.yaml +3 -2
  15. package/bundle/skills/agentera/capabilities/document/schemas/artifacts.yaml +15 -8
  16. package/bundle/skills/agentera/capabilities/document/schemas/validation.yaml +13 -13
  17. package/bundle/skills/agentera/capabilities/orchestrate/schemas/artifacts.yaml +15 -9
  18. package/bundle/skills/agentera/references/contract.md +65 -23
  19. package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +15 -10
  20. package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +134 -3
  21. package/bundle/skills/agentera/schemas/artifacts/health.yaml +16 -10
  22. package/bundle/skills/agentera/schemas/artifacts/objective.yaml +18 -4
  23. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +23 -1
  24. package/bundle/skills/agentera/schemas/artifacts/progress.yaml +16 -10
  25. package/bundle/skills/agentera/schemas/artifacts/todo.yaml +34 -0
  26. package/dist/capabilities/audit/instructions.js +1 -1
  27. package/dist/capabilities/audit/instructions.js.map +1 -1
  28. package/dist/capabilities/build/instructions.js +1 -1
  29. package/dist/capabilities/build/instructions.js.map +1 -1
  30. package/dist/capabilities/discuss/instructions.js +1 -1
  31. package/dist/capabilities/discuss/instructions.js.map +1 -1
  32. package/dist/capabilities/document/instructions.js +1 -1
  33. package/dist/capabilities/document/instructions.js.map +1 -1
  34. package/dist/capabilities/optimize/instructions.js +1 -1
  35. package/dist/capabilities/optimize/instructions.js.map +1 -1
  36. package/dist/capabilities/orchestrate/instructions.js +1 -1
  37. package/dist/capabilities/orchestrate/instructions.js.map +1 -1
  38. package/dist/capabilities/plan/instructions.js +1 -1
  39. package/dist/capabilities/plan/instructions.js.map +1 -1
  40. package/dist/capabilities/profile/instructions.js +1 -1
  41. package/dist/capabilities/profile/instructions.js.map +1 -1
  42. package/dist/capabilities/vision/instructions.js +1 -1
  43. package/dist/capabilities/vision/instructions.js.map +1 -1
  44. package/dist/cli/appContext.js +14 -6
  45. package/dist/cli/appContext.js.map +1 -1
  46. package/dist/cli/capabilityContext/bespoke.js +3 -1
  47. package/dist/cli/capabilityContext/bespoke.js.map +1 -1
  48. package/dist/cli/capabilityContext/build.js +5 -4
  49. package/dist/cli/capabilityContext/build.js.map +1 -1
  50. package/dist/cli/capabilityContext/closeout.js +2 -1
  51. package/dist/cli/capabilityContext/closeout.js.map +1 -1
  52. package/dist/cli/capabilityContext/contract.js +29 -0
  53. package/dist/cli/capabilityContext/contract.js.map +1 -1
  54. package/dist/cli/capabilityContext/evidence.js +21 -20
  55. package/dist/cli/capabilityContext/evidence.js.map +1 -1
  56. package/dist/cli/capabilityContext/orchestration.js +3 -2
  57. package/dist/cli/capabilityContext/orchestration.js.map +1 -1
  58. package/dist/cli/capabilityContext/progress.js +9 -4
  59. package/dist/cli/capabilityContext/progress.js.map +1 -1
  60. package/dist/cli/capabilityContext/slim.js +37 -6
  61. package/dist/cli/capabilityContext/slim.js.map +1 -1
  62. package/dist/cli/capabilityContext/startup.js +30 -6
  63. package/dist/cli/capabilityContext/startup.js.map +1 -1
  64. package/dist/cli/capabilityContext/types.js +14 -4
  65. package/dist/cli/capabilityContext/types.js.map +1 -1
  66. package/dist/cli/commands/backfill.js +194 -0
  67. package/dist/cli/commands/backfill.js.map +1 -0
  68. package/dist/cli/commands/compact.js +40 -11
  69. package/dist/cli/commands/compact.js.map +1 -1
  70. package/dist/cli/commands/durability.js +85 -0
  71. package/dist/cli/commands/durability.js.map +1 -0
  72. package/dist/cli/commands/migrate.js +677 -0
  73. package/dist/cli/commands/migrate.js.map +1 -0
  74. package/dist/cli/commands/prime/collectOrientationState.js +23 -0
  75. package/dist/cli/commands/prime/collectOrientationState.js.map +1 -1
  76. package/dist/cli/commands/prime/orientationOutput.js +4 -2
  77. package/dist/cli/commands/prime/orientationOutput.js.map +1 -1
  78. package/dist/cli/commands/query.js +20 -2
  79. package/dist/cli/commands/query.js.map +1 -1
  80. package/dist/cli/commands/schema.js +247 -69
  81. package/dist/cli/commands/schema.js.map +1 -1
  82. package/dist/cli/commands/state/decisions.js +28 -10
  83. package/dist/cli/commands/state/decisions.js.map +1 -1
  84. package/dist/cli/commands/state/experimentRecords.js +156 -0
  85. package/dist/cli/commands/state/experimentRecords.js.map +1 -0
  86. package/dist/cli/commands/state/get.js +141 -0
  87. package/dist/cli/commands/state/get.js.map +1 -0
  88. package/dist/cli/commands/state/index.js +2 -2
  89. package/dist/cli/commands/state/index.js.map +1 -1
  90. package/dist/cli/commands/state/list.js +159 -0
  91. package/dist/cli/commands/state/list.js.map +1 -0
  92. package/dist/cli/commands/state/plan.js +146 -41
  93. package/dist/cli/commands/state/plan.js.map +1 -1
  94. package/dist/cli/commands/state/planTasks.js +164 -0
  95. package/dist/cli/commands/state/planTasks.js.map +1 -0
  96. package/dist/cli/commands/state/plans.js +154 -0
  97. package/dist/cli/commands/state/plans.js.map +1 -0
  98. package/dist/cli/commands/state/write.js +8 -3
  99. package/dist/cli/commands/state/write.js.map +1 -1
  100. package/dist/cli/dispatch/check.js +71 -4
  101. package/dist/cli/dispatch/check.js.map +1 -1
  102. package/dist/cli/dispatch/index.js +48 -30
  103. package/dist/cli/dispatch/index.js.map +1 -1
  104. package/dist/cli/dispatch/lifecycle.js +4 -4
  105. package/dist/cli/dispatch/lifecycle.js.map +1 -1
  106. package/dist/cli/dispatch/state.js +23 -3
  107. package/dist/cli/dispatch/state.js.map +1 -1
  108. package/dist/cli/errors.js +13 -14
  109. package/dist/cli/errors.js.map +1 -1
  110. package/dist/cli/help.js +162 -3
  111. package/dist/cli/help.js.map +1 -1
  112. package/dist/cli/orientation.js +146 -34
  113. package/dist/cli/orientation.js.map +1 -1
  114. package/dist/cli/planArtifacts.js +31 -2
  115. package/dist/cli/planArtifacts.js.map +1 -1
  116. package/dist/cli/prime-blob.js +1 -0
  117. package/dist/cli/prime-blob.js.map +1 -1
  118. package/dist/cli/startupCompletenessContract.js +3 -2
  119. package/dist/cli/startupCompletenessContract.js.map +1 -1
  120. package/dist/cli/stateQuery.js +5 -3
  121. package/dist/cli/stateQuery.js.map +1 -1
  122. package/dist/core/text.js +11 -0
  123. package/dist/core/text.js.map +1 -0
  124. package/dist/hooks/compaction/apply.js +224 -46
  125. package/dist/hooks/compaction/apply.js.map +1 -1
  126. package/dist/hooks/compaction/dryRun.js +2 -0
  127. package/dist/hooks/compaction/dryRun.js.map +1 -1
  128. package/dist/hooks/compaction/index.js +4 -4
  129. package/dist/hooks/compaction/index.js.map +1 -1
  130. package/dist/hooks/compaction/parse.js +73 -5
  131. package/dist/hooks/compaction/parse.js.map +1 -1
  132. package/dist/hooks/compaction/retention.js +22 -21
  133. package/dist/hooks/compaction/retention.js.map +1 -1
  134. package/dist/hooks/compaction/status.js +116 -23
  135. package/dist/hooks/compaction/status.js.map +1 -1
  136. package/dist/hooks/sessionStart.js +39 -7
  137. package/dist/hooks/sessionStart.js.map +1 -1
  138. package/dist/hooks/validateArtifact/index.js +2 -2
  139. package/dist/hooks/validateArtifact/index.js.map +1 -1
  140. package/dist/hooks/validateArtifact/markdown.js +9 -9
  141. package/dist/hooks/validateArtifact/markdown.js.map +1 -1
  142. package/dist/hooks/validateArtifact/traversal.js +11 -9
  143. package/dist/hooks/validateArtifact/traversal.js.map +1 -1
  144. package/dist/registries/artifactRegistry.js +147 -44
  145. package/dist/registries/artifactRegistry.js.map +1 -1
  146. package/dist/release/releaseMetadata.js +95 -1
  147. package/dist/release/releaseMetadata.js.map +1 -1
  148. package/dist/state/archiveDiscovery.js +589 -0
  149. package/dist/state/archiveDiscovery.js.map +1 -0
  150. package/dist/state/archivePublication.js +225 -0
  151. package/dist/state/archivePublication.js.map +1 -0
  152. package/dist/state/archiveRecovery.js +238 -0
  153. package/dist/state/archiveRecovery.js.map +1 -0
  154. package/dist/state/archiveReplay.js +54 -0
  155. package/dist/state/archiveReplay.js.map +1 -0
  156. package/dist/state/decisionOverlay.js +255 -0
  157. package/dist/state/decisionOverlay.js.map +1 -0
  158. package/dist/state/directRetrieval.js +322 -0
  159. package/dist/state/directRetrieval.js.map +1 -0
  160. package/dist/state/durability.js +451 -0
  161. package/dist/state/durability.js.map +1 -0
  162. package/dist/state/experimentArchive.js +64 -0
  163. package/dist/state/experimentArchive.js.map +1 -0
  164. package/dist/state/experimentIdentity.js +191 -0
  165. package/dist/state/experimentIdentity.js.map +1 -0
  166. package/dist/state/experimentRetrieval.js +447 -0
  167. package/dist/state/experimentRetrieval.js.map +1 -0
  168. package/dist/state/gitBackfill.js +561 -0
  169. package/dist/state/gitBackfill.js.map +1 -0
  170. package/dist/state/gitBackfillAuthority.js +141 -0
  171. package/dist/state/gitBackfillAuthority.js.map +1 -0
  172. package/dist/state/gitBackfillHistory.js +278 -0
  173. package/dist/state/gitBackfillHistory.js.map +1 -0
  174. package/dist/state/gitBackfillOutput.js +209 -0
  175. package/dist/state/gitBackfillOutput.js.map +1 -0
  176. package/dist/state/healthRepair.js +70 -0
  177. package/dist/state/healthRepair.js.map +1 -0
  178. package/dist/state/legacyIdentity.js +48 -0
  179. package/dist/state/legacyIdentity.js.map +1 -0
  180. package/dist/state/legacyMigration.js +516 -0
  181. package/dist/state/legacyMigration.js.map +1 -0
  182. package/dist/state/legacyMigrationParser.js +489 -0
  183. package/dist/state/legacyMigrationParser.js.map +1 -0
  184. package/dist/state/listAccounting.js +55 -0
  185. package/dist/state/listAccounting.js.map +1 -0
  186. package/dist/state/listClassification.js +18 -0
  187. package/dist/state/listClassification.js.map +1 -0
  188. package/dist/state/listRetrieval.js +782 -0
  189. package/dist/state/listRetrieval.js.map +1 -0
  190. package/dist/state/migrationAuthority.js +413 -0
  191. package/dist/state/migrationAuthority.js.map +1 -0
  192. package/dist/state/migrationEnrichment.js +35 -0
  193. package/dist/state/migrationEnrichment.js.map +1 -0
  194. package/dist/state/planIdentity.js +45 -0
  195. package/dist/state/planIdentity.js.map +1 -0
  196. package/dist/state/planRetrieval.js +314 -0
  197. package/dist/state/planRetrieval.js.map +1 -0
  198. package/dist/state/planTaskRetrieval.js +285 -0
  199. package/dist/state/planTaskRetrieval.js.map +1 -0
  200. package/dist/state/projectionPolicy.js +184 -0
  201. package/dist/state/projectionPolicy.js.map +1 -0
  202. package/dist/state/retrievalAuthority.js +326 -0
  203. package/dist/state/retrievalAuthority.js.map +1 -0
  204. package/dist/state/startupProjection.js +498 -0
  205. package/dist/state/startupProjection.js.map +1 -0
  206. package/dist/state/write/experimentPublication.js +193 -0
  207. package/dist/state/write/experimentPublication.js.map +1 -0
  208. package/dist/state/write/explain.js +28 -14
  209. package/dist/state/write/explain.js.map +1 -1
  210. package/dist/state/write/helpers.js +8 -0
  211. package/dist/state/write/helpers.js.map +1 -0
  212. package/dist/state/write/index.js +1 -0
  213. package/dist/state/write/index.js.map +1 -1
  214. package/dist/state/write/lock.js +24 -1
  215. package/dist/state/write/lock.js.map +1 -1
  216. package/dist/state/write/mutation.js +190 -0
  217. package/dist/state/write/mutation.js.map +1 -0
  218. package/dist/state/write/operations.js +36 -2
  219. package/dist/state/write/operations.js.map +1 -1
  220. package/dist/state/write/planPublication.js +172 -0
  221. package/dist/state/write/planPublication.js.map +1 -0
  222. package/dist/state/write/transaction.js +238 -225
  223. package/dist/state/write/transaction.js.map +1 -1
  224. package/dist/upgrade/migrateArtifactsV2ToV3.js +2 -2
  225. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +1 -1
  226. package/dist/validate/crossCapability.js +9 -6
  227. package/dist/validate/crossCapability.js.map +1 -1
  228. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"planTaskRetrieval.js","sourceRoot":"","sources":["../../src/state/planTaskRetrieval.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,184 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import YAML from "yaml";
4
+ import { loadYamlMapping } from "../core/yaml.js";
5
+ import { resolveSourceRoot } from "../core/sourceRoot.js";
6
+ const AUTHORITY_RELATIVE_PATH = "references/artifacts/state-storage-authority.yaml";
7
+ const AUTHORITY_SCHEMA_VERSION = "agentera.stateStorageAuthority.v1";
8
+ const NUMBERED_ARTIFACTS = new Set(["progress", "decisions", "health"]);
9
+ function mapping(value) {
10
+ return value !== null && typeof value === "object" && !Array.isArray(value)
11
+ ? value
12
+ : {};
13
+ }
14
+ function positiveInteger(value, field) {
15
+ if (typeof value !== "number" || !Number.isSafeInteger(value) || value < 1) {
16
+ throw new Error(`state storage authority field '${field}' must be a positive integer`);
17
+ }
18
+ return value;
19
+ }
20
+ export function loadProjectionPolicy(sourceRoot = resolveSourceRoot()) {
21
+ const authorityPath = path.join(sourceRoot, AUTHORITY_RELATIVE_PATH);
22
+ const authority = loadYamlMapping(fs.readFileSync(authorityPath, "utf8"));
23
+ if (authority.schema_version !== AUTHORITY_SCHEMA_VERSION) {
24
+ throw new Error(`state storage authority schema_version must be ${AUTHORITY_SCHEMA_VERSION}`);
25
+ }
26
+ const capacity = mapping(mapping(authority.projections).current).default_capacity;
27
+ const activeEntries = positiveInteger(mapping(capacity).active_entries, "projections.current.default_capacity.active_entries");
28
+ const summaryEntries = positiveInteger(mapping(capacity).summary_entries, "projections.current.default_capacity.summary_entries");
29
+ const totalEntries = positiveInteger(mapping(capacity).total_entries, "projections.current.default_capacity.total_entries");
30
+ if (activeEntries + summaryEntries !== totalEntries) {
31
+ throw new Error("state storage authority projection capacity must equal active plus summary entries");
32
+ }
33
+ const maxUtf8Bytes = positiveInteger(mapping(mapping(authority.budgets).projection).max_utf8_bytes, "budgets.projection.max_utf8_bytes");
34
+ return { activeEntries, summaryEntries, totalEntries, maxUtf8Bytes };
35
+ }
36
+ export function projectionRetrieval(command) {
37
+ if (NUMBERED_ARTIFACTS.has(command)) {
38
+ return { available: true, command: `agentera state ${command} get --number N --format json` };
39
+ }
40
+ if (command === "plan") {
41
+ return {
42
+ available: true,
43
+ list: "agentera state plan tasks list --format json",
44
+ get: "agentera state plan tasks get --task N --format json",
45
+ plans_list: "agentera state plan list --format json",
46
+ plans_get: "agentera state plan get --plan PLAN_ID --format json",
47
+ };
48
+ }
49
+ return {
50
+ available: false,
51
+ reason: "unsupported_numbered_retrieval",
52
+ artifact_id: command,
53
+ };
54
+ }
55
+ export function projectionOmission(command, count, reason, options = {}) {
56
+ return {
57
+ omitted: options.forceOmitted ?? count > 0,
58
+ omitted_count: count,
59
+ omission_reason: reason,
60
+ retrieval: projectionRetrieval(command),
61
+ omission_provenance: options.provenance ?? null,
62
+ };
63
+ }
64
+ export function serializedProjectionBytes(value, format) {
65
+ const serialized = format === "yaml" ? YAML.stringify(value, { sortMapEntries: false }) : JSON.stringify(value, null, 2) + "\n";
66
+ return Buffer.byteLength(serialized, "utf8");
67
+ }
68
+ function entryNumber(value, index) {
69
+ if (!value || typeof value !== "object" || Array.isArray(value))
70
+ return [Number.POSITIVE_INFINITY, index];
71
+ const object = value;
72
+ const candidates = [object.entry_number, object.number];
73
+ for (const candidate of candidates) {
74
+ if (typeof candidate === "number" && Number.isSafeInteger(candidate))
75
+ return [candidate, index];
76
+ if (typeof candidate === "string" && /^[1-9][0-9]*$/.test(candidate))
77
+ return [Number(candidate), index];
78
+ }
79
+ const stableId = object.stable_id;
80
+ if (typeof stableId === "string") {
81
+ const match = /:(\d+)$/.exec(stableId);
82
+ if (match)
83
+ return [Number(match[1]), index];
84
+ }
85
+ return [Number.POSITIVE_INFINITY, index];
86
+ }
87
+ function omissionCount(value) {
88
+ const count = value.omitted_count;
89
+ return typeof count === "number" && Number.isSafeInteger(count) && count > 0 ? count : 0;
90
+ }
91
+ function boundedValue(value, itemKey, items, omittedCount, command) {
92
+ const result = { ...value, [itemKey]: items };
93
+ const existingCounts = result.counts;
94
+ if (itemKey === "entries" && existingCounts && typeof existingCounts === "object" && !Array.isArray(existingCounts)) {
95
+ result.counts = {
96
+ ...existingCounts,
97
+ entries: items.length + omittedCount,
98
+ returned_entries: items.length,
99
+ };
100
+ }
101
+ return {
102
+ ...result,
103
+ ...projectionOmission(command, omittedCount, "projection_byte_budget", { forceOmitted: true }),
104
+ };
105
+ }
106
+ function minimalBudgetedProjection(command, omittedCount, policy, format) {
107
+ const omission = projectionOmission(command, omittedCount, "projection_required_fields_exceed_budget", {
108
+ forceOmitted: true,
109
+ provenance: {
110
+ source: "current_projection",
111
+ detail_availability: "unavailable",
112
+ compatibility: "degraded",
113
+ archive_verified: false,
114
+ omitted_count: omittedCount,
115
+ },
116
+ });
117
+ const fallback = {
118
+ command,
119
+ status: "degraded",
120
+ entries: [],
121
+ counts: { entries: omittedCount, returned_entries: 0 },
122
+ source: { artifact: command, detail_availability: "unavailable", source: "current_projection" },
123
+ ...omission,
124
+ error: {
125
+ class: "projection_output_budget",
126
+ message: "optional projection detail was omitted because required output fields exceeded the authority byte budget",
127
+ syntax: `agentera state ${command} --format json`,
128
+ example: `agentera state ${command} --format json`,
129
+ recovery: omission.retrieval.available === true
130
+ ? String(omission.retrieval.command ?? omission.retrieval.list)
131
+ : "No direct retrieval route is declared for this artifact; use its supported state command.",
132
+ },
133
+ };
134
+ if (serializedProjectionBytes(fallback, format) <= policy.maxUtf8Bytes)
135
+ return fallback;
136
+ const minimal = {
137
+ command,
138
+ status: "degraded",
139
+ omitted: true,
140
+ omitted_count: omittedCount,
141
+ omission_reason: "projection_output_budget",
142
+ retrieval: omission.retrieval,
143
+ };
144
+ if (serializedProjectionBytes(minimal, format) > policy.maxUtf8Bytes) {
145
+ throw new Error(`projection output budget ${policy.maxUtf8Bytes} bytes is too small for required omission metadata`);
146
+ }
147
+ return minimal;
148
+ }
149
+ /**
150
+ * Bound a structured projection without truncating strings or splitting UTF-8.
151
+ * Entries are removed oldest-first by numeric identity; every removal is
152
+ * declared in the response and points at the future direct-get surface.
153
+ */
154
+ export function boundStructuredProjection(value, command, format, policy = loadProjectionPolicy()) {
155
+ if (serializedProjectionBytes(value, format) <= policy.maxUtf8Bytes)
156
+ return value;
157
+ const itemKey = Array.isArray(value.entries)
158
+ ? "entries"
159
+ : Array.isArray(value.operations)
160
+ ? "operations"
161
+ : null;
162
+ if (itemKey === null)
163
+ return minimalBudgetedProjection(command, 0, policy, format);
164
+ const items = value[itemKey];
165
+ const removalOrder = items
166
+ .map((item, index) => ({ index, key: entryNumber(item, index) }))
167
+ .sort((left, right) => left.key[0] - right.key[0] || left.key[1] - right.key[1]);
168
+ let omitted = omissionCount(value);
169
+ let retained = [...items];
170
+ for (const candidate of removalOrder) {
171
+ if (serializedProjectionBytes(boundedValue(value, itemKey, retained, omitted, command), format) <= policy.maxUtf8Bytes) {
172
+ return boundedValue(value, itemKey, retained, omitted, command);
173
+ }
174
+ const retainedIndex = retained.indexOf(items[candidate.index]);
175
+ if (retainedIndex >= 0)
176
+ retained.splice(retainedIndex, 1);
177
+ omitted += 1;
178
+ }
179
+ let result = boundedValue(value, itemKey, retained, omitted, command);
180
+ if (serializedProjectionBytes(result, format) <= policy.maxUtf8Bytes)
181
+ return result;
182
+ return minimalBudgetedProjection(command, omitted, policy, format);
183
+ }
184
+ //# sourceMappingURL=projectionPolicy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectionPolicy.js","sourceRoot":"","sources":["../../src/state/projectionPolicy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,326 @@
1
+ import { createHash } from "node:crypto";
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+ import { loadYamlMapping } from "../core/yaml.js";
5
+ import { resolveSourceRoot } from "../core/sourceRoot.js";
6
+ export const STATE_RETRIEVAL_AUTHORITY_PATH = "references/artifacts/state-storage-authority.yaml";
7
+ export const STATE_RETRIEVAL_SCHEMA_VERSION = "agentera.stateRetrievalAuthority.v1";
8
+ const COLLECTION_FIELDS = [
9
+ "collection_id",
10
+ "artifact_id",
11
+ "growth",
12
+ "identity",
13
+ "storage_ownership",
14
+ "ordering",
15
+ "bounds",
16
+ "cursor",
17
+ "omission",
18
+ "get",
19
+ ];
20
+ const EXPECTED_COLLECTIONS = [
21
+ "progress.records",
22
+ "decisions.records",
23
+ "health.records",
24
+ "plan.plans",
25
+ "plan.tasks",
26
+ "experiments.records",
27
+ "todo.items",
28
+ "docs.entries",
29
+ "changelog.entries",
30
+ ];
31
+ const EXPECTED_FAILURES = [
32
+ "invalid_request",
33
+ "unsupported_artifact",
34
+ "not_found",
35
+ "ambiguous",
36
+ "corrupt",
37
+ "incomplete",
38
+ "cursor_invalid",
39
+ "cursor_snapshot_unavailable",
40
+ "unsupported_state",
41
+ ];
42
+ const EXPECTED_COMMANDS = {
43
+ plan_tasks: {
44
+ list: "agentera state plan tasks list [--plan PLAN_ID] [--limit N] [--cursor TOKEN] --format json",
45
+ get: "agentera state plan tasks get [--plan PLAN_ID] --task N --format json",
46
+ },
47
+ plans: {
48
+ list: "agentera state plan list [--limit N] [--cursor TOKEN] --format json",
49
+ get: "agentera state plan get --plan PLAN_ID --format json",
50
+ },
51
+ experiments: {
52
+ list: "agentera state experiments list --objective OBJECTIVE_ID [--limit N] [--cursor TOKEN] --format json",
53
+ get: "agentera state experiments get --objective OBJECTIVE_ID --number N --format json",
54
+ publish: "agentera state experiments publish --objective OBJECTIVE_ID --number N --input EXPERIMENT.yaml --format json",
55
+ },
56
+ };
57
+ const EXPECTED_IMPLEMENTATION = {
58
+ plan_tasks: "implemented",
59
+ plans: "implemented",
60
+ experiments: "implemented",
61
+ };
62
+ function mapping(value) {
63
+ return value !== null && typeof value === "object" && !Array.isArray(value)
64
+ ? value
65
+ : {};
66
+ }
67
+ function strings(value) {
68
+ return Array.isArray(value) ? value.filter((item) => typeof item === "string") : [];
69
+ }
70
+ function requireNonEmpty(record, field, prefix, errors) {
71
+ if (typeof record[field] !== "string" || String(record[field]).trim() === "")
72
+ errors.push(`${prefix}.${field}`);
73
+ }
74
+ function patternAccepts(pattern, accepted, rejected, prefix, errors) {
75
+ if (typeof pattern !== "string") {
76
+ errors.push(`${prefix}.pattern`);
77
+ return;
78
+ }
79
+ let expression;
80
+ try {
81
+ expression = new RegExp(pattern);
82
+ }
83
+ catch {
84
+ errors.push(`${prefix}.pattern_invalid`);
85
+ return;
86
+ }
87
+ if (accepted.some((value) => !expression.test(value)))
88
+ errors.push(`${prefix}.accepted_examples`);
89
+ if (rejected.some((value) => expression.test(value)))
90
+ errors.push(`${prefix}.rejected_examples`);
91
+ }
92
+ function sha256(value) {
93
+ return createHash("sha256").update(value, "utf8").digest("hex");
94
+ }
95
+ export function deriveLegacyPlanIdentity(canonicalJson) {
96
+ return `legacy-plan:${sha256(canonicalJson)}`;
97
+ }
98
+ export function deriveLegacyObjectiveIdentity(canonicalJson) {
99
+ return `legacy-objective:${sha256(canonicalJson)}`;
100
+ }
101
+ export function validateExperimentPublicationParity(value) {
102
+ const errors = [];
103
+ const publication = mapping(mapping(mapping(value.retrieval).identity).experiment);
104
+ const publicationContract = mapping(publication.publication);
105
+ const archive = mapping(value.experiment_archival);
106
+ const archiveLayout = mapping(archive.layout);
107
+ const archivePublication = mapping(archive.publication);
108
+ const archiveProjection = mapping(archive.projection);
109
+ if (publicationContract.authority !== "typed_state_writer") {
110
+ errors.push("retrieval.identity.experiment.publication.authority");
111
+ }
112
+ if (publicationContract.archive_ownership !== "experiment_archival" || archive.status !== "implemented") {
113
+ errors.push("retrieval.identity.experiment.publication.archive_ownership");
114
+ }
115
+ if (publicationContract.storage_scope !== "objective_directory"
116
+ || publicationContract.storage_scope !== archiveLayout.ownership) {
117
+ errors.push("retrieval.identity.experiment.publication.storage_scope");
118
+ }
119
+ if (publicationContract.publication_order !== "archive_before_projection"
120
+ || archivePublication.archive_before_projection !== true) {
121
+ errors.push("retrieval.identity.experiment.publication.publication_order");
122
+ }
123
+ if (publicationContract.projection_policy !== "uniform_10_40_50"
124
+ || publicationContract.projection_policy !== archiveProjection.policy) {
125
+ errors.push("retrieval.identity.experiment.publication.projection_policy");
126
+ }
127
+ return errors;
128
+ }
129
+ /** Validate executable retrieval fields and their declared publication/storage seams. */
130
+ export function validateStateRetrievalAuthority(value) {
131
+ const errors = [];
132
+ const retrieval = mapping(value.retrieval);
133
+ if (retrieval.schema_version !== STATE_RETRIEVAL_SCHEMA_VERSION)
134
+ errors.push("retrieval.schema_version");
135
+ if (retrieval.status !== "plan_task_plan_and_experiment_retrieval_implemented")
136
+ errors.push("retrieval.status");
137
+ const implementation = mapping(retrieval.implementation);
138
+ for (const [surface, status] of Object.entries(EXPECTED_IMPLEMENTATION)) {
139
+ if (implementation[surface] !== status)
140
+ errors.push(`retrieval.implementation.${surface}`);
141
+ }
142
+ requireNonEmpty(retrieval, "authority_boundary", "retrieval", errors);
143
+ const envelope = mapping(retrieval.envelope);
144
+ for (const field of ["schemaVersion", "command", "status", "entries", "counts", "order", "filters", "snapshot", "source", "source_contract"]) {
145
+ if (!strings(envelope.required_fields).includes(field))
146
+ errors.push(`retrieval.envelope.required_fields.${field}`);
147
+ }
148
+ const cursor = mapping(retrieval.cursor);
149
+ for (const field of ["vocabulary", "response_field", "binding", "invalid_behavior", "unavailable_behavior"]) {
150
+ if (!(field in cursor))
151
+ errors.push(`retrieval.cursor.${field}`);
152
+ }
153
+ const omission = mapping(retrieval.omission);
154
+ for (const field of ["omitted", "omitted_count", "omission_reason", "retrieval"]) {
155
+ if (!strings(omission.required_when_any_entry_is_not_returned).includes(field)) {
156
+ errors.push(`retrieval.omission.required_when_any_entry_is_not_returned.${field}`);
157
+ }
158
+ }
159
+ requireNonEmpty(omission, "semantics", "retrieval.omission", errors);
160
+ const outputBounds = mapping(retrieval.output_bounds);
161
+ if (outputBounds.maximum_limit !== 100)
162
+ errors.push("retrieval.output_bounds.maximum_limit");
163
+ if (outputBounds.max_serialized_utf8_bytes !== 32_768)
164
+ errors.push("retrieval.output_bounds.max_serialized_utf8_bytes");
165
+ if (outputBounds.scalar_truncation !== "forbidden")
166
+ errors.push("retrieval.output_bounds.scalar_truncation");
167
+ if (outputBounds.omission_unit !== "whole_entries")
168
+ errors.push("retrieval.output_bounds.omission_unit");
169
+ const identities = mapping(retrieval.identity);
170
+ for (const name of ["plan", "task", "objective", "experiment"]) {
171
+ if (Object.keys(mapping(identities[name])).length === 0)
172
+ errors.push(`retrieval.identity.${name}`);
173
+ }
174
+ const planIdentity = mapping(identities.plan);
175
+ for (const field of ["canonical_format", "persistence", "transition", "legacy_format", "legacy_derivation", "collision"]) {
176
+ requireNonEmpty(planIdentity, field, "retrieval.identity.plan", errors);
177
+ }
178
+ if (!Array.isArray(planIdentity.test_vectors) || planIdentity.test_vectors.length === 0) {
179
+ errors.push("retrieval.identity.plan.test_vectors");
180
+ }
181
+ else {
182
+ for (const [index, raw] of planIdentity.test_vectors.entries()) {
183
+ const vector = mapping(raw);
184
+ const canonicalJson = String(vector.canonical_json ?? "");
185
+ try {
186
+ JSON.parse(canonicalJson);
187
+ }
188
+ catch {
189
+ errors.push(`retrieval.identity.plan.test_vectors[${index}].canonical_json`);
190
+ }
191
+ if (vector.stable_id !== deriveLegacyPlanIdentity(canonicalJson))
192
+ errors.push(`retrieval.identity.plan.test_vectors[${index}].stable_id`);
193
+ if (vector.identical_result !== "mirrored_provenance")
194
+ errors.push(`retrieval.identity.plan.test_vectors[${index}].identical_result`);
195
+ }
196
+ }
197
+ const objectiveIdentity = mapping(identities.objective);
198
+ for (const field of ["canonical_format", "persistence", "canonical_root", "legacy_root", "legacy_format", "legacy_derivation", "path_compatibility"]) {
199
+ requireNonEmpty(objectiveIdentity, field, "retrieval.identity.objective", errors);
200
+ }
201
+ if (!Array.isArray(objectiveIdentity.test_vectors) || objectiveIdentity.test_vectors.length === 0) {
202
+ errors.push("retrieval.identity.objective.test_vectors");
203
+ }
204
+ else {
205
+ for (const [index, raw] of objectiveIdentity.test_vectors.entries()) {
206
+ const vector = mapping(raw);
207
+ const canonicalJson = String(vector.canonical_json ?? "");
208
+ try {
209
+ JSON.parse(canonicalJson);
210
+ }
211
+ catch {
212
+ errors.push(`retrieval.identity.objective.test_vectors[${index}].canonical_json`);
213
+ }
214
+ if (vector.stable_id !== deriveLegacyObjectiveIdentity(canonicalJson)) {
215
+ errors.push(`retrieval.identity.objective.test_vectors[${index}].stable_id`);
216
+ }
217
+ }
218
+ }
219
+ const experimentIdentity = mapping(identities.experiment);
220
+ if (!String(experimentIdentity.format ?? "").includes("non-negative-integer"))
221
+ errors.push("retrieval.identity.experiment.format");
222
+ if (!String(experimentIdentity.zero ?? "").includes("0 is valid"))
223
+ errors.push("retrieval.identity.experiment.zero");
224
+ for (const field of ["scope", "collision", "compatibility", "publication_validation"]) {
225
+ requireNonEmpty(experimentIdentity, field, "retrieval.identity.experiment", errors);
226
+ }
227
+ errors.push(...validateExperimentPublicationParity(value));
228
+ const commands = mapping(retrieval.commands);
229
+ for (const [name, grammar] of Object.entries(EXPECTED_COMMANDS)) {
230
+ const command = mapping(commands[name]);
231
+ if (command.list !== grammar.list)
232
+ errors.push(`retrieval.commands.${name}.list`);
233
+ if (command.get !== grammar.get)
234
+ errors.push(`retrieval.commands.${name}.get`);
235
+ if ("publish" in grammar && command.publish !== grammar.publish)
236
+ errors.push(`retrieval.commands.${name}.publish`);
237
+ }
238
+ const planTaskSelectors = mapping(mapping(commands.plan_tasks).selectors);
239
+ const planTaskPlanSelector = mapping(planTaskSelectors.plan);
240
+ if (planTaskPlanSelector.list_required !== false || planTaskPlanSelector.get_required !== false) {
241
+ errors.push("retrieval.commands.plan_tasks.selectors.plan.required");
242
+ }
243
+ for (const field of ["list_default", "get_default"]) {
244
+ requireNonEmpty(planTaskPlanSelector, field, "retrieval.commands.plan_tasks.selectors.plan", errors);
245
+ }
246
+ patternAccepts(planTaskPlanSelector.pattern, ["plan:018f6b9a-7c2d-7abc-8def-0123456789ab", `legacy-plan:${"a".repeat(64)}`], ["plan:-", "plan:not-a-uuid", `legacy-plan:${"a".repeat(63)}`], "retrieval.commands.plan_tasks.selectors.plan", errors);
247
+ const taskSelector = mapping(planTaskSelectors.task);
248
+ if (taskSelector.get_required !== true)
249
+ errors.push("retrieval.commands.plan_tasks.selectors.task.get_required");
250
+ patternAccepts(taskSelector.pattern, ["1", "42"], ["0", "-1", "01"], "retrieval.commands.plan_tasks.selectors.task", errors);
251
+ const planSelector = mapping(mapping(mapping(commands.plans).selectors).plan);
252
+ if (planSelector.get_required !== true)
253
+ errors.push("retrieval.commands.plans.selectors.plan.get_required");
254
+ patternAccepts(planSelector.pattern, ["plan:018f6b9a-7c2d-7abc-8def-0123456789ab", `legacy-plan:${"a".repeat(64)}`], ["plan:-", "plan:not-a-uuid", `legacy-plan:${"a".repeat(63)}`], "retrieval.commands.plans.selectors.plan", errors);
255
+ const experimentSelectors = mapping(mapping(commands.experiments).selectors);
256
+ const objectiveSelector = mapping(experimentSelectors.objective);
257
+ if (objectiveSelector.list_required !== true || objectiveSelector.get_required !== true) {
258
+ errors.push("retrieval.commands.experiments.selectors.objective.required");
259
+ }
260
+ patternAccepts(objectiveSelector.pattern, ["objective:018f6b9a-7c2d-7abc-8def-0123456789ab", `legacy-objective:${"b".repeat(64)}`], ["objective:-", "objective:not-a-uuid", `legacy-objective:${"b".repeat(63)}`], "retrieval.commands.experiments.selectors.objective", errors);
261
+ const experimentNumber = mapping(experimentSelectors.number);
262
+ if (experimentNumber.get_required !== true)
263
+ errors.push("retrieval.commands.experiments.selectors.number.get_required");
264
+ patternAccepts(experimentNumber.pattern, ["0", "1", "42"], ["-1", "01", "1.0"], "retrieval.commands.experiments.selectors.number", errors);
265
+ const failures = mapping(retrieval.failures);
266
+ for (const field of ["class", "message", "syntax", "example", "recovery"]) {
267
+ if (!strings(failures.required_fields).includes(field))
268
+ errors.push(`retrieval.failures.required_fields.${field}`);
269
+ }
270
+ const failureClasses = mapping(failures.classes);
271
+ for (const name of EXPECTED_FAILURES)
272
+ requireNonEmpty(failureClasses, name, "retrieval.failures.classes", errors);
273
+ const collectionValues = Array.isArray(retrieval.collections) ? retrieval.collections : [];
274
+ const collectionIds = [];
275
+ collectionValues.forEach((value, index) => {
276
+ const collection = mapping(value);
277
+ const prefix = `retrieval.collections[${index}]`;
278
+ for (const field of COLLECTION_FIELDS)
279
+ requireNonEmpty(collection, field, prefix, errors);
280
+ if (typeof collection.collection_id === "string")
281
+ collectionIds.push(collection.collection_id);
282
+ });
283
+ if (new Set(collectionIds).size !== collectionIds.length)
284
+ errors.push("retrieval.collections.duplicate_collection_id");
285
+ for (const id of EXPECTED_COLLECTIONS) {
286
+ if (!collectionIds.includes(id))
287
+ errors.push(`retrieval.collections.missing.${id}`);
288
+ }
289
+ const gaps = Array.isArray(retrieval.gap_closure_evidence) ? retrieval.gap_closure_evidence : [];
290
+ for (const surface of ["plan", "experiments"]) {
291
+ if (!gaps.some((value) => String(mapping(value).surface ?? "").includes(surface))) {
292
+ errors.push(`retrieval.gap_closure_evidence.${surface}`);
293
+ }
294
+ }
295
+ gaps.forEach((value, index) => {
296
+ const gap = mapping(value);
297
+ for (const field of ["surface", "declared_gap", "closure"]) {
298
+ requireNonEmpty(gap, field, `retrieval.gap_closure_evidence[${index}]`, errors);
299
+ }
300
+ if (gap.outcome !== "closed" && gap.outcome !== "out_of_scope") {
301
+ errors.push(`retrieval.gap_closure_evidence[${index}].outcome`);
302
+ }
303
+ });
304
+ const diagnostics = mapping(retrieval.plan_archive_diagnostics);
305
+ if (diagnostics.classification !== "pre_existing_compatibility_caveat") {
306
+ errors.push("retrieval.plan_archive_diagnostics.classification");
307
+ }
308
+ requireNonEmpty(diagnostics, "smoke_test_behavior", "retrieval.plan_archive_diagnostics", errors);
309
+ return errors;
310
+ }
311
+ export function loadStateRetrievalAuthority(sourceRoot = resolveSourceRoot()) {
312
+ const authorityPath = path.join(sourceRoot, STATE_RETRIEVAL_AUTHORITY_PATH);
313
+ const value = loadYamlMapping(fs.readFileSync(authorityPath, "utf8"));
314
+ const errors = validateStateRetrievalAuthority(value);
315
+ if (errors.length > 0)
316
+ throw new Error(`invalid state retrieval authority: ${errors.join(", ")}`);
317
+ return {
318
+ authority: STATE_RETRIEVAL_AUTHORITY_PATH,
319
+ retrieval: value.retrieval,
320
+ };
321
+ }
322
+ export function stateRetrievalCommands(sourceRoot = resolveSourceRoot()) {
323
+ const commands = mapping(loadStateRetrievalAuthority(sourceRoot).retrieval.commands);
324
+ return commands;
325
+ }
326
+ //# sourceMappingURL=retrievalAuthority.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retrievalAuthority.js","sourceRoot":"","sources":["../../src/state/retrievalAuthority.ts"],"names":[],"mappings":"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"}