@galileodev/cli 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 (61) hide show
  1. package/dist/commands/acdc.d.ts +11 -0
  2. package/dist/commands/acdc.d.ts.map +1 -0
  3. package/dist/commands/acdc.js +36 -0
  4. package/dist/commands/acdc.js.map +1 -0
  5. package/dist/commands/curate.d.ts +9 -0
  6. package/dist/commands/curate.d.ts.map +1 -0
  7. package/dist/commands/curate.js +16 -0
  8. package/dist/commands/curate.js.map +1 -0
  9. package/dist/commands/generate.d.ts +9 -0
  10. package/dist/commands/generate.d.ts.map +1 -0
  11. package/dist/commands/generate.js +14 -0
  12. package/dist/commands/generate.js.map +1 -0
  13. package/dist/commands/init.d.ts +2 -0
  14. package/dist/commands/init.d.ts.map +1 -0
  15. package/dist/commands/init.js +18 -0
  16. package/dist/commands/init.js.map +1 -0
  17. package/dist/commands/optimize-code.d.ts +15 -0
  18. package/dist/commands/optimize-code.d.ts.map +1 -0
  19. package/dist/commands/optimize-code.js +37 -0
  20. package/dist/commands/optimize-code.js.map +1 -0
  21. package/dist/commands/optimize.d.ts +11 -0
  22. package/dist/commands/optimize.d.ts.map +1 -0
  23. package/dist/commands/optimize.js +43 -0
  24. package/dist/commands/optimize.js.map +1 -0
  25. package/dist/commands/parse-utils.d.ts +2 -0
  26. package/dist/commands/parse-utils.d.ts.map +1 -0
  27. package/dist/commands/parse-utils.js +14 -0
  28. package/dist/commands/parse-utils.js.map +1 -0
  29. package/dist/commands/playbook.d.ts +7 -0
  30. package/dist/commands/playbook.d.ts.map +1 -0
  31. package/dist/commands/playbook.js +50 -0
  32. package/dist/commands/playbook.js.map +1 -0
  33. package/dist/commands/reflect.d.ts +10 -0
  34. package/dist/commands/reflect.d.ts.map +1 -0
  35. package/dist/commands/reflect.js +16 -0
  36. package/dist/commands/reflect.js.map +1 -0
  37. package/dist/commands/run.d.ts +10 -0
  38. package/dist/commands/run.d.ts.map +1 -0
  39. package/dist/commands/run.js +31 -0
  40. package/dist/commands/run.js.map +1 -0
  41. package/dist/commands/solve.d.ts +13 -0
  42. package/dist/commands/solve.d.ts.map +1 -0
  43. package/dist/commands/solve.js +34 -0
  44. package/dist/commands/solve.js.map +1 -0
  45. package/dist/commands/templates.d.ts +3 -0
  46. package/dist/commands/templates.d.ts.map +1 -0
  47. package/dist/commands/templates.js +36 -0
  48. package/dist/commands/templates.js.map +1 -0
  49. package/dist/commands/verify.d.ts +7 -0
  50. package/dist/commands/verify.d.ts.map +1 -0
  51. package/dist/commands/verify.js +21 -0
  52. package/dist/commands/verify.js.map +1 -0
  53. package/dist/config/loader.d.ts +8 -0
  54. package/dist/config/loader.d.ts.map +1 -0
  55. package/dist/config/loader.js +41 -0
  56. package/dist/config/loader.js.map +1 -0
  57. package/dist/index.d.ts +3 -0
  58. package/dist/index.d.ts.map +1 -0
  59. package/dist/index.js +247 -0
  60. package/dist/index.js.map +1 -0
  61. package/package.json +27 -0
@@ -0,0 +1,11 @@
1
+ import { type LLMProvider } from '@galileodev/core';
2
+ interface ACDCOptions {
3
+ projectDir: string;
4
+ instruction: string;
5
+ llm: LLMProvider;
6
+ maxCycles?: number;
7
+ tokenBudget?: number;
8
+ }
9
+ export declare function runACDC(options: ACDCOptions): Promise<import("@galileodev/verify").ACDCResult>;
10
+ export {};
11
+ //# sourceMappingURL=acdc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acdc.d.ts","sourceRoot":"","sources":["../../src/commands/acdc.ts"],"names":[],"mappings":"AAEA,OAAO,EASL,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAY1B,UAAU,WAAW;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,WAAW,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,oDAkCjD"}
@@ -0,0 +1,36 @@
1
+ import { join } from 'node:path';
2
+ import { existsSync } from 'node:fs';
3
+ import { TokenBudget, FilesystemPlaybookStore, Pipeline, Generator, Reflector, Curator, EventBus, } from '@galileodev/core';
4
+ import { VerifierRunner, TscVerifier, TestRunnerVerifier, EslintVerifier, SemgrepVerifier, GuideComposer, SolveAgent, ACDCOrchestrator, } from '@galileodev/verify';
5
+ export async function runACDC(options) {
6
+ const galileoDir = join(options.projectDir, '.galileo');
7
+ if (!existsSync(galileoDir)) {
8
+ throw new Error('Not a Galileo project. Run "galileo init" first.');
9
+ }
10
+ const store = new FilesystemPlaybookStore(galileoDir);
11
+ const eventBus = new EventBus();
12
+ const pipeline = new Pipeline({
13
+ store,
14
+ generator: new Generator(options.llm),
15
+ reflector: new Reflector(options.llm),
16
+ curator: new Curator(options.llm),
17
+ eventBus,
18
+ });
19
+ const verifier = new VerifierRunner({ failFast: true });
20
+ verifier.register(new TscVerifier());
21
+ verifier.register(new TestRunnerVerifier());
22
+ verifier.register(new EslintVerifier());
23
+ verifier.register(new SemgrepVerifier());
24
+ const composer = new GuideComposer(store, galileoDir);
25
+ const solver = new SolveAgent();
26
+ const orchestrator = new ACDCOrchestrator(pipeline, composer, verifier, solver);
27
+ return orchestrator.run({
28
+ taskId: `acdc-${Date.now()}`,
29
+ instruction: options.instruction,
30
+ projectDir: options.projectDir,
31
+ llm: options.llm,
32
+ maxCycles: options.maxCycles ?? 3,
33
+ budget: new TokenBudget(options.tokenBudget ?? 100000),
34
+ });
35
+ }
36
+ //# sourceMappingURL=acdc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"acdc.js","sourceRoot":"","sources":["../../src/commands/acdc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAEL,WAAW,EACX,uBAAuB,EACvB,QAAQ,EACR,SAAS,EACT,SAAS,EACT,OAAO,EACP,QAAQ,GAET,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,aAAa,EACb,UAAU,EACV,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAU5B,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAAoB;IAChD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACxD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,uBAAuB,CAAC,UAAU,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;IAChC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC;QAC5B,KAAK;QACL,SAAS,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC;QACrC,SAAS,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC;QACrC,OAAO,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;QACjC,QAAQ;KACT,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,QAAQ,CAAC,QAAQ,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;IAC5C,QAAQ,CAAC,QAAQ,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC;IACxC,QAAQ,CAAC,QAAQ,CAAC,IAAI,eAAe,EAAE,CAAC,CAAC;IAEzC,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;IAChC,MAAM,YAAY,GAAG,IAAI,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IAEhF,OAAO,YAAY,CAAC,GAAG,CAAC;QACtB,MAAM,EAAE,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE;QAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,CAAC;QACjC,MAAM,EAAE,IAAI,WAAW,CAAC,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC;KACvD,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { type LLMProvider, type DeltaUpdate, type ReflectionResult } from '@galileodev/core';
2
+ interface CurateOptions {
3
+ projectDir: string;
4
+ reflection: ReflectionResult;
5
+ llm: LLMProvider;
6
+ }
7
+ export declare function runCurate(options: CurateOptions): Promise<DeltaUpdate>;
8
+ export {};
9
+ //# sourceMappingURL=curate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curate.d.ts","sourceRoot":"","sources":["../../src/commands/curate.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACtB,MAAM,kBAAkB,CAAC;AAE1B,UAAU,aAAa;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,GAAG,EAAE,WAAW,CAAC;CAClB;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,CAc5E"}
@@ -0,0 +1,16 @@
1
+ import { join } from 'node:path';
2
+ import { Curator, FilesystemPlaybookStore, } from '@galileodev/core';
3
+ export async function runCurate(options) {
4
+ const galileoDir = join(options.projectDir, '.galileo');
5
+ const store = new FilesystemPlaybookStore(galileoDir);
6
+ const currentEntries = await store.getActiveEntries();
7
+ const curator = new Curator(options.llm);
8
+ const delta = await curator.run({
9
+ taskId: options.reflection.taskId,
10
+ reflection: options.reflection,
11
+ currentEntries,
12
+ });
13
+ await store.applyDelta(delta);
14
+ return delta;
15
+ }
16
+ //# sourceMappingURL=curate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"curate.js","sourceRoot":"","sources":["../../src/commands/curate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,OAAO,EACP,uBAAuB,GAIxB,MAAM,kBAAkB,CAAC;AAQ1B,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAsB;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,IAAI,uBAAuB,CAAC,UAAU,CAAC,CAAC;IACtD,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,gBAAgB,EAAE,CAAC;IAEtD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC9B,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM;QACjC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,cAAc;KACf,CAAC,CAAC;IAEH,MAAM,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAC9B,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { type LLMProvider, type GenerationResult } from '@galileodev/core';
2
+ interface GenerateOptions {
3
+ projectDir: string;
4
+ instruction: string;
5
+ llm: LLMProvider;
6
+ }
7
+ export declare function runGenerate(options: GenerateOptions): Promise<GenerationResult>;
8
+ export {};
9
+ //# sourceMappingURL=generate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACtB,MAAM,kBAAkB,CAAC;AAE1B,UAAU,eAAe;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,WAAW,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAWrF"}
@@ -0,0 +1,14 @@
1
+ import { join } from 'node:path';
2
+ import { Generator, FilesystemPlaybookStore, } from '@galileodev/core';
3
+ export async function runGenerate(options) {
4
+ const galileoDir = join(options.projectDir, '.galileo');
5
+ const store = new FilesystemPlaybookStore(galileoDir);
6
+ const snapshot = await store.snapshot();
7
+ const generator = new Generator(options.llm);
8
+ return generator.run({
9
+ taskId: `gen-${Date.now()}`,
10
+ instruction: options.instruction,
11
+ snapshot,
12
+ });
13
+ }
14
+ //# sourceMappingURL=generate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,SAAS,EACT,uBAAuB,GAGxB,MAAM,kBAAkB,CAAC;AAQ1B,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAwB;IACxD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,IAAI,uBAAuB,CAAC,UAAU,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC;IAExC,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7C,OAAO,SAAS,CAAC,GAAG,CAAC;QACnB,MAAM,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE;QAC3B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,QAAQ;KACT,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function runInit(projectDir: string): Promise<void>;
2
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAIA,wBAAsB,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB/D"}
@@ -0,0 +1,18 @@
1
+ import { mkdir, writeFile } from 'node:fs/promises';
2
+ import { existsSync } from 'node:fs';
3
+ import { join } from 'node:path';
4
+ export async function runInit(projectDir) {
5
+ const galileoDir = join(projectDir, '.galileo');
6
+ if (!existsSync(galileoDir)) {
7
+ await mkdir(galileoDir, { recursive: true });
8
+ }
9
+ const playbookPath = join(galileoDir, 'playbook.jsonl');
10
+ if (!existsSync(playbookPath)) {
11
+ await writeFile(playbookPath, '', 'utf-8');
12
+ }
13
+ const deprecationsPath = join(galileoDir, 'deprecations.json');
14
+ if (!existsSync(deprecationsPath)) {
15
+ await writeFile(deprecationsPath, '[]', 'utf-8');
16
+ }
17
+ }
18
+ //# sourceMappingURL=init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,UAAkB;IAC9C,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAEhD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;IACxD,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAC9B,MAAM,SAAS,CAAC,YAAY,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,EAAE,mBAAmB,CAAC,CAAC;IAC/D,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAClC,MAAM,SAAS,CAAC,gBAAgB,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;AACH,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { type LLMProvider } from '@galileodev/core';
2
+ interface OptimizeCodeOptions {
3
+ projectDir: string;
4
+ llm: LLMProvider;
5
+ metricName: string;
6
+ metricCommand: string;
7
+ targetFiles: string[];
8
+ direction: 'minimize' | 'maximize';
9
+ tokenBudget?: number;
10
+ maxExperiments?: number;
11
+ timeBudgetMs?: number;
12
+ }
13
+ export declare function runOptimizeCode(options: OptimizeCodeOptions): Promise<import("@galileodev/verify").KarpathyResult>;
14
+ export {};
15
+ //# sourceMappingURL=optimize-code.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimize-code.d.ts","sourceRoot":"","sources":["../../src/commands/optimize-code.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAS1B,UAAU,mBAAmB;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,WAAW,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,EAAE,UAAU,GAAG,UAAU,CAAC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,mBAAmB,wDAiCjE"}
@@ -0,0 +1,37 @@
1
+ import { join } from 'node:path';
2
+ import { existsSync } from 'node:fs';
3
+ import { ExecutionSandbox, TokenBudget, } from '@galileodev/core';
4
+ import { VerifierRunner, TscVerifier, TestRunnerVerifier, KarpathyLoop, } from '@galileodev/verify';
5
+ export async function runOptimizeCode(options) {
6
+ const galileoDir = join(options.projectDir, '.galileo');
7
+ if (!existsSync(galileoDir)) {
8
+ throw new Error('Not a Galileo project. Run "galileo init" first.');
9
+ }
10
+ const verifier = new VerifierRunner({ failFast: true });
11
+ verifier.register(new TscVerifier());
12
+ verifier.register(new TestRunnerVerifier());
13
+ const metric = {
14
+ name: options.metricName,
15
+ command: options.metricCommand,
16
+ parseOutput: (stdout) => {
17
+ const numbers = stdout.match(/[\d.]+/g);
18
+ if (!numbers || numbers.length === 0)
19
+ return 0;
20
+ return parseFloat(numbers[numbers.length - 1]);
21
+ },
22
+ direction: options.direction,
23
+ };
24
+ const loop = new KarpathyLoop();
25
+ return loop.optimize({
26
+ workingDir: options.projectDir,
27
+ targetFiles: options.targetFiles,
28
+ metric,
29
+ llm: options.llm,
30
+ sandbox: new ExecutionSandbox(),
31
+ verifier,
32
+ budget: new TokenBudget(options.tokenBudget ?? 50000),
33
+ maxExperiments: options.maxExperiments ?? 10,
34
+ timeBudgetMs: options.timeBudgetMs,
35
+ });
36
+ }
37
+ //# sourceMappingURL=optimize-code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimize-code.js","sourceRoot":"","sources":["../../src/commands/optimize-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EACL,gBAAgB,EAChB,WAAW,GAEZ,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,YAAY,GAEb,MAAM,oBAAoB,CAAC;AAc5B,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAA4B;IAChE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACxD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,QAAQ,CAAC,QAAQ,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;IAE5C,MAAM,MAAM,GAAmB;QAC7B,IAAI,EAAE,OAAO,CAAC,UAAU;QACxB,OAAO,EAAE,OAAO,CAAC,aAAa;QAC9B,WAAW,EAAE,CAAC,MAAc,EAAE,EAAE;YAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACxC,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,CAAC,CAAC;YAC/C,OAAO,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC;QACD,SAAS,EAAE,OAAO,CAAC,SAAS;KAC7B,CAAC;IAEF,MAAM,IAAI,GAAG,IAAI,YAAY,EAAE,CAAC;IAChC,OAAO,IAAI,CAAC,QAAQ,CAAC;QACnB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,MAAM;QACN,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,OAAO,EAAE,IAAI,gBAAgB,EAAE;QAC/B,QAAQ;QACR,MAAM,EAAE,IAAI,WAAW,CAAC,OAAO,CAAC,WAAW,IAAI,KAAK,CAAC;QACrD,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,EAAE;QAC5C,YAAY,EAAE,OAAO,CAAC,YAAY;KACnC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { type LLMProvider } from '@galileodev/core';
2
+ interface OptimizeOptions {
3
+ projectDir: string;
4
+ stage: string;
5
+ llm: LLMProvider;
6
+ tokenBudget?: number;
7
+ maxExperiments?: number;
8
+ }
9
+ export declare function runOptimize(options: OptimizeOptions): Promise<import("@galileodev/meta").ExperimentResult[]>;
10
+ export {};
11
+ //# sourceMappingURL=optimize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimize.d.ts","sourceRoot":"","sources":["../../src/commands/optimize.ts"],"names":[],"mappings":"AAQA,OAAO,EAA2B,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE7E,UAAU,eAAe;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,WAAW,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,eAAe,0DA4CzD"}
@@ -0,0 +1,43 @@
1
+ import { join } from 'node:path';
2
+ import { existsSync } from 'node:fs';
3
+ import { RatchetOptimizer, TemplateRegistry, ALL_DEFAULT_TEMPLATES, } from '@galileodev/meta';
4
+ import { FilesystemPlaybookStore } from '@galileodev/core';
5
+ export async function runOptimize(options) {
6
+ const galileoDir = join(options.projectDir, '.galileo');
7
+ if (!existsSync(galileoDir)) {
8
+ throw new Error('Not a Galileo project. Run "galileo init" first.');
9
+ }
10
+ const registry = new TemplateRegistry(galileoDir);
11
+ const store = new FilesystemPlaybookStore(galileoDir);
12
+ // Seed default templates only for stages that don't have one
13
+ for (const tpl of ALL_DEFAULT_TEMPLATES) {
14
+ const existing = await registry.getActive(tpl.stage);
15
+ if (!existing) {
16
+ await registry.save(tpl);
17
+ await registry.setActive(tpl.stage, tpl.id);
18
+ }
19
+ }
20
+ // Re-fetch after seeding to get the current active template
21
+ const active = await registry.getActive(options.stage);
22
+ if (!active) {
23
+ throw new Error(`No template found for stage '${options.stage}'. Valid stages: generator, reflector, curator.`);
24
+ }
25
+ // Collect test inputs from playbook
26
+ const entries = await store.getActiveEntries();
27
+ const testInputs = entries.map((e) => ({ instruction: e.content }));
28
+ const config = {
29
+ targetStage: options.stage,
30
+ tokenBudget: options.tokenBudget ?? 10000,
31
+ maxExperiments: options.maxExperiments ?? 10,
32
+ metric: {
33
+ accuracy: { weight: 0.7, evaluator: 'json-parse-rate' },
34
+ efficiency: { weight: 0.3, baseline: active.metadata.tokenEstimate },
35
+ },
36
+ directive: 'Improve prompt clarity, conciseness, and task completion accuracy while maintaining all slot placeholders.',
37
+ accuracyThreshold: 0.8,
38
+ concurrency: 4,
39
+ };
40
+ const optimizer = new RatchetOptimizer(registry, options.llm, galileoDir);
41
+ return optimizer.run(config, testInputs);
42
+ }
43
+ //# sourceMappingURL=optimize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optimize.js","sourceRoot":"","sources":["../../src/commands/optimize.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,qBAAqB,GAEtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,uBAAuB,EAAoB,MAAM,kBAAkB,CAAC;AAU7E,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAwB;IACxD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAExD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,IAAI,uBAAuB,CAAC,UAAU,CAAC,CAAC;IAEtD,6DAA6D;IAC7D,KAAK,MAAM,GAAG,IAAI,qBAAqB,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACzB,MAAM,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,4DAA4D;IAC5D,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACvD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,gCAAgC,OAAO,CAAC,KAAK,iDAAiD,CAAC,CAAC;IAClH,CAAC;IAED,oCAAoC;IACpC,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,gBAAgB,EAAE,CAAC;IAC/C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAEpE,MAAM,MAAM,GAAqB;QAC/B,WAAW,EAAE,OAAO,CAAC,KAAK;QAC1B,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,KAAK;QACzC,cAAc,EAAE,OAAO,CAAC,cAAc,IAAI,EAAE;QAC5C,MAAM,EAAE;YACN,QAAQ,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,iBAAiB,EAAE;YACvD,UAAU,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,aAAa,EAAE;SACrE;QACD,SAAS,EAAE,4GAA4G;QACvH,iBAAiB,EAAE,GAAG;QACtB,WAAW,EAAE,CAAC;KACf,CAAC;IAEF,MAAM,SAAS,GAAG,IAAI,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;IAC1E,OAAO,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAC3C,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function parsePositiveInt(value: string, name: string): number;
2
+ //# sourceMappingURL=parse-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-utils.d.ts","sourceRoot":"","sources":["../../src/commands/parse-utils.ts"],"names":[],"mappings":"AAAA,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAYpE"}
@@ -0,0 +1,14 @@
1
+ export function parsePositiveInt(value, name) {
2
+ const trimmed = value.trim();
3
+ if (!/^[1-9]\d*$/.test(trimmed)) {
4
+ console.error(`Error: --${name} must be a positive integer (got "${value}").`);
5
+ process.exit(1);
6
+ }
7
+ const n = Number(trimmed);
8
+ if (!Number.isSafeInteger(n)) {
9
+ console.error(`Error: --${name} value too large (got "${value}").`);
10
+ process.exit(1);
11
+ }
12
+ return n;
13
+ }
14
+ //# sourceMappingURL=parse-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse-utils.js","sourceRoot":"","sources":["../../src/commands/parse-utils.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,IAAY;IAC1D,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,YAAY,IAAI,qCAAqC,KAAK,KAAK,CAAC,CAAC;QAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAC1B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,YAAY,IAAI,0BAA0B,KAAK,KAAK,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,7 @@
1
+ interface PlaybookOptions {
2
+ all: boolean;
3
+ }
4
+ export declare function getPlaybookOutput(galileoDir: string, options: PlaybookOptions): Promise<string>;
5
+ export declare function getPlaybookStats(galileoDir: string): Promise<string>;
6
+ export {};
7
+ //# sourceMappingURL=playbook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playbook.d.ts","sourceRoot":"","sources":["../../src/commands/playbook.ts"],"names":[],"mappings":"AAEA,UAAU,eAAe;IACvB,GAAG,EAAE,OAAO,CAAC;CACd;AAOD,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,MAAM,CAAC,CAuBjB;AAED,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA4B1E"}
@@ -0,0 +1,50 @@
1
+ import { FilesystemPlaybookStore } from '@galileodev/core';
2
+ function formatEntry(entry, deprecated) {
3
+ const status = deprecated ? ' [DEPRECATED]' : '';
4
+ return ` [${entry.kind}] (utility: ${entry.utility}, harm: ${entry.harmfulness})${status}\n ${entry.content}\n id: ${entry.id} | source: ${entry.source} | ${entry.timestamp}`;
5
+ }
6
+ export async function getPlaybookOutput(galileoDir, options) {
7
+ const store = new FilesystemPlaybookStore(galileoDir);
8
+ if (options.all) {
9
+ const allEntries = await store.getAllEntries();
10
+ if (allEntries.length === 0) {
11
+ return 'Playbook is empty. Run "galileo run" to start building context.';
12
+ }
13
+ const active = await store.getActiveEntries();
14
+ const activeIds = new Set(active.map((e) => e.id));
15
+ const lines = allEntries.map((e) => formatEntry(e, !activeIds.has(e.id)));
16
+ return `Playbook (all entries, ${allEntries.length} total):\n\n${lines.join('\n\n')}`;
17
+ }
18
+ const entries = await store.getActiveEntries();
19
+ if (entries.length === 0) {
20
+ return 'Playbook is empty. Run "galileo run" to start building context.';
21
+ }
22
+ const lines = entries.map((e) => formatEntry(e, false));
23
+ return `Playbook (${entries.length} active entries):\n\n${lines.join('\n\n')}`;
24
+ }
25
+ export async function getPlaybookStats(galileoDir) {
26
+ const store = new FilesystemPlaybookStore(galileoDir);
27
+ const all = await store.getAllEntries();
28
+ const active = await store.getActiveEntries();
29
+ const byKind = new Map();
30
+ const bySource = new Map();
31
+ let totalUtility = 0;
32
+ for (const entry of active) {
33
+ byKind.set(entry.kind, (byKind.get(entry.kind) ?? 0) + 1);
34
+ bySource.set(entry.source, (bySource.get(entry.source) ?? 0) + 1);
35
+ totalUtility += entry.utility;
36
+ }
37
+ const lines = [
38
+ `Total: ${all.length} (${active.length} active, ${all.length - active.length} deprecated)`,
39
+ '',
40
+ 'By kind:',
41
+ ...[...byKind.entries()].map(([k, v]) => ` ${k}: ${v}`),
42
+ '',
43
+ 'By source:',
44
+ ...[...bySource.entries()].map(([k, v]) => ` ${k}: ${v}`),
45
+ '',
46
+ `Avg utility: ${active.length > 0 ? (totalUtility / active.length).toFixed(2) : 'N/A'}`,
47
+ ];
48
+ return lines.join('\n');
49
+ }
50
+ //# sourceMappingURL=playbook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"playbook.js","sourceRoot":"","sources":["../../src/commands/playbook.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { type LLMProvider, type ReflectionResult, type GenerationResult } from '@galileodev/core';
2
+ interface ReflectOptions {
3
+ projectDir: string;
4
+ generation: GenerationResult;
5
+ llm: LLMProvider;
6
+ groundTruthPath?: string;
7
+ }
8
+ export declare function runReflect(options: ReflectOptions): Promise<ReflectionResult>;
9
+ export {};
10
+ //# sourceMappingURL=reflect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reflect.d.ts","sourceRoot":"","sources":["../../src/commands/reflect.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACtB,MAAM,kBAAkB,CAAC;AAE1B,UAAU,cAAc;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,GAAG,EAAE,WAAW,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAenF"}
@@ -0,0 +1,16 @@
1
+ import { Reflector, } from '@galileodev/core';
2
+ export async function runReflect(options) {
3
+ const reflector = new Reflector(options.llm);
4
+ let groundTruth;
5
+ if (options.groundTruthPath) {
6
+ const { readFile } = await import('node:fs/promises');
7
+ const content = await readFile(options.groundTruthPath, 'utf-8');
8
+ groundTruth = { type: 'error-log', content };
9
+ }
10
+ return reflector.run({
11
+ taskId: options.generation.taskId,
12
+ generation: options.generation,
13
+ groundTruth,
14
+ });
15
+ }
16
+ //# sourceMappingURL=reflect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reflect.js","sourceRoot":"","sources":["../../src/commands/reflect.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,GAIV,MAAM,kBAAkB,CAAC;AAS1B,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,OAAuB;IACtD,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAE7C,IAAI,WAAW,CAAC;IAChB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACtD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QACjE,WAAW,GAAG,EAAE,IAAI,EAAE,WAAoB,EAAE,OAAO,EAAE,CAAC;IACxD,CAAC;IAED,OAAO,SAAS,CAAC,GAAG,CAAC;QACnB,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,MAAM;QACjC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,WAAW;KACZ,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type LLMProvider, type PipelineResult } from '@galileodev/core';
2
+ interface RunOptions {
3
+ projectDir: string;
4
+ instruction: string;
5
+ llm: LLMProvider;
6
+ groundTruthPath?: string;
7
+ }
8
+ export declare function runPipeline(options: RunOptions): Promise<PipelineResult>;
9
+ export {};
10
+ //# sourceMappingURL=run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAIA,OAAO,EAOL,KAAK,WAAW,EAChB,KAAK,cAAc,EAEpB,MAAM,kBAAkB,CAAC;AAE1B,UAAU,UAAU;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,WAAW,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,CA6B9E"}
@@ -0,0 +1,31 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { existsSync } from 'node:fs';
3
+ import { join } from 'node:path';
4
+ import { ulid } from 'ulid';
5
+ import { Pipeline, Generator, Reflector, Curator, EventBus, FilesystemPlaybookStore, } from '@galileodev/core';
6
+ export async function runPipeline(options) {
7
+ const galileoDir = join(options.projectDir, '.galileo');
8
+ if (!existsSync(galileoDir)) {
9
+ throw new Error('Not a Galileo project. Run "galileo init" first.');
10
+ }
11
+ const store = new FilesystemPlaybookStore(galileoDir);
12
+ const eventBus = new EventBus();
13
+ const pipeline = new Pipeline({
14
+ store,
15
+ generator: new Generator(options.llm),
16
+ reflector: new Reflector(options.llm),
17
+ curator: new Curator(options.llm),
18
+ eventBus,
19
+ });
20
+ let groundTruth;
21
+ if (options.groundTruthPath) {
22
+ const content = await readFile(options.groundTruthPath, 'utf-8');
23
+ groundTruth = { type: 'error-log', content };
24
+ }
25
+ return pipeline.run({
26
+ taskId: ulid(),
27
+ instruction: options.instruction,
28
+ groundTruth,
29
+ });
30
+ }
31
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EACL,QAAQ,EACR,SAAS,EACT,SAAS,EACT,OAAO,EACP,QAAQ,EACR,uBAAuB,GAIxB,MAAM,kBAAkB,CAAC;AAS1B,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAmB;IACnD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAExD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,uBAAuB,CAAC,UAAU,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;IAEhC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC;QAC5B,KAAK;QACL,SAAS,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC;QACrC,SAAS,EAAE,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC;QACrC,OAAO,EAAE,IAAI,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;QACjC,QAAQ;KACT,CAAC,CAAC;IAEH,IAAI,WAAoC,CAAC;IACzC,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QACjE,WAAW,GAAG,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC;IAC/C,CAAC;IAED,OAAO,QAAQ,CAAC,GAAG,CAAC;QAClB,MAAM,EAAE,IAAI,EAAE;QACd,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,WAAW;KACZ,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { type LLMProvider } from '@galileodev/core';
2
+ interface SolveOptions {
3
+ projectDir: string;
4
+ llm: LLMProvider;
5
+ tokenBudget?: number;
6
+ maxRetries?: number;
7
+ }
8
+ export declare function runSolve(options: SolveOptions): Promise<import("@galileodev/verify").SolveResult | {
9
+ message: string;
10
+ report: import("@galileodev/verify").VerificationReport;
11
+ }>;
12
+ export {};
13
+ //# sourceMappingURL=solve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solve.d.ts","sourceRoot":"","sources":["../../src/commands/solve.ts"],"names":[],"mappings":"AAEA,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,kBAAkB,CAAC;AAW1B,UAAU,YAAY;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,WAAW,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,QAAQ,CAAC,OAAO,EAAE,YAAY;;;GAiCnD"}
@@ -0,0 +1,34 @@
1
+ import { join } from 'node:path';
2
+ import { existsSync } from 'node:fs';
3
+ import { ExecutionSandbox, TokenBudget, FilesystemPlaybookStore, } from '@galileodev/core';
4
+ import { VerifierRunner, TscVerifier, TestRunnerVerifier, EslintVerifier, SemgrepVerifier, SolveAgent, GuideComposer, } from '@galileodev/verify';
5
+ export async function runSolve(options) {
6
+ const galileoDir = join(options.projectDir, '.galileo');
7
+ if (!existsSync(galileoDir)) {
8
+ throw new Error('Not a Galileo project. Run "galileo init" first.');
9
+ }
10
+ const runner = new VerifierRunner({ failFast: true });
11
+ runner.register(new TscVerifier());
12
+ runner.register(new TestRunnerVerifier());
13
+ runner.register(new EslintVerifier());
14
+ runner.register(new SemgrepVerifier());
15
+ const sandbox = new ExecutionSandbox();
16
+ const report = await runner.runAll({ workingDir: options.projectDir, sandbox });
17
+ if (report.passed) {
18
+ return { message: 'No verification errors to fix.', report };
19
+ }
20
+ const store = new FilesystemPlaybookStore(galileoDir);
21
+ const composer = new GuideComposer(store, galileoDir);
22
+ const guideContext = await composer.compose('solve-session');
23
+ const agent = new SolveAgent();
24
+ return agent.remediate(report, {
25
+ workingDir: options.projectDir,
26
+ guideContext,
27
+ llm: options.llm,
28
+ sandbox,
29
+ verifier: runner,
30
+ budget: new TokenBudget(options.tokenBudget ?? 50000),
31
+ maxRetriesPerFinding: options.maxRetries ?? 3,
32
+ });
33
+ }
34
+ //# sourceMappingURL=solve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solve.js","sourceRoot":"","sources":["../../src/commands/solve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,uBAAuB,GAExB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,UAAU,EACV,aAAa,GACd,MAAM,oBAAoB,CAAC;AAS5B,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAAqB;IAClD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACxD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,MAAM,CAAC,QAAQ,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;IACnC,MAAM,CAAC,QAAQ,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;IAC1C,MAAM,CAAC,QAAQ,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC;IACtC,MAAM,CAAC,QAAQ,CAAC,IAAI,eAAe,EAAE,CAAC,CAAC;IAEvC,MAAM,OAAO,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAEvC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC,CAAC;IAChF,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,OAAO,EAAE,gCAAgC,EAAE,MAAM,EAAE,CAAC;IAC/D,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,uBAAuB,CAAC,UAAU,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;IAE7D,MAAM,KAAK,GAAG,IAAI,UAAU,EAAE,CAAC;IAC/B,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE;QAC7B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,YAAY;QACZ,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,OAAO;QACP,QAAQ,EAAE,MAAM;QAChB,MAAM,EAAE,IAAI,WAAW,CAAC,OAAO,CAAC,WAAW,IAAI,KAAK,CAAC;QACrD,oBAAoB,EAAE,OAAO,CAAC,UAAU,IAAI,CAAC;KAC9C,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function getTemplatesOutput(galileoDir: string): Promise<string>;
2
+ export declare function getTemplateHistory(galileoDir: string, stage: string): Promise<string>;
3
+ //# sourceMappingURL=templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/commands/templates.ts"],"names":[],"mappings":"AAEA,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkB5E;AAED,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAkB3F"}
@@ -0,0 +1,36 @@
1
+ import { TemplateRegistry } from '@galileodev/meta';
2
+ export async function getTemplatesOutput(galileoDir) {
3
+ const registry = new TemplateRegistry(galileoDir);
4
+ const stages = ['generator', 'reflector', 'curator'];
5
+ const lines = ['Active templates:', ''];
6
+ for (const stage of stages) {
7
+ const active = await registry.getActive(stage);
8
+ if (active) {
9
+ lines.push(` ${stage}: ${active.id} (v${active.version}, ~${active.metadata.tokenEstimate} tokens)`);
10
+ if (active.metadata.parentId) {
11
+ lines.push(` └─ evolved from: ${active.metadata.parentId}`);
12
+ }
13
+ }
14
+ else {
15
+ lines.push(` ${stage}: (none)`);
16
+ }
17
+ }
18
+ return lines.join('\n');
19
+ }
20
+ export async function getTemplateHistory(galileoDir, stage) {
21
+ const registry = new TemplateRegistry(galileoDir);
22
+ const all = await registry.getAll();
23
+ const stageTemplates = all
24
+ .filter((t) => t.stage === stage)
25
+ .sort((a, b) => a.version - b.version);
26
+ if (stageTemplates.length === 0) {
27
+ return `No templates found for stage '${stage}'.`;
28
+ }
29
+ const lines = [`Template history for ${stage}:`, ''];
30
+ for (const t of stageTemplates) {
31
+ const parent = t.metadata.parentId ? ` (from ${t.metadata.parentId})` : ' (original)';
32
+ lines.push(` v${t.version}: ${t.id}${parent} — ~${t.metadata.tokenEstimate} tokens`);
33
+ }
34
+ return lines.join('\n');
35
+ }
36
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/commands/templates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,UAAkB;IACzD,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IACrD,MAAM,KAAK,GAAa,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IAElD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,MAAM,EAAE,CAAC;YACX,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,OAAO,MAAM,MAAM,CAAC,QAAQ,CAAC,aAAa,UAAU,CAAC,CAAC;YACtG,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;gBAC7B,KAAK,CAAC,IAAI,CAAC,wBAAwB,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,UAAkB,EAAE,KAAa;IACxE,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,CAAC;IACpC,MAAM,cAAc,GAAG,GAAG;SACvB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC;SAChC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC;IAEzC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,iCAAiC,KAAK,IAAI,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,wBAAwB,KAAK,GAAG,EAAE,EAAE,CAAC,CAAC;IACrD,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC;QACtF,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,EAAE,GAAG,MAAM,OAAO,CAAC,CAAC,QAAQ,CAAC,aAAa,SAAS,CAAC,CAAC;IACxF,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,7 @@
1
+ interface VerifyOptions {
2
+ projectDir: string;
3
+ failFast?: boolean;
4
+ }
5
+ export declare function runVerify(options: VerifyOptions): Promise<import("@galileodev/verify").VerificationReport>;
6
+ export {};
7
+ //# sourceMappingURL=verify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAWA,UAAU,aAAa;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,4DAiBrD"}
@@ -0,0 +1,21 @@
1
+ import { join } from 'node:path';
2
+ import { existsSync } from 'node:fs';
3
+ import { ExecutionSandbox } from '@galileodev/core';
4
+ import { VerifierRunner, TscVerifier, TestRunnerVerifier, EslintVerifier, SemgrepVerifier, } from '@galileodev/verify';
5
+ export async function runVerify(options) {
6
+ const galileoDir = join(options.projectDir, '.galileo');
7
+ if (!existsSync(galileoDir)) {
8
+ throw new Error('Not a Galileo project. Run "galileo init" first.');
9
+ }
10
+ const runner = new VerifierRunner({ failFast: options.failFast ?? true });
11
+ runner.register(new TscVerifier());
12
+ runner.register(new TestRunnerVerifier());
13
+ runner.register(new EslintVerifier());
14
+ runner.register(new SemgrepVerifier());
15
+ const sandbox = new ExecutionSandbox();
16
+ return runner.runAll({
17
+ workingDir: options.projectDir,
18
+ sandbox,
19
+ });
20
+ }
21
+ //# sourceMappingURL=verify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/commands/verify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EACL,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,cAAc,EACd,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAO5B,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,OAAsB;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACxD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC,CAAC;IAC1E,MAAM,CAAC,QAAQ,CAAC,IAAI,WAAW,EAAE,CAAC,CAAC;IACnC,MAAM,CAAC,QAAQ,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;IAC1C,MAAM,CAAC,QAAQ,CAAC,IAAI,cAAc,EAAE,CAAC,CAAC;IACtC,MAAM,CAAC,QAAQ,CAAC,IAAI,eAAe,EAAE,CAAC,CAAC;IAEvC,MAAM,OAAO,GAAG,IAAI,gBAAgB,EAAE,CAAC;IACvC,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,OAAO;KACR,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,8 @@
1
+ export interface GalileoConfig {
2
+ model: string;
3
+ temperature: number;
4
+ maxTokens: number;
5
+ apiKey?: string;
6
+ }
7
+ export declare function loadConfig(projectDir: string): Promise<GalileoConfig>;
8
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAgBD,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA+B3E"}
@@ -0,0 +1,41 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { existsSync } from 'node:fs';
3
+ import { join } from 'node:path';
4
+ import { homedir } from 'node:os';
5
+ const DEFAULTS = {
6
+ model: 'claude-sonnet-4-20250514',
7
+ temperature: 0.2,
8
+ maxTokens: 4096,
9
+ };
10
+ async function readJsonFile(path) {
11
+ if (!existsSync(path)) {
12
+ return {};
13
+ }
14
+ const raw = await readFile(path, 'utf-8');
15
+ return JSON.parse(raw);
16
+ }
17
+ export async function loadConfig(projectDir) {
18
+ // Layer 1: defaults
19
+ const config = { ...DEFAULTS };
20
+ // Layer 2: global config (~/.galileo/config.json)
21
+ const globalConfig = await readJsonFile(join(homedir(), '.galileo', 'config.json'));
22
+ Object.assign(config, globalConfig);
23
+ // Layer 3: project config (<project>/.galileo/config.json)
24
+ const projectConfig = await readJsonFile(join(projectDir, '.galileo', 'config.json'));
25
+ Object.assign(config, projectConfig);
26
+ // Layer 4: environment variables
27
+ if (process.env.GALILEO_MODEL) {
28
+ config.model = process.env.GALILEO_MODEL;
29
+ }
30
+ if (process.env.GALILEO_API_KEY) {
31
+ config.apiKey = process.env.GALILEO_API_KEY;
32
+ }
33
+ if (process.env.GALILEO_TEMPERATURE) {
34
+ config.temperature = parseFloat(process.env.GALILEO_TEMPERATURE);
35
+ }
36
+ if (process.env.GALILEO_MAX_TOKENS) {
37
+ config.maxTokens = parseInt(process.env.GALILEO_MAX_TOKENS, 10);
38
+ }
39
+ return config;
40
+ }
41
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AASlC,MAAM,QAAQ,GAAkB;IAC9B,KAAK,EAAE,0BAA0B;IACjC,WAAW,EAAE,GAAG;IAChB,SAAS,EAAE,IAAI;CAChB,CAAC;AAEF,KAAK,UAAU,YAAY,CAAC,IAAY;IACtC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;AACpD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,UAAkB;IACjD,oBAAoB;IACpB,MAAM,MAAM,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;IAE/B,kDAAkD;IAClD,MAAM,YAAY,GAAG,MAAM,YAAY,CACrC,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,aAAa,CAAC,CAC3C,CAAC;IACF,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAEpC,2DAA2D;IAC3D,MAAM,aAAa,GAAG,MAAM,YAAY,CACtC,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,CAAC,CAC5C,CAAC;IACF,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAErC,iCAAiC;IACjC,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC;QAC9B,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;IAC3C,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QAChC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAC9C,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC;QACpC,MAAM,CAAC,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;QACnC,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,247 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import { resolve } from 'node:path';
4
+ import { loadConfig } from './config/loader.js';
5
+ import { runInit } from './commands/init.js';
6
+ import { runPipeline } from './commands/run.js';
7
+ import { getPlaybookOutput, getPlaybookStats } from './commands/playbook.js';
8
+ import { runOptimize } from './commands/optimize.js';
9
+ import { getTemplatesOutput, getTemplateHistory } from './commands/templates.js';
10
+ import { runVerify } from './commands/verify.js';
11
+ import { runSolve } from './commands/solve.js';
12
+ import { runACDC } from './commands/acdc.js';
13
+ import { runOptimizeCode } from './commands/optimize-code.js';
14
+ import { parsePositiveInt } from './commands/parse-utils.js';
15
+ const program = new Command();
16
+ program
17
+ .name('galileo')
18
+ .description('Galileo ACE — Agentic Context Engineering framework')
19
+ .version('0.1.0');
20
+ program
21
+ .command('init')
22
+ .description('Initialize a .galileo directory in the current project')
23
+ .action(async () => {
24
+ const projectDir = resolve('.');
25
+ await runInit(projectDir);
26
+ console.log('Initialized .galileo/ directory.');
27
+ });
28
+ program
29
+ .command('run')
30
+ .description('Execute the full Generator → Reflector → Curator pipeline')
31
+ .argument('<instruction>', 'What you want the AI to do')
32
+ .option('--ground-truth <path>', 'Path to test results or error logs')
33
+ .option('--json', 'Output as JSON')
34
+ .option('--verbose', 'Show full event payloads')
35
+ .action(async (instruction, opts) => {
36
+ const projectDir = resolve('.');
37
+ const config = await loadConfig(projectDir);
38
+ if (!config.apiKey) {
39
+ console.error('Error: GALILEO_API_KEY environment variable is required.');
40
+ process.exit(1);
41
+ }
42
+ const { AnthropicProvider } = await import('@galileodev/core');
43
+ const llm = new AnthropicProvider(config.apiKey, { model: config.model });
44
+ const result = await runPipeline({
45
+ projectDir,
46
+ instruction,
47
+ llm,
48
+ groundTruthPath: opts.groundTruth,
49
+ });
50
+ if (opts.json) {
51
+ console.log(JSON.stringify(result, null, 2));
52
+ }
53
+ else {
54
+ console.log(`Task: ${result.taskId}`);
55
+ console.log(`Trajectories: ${result.generation.trajectories.length}`);
56
+ console.log(`Artifacts: ${result.generation.artifacts.length}`);
57
+ console.log(`Lessons: ${result.reflection.lessons.length}`);
58
+ console.log(`Delta: +${result.delta.additions.length} -${result.delta.deprecations.length}`);
59
+ console.log(`Playbook entries: ${result.playbookSnapshot.entries.length}`);
60
+ if (opts.verbose) {
61
+ console.log('\n--- Generation ---');
62
+ console.log(JSON.stringify(result.generation, null, 2));
63
+ console.log('\n--- Reflection ---');
64
+ console.log(JSON.stringify(result.reflection, null, 2));
65
+ console.log('\n--- Delta ---');
66
+ console.log(JSON.stringify(result.delta, null, 2));
67
+ }
68
+ }
69
+ });
70
+ program
71
+ .command('playbook')
72
+ .description('Inspect the playbook')
73
+ .option('--all', 'Show all entries including deprecated')
74
+ .option('--stats', 'Show playbook statistics')
75
+ .option('--json', 'Output as JSON')
76
+ .action(async (opts) => {
77
+ const projectDir = resolve('.');
78
+ const galileoDir = resolve(projectDir, '.galileo');
79
+ if (opts.stats) {
80
+ const stats = await getPlaybookStats(galileoDir);
81
+ console.log(stats);
82
+ }
83
+ else {
84
+ const output = await getPlaybookOutput(galileoDir, { all: opts.all ?? false });
85
+ console.log(output);
86
+ }
87
+ });
88
+ program
89
+ .command('optimize')
90
+ .description('Run the ratchet optimizer to evolve prompt templates')
91
+ .argument('<stage>', 'Stage to optimize (generator, reflector, curator)')
92
+ .option('--budget <tokens>', 'Token budget for the optimization run', '10000')
93
+ .option('--experiments <n>', 'Max experiments to try', '10')
94
+ .action(async (stage, opts) => {
95
+ const projectDir = resolve('.');
96
+ const config = await loadConfig(projectDir);
97
+ if (!config.apiKey) {
98
+ console.error('Error: GALILEO_API_KEY environment variable is required.');
99
+ process.exit(1);
100
+ }
101
+ const { AnthropicProvider } = await import('@galileodev/core');
102
+ const llm = new AnthropicProvider(config.apiKey, { model: config.model });
103
+ const results = await runOptimize({
104
+ projectDir,
105
+ stage,
106
+ llm,
107
+ tokenBudget: parsePositiveInt(opts.budget, 'budget'),
108
+ maxExperiments: parsePositiveInt(opts.experiments, 'experiments'),
109
+ });
110
+ console.log(`Optimization complete: ${results.length} experiments`);
111
+ const wins = results.filter((r) => !r.reverted).length;
112
+ const losses = results.filter((r) => r.reverted).length;
113
+ console.log(` Wins: ${wins}, Losses: ${losses}`);
114
+ const totalTokens = results.reduce((sum, r) => sum + r.tokensUsed, 0);
115
+ console.log(` Tokens used: ${totalTokens}`);
116
+ });
117
+ program
118
+ .command('templates')
119
+ .description('Show active prompt templates')
120
+ .option('--history <stage>', 'Show template evolution for a stage')
121
+ .action(async (opts) => {
122
+ const projectDir = resolve('.');
123
+ const galileoDir = resolve(projectDir, '.galileo');
124
+ if (opts.history) {
125
+ console.log(await getTemplateHistory(galileoDir, opts.history));
126
+ }
127
+ else {
128
+ console.log(await getTemplatesOutput(galileoDir));
129
+ }
130
+ });
131
+ program
132
+ .command('verify')
133
+ .description('Run verification checks on the current project')
134
+ .option('--no-fail-fast', 'Continue running verifiers after first error')
135
+ .action(async (opts) => {
136
+ const projectDir = resolve('.');
137
+ const report = await runVerify({ projectDir, failFast: opts.failFast });
138
+ if (report.passed) {
139
+ console.log('All verification checks passed.');
140
+ }
141
+ else {
142
+ console.log(`Verification failed: ${report.summary.errors} errors, ${report.summary.warnings} warnings`);
143
+ for (const finding of report.findings) {
144
+ const prefix = finding.severity === 'error' ? 'x' : '!';
145
+ console.log(` ${prefix} [${finding.verifierId}/${finding.ruleId}] ${finding.file}:${finding.line} - ${finding.message}`);
146
+ }
147
+ process.exit(1);
148
+ }
149
+ });
150
+ program
151
+ .command('solve')
152
+ .description('Automatically fix verification errors')
153
+ .option('--budget <tokens>', 'Token budget for remediation', '50000')
154
+ .option('--retries <n>', 'Max retries per finding', '3')
155
+ .action(async (opts) => {
156
+ const projectDir = resolve('.');
157
+ const config = await loadConfig(projectDir);
158
+ if (!config.apiKey) {
159
+ console.error('Error: GALILEO_API_KEY environment variable is required.');
160
+ process.exit(1);
161
+ }
162
+ const { AnthropicProvider } = await import('@galileodev/core');
163
+ const llm = new AnthropicProvider(config.apiKey, { model: config.model });
164
+ const result = await runSolve({
165
+ projectDir,
166
+ llm,
167
+ tokenBudget: parsePositiveInt(opts.budget, 'budget'),
168
+ maxRetries: parsePositiveInt(opts.retries, 'retries'),
169
+ });
170
+ if ('message' in result) {
171
+ console.log(result.message);
172
+ }
173
+ else {
174
+ console.log(`Resolved: ${result.resolved.length}, Unresolved: ${result.unresolved.length}`);
175
+ console.log(`Attempts: ${result.attempts.length}, Tokens used: ${result.tokensUsed}`);
176
+ }
177
+ });
178
+ program
179
+ .command('ac-dc')
180
+ .description('Run full AC/DC cycle: Guide -> Generate -> Verify -> Solve')
181
+ .argument('<instruction>', 'What you want the AI to do')
182
+ .option('--cycles <n>', 'Max AC/DC cycles', '3')
183
+ .option('--budget <tokens>', 'Token budget', '100000')
184
+ .action(async (instruction, opts) => {
185
+ const projectDir = resolve('.');
186
+ const config = await loadConfig(projectDir);
187
+ if (!config.apiKey) {
188
+ console.error('Error: GALILEO_API_KEY environment variable is required.');
189
+ process.exit(1);
190
+ }
191
+ const { AnthropicProvider } = await import('@galileodev/core');
192
+ const llm = new AnthropicProvider(config.apiKey, { model: config.model });
193
+ const result = await runACDC({
194
+ projectDir,
195
+ instruction,
196
+ llm,
197
+ maxCycles: parsePositiveInt(opts.cycles, 'cycles'),
198
+ tokenBudget: parsePositiveInt(opts.budget, 'budget'),
199
+ });
200
+ console.log(`AC/DC complete: ${result.passed ? 'PASSED' : 'FAILED'}`);
201
+ console.log(` Cycles: ${result.cycles}`);
202
+ console.log(` Tokens used: ${result.tokensUsed}`);
203
+ if (result.remediation) {
204
+ console.log(` Resolved: ${result.remediation.resolved.length}`);
205
+ console.log(` Unresolved: ${result.remediation.unresolved.length}`);
206
+ }
207
+ });
208
+ program
209
+ .command('optimize-code')
210
+ .description('Run Karpathy optimization loop on code')
211
+ .requiredOption('--metric <name>', 'Metric name')
212
+ .requiredOption('--command <cmd>', 'Command to measure metric')
213
+ .requiredOption('--target <files...>', 'Target files to optimize')
214
+ .option('--direction <dir>', 'minimize or maximize', 'maximize')
215
+ .option('--budget <tokens>', 'Token budget', '50000')
216
+ .option('--experiments <n>', 'Max experiments', '10')
217
+ .option('--time <minutes>', 'Time budget in minutes')
218
+ .action(async (opts) => {
219
+ const projectDir = resolve('.');
220
+ const config = await loadConfig(projectDir);
221
+ if (!config.apiKey) {
222
+ console.error('Error: GALILEO_API_KEY environment variable is required.');
223
+ process.exit(1);
224
+ }
225
+ const { AnthropicProvider } = await import('@galileodev/core');
226
+ const llm = new AnthropicProvider(config.apiKey, { model: config.model });
227
+ const result = await runOptimizeCode({
228
+ projectDir,
229
+ llm,
230
+ metricName: opts.metric,
231
+ metricCommand: opts.command,
232
+ targetFiles: opts.target,
233
+ direction: opts.direction,
234
+ tokenBudget: parsePositiveInt(opts.budget, 'budget'),
235
+ maxExperiments: parsePositiveInt(opts.experiments, 'experiments'),
236
+ timeBudgetMs: opts.time ? parsePositiveInt(opts.time, 'time') * 60000 : undefined,
237
+ });
238
+ console.log(`Optimization complete: ${result.experiments.length} experiments`);
239
+ console.log(` Baseline: ${result.baselineScore}`);
240
+ console.log(` Best: ${result.bestScore}`);
241
+ console.log(` Improved: ${result.improved}`);
242
+ console.log(` Tokens used: ${result.tokensUsed}`);
243
+ const kept = result.experiments.filter((e) => e.kept).length;
244
+ console.log(` Kept: ${kept}, Reverted: ${result.experiments.length - kept}`);
245
+ });
246
+ program.parse();
247
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "@galileodev/cli",
3
+ "version": "0.1.0",
4
+ "description": "Galileo ACE — Agentic Context Engineering CLI",
5
+ "type": "module",
6
+ "bin": {
7
+ "galileo": "dist/index.js"
8
+ },
9
+ "files": ["dist"],
10
+ "publishConfig": {
11
+ "access": "public"
12
+ },
13
+ "scripts": {
14
+ "build": "tsc",
15
+ "test": "vitest run"
16
+ },
17
+ "dependencies": {
18
+ "@galileodev/core": "*",
19
+ "@galileodev/meta": "*",
20
+ "@galileodev/verify": "*",
21
+ "commander": "^13.1.0",
22
+ "ulid": "^2.3.0"
23
+ },
24
+ "devDependencies": {
25
+ "@types/node": "^25.5.0"
26
+ }
27
+ }