@imricci/zaker 0.1.0

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 (100) hide show
  1. package/dist/commands/align.d.ts +3 -0
  2. package/dist/commands/align.js +28 -0
  3. package/dist/commands/align.js.map +1 -0
  4. package/dist/commands/audit.d.ts +3 -0
  5. package/dist/commands/audit.js +59 -0
  6. package/dist/commands/audit.js.map +1 -0
  7. package/dist/commands/confirm.d.ts +3 -0
  8. package/dist/commands/confirm.js +22 -0
  9. package/dist/commands/confirm.js.map +1 -0
  10. package/dist/commands/dialog.d.ts +9 -0
  11. package/dist/commands/dialog.js +396 -0
  12. package/dist/commands/dialog.js.map +1 -0
  13. package/dist/commands/init.d.ts +3 -0
  14. package/dist/commands/init.js +31 -0
  15. package/dist/commands/init.js.map +1 -0
  16. package/dist/commands/models.d.ts +9 -0
  17. package/dist/commands/models.js +65 -0
  18. package/dist/commands/models.js.map +1 -0
  19. package/dist/commands/plan.d.ts +3 -0
  20. package/dist/commands/plan.js +69 -0
  21. package/dist/commands/plan.js.map +1 -0
  22. package/dist/commands/run.d.ts +40 -0
  23. package/dist/commands/run.js +310 -0
  24. package/dist/commands/run.js.map +1 -0
  25. package/dist/commands/status.d.ts +3 -0
  26. package/dist/commands/status.js +39 -0
  27. package/dist/commands/status.js.map +1 -0
  28. package/dist/commands/tui.d.ts +14 -0
  29. package/dist/commands/tui.js +394 -0
  30. package/dist/commands/tui.js.map +1 -0
  31. package/dist/core/auditor.d.ts +13 -0
  32. package/dist/core/auditor.js +122 -0
  33. package/dist/core/auditor.js.map +1 -0
  34. package/dist/core/c3fi.d.ts +10 -0
  35. package/dist/core/c3fi.js +305 -0
  36. package/dist/core/c3fi.js.map +1 -0
  37. package/dist/core/challenge.d.ts +8 -0
  38. package/dist/core/challenge.js +29 -0
  39. package/dist/core/challenge.js.map +1 -0
  40. package/dist/core/checkpoint.d.ts +20 -0
  41. package/dist/core/checkpoint.js +192 -0
  42. package/dist/core/checkpoint.js.map +1 -0
  43. package/dist/core/execution-provider.d.ts +2 -0
  44. package/dist/core/execution-provider.js +125 -0
  45. package/dist/core/execution-provider.js.map +1 -0
  46. package/dist/core/executor.d.ts +16 -0
  47. package/dist/core/executor.js +68 -0
  48. package/dist/core/executor.js.map +1 -0
  49. package/dist/core/memory.d.ts +11 -0
  50. package/dist/core/memory.js +105 -0
  51. package/dist/core/memory.js.map +1 -0
  52. package/dist/core/planner.d.ts +146 -0
  53. package/dist/core/planner.js +152 -0
  54. package/dist/core/planner.js.map +1 -0
  55. package/dist/core/preflight.d.ts +6 -0
  56. package/dist/core/preflight.js +140 -0
  57. package/dist/core/preflight.js.map +1 -0
  58. package/dist/core/provider-onboarding.d.ts +12 -0
  59. package/dist/core/provider-onboarding.js +32 -0
  60. package/dist/core/provider-onboarding.js.map +1 -0
  61. package/dist/core/run-loop.d.ts +32 -0
  62. package/dist/core/run-loop.js +205 -0
  63. package/dist/core/run-loop.js.map +1 -0
  64. package/dist/core/scope.d.ts +3 -0
  65. package/dist/core/scope.js +75 -0
  66. package/dist/core/scope.js.map +1 -0
  67. package/dist/core/types.d.ts +288 -0
  68. package/dist/core/types.js +11 -0
  69. package/dist/core/types.js.map +1 -0
  70. package/dist/core/verdict-panel.d.ts +29 -0
  71. package/dist/core/verdict-panel.js +120 -0
  72. package/dist/core/verdict-panel.js.map +1 -0
  73. package/dist/core/verifier.d.ts +2 -0
  74. package/dist/core/verifier.js +47 -0
  75. package/dist/core/verifier.js.map +1 -0
  76. package/dist/index.d.ts +2 -0
  77. package/dist/index.js +43 -0
  78. package/dist/index.js.map +1 -0
  79. package/dist/infra/config.d.ts +36 -0
  80. package/dist/infra/config.js +397 -0
  81. package/dist/infra/config.js.map +1 -0
  82. package/dist/infra/git.d.ts +6 -0
  83. package/dist/infra/git.js +35 -0
  84. package/dist/infra/git.js.map +1 -0
  85. package/dist/infra/hashing.d.ts +1 -0
  86. package/dist/infra/hashing.js +8 -0
  87. package/dist/infra/hashing.js.map +1 -0
  88. package/dist/infra/intent.d.ts +30 -0
  89. package/dist/infra/intent.js +357 -0
  90. package/dist/infra/intent.js.map +1 -0
  91. package/dist/infra/memory.d.ts +10 -0
  92. package/dist/infra/memory.js +94 -0
  93. package/dist/infra/memory.js.map +1 -0
  94. package/dist/infra/model-catalog.d.ts +27 -0
  95. package/dist/infra/model-catalog.js +273 -0
  96. package/dist/infra/model-catalog.js.map +1 -0
  97. package/dist/infra/process.d.ts +12 -0
  98. package/dist/infra/process.js +32 -0
  99. package/dist/infra/process.js.map +1 -0
  100. package/package.json +39 -0
@@ -0,0 +1,357 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_SESSION_PATH = exports.DEFAULT_INTENT_CONFIRMED_PATH = exports.DEFAULT_INTENT_CARD_PATH = void 0;
4
+ exports.createDraftIntent = createDraftIntent;
5
+ exports.createEmptyIntentCard = createEmptyIntentCard;
6
+ exports.createDefaultSession = createDefaultSession;
7
+ exports.readIntentCard = readIntentCard;
8
+ exports.readConfirmedIntent = readConfirmedIntent;
9
+ exports.readSessionStore = readSessionStore;
10
+ exports.writeIntentCard = writeIntentCard;
11
+ exports.writeConfirmedIntent = writeConfirmedIntent;
12
+ exports.writeSessionStore = writeSessionStore;
13
+ exports.ensureIntentArtifacts = ensureIntentArtifacts;
14
+ exports.alignIntent = alignIntent;
15
+ exports.confirmIntent = confirmIntent;
16
+ exports.buildIntentExecutionDescription = buildIntentExecutionDescription;
17
+ exports.startConfirmedRun = startConfirmedRun;
18
+ exports.finishRunCycle = finishRunCycle;
19
+ const node_fs_1 = require("node:fs");
20
+ const promises_1 = require("node:fs/promises");
21
+ const node_path_1 = require("node:path");
22
+ const zod_1 = require("zod");
23
+ const types_1 = require("../core/types");
24
+ const hashing_1 = require("./hashing");
25
+ exports.DEFAULT_INTENT_CARD_PATH = ".molo/intent.card.json";
26
+ exports.DEFAULT_INTENT_CONFIRMED_PATH = ".molo/intent.confirmed.json";
27
+ exports.DEFAULT_SESSION_PATH = ".molo/session.json";
28
+ const intentSchema = zod_1.z.object({
29
+ schema_version: zod_1.z.literal(types_1.INTENT_SCHEMA_VERSION),
30
+ intent_id: zod_1.z.string().min(1),
31
+ status: zod_1.z.enum(["DRAFT", "CONFIRMED"]),
32
+ title: zod_1.z.string(),
33
+ goal: zod_1.z.string(),
34
+ scope: zod_1.z.object({
35
+ allowed_paths: zod_1.z.array(zod_1.z.string().min(1)).min(1),
36
+ forbidden_paths: zod_1.z.array(zod_1.z.string().min(1)).default([])
37
+ }),
38
+ acceptance: zod_1.z.array(zod_1.z.string()).default([]),
39
+ constraints: zod_1.z.array(zod_1.z.string()).default([]),
40
+ updated_at: zod_1.z.string().min(1),
41
+ confirmed_at: zod_1.z.string().optional()
42
+ });
43
+ const sessionSchema = zod_1.z.object({
44
+ schema_version: zod_1.z.literal(types_1.SESSION_SCHEMA_VERSION),
45
+ state: zod_1.z.enum(["ALIGN", "READY", "RUNNING", "RESULT"]),
46
+ updated_at: zod_1.z.string().min(1),
47
+ current_intent_id: zod_1.z.string().optional(),
48
+ last_run_verdict: zod_1.z.enum(["PASS", "CHALLENGE", "FAIL"]).optional(),
49
+ last_checkpoint_id: zod_1.z.string().optional(),
50
+ last_run_completed_at: zod_1.z.string().optional(),
51
+ dialog: zod_1.z
52
+ .object({
53
+ debug: zod_1.z.boolean().default(false),
54
+ turn: zod_1.z.number().int().min(0).default(0),
55
+ rounds: zod_1.z
56
+ .array(zod_1.z.object({
57
+ round: zod_1.z.number().int().min(1),
58
+ started_at: zod_1.z.string().min(1),
59
+ completed_at: zod_1.z.string().min(1),
60
+ verdict: zod_1.z.enum(["PASS", "CHALLENGE", "FAIL"]),
61
+ reason_code: zod_1.z.string().min(1),
62
+ checkpoint_id: zod_1.z.string().optional()
63
+ }))
64
+ .default([]),
65
+ history: zod_1.z
66
+ .array(zod_1.z.object({
67
+ turn: zod_1.z.number().int().min(1),
68
+ timestamp: zod_1.z.string().min(1),
69
+ role: zod_1.z.enum(["user", "system"]),
70
+ kind: zod_1.z.enum(["message", "command", "status", "result"]),
71
+ content: zod_1.z.string().min(1)
72
+ }))
73
+ .default([])
74
+ })
75
+ .default({
76
+ debug: false,
77
+ turn: 0,
78
+ rounds: [],
79
+ history: []
80
+ })
81
+ });
82
+ function now() {
83
+ return new Date().toISOString();
84
+ }
85
+ function toAbsoluteIntentPaths(cwd) {
86
+ return {
87
+ card: (0, node_path_1.resolve)(cwd, exports.DEFAULT_INTENT_CARD_PATH),
88
+ confirmed: (0, node_path_1.resolve)(cwd, exports.DEFAULT_INTENT_CONFIRMED_PATH),
89
+ session: (0, node_path_1.resolve)(cwd, exports.DEFAULT_SESSION_PATH)
90
+ };
91
+ }
92
+ async function fileExists(path) {
93
+ try {
94
+ await (0, promises_1.access)(path, node_fs_1.constants.F_OK);
95
+ return true;
96
+ }
97
+ catch {
98
+ return false;
99
+ }
100
+ }
101
+ function formatJson(value) {
102
+ return `${JSON.stringify(value, null, 2)}\n`;
103
+ }
104
+ function normalizeIntent(input) {
105
+ return intentSchema.parse(input);
106
+ }
107
+ function normalizeSession(input) {
108
+ return sessionSchema.parse(input);
109
+ }
110
+ function createIntentId() {
111
+ return `intent_${Date.now()}`;
112
+ }
113
+ function normalizeTitle(description) {
114
+ const trimmed = description.trim();
115
+ if (!trimmed) {
116
+ return "";
117
+ }
118
+ const firstLine = trimmed.split(/\r?\n/)[0]?.trim() || "";
119
+ return firstLine.slice(0, 80);
120
+ }
121
+ function normalizeScope(scope) {
122
+ return {
123
+ allowed_paths: [...scope.allowed_paths],
124
+ forbidden_paths: [...scope.forbidden_paths]
125
+ };
126
+ }
127
+ function createDraftIntent(description, scope) {
128
+ const text = description.trim();
129
+ const title = normalizeTitle(text);
130
+ return normalizeIntent({
131
+ schema_version: types_1.INTENT_SCHEMA_VERSION,
132
+ intent_id: createIntentId(),
133
+ status: "DRAFT",
134
+ title,
135
+ goal: text,
136
+ scope: normalizeScope(scope),
137
+ acceptance: [],
138
+ constraints: [],
139
+ updated_at: now()
140
+ });
141
+ }
142
+ function createEmptyIntentCard(scope) {
143
+ return normalizeIntent({
144
+ schema_version: types_1.INTENT_SCHEMA_VERSION,
145
+ intent_id: createIntentId(),
146
+ status: "DRAFT",
147
+ title: "",
148
+ goal: "",
149
+ scope: normalizeScope(scope),
150
+ acceptance: [],
151
+ constraints: [],
152
+ updated_at: now()
153
+ });
154
+ }
155
+ function createDefaultSession() {
156
+ return normalizeSession({
157
+ schema_version: types_1.SESSION_SCHEMA_VERSION,
158
+ state: "ALIGN",
159
+ updated_at: now()
160
+ });
161
+ }
162
+ async function readIntentCard(cwd = process.cwd()) {
163
+ const paths = toAbsoluteIntentPaths(cwd);
164
+ if (!(await fileExists(paths.card))) {
165
+ return null;
166
+ }
167
+ const raw = await (0, promises_1.readFile)(paths.card, "utf8");
168
+ return normalizeIntent(JSON.parse(raw));
169
+ }
170
+ async function readConfirmedIntent(cwd = process.cwd()) {
171
+ const paths = toAbsoluteIntentPaths(cwd);
172
+ if (!(await fileExists(paths.confirmed))) {
173
+ return null;
174
+ }
175
+ const raw = await (0, promises_1.readFile)(paths.confirmed, "utf8");
176
+ return normalizeIntent(JSON.parse(raw));
177
+ }
178
+ async function readSessionStore(cwd = process.cwd()) {
179
+ const paths = toAbsoluteIntentPaths(cwd);
180
+ if (!(await fileExists(paths.session))) {
181
+ return null;
182
+ }
183
+ const raw = await (0, promises_1.readFile)(paths.session, "utf8");
184
+ return normalizeSession(JSON.parse(raw));
185
+ }
186
+ async function writeIntentCard(intent, cwd = process.cwd()) {
187
+ const normalized = normalizeIntent(intent);
188
+ const paths = toAbsoluteIntentPaths(cwd);
189
+ await (0, promises_1.mkdir)((0, node_path_1.resolve)(cwd, ".molo"), { recursive: true });
190
+ await (0, promises_1.writeFile)(paths.card, formatJson(normalized), "utf8");
191
+ }
192
+ async function writeConfirmedIntent(intent, cwd = process.cwd()) {
193
+ const normalized = normalizeIntent(intent);
194
+ const paths = toAbsoluteIntentPaths(cwd);
195
+ await (0, promises_1.mkdir)((0, node_path_1.resolve)(cwd, ".molo"), { recursive: true });
196
+ await (0, promises_1.writeFile)(paths.confirmed, formatJson(normalized), "utf8");
197
+ }
198
+ async function writeSessionStore(session, cwd = process.cwd()) {
199
+ const normalized = normalizeSession(session);
200
+ const paths = toAbsoluteIntentPaths(cwd);
201
+ await (0, promises_1.mkdir)((0, node_path_1.resolve)(cwd, ".molo"), { recursive: true });
202
+ await (0, promises_1.writeFile)(paths.session, formatJson(normalized), "utf8");
203
+ }
204
+ async function requireSession(cwd) {
205
+ const session = await readSessionStore(cwd);
206
+ if (!session) {
207
+ throw new Error("Missing .molo/session.json. Run `zaker init` first.");
208
+ }
209
+ return session;
210
+ }
211
+ async function ensureIntentArtifacts(scope, cwd = process.cwd(), force = false) {
212
+ const paths = toAbsoluteIntentPaths(cwd);
213
+ const result = { created: [], updated: [], skipped: [] };
214
+ await (0, promises_1.mkdir)((0, node_path_1.resolve)(cwd, ".molo"), { recursive: true });
215
+ const cardExists = await fileExists(paths.card);
216
+ if (!cardExists || force) {
217
+ await (0, promises_1.writeFile)(paths.card, formatJson(createEmptyIntentCard(scope)), "utf8");
218
+ if (cardExists) {
219
+ result.updated.push(exports.DEFAULT_INTENT_CARD_PATH);
220
+ }
221
+ else {
222
+ result.created.push(exports.DEFAULT_INTENT_CARD_PATH);
223
+ }
224
+ }
225
+ else {
226
+ result.skipped.push(exports.DEFAULT_INTENT_CARD_PATH);
227
+ }
228
+ const sessionExists = await fileExists(paths.session);
229
+ if (!sessionExists || force) {
230
+ await (0, promises_1.writeFile)(paths.session, formatJson(createDefaultSession()), "utf8");
231
+ if (sessionExists) {
232
+ result.updated.push(exports.DEFAULT_SESSION_PATH);
233
+ }
234
+ else {
235
+ result.created.push(exports.DEFAULT_SESSION_PATH);
236
+ }
237
+ }
238
+ else {
239
+ result.skipped.push(exports.DEFAULT_SESSION_PATH);
240
+ }
241
+ return result;
242
+ }
243
+ async function alignIntent(description, scope, cwd = process.cwd()) {
244
+ const draft = createDraftIntent(description, scope);
245
+ await writeIntentCard(draft, cwd);
246
+ const previous = (await readSessionStore(cwd)) ?? createDefaultSession();
247
+ await writeSessionStore({
248
+ ...previous,
249
+ state: "ALIGN",
250
+ current_intent_id: draft.intent_id,
251
+ updated_at: now()
252
+ }, cwd);
253
+ return draft;
254
+ }
255
+ async function createIntentBindingFromConfirmedFile(intent, cwd) {
256
+ if (intent.status !== "CONFIRMED") {
257
+ throw new Error("Intent binding requires a CONFIRMED intent.");
258
+ }
259
+ if (!intent.confirmed_at || !intent.confirmed_at.trim()) {
260
+ throw new Error("Intent binding requires confirmed_at.");
261
+ }
262
+ const paths = toAbsoluteIntentPaths(cwd);
263
+ const raw = await (0, promises_1.readFile)(paths.confirmed, "utf8");
264
+ return {
265
+ intent_id: intent.intent_id,
266
+ intent_sha256: (0, hashing_1.sha256)(raw),
267
+ intent_confirmed_at: intent.confirmed_at
268
+ };
269
+ }
270
+ async function confirmIntent(cwd = process.cwd()) {
271
+ const draft = await readIntentCard(cwd);
272
+ if (!draft) {
273
+ throw new Error("Missing .molo/intent.card.json. Run `zaker align <description>` first.");
274
+ }
275
+ const goal = draft.goal.trim();
276
+ if (!goal) {
277
+ throw new Error("Cannot confirm empty intent goal. Run `zaker align <description>` first.");
278
+ }
279
+ const confirmed = normalizeIntent({
280
+ ...draft,
281
+ status: "CONFIRMED",
282
+ title: draft.title.trim() || normalizeTitle(goal),
283
+ goal,
284
+ updated_at: now(),
285
+ confirmed_at: now()
286
+ });
287
+ await writeConfirmedIntent(confirmed, cwd);
288
+ const previous = await requireSession(cwd);
289
+ await writeSessionStore({
290
+ ...previous,
291
+ state: "READY",
292
+ current_intent_id: confirmed.intent_id,
293
+ updated_at: now()
294
+ }, cwd);
295
+ return {
296
+ intent: confirmed,
297
+ binding: await createIntentBindingFromConfirmedFile(confirmed, cwd)
298
+ };
299
+ }
300
+ function buildIntentExecutionDescription(intent) {
301
+ const lines = [
302
+ "[CONFIRMED_INTENT]",
303
+ `intent_id: ${intent.intent_id}`,
304
+ `title: ${intent.title || intent.goal}`,
305
+ `goal: ${intent.goal}`,
306
+ `allowed_paths: ${intent.scope.allowed_paths.join(", ") || "src/**"}`,
307
+ `forbidden_paths: ${intent.scope.forbidden_paths.join(", ") || "-"}`,
308
+ `acceptance: ${intent.acceptance.length > 0 ? intent.acceptance.join(" | ") : "-"}`,
309
+ `constraints: ${intent.constraints.length > 0 ? intent.constraints.join(" | ") : "-"}`,
310
+ "[/CONFIRMED_INTENT]"
311
+ ];
312
+ return lines.join("\n");
313
+ }
314
+ async function startConfirmedRun(cwd = process.cwd()) {
315
+ const session = await requireSession(cwd);
316
+ if (session.state !== "READY") {
317
+ throw new Error(`Run blocked: session state is ${session.state}. Use \`zaker confirm\` first.`);
318
+ }
319
+ const confirmed = await readConfirmedIntent(cwd);
320
+ if (!confirmed || confirmed.status !== "CONFIRMED") {
321
+ throw new Error("Run blocked: missing .molo/intent.confirmed.json. Use `zaker confirm` first.");
322
+ }
323
+ const binding = await createIntentBindingFromConfirmedFile(confirmed, cwd);
324
+ if (session.current_intent_id && session.current_intent_id !== confirmed.intent_id) {
325
+ throw new Error(`Run blocked: session intent mismatch (${session.current_intent_id} != ${confirmed.intent_id}). Run \`zaker confirm\` again.`);
326
+ }
327
+ await writeSessionStore({
328
+ ...session,
329
+ state: "RUNNING",
330
+ current_intent_id: confirmed.intent_id,
331
+ updated_at: now()
332
+ }, cwd);
333
+ return {
334
+ intent: confirmed,
335
+ binding
336
+ };
337
+ }
338
+ async function finishRunCycle(verdict, checkpointId, cwd = process.cwd()) {
339
+ const session = await requireSession(cwd);
340
+ const completedAt = now();
341
+ const resultState = normalizeSession({
342
+ ...session,
343
+ state: "RESULT",
344
+ last_run_verdict: verdict,
345
+ last_checkpoint_id: checkpointId,
346
+ last_run_completed_at: completedAt,
347
+ updated_at: completedAt
348
+ });
349
+ await writeSessionStore(resultState, cwd);
350
+ const alignState = normalizeSession({
351
+ ...resultState,
352
+ state: "ALIGN",
353
+ updated_at: now()
354
+ });
355
+ await writeSessionStore(alignState, cwd);
356
+ }
357
+ //# sourceMappingURL=intent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intent.js","sourceRoot":"","sources":["../../src/infra/intent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { ExecutionFailureRecord, MemoryStore } from "../core/types";
2
+ export declare function createEmptyMemoryStore(): MemoryStore;
3
+ export declare function readMemoryStore(memoryFile: string, cwd?: string): Promise<MemoryStore | null>;
4
+ export declare function writeMemoryStore(memoryFile: string, store: MemoryStore, cwd?: string): Promise<void>;
5
+ export declare function appendExecutionFailureRecord(memoryFile: string, payload: {
6
+ message: string;
7
+ source: string;
8
+ confidence: number;
9
+ supersedes?: string;
10
+ }, cwd?: string): Promise<ExecutionFailureRecord>;
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createEmptyMemoryStore = createEmptyMemoryStore;
4
+ exports.readMemoryStore = readMemoryStore;
5
+ exports.writeMemoryStore = writeMemoryStore;
6
+ exports.appendExecutionFailureRecord = appendExecutionFailureRecord;
7
+ const promises_1 = require("node:fs/promises");
8
+ const node_fs_1 = require("node:fs");
9
+ const node_path_1 = require("node:path");
10
+ const zod_1 = require("zod");
11
+ const types_1 = require("../core/types");
12
+ const memoryRecordSchema = zod_1.z.object({
13
+ id: zod_1.z.string().min(1),
14
+ timestamp: zod_1.z.string().min(1),
15
+ source: zod_1.z.string().min(1),
16
+ supersedes: zod_1.z.string(),
17
+ confidence: zod_1.z.number().min(0).max(1),
18
+ content: zod_1.z.string().min(1)
19
+ });
20
+ const memoryStoreSchema = zod_1.z.object({
21
+ schema_version: zod_1.z.literal(types_1.MEMORY_SCHEMA_VERSION),
22
+ facts: zod_1.z.array(memoryRecordSchema).default([]),
23
+ decisions: zod_1.z.array(memoryRecordSchema).default([]),
24
+ constraints: zod_1.z.array(memoryRecordSchema).default([]),
25
+ execution_failures: zod_1.z.array(memoryRecordSchema).default([])
26
+ });
27
+ function toAbsolutePath(memoryFile, cwd) {
28
+ return (0, node_path_1.resolve)(cwd, memoryFile);
29
+ }
30
+ async function fileExists(filePath) {
31
+ try {
32
+ await (0, promises_1.access)(filePath, node_fs_1.constants.F_OK);
33
+ return true;
34
+ }
35
+ catch {
36
+ return false;
37
+ }
38
+ }
39
+ function normalizeStore(input) {
40
+ return memoryStoreSchema.parse(input);
41
+ }
42
+ function sortByTimestampDesc(records) {
43
+ return [...records].sort((left, right) => right.timestamp.localeCompare(left.timestamp));
44
+ }
45
+ function createEmptyMemoryStore() {
46
+ return {
47
+ schema_version: types_1.MEMORY_SCHEMA_VERSION,
48
+ facts: [],
49
+ decisions: [],
50
+ constraints: [],
51
+ execution_failures: []
52
+ };
53
+ }
54
+ async function readMemoryStore(memoryFile, cwd = process.cwd()) {
55
+ const absolutePath = toAbsolutePath(memoryFile, cwd);
56
+ if (!(await fileExists(absolutePath))) {
57
+ return null;
58
+ }
59
+ const raw = await (0, promises_1.readFile)(absolutePath, "utf8");
60
+ return normalizeStore(JSON.parse(raw));
61
+ }
62
+ async function writeMemoryStore(memoryFile, store, cwd = process.cwd()) {
63
+ const absolutePath = toAbsolutePath(memoryFile, cwd);
64
+ const parent = (0, node_path_1.resolve)(absolutePath, "..");
65
+ await (0, promises_1.mkdir)(parent, { recursive: true });
66
+ const normalized = normalizeStore(store);
67
+ await (0, promises_1.writeFile)(absolutePath, `${JSON.stringify(normalized, null, 2)}\n`, "utf8");
68
+ }
69
+ function normalizeSupersedesValue(value) {
70
+ const trimmed = value?.trim();
71
+ return trimmed && trimmed.length > 0 ? trimmed : "";
72
+ }
73
+ function buildExecutionFailureRecord(message, source, confidence, supersedes) {
74
+ return {
75
+ id: `ef_${Date.now()}`,
76
+ timestamp: new Date().toISOString(),
77
+ source,
78
+ supersedes: normalizeSupersedesValue(supersedes),
79
+ confidence,
80
+ content: message.trim()
81
+ };
82
+ }
83
+ async function appendExecutionFailureRecord(memoryFile, payload, cwd = process.cwd()) {
84
+ const existing = (await readMemoryStore(memoryFile, cwd)) ?? createEmptyMemoryStore();
85
+ const latestFailure = sortByTimestampDesc(existing.execution_failures)[0];
86
+ const record = buildExecutionFailureRecord(payload.message, payload.source, payload.confidence, payload.supersedes ?? latestFailure?.id);
87
+ const nextStore = {
88
+ ...existing,
89
+ execution_failures: sortByTimestampDesc([record, ...existing.execution_failures])
90
+ };
91
+ await writeMemoryStore(memoryFile, nextStore, cwd);
92
+ return record;
93
+ }
94
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/infra/memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { MoloConfig } from "./config";
2
+ export type ModelRole = "planner" | "auditor" | "execution";
3
+ export type CatalogSource = "mock" | "http" | "openai_codex_team" | "ollama";
4
+ export interface RoleModelCatalog {
5
+ planner: string[];
6
+ auditor: string[];
7
+ execution: string[];
8
+ }
9
+ export interface ModelCatalog {
10
+ provider: string;
11
+ models: string[];
12
+ role_models: RoleModelCatalog;
13
+ role_sources: {
14
+ planner: CatalogSource;
15
+ auditor: CatalogSource;
16
+ execution: CatalogSource;
17
+ };
18
+ }
19
+ export interface ModelSelections {
20
+ planner: string;
21
+ auditor: string;
22
+ execution: string;
23
+ }
24
+ export declare function isCloudOnboardingRequired(config: MoloConfig): boolean;
25
+ export declare function resolveModelSelections(config: MoloConfig): ModelSelections;
26
+ export declare function fetchModelCatalog(config: MoloConfig): Promise<ModelCatalog>;
27
+ export declare function validateModelSelection(role: ModelRole, selectedModel: string, catalogModels: string[]): void;