autogoals 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 (93) hide show
  1. package/dist/agent.d.ts +13 -0
  2. package/dist/agent.d.ts.map +1 -0
  3. package/dist/agent.js +27 -0
  4. package/dist/agent.js.map +1 -0
  5. package/dist/commands.d.ts +3 -0
  6. package/dist/commands.d.ts.map +1 -0
  7. package/dist/commands.js +94 -0
  8. package/dist/commands.js.map +1 -0
  9. package/dist/index.d.ts +3 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +107277 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/output.d.ts +3 -0
  14. package/dist/output.d.ts.map +1 -0
  15. package/dist/output.js +11 -0
  16. package/dist/output.js.map +1 -0
  17. package/dist/phases/execution/execution.phase.d.ts +8 -0
  18. package/dist/phases/execution/execution.phase.d.ts.map +1 -0
  19. package/dist/phases/execution/execution.phase.js +130 -0
  20. package/dist/phases/execution/execution.phase.js.map +1 -0
  21. package/dist/phases/execution/index.d.ts +6 -0
  22. package/dist/phases/execution/index.d.ts.map +1 -0
  23. package/dist/phases/execution/index.js +4 -0
  24. package/dist/phases/execution/index.js.map +1 -0
  25. package/dist/phases/execution/planner.d.ts +4 -0
  26. package/dist/phases/execution/planner.d.ts.map +1 -0
  27. package/dist/phases/execution/planner.js +39 -0
  28. package/dist/phases/execution/planner.js.map +1 -0
  29. package/dist/phases/execution/types.d.ts +7 -0
  30. package/dist/phases/execution/types.d.ts.map +1 -0
  31. package/dist/phases/execution/types.js +2 -0
  32. package/dist/phases/execution/types.js.map +1 -0
  33. package/dist/phases/execution/verifier.d.ts +8 -0
  34. package/dist/phases/execution/verifier.d.ts.map +1 -0
  35. package/dist/phases/execution/verifier.js +23 -0
  36. package/dist/phases/execution/verifier.js.map +1 -0
  37. package/dist/phases/interview/index.d.ts +5 -0
  38. package/dist/phases/interview/index.d.ts.map +1 -0
  39. package/dist/phases/interview/index.js +3 -0
  40. package/dist/phases/interview/index.js.map +1 -0
  41. package/dist/phases/interview/interview.phase.d.ts +8 -0
  42. package/dist/phases/interview/interview.phase.d.ts.map +1 -0
  43. package/dist/phases/interview/interview.phase.js +112 -0
  44. package/dist/phases/interview/interview.phase.js.map +1 -0
  45. package/dist/phases/interview/question-builder.d.ts +6 -0
  46. package/dist/phases/interview/question-builder.d.ts.map +1 -0
  47. package/dist/phases/interview/question-builder.js +21 -0
  48. package/dist/phases/interview/question-builder.js.map +1 -0
  49. package/dist/phases/interview/types.d.ts +5 -0
  50. package/dist/phases/interview/types.d.ts.map +1 -0
  51. package/dist/phases/interview/types.js +2 -0
  52. package/dist/phases/interview/types.js.map +1 -0
  53. package/dist/phases/spec/index.d.ts +5 -0
  54. package/dist/phases/spec/index.d.ts.map +1 -0
  55. package/dist/phases/spec/index.js +4 -0
  56. package/dist/phases/spec/index.js.map +1 -0
  57. package/dist/phases/spec/spec-parser.d.ts +3 -0
  58. package/dist/phases/spec/spec-parser.d.ts.map +1 -0
  59. package/dist/phases/spec/spec-parser.js +77 -0
  60. package/dist/phases/spec/spec-parser.js.map +1 -0
  61. package/dist/phases/spec/spec-writer.d.ts +3 -0
  62. package/dist/phases/spec/spec-writer.d.ts.map +1 -0
  63. package/dist/phases/spec/spec-writer.js +34 -0
  64. package/dist/phases/spec/spec-writer.js.map +1 -0
  65. package/dist/phases/spec/spec.phase.d.ts +7 -0
  66. package/dist/phases/spec/spec.phase.d.ts.map +1 -0
  67. package/dist/phases/spec/spec.phase.js +113 -0
  68. package/dist/phases/spec/spec.phase.js.map +1 -0
  69. package/dist/phases/spec/types.d.ts +6 -0
  70. package/dist/phases/spec/types.d.ts.map +1 -0
  71. package/dist/phases/spec/types.js +2 -0
  72. package/dist/phases/spec/types.js.map +1 -0
  73. package/dist/phases/standby/index.d.ts +3 -0
  74. package/dist/phases/standby/index.d.ts.map +1 -0
  75. package/dist/phases/standby/index.js +2 -0
  76. package/dist/phases/standby/index.js.map +1 -0
  77. package/dist/phases/standby/standby.phase.d.ts +8 -0
  78. package/dist/phases/standby/standby.phase.d.ts.map +1 -0
  79. package/dist/phases/standby/standby.phase.js +108 -0
  80. package/dist/phases/standby/standby.phase.js.map +1 -0
  81. package/dist/phases/standby/types.d.ts +5 -0
  82. package/dist/phases/standby/types.d.ts.map +1 -0
  83. package/dist/phases/standby/types.js +2 -0
  84. package/dist/phases/standby/types.js.map +1 -0
  85. package/dist/public/assets/index-CcN4IXmm.css +1 -0
  86. package/dist/public/assets/index-DRgRc2_M.js +618 -0
  87. package/dist/public/favicon.svg +10 -0
  88. package/dist/public/index.html +20 -0
  89. package/dist/session.d.ts +11 -0
  90. package/dist/session.d.ts.map +1 -0
  91. package/dist/session.js +13 -0
  92. package/dist/session.js.map +1 -0
  93. package/package.json +29 -0
@@ -0,0 +1,13 @@
1
+ import type { Phase, AgentContext, Logger } from "@small-singularity/core";
2
+ export interface PhaseMap {
3
+ interview: Phase;
4
+ spec: Phase;
5
+ execution: Phase;
6
+ standby: Phase;
7
+ }
8
+ export declare class Agent {
9
+ private phases;
10
+ constructor(phases: PhaseMap);
11
+ run(context: AgentContext, logger: Logger): Promise<void>;
12
+ }
13
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAA0B,YAAY,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEnG,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,KAAK,CAAC;IACjB,IAAI,EAAE,KAAK,CAAC;IACZ,SAAS,EAAE,KAAK,CAAC;IACjB,OAAO,EAAE,KAAK,CAAC;CAChB;AAED,qBAAa,KAAK;IAChB,OAAO,CAAC,MAAM,CAAW;gBAEb,MAAM,EAAE,QAAQ;IAItB,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAwBhE"}
package/dist/agent.js ADDED
@@ -0,0 +1,27 @@
1
+ export class Agent {
2
+ phases;
3
+ constructor(phases) {
4
+ this.phases = phases;
5
+ }
6
+ async run(context, logger) {
7
+ let currentPhase = "interview";
8
+ while (currentPhase !== "done") {
9
+ const phase = this.phases[currentPhase];
10
+ if (!phase) {
11
+ throw new Error(`Unknown phase: ${currentPhase}`);
12
+ }
13
+ logger.log({
14
+ type: "phase_transition",
15
+ message: `Entering ${currentPhase} phase`,
16
+ });
17
+ context.store.setPhase(currentPhase);
18
+ const result = await phase.execute(context);
19
+ currentPhase = result.next;
20
+ }
21
+ logger.log({
22
+ type: "phase_transition",
23
+ message: "All phases complete",
24
+ });
25
+ }
26
+ }
27
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AASA,MAAM,OAAO,KAAK;IACR,MAAM,CAAW;IAEzB,YAAY,MAAgB;QAC1B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAqB,EAAE,MAAc;QAC7C,IAAI,YAAY,GAAc,WAAW,CAAC;QAE1C,OAAO,YAAY,KAAK,MAAM,EAAE,CAAC;YAC/B,MAAM,KAAK,GAAU,IAAI,CAAC,MAAM,CAAC,YAA8B,CAAC,CAAC;YACjE,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,IAAI,KAAK,CAAC,kBAAkB,YAAY,EAAE,CAAC,CAAC;YACpD,CAAC;YAED,MAAM,CAAC,GAAG,CAAC;gBACT,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EAAE,YAAY,YAAY,QAAQ;aAC1C,CAAC,CAAC;YAEH,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YACrC,MAAM,MAAM,GAAgB,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACzD,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC;QAC7B,CAAC;QAED,MAAM,CAAC,GAAG,CAAC;YACT,IAAI,EAAE,kBAAkB;YACxB,OAAO,EAAE,qBAAqB;SAC/B,CAAC,CAAC;IACL,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function createProgram(): Command;
3
+ //# sourceMappingURL=commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAYpC,wBAAgB,aAAa,IAAI,OAAO,CAsGvC"}
@@ -0,0 +1,94 @@
1
+ import { Command } from "commander";
2
+ import { loadConfig, createStore, createProjectStore, createLogger, formatForTerminal } from "@small-singularity/core";
3
+ import { Agent } from "./agent.js";
4
+ import { InterviewPhase } from "./phases/interview/index.js";
5
+ import { SpecPhase } from "./phases/spec/index.js";
6
+ import { ExecutionPhase } from "./phases/execution/index.js";
7
+ import { StandbyPhase } from "./phases/standby/index.js";
8
+ import { printBanner } from "./output.js";
9
+ import { resolve } from "path";
10
+ import { mkdirSync } from "fs";
11
+ export function createProgram() {
12
+ const program = new Command();
13
+ program
14
+ .name("small-singularity")
15
+ .description("Autonomous project agent")
16
+ .version("0.1.0");
17
+ program
18
+ .command("start")
19
+ .description("Start the agent on a project directory")
20
+ .argument("<project-path>", "Path to the project directory")
21
+ .option("-m, --model <model>", "Claude model to use", "sonnet")
22
+ .option("--budget <amount>", "Max total budget in USD", "20")
23
+ .option("--budget-per-goal <amount>", "Max budget per goal in USD", "2")
24
+ .option("-v, --verbose", "Verbose logging", false)
25
+ .action(async (projectPath, opts) => {
26
+ const resolvedPath = resolve(projectPath);
27
+ mkdirSync(resolvedPath, { recursive: true });
28
+ console.log(printBanner());
29
+ const config = loadConfig({
30
+ projectPath: resolvedPath,
31
+ model: opts.model,
32
+ budget: {
33
+ maxTotal: parseFloat(opts.budget),
34
+ maxPerGoal: parseFloat(opts.budgetPerGoal),
35
+ },
36
+ verbose: opts.verbose,
37
+ });
38
+ const projectStore = createProjectStore();
39
+ let project = projectStore.getProjectByPath(resolvedPath);
40
+ if (!project) {
41
+ const name = resolvedPath.split("/").pop() || "unnamed";
42
+ project = projectStore.createProject(name, resolvedPath);
43
+ }
44
+ projectStore.close();
45
+ const store = createStore(project.id);
46
+ const logger = createLogger({
47
+ sink: (event) => {
48
+ console.log(formatForTerminal(event));
49
+ },
50
+ });
51
+ const agent = new Agent({
52
+ interview: new InterviewPhase(),
53
+ spec: new SpecPhase(),
54
+ execution: new ExecutionPhase(logger),
55
+ standby: new StandbyPhase(),
56
+ });
57
+ await agent.run({
58
+ config,
59
+ store,
60
+ projectPath: resolvedPath,
61
+ spec: store.getSpec(),
62
+ }, logger);
63
+ store.close();
64
+ console.log("\nAgent stopped. State saved.");
65
+ });
66
+ program
67
+ .command("status")
68
+ .description("Show current project status")
69
+ .argument("<project-path>", "Path to the project directory")
70
+ .action((projectPath) => {
71
+ const resolvedPath = resolve(projectPath);
72
+ const projectStore = createProjectStore();
73
+ const project = projectStore.getProjectByPath(resolvedPath);
74
+ if (!project) {
75
+ console.log("No project found. Run 'start' first.");
76
+ projectStore.close();
77
+ return;
78
+ }
79
+ projectStore.close();
80
+ const store = createStore(project.id);
81
+ const phase = store.getPhase();
82
+ const totalCost = store.getTotalCost();
83
+ const goals = store.getGoals();
84
+ console.log(`Phase: ${phase}`);
85
+ console.log(`Total cost: $${totalCost.toFixed(2)}`);
86
+ console.log(`Goals: ${goals.length}`);
87
+ for (const goal of goals) {
88
+ console.log(` ${goal.id}: ${goal.status} ($${goal.costUsd.toFixed(2)})`);
89
+ }
90
+ store.close();
91
+ });
92
+ return program;
93
+ }
94
+ //# sourceMappingURL=commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commands.js","sourceRoot":"","sources":["../src/commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAEvH,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAE/B,MAAM,UAAU,aAAa;IAC3B,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,mBAAmB,CAAC;SACzB,WAAW,CAAC,0BAA0B,CAAC;SACvC,OAAO,CAAC,OAAO,CAAC,CAAC;IAEpB,OAAO;SACJ,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,wCAAwC,CAAC;SACrD,QAAQ,CAAC,gBAAgB,EAAE,+BAA+B,CAAC;SAC3D,MAAM,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,QAAQ,CAAC;SAC9D,MAAM,CAAC,mBAAmB,EAAE,yBAAyB,EAAE,IAAI,CAAC;SAC5D,MAAM,CAAC,4BAA4B,EAAE,4BAA4B,EAAE,GAAG,CAAC;SACvE,MAAM,CAAC,eAAe,EAAE,iBAAiB,EAAE,KAAK,CAAC;SACjD,MAAM,CAAC,KAAK,EAAE,WAAmB,EAAE,IAAI,EAAE,EAAE;QAC1C,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QAC1C,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE7C,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QAE3B,MAAM,MAAM,GAAG,UAAU,CAAC;YACxB,WAAW,EAAE,YAAY;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,MAAM,EAAE;gBACN,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;gBACjC,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC;aAC3C;YACD,OAAO,EAAE,IAAI,CAAC,OAAO;SACtB,CAAC,CAAC;QAEH,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAC;QAC1C,IAAI,OAAO,GAAG,YAAY,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAC1D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC;YACxD,OAAO,GAAG,YAAY,CAAC,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAC3D,CAAC;QACD,YAAY,CAAC,KAAK,EAAE,CAAC;QAErB,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEtC,MAAM,MAAM,GAAW,YAAY,CAAC;YAClC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;gBACd,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;YACxC,CAAC;SACF,CAAC,CAAC;QAEH,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;YACtB,SAAS,EAAE,IAAI,cAAc,EAAE;YAC/B,IAAI,EAAE,IAAI,SAAS,EAAE;YACrB,SAAS,EAAE,IAAI,cAAc,CAAC,MAAM,CAAC;YACrC,OAAO,EAAE,IAAI,YAAY,EAAE;SAC5B,CAAC,CAAC;QAEH,MAAM,KAAK,CAAC,GAAG,CACb;YACE,MAAM;YACN,KAAK;YACL,WAAW,EAAE,YAAY;YACzB,IAAI,EAAE,KAAK,CAAC,OAAO,EAAE;SACtB,EACD,MAAM,CACP,CAAC;QAEF,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEL,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,6BAA6B,CAAC;SAC1C,QAAQ,CAAC,gBAAgB,EAAE,+BAA+B,CAAC;SAC3D,MAAM,CAAC,CAAC,WAAmB,EAAE,EAAE;QAC9B,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;QAE1C,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,YAAY,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAC5D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;YACpD,YAAY,CAAC,KAAK,EAAE,CAAC;YACrB,OAAO;QACT,CAAC;QACD,YAAY,CAAC,KAAK,EAAE,CAAC;QAErB,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEtC,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;QACvC,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAE/B,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,gBAAgB,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QACtC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC5E,CAAC;QAED,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,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":""}