swellai 1.0.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 (130) hide show
  1. package/README.md +711 -0
  2. package/dist/agents/linear-agent.d.ts +32 -0
  3. package/dist/agents/linear-agent.d.ts.map +1 -0
  4. package/dist/agents/linear-agent.js +263 -0
  5. package/dist/agents/linear-agent.js.map +1 -0
  6. package/dist/agents/planning-agent.d.ts +36 -0
  7. package/dist/agents/planning-agent.d.ts.map +1 -0
  8. package/dist/agents/planning-agent.js +248 -0
  9. package/dist/agents/planning-agent.js.map +1 -0
  10. package/dist/cli/index.d.ts +3 -0
  11. package/dist/cli/index.d.ts.map +1 -0
  12. package/dist/cli/index.js +102 -0
  13. package/dist/cli/index.js.map +1 -0
  14. package/dist/cli/install.d.ts +11 -0
  15. package/dist/cli/install.d.ts.map +1 -0
  16. package/dist/cli/install.js +257 -0
  17. package/dist/cli/install.js.map +1 -0
  18. package/dist/cli/manifest.d.ts +27 -0
  19. package/dist/cli/manifest.d.ts.map +1 -0
  20. package/dist/cli/manifest.js +65 -0
  21. package/dist/cli/manifest.js.map +1 -0
  22. package/dist/index.d.ts +17 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +17 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/lib/claude-agent-sdk.d.ts +73 -0
  27. package/dist/lib/claude-agent-sdk.d.ts.map +1 -0
  28. package/dist/lib/claude-agent-sdk.js +114 -0
  29. package/dist/lib/claude-agent-sdk.js.map +1 -0
  30. package/dist/lib/conversation-logger.d.ts +66 -0
  31. package/dist/lib/conversation-logger.d.ts.map +1 -0
  32. package/dist/lib/conversation-logger.js +159 -0
  33. package/dist/lib/conversation-logger.js.map +1 -0
  34. package/dist/lib/opencode.d.ts +68 -0
  35. package/dist/lib/opencode.d.ts.map +1 -0
  36. package/dist/lib/opencode.js +151 -0
  37. package/dist/lib/opencode.js.map +1 -0
  38. package/dist/lib/turso-schema.d.ts +13 -0
  39. package/dist/lib/turso-schema.d.ts.map +1 -0
  40. package/dist/lib/turso-schema.js +69 -0
  41. package/dist/lib/turso-schema.js.map +1 -0
  42. package/dist/lib/turso.d.ts +56 -0
  43. package/dist/lib/turso.d.ts.map +1 -0
  44. package/dist/lib/turso.js +144 -0
  45. package/dist/lib/turso.js.map +1 -0
  46. package/dist/lib/types.d.ts +31 -0
  47. package/dist/lib/types.d.ts.map +1 -0
  48. package/dist/lib/types.js +20 -0
  49. package/dist/lib/types.js.map +1 -0
  50. package/dist/lib/utils.d.ts +34 -0
  51. package/dist/lib/utils.d.ts.map +1 -0
  52. package/dist/lib/utils.js +72 -0
  53. package/dist/lib/utils.js.map +1 -0
  54. package/dist/scripts/build-templates.d.ts +17 -0
  55. package/dist/scripts/build-templates.d.ts.map +1 -0
  56. package/dist/scripts/build-templates.js +132 -0
  57. package/dist/scripts/build-templates.js.map +1 -0
  58. package/dist/scripts/claude-agent-runner.d.ts +28 -0
  59. package/dist/scripts/claude-agent-runner.d.ts.map +1 -0
  60. package/dist/scripts/claude-agent-runner.js +278 -0
  61. package/dist/scripts/claude-agent-runner.js.map +1 -0
  62. package/dist/src/agents/linear-agent.d.ts +32 -0
  63. package/dist/src/agents/linear-agent.d.ts.map +1 -0
  64. package/dist/src/agents/linear-agent.js +285 -0
  65. package/dist/src/agents/linear-agent.js.map +1 -0
  66. package/dist/src/agents/planning-agent.d.ts +36 -0
  67. package/dist/src/agents/planning-agent.d.ts.map +1 -0
  68. package/dist/src/agents/planning-agent.js +248 -0
  69. package/dist/src/agents/planning-agent.js.map +1 -0
  70. package/dist/src/cli/index.d.ts +3 -0
  71. package/dist/src/cli/index.d.ts.map +1 -0
  72. package/dist/src/cli/index.js +102 -0
  73. package/dist/src/cli/index.js.map +1 -0
  74. package/dist/src/cli/install.d.ts +11 -0
  75. package/dist/src/cli/install.d.ts.map +1 -0
  76. package/dist/src/cli/install.js +257 -0
  77. package/dist/src/cli/install.js.map +1 -0
  78. package/dist/src/cli/manifest.d.ts +27 -0
  79. package/dist/src/cli/manifest.d.ts.map +1 -0
  80. package/dist/src/cli/manifest.js +65 -0
  81. package/dist/src/cli/manifest.js.map +1 -0
  82. package/dist/src/index.d.ts +17 -0
  83. package/dist/src/index.d.ts.map +1 -0
  84. package/dist/src/index.js +17 -0
  85. package/dist/src/index.js.map +1 -0
  86. package/dist/src/lib/claude-agent-sdk.d.ts +73 -0
  87. package/dist/src/lib/claude-agent-sdk.d.ts.map +1 -0
  88. package/dist/src/lib/claude-agent-sdk.js +114 -0
  89. package/dist/src/lib/claude-agent-sdk.js.map +1 -0
  90. package/dist/src/lib/conversation-logger.d.ts +66 -0
  91. package/dist/src/lib/conversation-logger.d.ts.map +1 -0
  92. package/dist/src/lib/conversation-logger.js +159 -0
  93. package/dist/src/lib/conversation-logger.js.map +1 -0
  94. package/dist/src/lib/opencode.d.ts +153 -0
  95. package/dist/src/lib/opencode.d.ts.map +1 -0
  96. package/dist/src/lib/opencode.js +153 -0
  97. package/dist/src/lib/opencode.js.map +1 -0
  98. package/dist/src/lib/turso-schema.d.ts +13 -0
  99. package/dist/src/lib/turso-schema.d.ts.map +1 -0
  100. package/dist/src/lib/turso-schema.js +69 -0
  101. package/dist/src/lib/turso-schema.js.map +1 -0
  102. package/dist/src/lib/turso.d.ts +56 -0
  103. package/dist/src/lib/turso.d.ts.map +1 -0
  104. package/dist/src/lib/turso.js +144 -0
  105. package/dist/src/lib/turso.js.map +1 -0
  106. package/dist/src/lib/types.d.ts +31 -0
  107. package/dist/src/lib/types.d.ts.map +1 -0
  108. package/dist/src/lib/types.js +20 -0
  109. package/dist/src/lib/types.js.map +1 -0
  110. package/dist/src/lib/utils.d.ts +34 -0
  111. package/dist/src/lib/utils.d.ts.map +1 -0
  112. package/dist/src/lib/utils.js +72 -0
  113. package/dist/src/lib/utils.js.map +1 -0
  114. package/package.json +63 -0
  115. package/templates/.env.example +51 -0
  116. package/templates/agents/codebase-analyzer.md +121 -0
  117. package/templates/agents/codebase-locator.md +105 -0
  118. package/templates/agents/coding-agent.md +187 -0
  119. package/templates/agents/debug-agent.md +300 -0
  120. package/templates/prompts/consolidate-and-create-linear.md +282 -0
  121. package/templates/prompts/implementation.md +94 -0
  122. package/templates/prompts/plan-generation.md +171 -0
  123. package/templates/prompts/review.md +39 -0
  124. package/templates/prompts/verify.md +80 -0
  125. package/templates/scripts/claude-agent-runner.js +12887 -0
  126. package/templates/scripts/detect-runtime.sh +95 -0
  127. package/templates/scripts/linear-agent.js +1753 -0
  128. package/templates/scripts/planning-agent.js +1738 -0
  129. package/templates/workflows/claude-implement.yml +931 -0
  130. package/templates/workflows/claude-plan.yml +301 -0
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Turso database schema definitions and migration logic.
3
+ *
4
+ * This module defines the database schema for conversation logging
5
+ * and provides idempotent migration functions.
6
+ */
7
+ export const SCHEMA_VERSION = 1;
8
+ /**
9
+ * SQL statements for creating the conversation logging schema.
10
+ * All statements use IF NOT EXISTS for idempotent execution.
11
+ */
12
+ export const SCHEMA_STATEMENTS = [
13
+ // Schema version tracking
14
+ `CREATE TABLE IF NOT EXISTS schema_version (
15
+ version INTEGER PRIMARY KEY,
16
+ applied_at TEXT NOT NULL DEFAULT (datetime('now'))
17
+ )`,
18
+ // Sessions table - tracks agent execution sessions
19
+ `CREATE TABLE IF NOT EXISTS sessions (
20
+ id TEXT PRIMARY KEY,
21
+ agent_type TEXT NOT NULL,
22
+ model TEXT NOT NULL,
23
+ provider TEXT,
24
+ started_at TEXT NOT NULL DEFAULT (datetime('now')),
25
+ ended_at TEXT,
26
+ status TEXT NOT NULL DEFAULT 'running',
27
+ error_message TEXT,
28
+ metadata TEXT
29
+ )`,
30
+ // Messages table - stores conversation messages
31
+ `CREATE TABLE IF NOT EXISTS messages (
32
+ id TEXT PRIMARY KEY,
33
+ session_id TEXT NOT NULL,
34
+ sequence INTEGER NOT NULL,
35
+ role TEXT NOT NULL,
36
+ content TEXT,
37
+ tool_name TEXT,
38
+ tool_input TEXT,
39
+ tool_output TEXT,
40
+ created_at TEXT NOT NULL DEFAULT (datetime('now')),
41
+ token_count INTEGER,
42
+ FOREIGN KEY (session_id) REFERENCES sessions(id)
43
+ )`,
44
+ // Tool executions table - tracks individual tool calls
45
+ `CREATE TABLE IF NOT EXISTS tool_executions (
46
+ id TEXT PRIMARY KEY,
47
+ session_id TEXT NOT NULL,
48
+ message_id TEXT,
49
+ tool_name TEXT NOT NULL,
50
+ status TEXT NOT NULL,
51
+ input TEXT,
52
+ output TEXT,
53
+ error TEXT,
54
+ started_at TEXT NOT NULL DEFAULT (datetime('now')),
55
+ ended_at TEXT,
56
+ duration_ms INTEGER,
57
+ FOREIGN KEY (session_id) REFERENCES sessions(id),
58
+ FOREIGN KEY (message_id) REFERENCES messages(id)
59
+ )`,
60
+ // Indexes for query performance
61
+ "CREATE INDEX IF NOT EXISTS idx_messages_session ON messages(session_id)",
62
+ "CREATE INDEX IF NOT EXISTS idx_messages_created ON messages(created_at)",
63
+ "CREATE INDEX IF NOT EXISTS idx_tool_executions_session ON tool_executions(session_id)",
64
+ "CREATE INDEX IF NOT EXISTS idx_tool_executions_started ON tool_executions(started_at)",
65
+ "CREATE INDEX IF NOT EXISTS idx_sessions_agent_type ON sessions(agent_type)",
66
+ "CREATE INDEX IF NOT EXISTS idx_sessions_status ON sessions(status)",
67
+ "CREATE INDEX IF NOT EXISTS idx_sessions_started ON sessions(started_at)",
68
+ ];
69
+ //# sourceMappingURL=turso-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turso-schema.js","sourceRoot":"","sources":["../../src/lib/turso-schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AAEhC;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,0BAA0B;IAC1B;;;IAGE;IAEF,mDAAmD;IACnD;;;;;;;;;;IAUE;IAEF,gDAAgD;IAChD;;;;;;;;;;;;IAYE;IAEF,uDAAuD;IACvD;;;;;;;;;;;;;;IAcE;IAEF,gCAAgC;IAChC,yEAAyE;IACzE,yEAAyE;IACzE,uFAAuF;IACvF,uFAAuF;IACvF,4EAA4E;IAC5E,oEAAoE;IACpE,yEAAyE;CAC1E,CAAC"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Turso/libSQL client configuration and connection management.
3
+ *
4
+ * This module provides utilities for connecting to a Turso database
5
+ * for conversation logging. Logging is optional - when credentials
6
+ * are not configured, functions return null gracefully.
7
+ *
8
+ * In CI/CD environments (GitHub Actions), uses ephemeral embedded replicas
9
+ * that sync to cloud at the end of each session.
10
+ */
11
+ import { type Client } from "@libsql/client";
12
+ export interface TursoConfig {
13
+ url: string;
14
+ authToken: string;
15
+ }
16
+ /**
17
+ * Get Turso configuration from environment variables.
18
+ * Returns null if credentials are not configured (logging disabled).
19
+ */
20
+ export declare function getTursoConfig(): TursoConfig | null;
21
+ /**
22
+ * Create a new Turso client with the provided configuration.
23
+ * Uses embedded replica (local SQLite + sync) for better performance.
24
+ */
25
+ export declare function createTursoClient(config: TursoConfig): Client;
26
+ /**
27
+ * Get the shared Turso client instance.
28
+ * Returns null if Turso is not configured.
29
+ * Creates the client on first call (lazy initialization).
30
+ */
31
+ export declare function getTursoClient(): Promise<Client | null>;
32
+ /**
33
+ * Sync the local embedded replica with Turso cloud.
34
+ * This pushes all local data to the cloud database.
35
+ * Returns true if sync was successful, false otherwise.
36
+ */
37
+ export declare function syncToCloud(): Promise<boolean>;
38
+ /**
39
+ * Close the Turso client connection.
40
+ * Safe to call even if client was never created.
41
+ * Does NOT sync before closing - call syncToCloud() explicitly if needed.
42
+ */
43
+ export declare function closeTursoClient(): void;
44
+ /**
45
+ * Initialize the database schema.
46
+ * This function is idempotent and can be called multiple times safely.
47
+ * Returns true if initialization was successful or already done.
48
+ * Returns false if Turso is not configured.
49
+ */
50
+ export declare function initializeSchema(): Promise<boolean>;
51
+ /**
52
+ * Reset schema initialization state.
53
+ * Useful for testing or when reconnecting.
54
+ */
55
+ export declare function resetSchemaState(): void;
56
+ //# sourceMappingURL=turso.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turso.d.ts","sourceRoot":"","sources":["../../src/lib/turso.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,EAAE,KAAK,MAAM,EAAgB,MAAM,gBAAgB,CAAC;AAG3D,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,cAAc,IAAI,WAAW,GAAG,IAAI,CASnD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAW7D;AAKD;;;;GAIG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAU7D;AAED;;;;GAIG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAapD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAKvC;AAKD;;;;;GAKG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CA8CzD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC"}
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Turso/libSQL client configuration and connection management.
3
+ *
4
+ * This module provides utilities for connecting to a Turso database
5
+ * for conversation logging. Logging is optional - when credentials
6
+ * are not configured, functions return null gracefully.
7
+ *
8
+ * In CI/CD environments (GitHub Actions), uses ephemeral embedded replicas
9
+ * that sync to cloud at the end of each session.
10
+ */
11
+ import { tmpdir } from "node:os";
12
+ import { join } from "node:path";
13
+ import { createClient } from "@libsql/client";
14
+ import { SCHEMA_STATEMENTS, SCHEMA_VERSION } from "./turso-schema.js";
15
+ /**
16
+ * Get Turso configuration from environment variables.
17
+ * Returns null if credentials are not configured (logging disabled).
18
+ */
19
+ export function getTursoConfig() {
20
+ const url = process.env.TURSO_DATABASE_URL;
21
+ const authToken = process.env.TURSO_AUTH_TOKEN;
22
+ if (!url || !authToken) {
23
+ return null;
24
+ }
25
+ return { url, authToken };
26
+ }
27
+ /**
28
+ * Create a new Turso client with the provided configuration.
29
+ * Uses embedded replica (local SQLite + sync) for better performance.
30
+ */
31
+ export function createTursoClient(config) {
32
+ // Generate unique local database path for this session
33
+ const sessionId = crypto.randomUUID();
34
+ const localDbPath = join(tmpdir(), `turso-session-${sessionId}.db`);
35
+ return createClient({
36
+ url: `file:${localDbPath}`, // Local SQLite file
37
+ syncUrl: config.url, // Sync to Turso cloud
38
+ authToken: config.authToken,
39
+ syncInterval: 0, // Disable automatic sync - we'll sync manually
40
+ });
41
+ }
42
+ // Singleton client instance
43
+ let _client = null;
44
+ /**
45
+ * Get the shared Turso client instance.
46
+ * Returns null if Turso is not configured.
47
+ * Creates the client on first call (lazy initialization).
48
+ */
49
+ export async function getTursoClient() {
50
+ const config = getTursoConfig();
51
+ if (!config) {
52
+ return null;
53
+ }
54
+ if (!_client) {
55
+ _client = createTursoClient(config);
56
+ }
57
+ return _client;
58
+ }
59
+ /**
60
+ * Sync the local embedded replica with Turso cloud.
61
+ * This pushes all local data to the cloud database.
62
+ * Returns true if sync was successful, false otherwise.
63
+ */
64
+ export async function syncToCloud() {
65
+ if (!_client) {
66
+ return false;
67
+ }
68
+ try {
69
+ await _client.sync();
70
+ console.error("[Turso] Successfully synced local data to cloud");
71
+ return true;
72
+ }
73
+ catch (error) {
74
+ console.error("[Turso] Failed to sync to cloud:", error);
75
+ return false;
76
+ }
77
+ }
78
+ /**
79
+ * Close the Turso client connection.
80
+ * Safe to call even if client was never created.
81
+ * Does NOT sync before closing - call syncToCloud() explicitly if needed.
82
+ */
83
+ export function closeTursoClient() {
84
+ if (_client) {
85
+ _client.close();
86
+ _client = null;
87
+ }
88
+ }
89
+ // Schema initialization state
90
+ let _schemaInitialized = false;
91
+ /**
92
+ * Initialize the database schema.
93
+ * This function is idempotent and can be called multiple times safely.
94
+ * Returns true if initialization was successful or already done.
95
+ * Returns false if Turso is not configured.
96
+ */
97
+ export async function initializeSchema() {
98
+ if (_schemaInitialized) {
99
+ return true;
100
+ }
101
+ const client = await getTursoClient();
102
+ if (!client) {
103
+ return false;
104
+ }
105
+ try {
106
+ // Check current schema version
107
+ const versionResult = await client
108
+ .execute("SELECT version FROM schema_version ORDER BY version DESC LIMIT 1")
109
+ .catch(() => ({ rows: [] }));
110
+ const currentVersion = versionResult.rows.length > 0 && versionResult.rows[0]?.version
111
+ ? Number(versionResult.rows[0].version)
112
+ : 0;
113
+ if (currentVersion >= SCHEMA_VERSION) {
114
+ _schemaInitialized = true;
115
+ return true;
116
+ }
117
+ // Run all schema statements (idempotent due to IF NOT EXISTS)
118
+ for (const statement of SCHEMA_STATEMENTS) {
119
+ await client.execute(statement);
120
+ }
121
+ // Record schema version if not already present
122
+ if (currentVersion < SCHEMA_VERSION) {
123
+ await client.execute({
124
+ sql: "INSERT OR REPLACE INTO schema_version (version) VALUES (?)",
125
+ args: [SCHEMA_VERSION],
126
+ });
127
+ }
128
+ _schemaInitialized = true;
129
+ console.error(`[Turso] Schema initialized to version ${SCHEMA_VERSION}`);
130
+ return true;
131
+ }
132
+ catch (error) {
133
+ console.error("[Turso] Failed to initialize schema:", error);
134
+ return false;
135
+ }
136
+ }
137
+ /**
138
+ * Reset schema initialization state.
139
+ * Useful for testing or when reconnecting.
140
+ */
141
+ export function resetSchemaState() {
142
+ _schemaInitialized = false;
143
+ }
144
+ //# sourceMappingURL=turso.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"turso.js","sourceRoot":"","sources":["../../src/lib/turso.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Shared TypeScript interfaces and types for the multi-provider plan generation system.
3
+ */
4
+ /**
5
+ * Message part from OpenCode SDK responses
6
+ */
7
+ export interface Part {
8
+ type: string;
9
+ text?: string;
10
+ [key: string]: unknown;
11
+ }
12
+ /**
13
+ * Provider configuration options
14
+ */
15
+ export interface ProviderConfig {
16
+ apiKey: string;
17
+ timeout?: boolean;
18
+ }
19
+ /**
20
+ * Supported AI providers
21
+ */
22
+ export type Provider = "anthropic" | "openai" | "google";
23
+ /**
24
+ * Provider-specific default models
25
+ */
26
+ export declare const DEFAULT_MODELS: Record<Provider, string>;
27
+ /**
28
+ * Environment variable names for API keys by provider
29
+ */
30
+ export declare const API_KEY_ENV_VARS: Record<Provider, string[]>;
31
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,WAAW,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEzD;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAInD,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,CAIvD,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Shared TypeScript interfaces and types for the multi-provider plan generation system.
3
+ */
4
+ /**
5
+ * Provider-specific default models
6
+ */
7
+ export const DEFAULT_MODELS = {
8
+ anthropic: "claude-opus-4-5",
9
+ openai: "gpt-5.2-pro",
10
+ google: "gemini-2.5-flash",
11
+ };
12
+ /**
13
+ * Environment variable names for API keys by provider
14
+ */
15
+ export const API_KEY_ENV_VARS = {
16
+ anthropic: ["ANTHROPIC_API_KEY", "CLAUDE_CODE_OAUTH_TOKEN"],
17
+ openai: ["OPENAI_API_KEY"],
18
+ google: ["GOOGLE_GENERATIVE_AI_API_KEY"],
19
+ };
20
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lib/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAwBH;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAA6B;IACtD,SAAS,EAAE,iBAAiB;IAC5B,MAAM,EAAE,aAAa;IACrB,MAAM,EAAE,kBAAkB;CAC3B,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAA+B;IAC1D,SAAS,EAAE,CAAC,mBAAmB,EAAE,yBAAyB,CAAC;IAC3D,MAAM,EAAE,CAAC,gBAAgB,CAAC;IAC1B,MAAM,EAAE,CAAC,8BAA8B,CAAC;CACzC,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Shared utility functions for the multi-provider plan generation system.
3
+ */
4
+ import { type Part, type Provider } from "./types.js";
5
+ /**
6
+ * Extract text from message parts
7
+ *
8
+ * @param parts - Array of message parts from OpenCode SDK
9
+ * @returns Concatenated text from all text-type parts
10
+ */
11
+ export declare function extractTextFromParts(parts: Part[]): string;
12
+ /**
13
+ * Validate that all required environment variables are set
14
+ *
15
+ * @param requiredVars - Array of environment variable names to check
16
+ * @throws Error if any required variables are missing
17
+ */
18
+ export declare function validateEnvVars(requiredVars: string[]): void;
19
+ /**
20
+ * Get API key from environment variables for a specific provider
21
+ *
22
+ * @param provider - The AI provider (anthropic, openai, google)
23
+ * @returns The API key for the provider
24
+ * @throws Error if no API key is found for the provider
25
+ */
26
+ export declare function getApiKey(provider: Provider): string;
27
+ /**
28
+ * Validate that a provider is supported
29
+ *
30
+ * @param provider - The provider name to validate
31
+ * @throws Error if the provider is not supported
32
+ */
33
+ export declare function validateProvider(provider: string): asserts provider is Provider;
34
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAoB,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,YAAY,CAAC;AAExE;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,MAAM,CAO1D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,CAa5D;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAiBpD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAS/E"}
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Shared utility functions for the multi-provider plan generation system.
3
+ */
4
+ import { API_KEY_ENV_VARS } from "./types.js";
5
+ /**
6
+ * Extract text from message parts
7
+ *
8
+ * @param parts - Array of message parts from OpenCode SDK
9
+ * @returns Concatenated text from all text-type parts
10
+ */
11
+ export function extractTextFromParts(parts) {
12
+ if (!Array.isArray(parts))
13
+ return "";
14
+ return parts
15
+ .filter((part) => part.type === "text")
16
+ .map((part) => part.text || "")
17
+ .join("\n");
18
+ }
19
+ /**
20
+ * Validate that all required environment variables are set
21
+ *
22
+ * @param requiredVars - Array of environment variable names to check
23
+ * @throws Error if any required variables are missing
24
+ */
25
+ export function validateEnvVars(requiredVars) {
26
+ const missingVars = requiredVars.filter((varName) => !process.env[varName]);
27
+ if (missingVars.length > 0) {
28
+ const errorMsg = [
29
+ "Error: Missing required environment variables:",
30
+ ...missingVars.map((varName) => ` - ${varName}`),
31
+ "",
32
+ "Please set all required environment variables and try again.",
33
+ ].join("\n");
34
+ throw new Error(errorMsg);
35
+ }
36
+ }
37
+ /**
38
+ * Get API key from environment variables for a specific provider
39
+ *
40
+ * @param provider - The AI provider (anthropic, openai, google)
41
+ * @returns The API key for the provider
42
+ * @throws Error if no API key is found for the provider
43
+ */
44
+ export function getApiKey(provider) {
45
+ const envVars = API_KEY_ENV_VARS[provider];
46
+ for (const envVar of envVars) {
47
+ const apiKey = process.env[envVar];
48
+ if (apiKey) {
49
+ return apiKey;
50
+ }
51
+ }
52
+ const errorMsg = [
53
+ `Error: No API key found for provider "${provider}"`,
54
+ `Required environment variables (at least one):`,
55
+ ...envVars.map((envVar) => ` - ${envVar}`),
56
+ ].join("\n");
57
+ throw new Error(errorMsg);
58
+ }
59
+ /**
60
+ * Validate that a provider is supported
61
+ *
62
+ * @param provider - The provider name to validate
63
+ * @throws Error if the provider is not supported
64
+ */
65
+ export function validateProvider(provider) {
66
+ const validProviders = ["anthropic", "openai", "google"];
67
+ if (!validProviders.includes(provider)) {
68
+ throw new Error(`Error: Unsupported provider "${provider}". ` +
69
+ `Supported providers: ${validProviders.join(", ")}`);
70
+ }
71
+ }
72
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAA4B,MAAM,YAAY,CAAC;AAExE;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAErC,OAAO,KAAK;SACT,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;SACtC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;SAC9B,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,YAAsB;IACpD,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAE5E,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG;YACf,gDAAgD;YAChD,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,OAAO,EAAE,CAAC;YACjD,EAAE;YACF,8DAA8D;SAC/D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEb,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,QAAkB;IAC1C,MAAM,OAAO,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAE3C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG;QACf,yCAAyC,QAAQ,GAAG;QACpD,gDAAgD;QAChD,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,MAAM,EAAE,CAAC;KAC5C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC5B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,QAAgB;IAC/C,MAAM,cAAc,GAAe,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAErE,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAoB,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CACb,gCAAgC,QAAQ,KAAK;YAC3C,wBAAwB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACtD,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env bun
2
+ /**
3
+ * build-templates.ts
4
+ *
5
+ * Bundles TypeScript agents into self-contained JavaScript files for templates/.
6
+ *
7
+ * This script:
8
+ * 1. Uses Bun's built-in bundler to compile TypeScript to JavaScript
9
+ * 2. Bundles all dependencies into single files
10
+ * 3. Adds shebang to each output file
11
+ * 4. Outputs to templates/scripts/
12
+ *
13
+ * Usage:
14
+ * bun run scripts/build-templates.ts
15
+ */
16
+ export {};
17
+ //# sourceMappingURL=build-templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-templates.d.ts","sourceRoot":"","sources":["../../scripts/build-templates.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;GAaG"}
@@ -0,0 +1,132 @@
1
+ #!/usr/bin/env bun
2
+ /**
3
+ * build-templates.ts
4
+ *
5
+ * Bundles TypeScript agents into self-contained JavaScript files for templates/.
6
+ *
7
+ * This script:
8
+ * 1. Uses Bun's built-in bundler to compile TypeScript to JavaScript
9
+ * 2. Bundles all dependencies into single files
10
+ * 3. Adds shebang to each output file
11
+ * 4. Outputs to templates/scripts/
12
+ *
13
+ * Usage:
14
+ * bun run scripts/build-templates.ts
15
+ */
16
+ import { chmod, mkdir, readFile, writeFile } from "node:fs/promises";
17
+ import { join } from "node:path";
18
+ import { build } from "bun";
19
+ // ============================================================================
20
+ // Configuration
21
+ // ============================================================================
22
+ const TEMPLATES_DIR = join(process.cwd(), "templates", "scripts");
23
+ const SHEBANG = "#!/usr/bin/env node\n";
24
+ const ENTRYPOINTS = [
25
+ {
26
+ input: "./src/agents/planning-agent.ts",
27
+ output: "planning-agent.js",
28
+ },
29
+ {
30
+ input: "./src/agents/linear-agent.ts",
31
+ output: "linear-agent.js",
32
+ },
33
+ {
34
+ input: "./scripts/claude-agent-runner.ts",
35
+ output: "claude-agent-runner.js",
36
+ },
37
+ ];
38
+ // ============================================================================
39
+ // Build Function
40
+ // ============================================================================
41
+ async function buildTemplates() {
42
+ console.log("");
43
+ console.log("=".repeat(60));
44
+ console.log("Building Template Scripts");
45
+ console.log("=".repeat(60));
46
+ console.log("");
47
+ // Ensure output directory exists
48
+ try {
49
+ await mkdir(TEMPLATES_DIR, { recursive: true });
50
+ console.log(`✓ Created output directory: ${TEMPLATES_DIR}`);
51
+ }
52
+ catch (error) {
53
+ if (error instanceof Error && "code" in error && error.code !== "EEXIST") {
54
+ throw error;
55
+ }
56
+ }
57
+ // Build each entrypoint
58
+ for (const entry of ENTRYPOINTS) {
59
+ console.log("");
60
+ console.log(`Building ${entry.input} → ${entry.output}...`);
61
+ try {
62
+ // Use Bun's bundler
63
+ const result = await build({
64
+ entrypoints: [entry.input],
65
+ outdir: TEMPLATES_DIR,
66
+ target: "node",
67
+ format: "esm",
68
+ minify: false,
69
+ sourcemap: "none",
70
+ naming: {
71
+ entry: "[dir]/[name].[ext]",
72
+ },
73
+ external: [], // Bundle all dependencies
74
+ });
75
+ if (!result.success) {
76
+ console.error(`✗ Build failed for ${entry.input}`);
77
+ for (const log of result.logs) {
78
+ console.error(` ${log.message}`);
79
+ }
80
+ process.exit(1);
81
+ }
82
+ console.log(` ✓ Bundled successfully`);
83
+ // Determine the actual output path
84
+ // Bun outputs based on the input file structure
85
+ const inputBasename = entry.input.split("/").pop()?.replace(".ts", ".js") || entry.output;
86
+ const actualOutputPath = join(TEMPLATES_DIR, inputBasename);
87
+ const targetOutputPath = join(TEMPLATES_DIR, entry.output);
88
+ // Read the bundled file
89
+ let bundledContent;
90
+ try {
91
+ bundledContent = await readFile(actualOutputPath, "utf-8");
92
+ }
93
+ catch (error) {
94
+ console.error(`✗ Could not read bundled file: ${actualOutputPath}`);
95
+ throw error;
96
+ }
97
+ // Add shebang if not present
98
+ if (!bundledContent.startsWith("#!")) {
99
+ bundledContent = SHEBANG + bundledContent;
100
+ }
101
+ // Write to target path (may be same as actual output)
102
+ await writeFile(targetOutputPath, bundledContent, "utf-8");
103
+ // Make executable
104
+ await chmod(targetOutputPath, 0o755);
105
+ console.log(` ✓ Added shebang and made executable`);
106
+ console.log(` ✓ Output: ${targetOutputPath}`);
107
+ }
108
+ catch (error) {
109
+ console.error(`✗ Error building ${entry.input}:`, error);
110
+ throw error;
111
+ }
112
+ }
113
+ console.log("");
114
+ console.log("=".repeat(60));
115
+ console.log("Build Complete!");
116
+ console.log("=".repeat(60));
117
+ console.log("");
118
+ console.log(`Bundled scripts in: ${TEMPLATES_DIR}`);
119
+ console.log("");
120
+ }
121
+ // ============================================================================
122
+ // Main Execution
123
+ // ============================================================================
124
+ buildTemplates().catch((error) => {
125
+ console.error("");
126
+ console.error("=".repeat(60));
127
+ console.error("BUILD FAILED");
128
+ console.error("=".repeat(60));
129
+ console.error(error);
130
+ process.exit(1);
131
+ });
132
+ //# sourceMappingURL=build-templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-templates.js","sourceRoot":"","sources":["../../scripts/build-templates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * claude-agent-runner.ts
4
+ *
5
+ * CLI wrapper for running Claude Agent SDK queries.
6
+ * This script can be invoked by parallel-impl.sh and other automation scripts.
7
+ *
8
+ * Usage:
9
+ * echo "prompt" | claude-agent-runner.ts --cwd /path --model claude-opus-4-5-20251101 --mode implementation
10
+ *
11
+ * Arguments:
12
+ * --cwd <path> Working directory for the agent (required)
13
+ * --model <modelName> Model to use (default: claude-opus-4-5-20251101)
14
+ * --mode <mode> Execution mode: implementation or review (default: implementation)
15
+ *
16
+ * Input:
17
+ * Reads prompt from stdin (supports multiline)
18
+ *
19
+ * Output:
20
+ * - stdout: Final result JSON (type: 'result' message)
21
+ * - stderr: Progress logs and errors
22
+ *
23
+ * Exit codes:
24
+ * 0: Success
25
+ * 1: Error (authentication, SDK error, no result, etc.)
26
+ */
27
+ export {};
28
+ //# sourceMappingURL=claude-agent-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-agent-runner.d.ts","sourceRoot":"","sources":["../../scripts/claude-agent-runner.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG"}