swellai 1.0.0 → 1.0.2

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 (65) hide show
  1. package/dist/src/cli/install.d.ts.map +1 -1
  2. package/dist/src/cli/install.js +7 -3
  3. package/dist/src/cli/install.js.map +1 -1
  4. package/package.json +2 -2
  5. package/templates/actions/detect-runtime/action.yml +113 -0
  6. package/templates/actions/fetch-agents/action.yml +34 -0
  7. package/templates/actions/get-issue-details/action.yml +60 -0
  8. package/templates/actions/setup-claude/action.yml +45 -0
  9. package/templates/actions/setup-opencode/action.yml +128 -0
  10. package/templates/scripts/claude-agent-runner.js +9039 -64
  11. package/templates/scripts/linear-agent.js +9103 -68
  12. package/templates/scripts/planning-agent.js +9080 -66
  13. package/templates/workflows/claude-plan.yml +48 -36
  14. package/dist/agents/linear-agent.d.ts +0 -32
  15. package/dist/agents/linear-agent.d.ts.map +0 -1
  16. package/dist/agents/linear-agent.js +0 -263
  17. package/dist/agents/linear-agent.js.map +0 -1
  18. package/dist/agents/planning-agent.d.ts +0 -36
  19. package/dist/agents/planning-agent.d.ts.map +0 -1
  20. package/dist/agents/planning-agent.js +0 -248
  21. package/dist/agents/planning-agent.js.map +0 -1
  22. package/dist/cli/index.d.ts +0 -3
  23. package/dist/cli/index.d.ts.map +0 -1
  24. package/dist/cli/index.js +0 -102
  25. package/dist/cli/index.js.map +0 -1
  26. package/dist/cli/install.d.ts +0 -11
  27. package/dist/cli/install.d.ts.map +0 -1
  28. package/dist/cli/install.js +0 -257
  29. package/dist/cli/install.js.map +0 -1
  30. package/dist/cli/manifest.d.ts +0 -27
  31. package/dist/cli/manifest.d.ts.map +0 -1
  32. package/dist/cli/manifest.js +0 -65
  33. package/dist/cli/manifest.js.map +0 -1
  34. package/dist/index.d.ts +0 -17
  35. package/dist/index.d.ts.map +0 -1
  36. package/dist/index.js +0 -17
  37. package/dist/index.js.map +0 -1
  38. package/dist/lib/claude-agent-sdk.d.ts +0 -73
  39. package/dist/lib/claude-agent-sdk.d.ts.map +0 -1
  40. package/dist/lib/claude-agent-sdk.js +0 -114
  41. package/dist/lib/claude-agent-sdk.js.map +0 -1
  42. package/dist/lib/conversation-logger.d.ts +0 -66
  43. package/dist/lib/conversation-logger.d.ts.map +0 -1
  44. package/dist/lib/conversation-logger.js +0 -159
  45. package/dist/lib/conversation-logger.js.map +0 -1
  46. package/dist/lib/opencode.d.ts +0 -68
  47. package/dist/lib/opencode.d.ts.map +0 -1
  48. package/dist/lib/opencode.js +0 -151
  49. package/dist/lib/opencode.js.map +0 -1
  50. package/dist/lib/turso-schema.d.ts +0 -13
  51. package/dist/lib/turso-schema.d.ts.map +0 -1
  52. package/dist/lib/turso-schema.js +0 -69
  53. package/dist/lib/turso-schema.js.map +0 -1
  54. package/dist/lib/turso.d.ts +0 -56
  55. package/dist/lib/turso.d.ts.map +0 -1
  56. package/dist/lib/turso.js +0 -144
  57. package/dist/lib/turso.js.map +0 -1
  58. package/dist/lib/types.d.ts +0 -31
  59. package/dist/lib/types.d.ts.map +0 -1
  60. package/dist/lib/types.js +0 -20
  61. package/dist/lib/types.js.map +0 -1
  62. package/dist/lib/utils.d.ts +0 -34
  63. package/dist/lib/utils.d.ts.map +0 -1
  64. package/dist/lib/utils.js +0 -72
  65. package/dist/lib/utils.js.map +0 -1
@@ -1,4 +1,4 @@
1
- name: Claude Plan - Multi-Provider Implementation Planning
1
+ name: Multi-Provider Plan Generation (v2 - Parallel Jobs)
2
2
 
3
3
  on:
4
4
  issues:
@@ -49,7 +49,7 @@ jobs:
49
49
  get-issue:
50
50
  if: |
51
51
  github.event_name == 'workflow_dispatch' ||
52
- (github.event_name == 'issues' && contains(github.event.issue.labels.*.name, 'claude-plan'))
52
+ (github.event_name == 'issues' && contains(github.event.issue.labels.*.name, 'claude-plan-v2'))
53
53
  runs-on: ubuntu-latest
54
54
  outputs:
55
55
  number: ${{ steps.issue.outputs.number }}
@@ -61,32 +61,12 @@ jobs:
61
61
 
62
62
  - name: Get issue details
63
63
  id: issue
64
- env:
65
- GH_TOKEN: ${{ secrets.GH_PAT }}
66
- run: |
67
- # Determine issue number based on event type
68
- if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
69
- ISSUE_NUMBER="${{ inputs.issue_number }}"
70
- else
71
- ISSUE_NUMBER="${{ github.event.issue.number }}"
72
- fi
73
-
74
- # Validate issue number is provided
75
- if [ -z "$ISSUE_NUMBER" ]; then
76
- echo "Error: Issue number is required"
77
- exit 1
78
- fi
79
-
80
- # Fetch issue details from GitHub
81
- ISSUE_JSON=$(gh issue view "$ISSUE_NUMBER" --json title,body)
82
-
83
- # Output issue number and title
84
- echo "number=$ISSUE_NUMBER" >> $GITHUB_OUTPUT
85
- echo "title=$(echo "$ISSUE_JSON" | jq -r '.title')" >> $GITHUB_OUTPUT
86
-
87
- # Write body to file to handle multiline content
88
- echo "$ISSUE_JSON" | jq -r '.body // ""' > /tmp/issue_body.txt
89
- echo "body_file=/tmp/issue_body.txt" >> $GITHUB_OUTPUT
64
+ uses: ./.github/actions/get-issue-details
65
+ with:
66
+ issue_number: ${{ github.event_name == 'workflow_dispatch' && inputs.issue_number || github.event.issue.number }}
67
+ github_token: ${{ secrets.GH_PAT }}
68
+ event_name: ${{ github.event_name }}
69
+ event_issue_number: ${{ github.event.issue.number || '' }}
90
70
 
91
71
  - name: Read issue body
92
72
  id: body
@@ -123,6 +103,12 @@ jobs:
123
103
  - name: Install dependencies
124
104
  run: bun install
125
105
 
106
+ - name: Install ast-grep
107
+ run: |
108
+ bun install -g @ast-grep/cli
109
+ bun pm -g trust @ast-grep/cli
110
+ ast-grep --version
111
+
126
112
  - name: Generate plan
127
113
  id: generate
128
114
  env:
@@ -131,10 +117,12 @@ jobs:
131
117
  MODEL: ${{ github.event_name == 'workflow_dispatch' && inputs.anthropic_model || 'claude-opus-4-5' }}
132
118
  ISSUE_TITLE: ${{ needs.get-issue.outputs.title }}
133
119
  ISSUE_BODY: ${{ needs.get-issue.outputs.body }}
120
+ TURSO_DATABASE_URL: ${{ secrets.TURSO_DATABASE_URL }}
121
+ TURSO_AUTH_TOKEN: ${{ secrets.TURSO_AUTH_TOKEN }}
134
122
  run: |
135
- # Generate plan using the bundled script from installed location
123
+ # Generate plan - stderr (logs) flows to console, stdout (plan) is captured
136
124
  set +e
137
- PLAN=$(node .github/claude-parallel/scripts/planning-agent.js "$ISSUE_TITLE: $ISSUE_BODY")
125
+ PLAN=$(bun run src/agents/planning-agent.ts "$ISSUE_TITLE: $ISSUE_BODY")
138
126
  EXIT_CODE=$?
139
127
  set -e
140
128
 
@@ -176,6 +164,12 @@ jobs:
176
164
  - name: Install dependencies
177
165
  run: bun install
178
166
 
167
+ - name: Install ast-grep
168
+ run: |
169
+ bun install -g @ast-grep/cli
170
+ bun pm -g trust @ast-grep/cli
171
+ ast-grep --version
172
+
179
173
  - name: Generate plan
180
174
  id: generate
181
175
  env:
@@ -184,10 +178,12 @@ jobs:
184
178
  MODEL: ${{ github.event_name == 'workflow_dispatch' && inputs.openai_model || 'gpt-5.2-pro' }}
185
179
  ISSUE_TITLE: ${{ needs.get-issue.outputs.title }}
186
180
  ISSUE_BODY: ${{ needs.get-issue.outputs.body }}
181
+ TURSO_DATABASE_URL: ${{ secrets.TURSO_DATABASE_URL }}
182
+ TURSO_AUTH_TOKEN: ${{ secrets.TURSO_AUTH_TOKEN }}
187
183
  run: |
188
- # Generate plan using the bundled script from installed location
184
+ # Generate plan - stderr (logs) flows to console, stdout (plan) is captured
189
185
  set +e
190
- PLAN=$(node .github/claude-parallel/scripts/planning-agent.js "$ISSUE_TITLE: $ISSUE_BODY")
186
+ PLAN=$(bun run src/agents/planning-agent.ts "$ISSUE_TITLE: $ISSUE_BODY")
191
187
  EXIT_CODE=$?
192
188
  set -e
193
189
 
@@ -229,6 +225,12 @@ jobs:
229
225
  - name: Install dependencies
230
226
  run: bun install
231
227
 
228
+ - name: Install ast-grep
229
+ run: |
230
+ bun install -g @ast-grep/cli
231
+ bun pm -g trust @ast-grep/cli
232
+ ast-grep --version
233
+
232
234
  - name: Generate plan
233
235
  id: generate
234
236
  env:
@@ -237,10 +239,12 @@ jobs:
237
239
  MODEL: ${{ github.event_name == 'workflow_dispatch' && inputs.google_model || 'gemini-2.5-pro' }}
238
240
  ISSUE_TITLE: ${{ needs.get-issue.outputs.title }}
239
241
  ISSUE_BODY: ${{ needs.get-issue.outputs.body }}
242
+ TURSO_DATABASE_URL: ${{ secrets.TURSO_DATABASE_URL }}
243
+ TURSO_AUTH_TOKEN: ${{ secrets.TURSO_AUTH_TOKEN }}
240
244
  run: |
241
- # Generate plan using the bundled script from installed location
245
+ # Generate plan - stderr (logs) flows to console, stdout (plan) is captured
242
246
  set +e
243
- PLAN=$(node .github/claude-parallel/scripts/planning-agent.js "$ISSUE_TITLE: $ISSUE_BODY")
247
+ PLAN=$(bun run src/agents/planning-agent.ts "$ISSUE_TITLE: $ISSUE_BODY")
244
248
  EXIT_CODE=$?
245
249
  set -e
246
250
 
@@ -283,6 +287,12 @@ jobs:
283
287
  - name: Install dependencies
284
288
  run: bun install
285
289
 
290
+ - name: Install ast-grep
291
+ run: |
292
+ bun install -g @ast-grep/cli
293
+ bun pm -g trust @ast-grep/cli
294
+ ast-grep --version
295
+
286
296
  - name: Consolidate plans and create Linear issues
287
297
  id: consolidate
288
298
  env:
@@ -296,6 +306,8 @@ jobs:
296
306
  ANTHROPIC_PLAN: ${{ needs.generate-plan-anthropic.result == 'success' && needs.generate-plan-anthropic.outputs.plan || '' }}
297
307
  OPENAI_PLAN: ${{ needs.generate-plan-openai.result == 'success' && needs.generate-plan-openai.outputs.plan || '' }}
298
308
  GOOGLE_PLAN: ${{ needs.generate-plan-google.result == 'success' && needs.generate-plan-google.outputs.plan || '' }}
309
+ TURSO_DATABASE_URL: ${{ secrets.TURSO_DATABASE_URL }}
310
+ TURSO_AUTH_TOKEN: ${{ secrets.TURSO_AUTH_TOKEN }}
299
311
  run: |
300
- # Run linear agent using the bundled script from installed location
301
- node .github/claude-parallel/scripts/linear-agent.js
312
+ # Run linear agent for consolidation and Linear issue creation
313
+ bun run src/agents/linear-agent.ts
@@ -1,32 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * linear-agent.ts
4
- *
5
- * Consolidates three implementation plans from different AI providers and creates Linear issues.
6
- * This is the v2 workflow approach that receives pre-generated plans via environment variables.
7
- *
8
- * Usage:
9
- * linear-agent.ts
10
- *
11
- * Environment variables (all required):
12
- * - ANTHROPIC_PLAN - Plan from Anthropic provider
13
- * - OPENAI_PLAN - Plan from OpenAI provider
14
- * - GOOGLE_PLAN - Plan from Google provider
15
- * - GITHUB_ISSUE_URL - URL of the GitHub issue
16
- * - ISSUE_TITLE - Title of the GitHub issue
17
- * - LINEAR_TEAM_ID - Linear team ID
18
- * - LINEAR_PROJECT_ID - Linear project ID (optional)
19
- * - ANTHROPIC_API_KEY or CLAUDE_CODE_OAUTH_TOKEN - API key for consolidation agent
20
- * - LINEAR_API_KEY - Linear API key for creating issues
21
- *
22
- * Optional:
23
- * - MODEL (defaults to claude-opus-4-5)
24
- *
25
- * Examples:
26
- * ANTHROPIC_PLAN="..." OPENAI_PLAN="..." GOOGLE_PLAN="..." \
27
- * GITHUB_ISSUE_URL="..." ISSUE_TITLE="..." LINEAR_TEAM_ID="..." \
28
- * ANTHROPIC_API_KEY=xxx LINEAR_API_KEY=xxx \
29
- * linear-agent.ts
30
- */
31
- export {};
32
- //# sourceMappingURL=linear-agent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"linear-agent.d.ts","sourceRoot":"","sources":["../../src/agents/linear-agent.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG"}
@@ -1,263 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * linear-agent.ts
4
- *
5
- * Consolidates three implementation plans from different AI providers and creates Linear issues.
6
- * This is the v2 workflow approach that receives pre-generated plans via environment variables.
7
- *
8
- * Usage:
9
- * linear-agent.ts
10
- *
11
- * Environment variables (all required):
12
- * - ANTHROPIC_PLAN - Plan from Anthropic provider
13
- * - OPENAI_PLAN - Plan from OpenAI provider
14
- * - GOOGLE_PLAN - Plan from Google provider
15
- * - GITHUB_ISSUE_URL - URL of the GitHub issue
16
- * - ISSUE_TITLE - Title of the GitHub issue
17
- * - LINEAR_TEAM_ID - Linear team ID
18
- * - LINEAR_PROJECT_ID - Linear project ID (optional)
19
- * - ANTHROPIC_API_KEY or CLAUDE_CODE_OAUTH_TOKEN - API key for consolidation agent
20
- * - LINEAR_API_KEY - Linear API key for creating issues
21
- *
22
- * Optional:
23
- * - MODEL (defaults to claude-opus-4-5)
24
- *
25
- * Examples:
26
- * ANTHROPIC_PLAN="..." OPENAI_PLAN="..." GOOGLE_PLAN="..." \
27
- * GITHUB_ISSUE_URL="..." ISSUE_TITLE="..." LINEAR_TEAM_ID="..." \
28
- * ANTHROPIC_API_KEY=xxx LINEAR_API_KEY=xxx \
29
- * linear-agent.ts
30
- */
31
- import { access, readFile } from "node:fs/promises";
32
- import { join } from "node:path";
33
- import { createConversationLogger } from "../lib/conversation-logger.js";
34
- import { createOpencodeServer, setupEventMonitoring } from "../lib/opencode.js";
35
- import { extractTextFromParts, getApiKey, validateEnvVars } from "../lib/utils.js";
36
- // Note: __filename and __dirname are not needed here anymore
37
- // Prompts are resolved from process.cwd() in installed locations
38
- // ============================================================================
39
- // Configuration
40
- // ============================================================================
41
- const AGENT_NAME = "linear-agent";
42
- const DEFAULT_MODEL = "claude-opus-4-5";
43
- // Helper to find prompt file in multiple possible locations
44
- async function findPromptFile() {
45
- const possiblePaths = [
46
- // Installed location (via installer)
47
- join(process.cwd(), ".github", "claude-parallel", "prompts", "consolidate-and-create-linear.md"),
48
- // Source repository location
49
- join(process.cwd(), "prompts", "consolidate-and-create-linear.md"),
50
- ];
51
- for (const path of possiblePaths) {
52
- try {
53
- await access(path);
54
- return path;
55
- }
56
- catch {
57
- // File doesn't exist at this path, try next
58
- }
59
- }
60
- throw new Error(`Could not find consolidate-and-create-linear.md in any of these locations:\n${possiblePaths.map((p) => ` - ${p}`).join("\n")}`);
61
- }
62
- // ============================================================================
63
- // Main Execution
64
- // ============================================================================
65
- async function main() {
66
- // Validate required environment variables
67
- const requiredEnvVars = [
68
- "ANTHROPIC_PLAN",
69
- "OPENAI_PLAN",
70
- "GOOGLE_PLAN",
71
- "GITHUB_ISSUE_URL",
72
- "ISSUE_TITLE",
73
- "LINEAR_TEAM_ID",
74
- "LINEAR_API_KEY",
75
- ];
76
- try {
77
- validateEnvVars(requiredEnvVars);
78
- }
79
- catch (error) {
80
- console.error(error instanceof Error ? error.message : String(error));
81
- console.error("");
82
- console.error("Usage: Set all required environment variables and run:");
83
- console.error(" bun run linear-agent.ts");
84
- process.exit(1);
85
- }
86
- // Get API key for Anthropic (consolidation provider)
87
- const provider = "anthropic";
88
- const apiKey = getApiKey(provider);
89
- // Get configuration from environment
90
- const anthropicPlan = process.env.ANTHROPIC_PLAN;
91
- const openaiPlan = process.env.OPENAI_PLAN;
92
- const googlePlan = process.env.GOOGLE_PLAN;
93
- const githubIssueUrl = process.env.GITHUB_ISSUE_URL;
94
- const issueTitle = process.env.ISSUE_TITLE;
95
- const linearTeamId = process.env.LINEAR_TEAM_ID;
96
- const linearProjectId = process.env.LINEAR_PROJECT_ID || "";
97
- const linearApiKey = process.env.LINEAR_API_KEY;
98
- const model = process.env.MODEL || DEFAULT_MODEL;
99
- console.error(`\n${"=".repeat(60)}`);
100
- console.error(`Linear Agent - Plan Consolidation`);
101
- console.error(`${"=".repeat(60)}`);
102
- console.error(`Provider: ${provider}`);
103
- console.error(`Model: ${model}`);
104
- console.error(`Issue: ${issueTitle}`);
105
- console.error(`GitHub URL: ${githubIssueUrl}`);
106
- console.error(`Linear Team: ${linearTeamId}`);
107
- console.error(`Linear Project: ${linearProjectId || "(none)"}`);
108
- console.error("");
109
- // Initialize conversation logger (optional)
110
- const logger = await createConversationLogger();
111
- if (logger) {
112
- console.error(`✓ Conversation logging enabled`);
113
- }
114
- // Read external prompt template file
115
- let promptTemplate;
116
- let promptFile;
117
- try {
118
- promptFile = await findPromptFile();
119
- promptTemplate = await readFile(promptFile, "utf-8");
120
- console.error(`✓ Loaded prompt template from ${promptFile}`);
121
- }
122
- catch (error) {
123
- const errorMessage = error instanceof Error ? error.message : String(error);
124
- console.error(`✗ Failed to read prompt file: ${errorMessage}`);
125
- console.error("Please create consolidate-and-create-linear.md file in the prompts directory");
126
- process.exit(1);
127
- }
128
- // Replace placeholders in the prompt template
129
- const prompt = promptTemplate
130
- .replace(/\{\{ANTHROPIC_PLAN\}\}/g, anthropicPlan)
131
- .replace(/\{\{OPENAI_PLAN\}\}/g, openaiPlan)
132
- .replace(/\{\{GOOGLE_PLAN\}\}/g, googlePlan)
133
- .replace(/\{\{GITHUB_ISSUE_URL\}\}/g, githubIssueUrl)
134
- .replace(/\{\{ISSUE_TITLE\}\}/g, issueTitle)
135
- .replace(/\{\{LINEAR_TEAM_ID\}\}/g, linearTeamId)
136
- .replace(/\{\{LINEAR_PROJECT_ID\}\}/g, linearProjectId);
137
- console.error(`✓ Filled prompt template with plans and context`);
138
- // Create OpenCode server with linear agent configuration
139
- const { client, server } = await createOpencodeServer({
140
- provider,
141
- apiKey,
142
- model,
143
- agentName: AGENT_NAME,
144
- agentDescription: "Consolidate implementation plans and create Linear issues",
145
- agentPrompt: prompt,
146
- agentTools: {
147
- write: false, // No file creation
148
- edit: false, // No file modification
149
- bash: true, // Allow shell commands
150
- read: true, // Allow reading files
151
- list: true, // Allow listing directories
152
- glob: true, // Allow file pattern matching
153
- grep: true, // Allow searching content
154
- webfetch: true, // Allow web research
155
- ...(linearApiKey && { "mcp__linear__*": true }), // Enable Linear MCP tools if available
156
- },
157
- agentPermissions: {
158
- edit: "deny",
159
- bash: "allow",
160
- webfetch: "allow",
161
- ...(linearApiKey && { "mcp__linear__*": "allow" }), // Allow Linear MCP tools if available
162
- },
163
- maxSteps: 30,
164
- linearApiKey,
165
- });
166
- // Setup event monitoring
167
- setupEventMonitoring(client, logger);
168
- try {
169
- // Start logging session if logger is available
170
- if (logger) {
171
- await logger.startSession({
172
- id: crypto.randomUUID(),
173
- agentType: "linear",
174
- model,
175
- provider,
176
- });
177
- }
178
- // Create session
179
- console.error(`Creating session...`);
180
- const sessionResponse = await client.session.create({
181
- body: { title: `Plan consolidation: ${issueTitle}` },
182
- });
183
- if (!sessionResponse.data) {
184
- throw new Error("Failed to create session: no data in response");
185
- }
186
- const session = sessionResponse.data;
187
- console.error(`✓ Session created: ${session.id}`);
188
- // Send prompt to linear agent
189
- console.error(`Consolidating plans and creating Linear issues with ${AGENT_NAME}...`);
190
- console.error(`This may take a few moments while the AI consolidates the plans...`);
191
- const promptResponse = await client.session.prompt({
192
- path: { id: session.id },
193
- body: {
194
- model: {
195
- providerID: provider,
196
- modelID: model,
197
- },
198
- agent: AGENT_NAME, // Use the linear agent
199
- parts: [{ type: "text", text: prompt }],
200
- },
201
- });
202
- if (!promptResponse.data) {
203
- throw new Error("Failed to get response: no data in response");
204
- }
205
- // Check for errors
206
- const responseInfo = promptResponse.data.info;
207
- if (responseInfo?.error) {
208
- const err = responseInfo.error;
209
- const errorName = err.name;
210
- const errorData = "data" in err ? err.data : {};
211
- const errorMessage = "message" in errorData ? errorData.message : JSON.stringify(errorData);
212
- throw new Error(`Provider error: ${errorName}: ${errorMessage}`);
213
- }
214
- // Extract consolidated plan and Linear issue creation results
215
- const resultText = extractTextFromParts(promptResponse.data.parts);
216
- if (resultText.length === 0) {
217
- throw new Error("Empty response from linear agent");
218
- }
219
- console.error("");
220
- console.error(`${"=".repeat(60)}`);
221
- console.error(`SUCCESS!`);
222
- console.error(`${"=".repeat(60)}`);
223
- console.error(`Consolidated plan and Linear issues: ${resultText.length} characters`);
224
- console.error(`Session ID: ${session.id}`);
225
- console.error("");
226
- // Output result to stdout (this will be captured by workflows)
227
- console.log(resultText);
228
- // End logging session successfully and sync to cloud
229
- if (logger) {
230
- await logger.endSession("completed");
231
- await logger.syncToCloud();
232
- }
233
- process.exit(0);
234
- }
235
- catch (error) {
236
- const errorMessage = error instanceof Error ? error.message : String(error);
237
- console.error("");
238
- console.error(`${"=".repeat(60)}`);
239
- console.error("ERROR!");
240
- console.error(`${"=".repeat(60)}`);
241
- console.error(`Error: ${errorMessage}`);
242
- if (error instanceof Error && error.stack) {
243
- console.error("Stack trace:", error.stack);
244
- }
245
- console.error("");
246
- // End logging session with error and sync to cloud
247
- if (logger) {
248
- await logger.endSession("error", errorMessage);
249
- await logger.syncToCloud();
250
- }
251
- process.exit(1);
252
- }
253
- finally {
254
- console.error("Shutting down OpenCode server...");
255
- server.close();
256
- }
257
- }
258
- // Run the main function
259
- main().catch((error) => {
260
- console.error("FATAL ERROR:", error);
261
- process.exit(1);
262
- });
263
- //# sourceMappingURL=linear-agent.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"linear-agent.js","sourceRoot":"","sources":["../../src/agents/linear-agent.ts"],"names":[],"mappings":"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"}
@@ -1,36 +0,0 @@
1
- #!/usr/bin/env node
2
- /**
3
- * planning-agent.ts
4
- *
5
- * Generates an implementation plan using a custom planning agent.
6
- * The planning agent is configured for read-only operations with web research capabilities.
7
- *
8
- * Usage:
9
- * planning-agent.ts <feature-description>
10
- *
11
- * Environment variables:
12
- * - PROVIDER (optional, defaults to 'anthropic')
13
- * Supported values: anthropic, openai, google
14
- *
15
- * API Keys (required based on provider):
16
- * - ANTHROPIC_API_KEY or CLAUDE_CODE_OAUTH_TOKEN (for provider=anthropic)
17
- * - OPENAI_API_KEY (for provider=openai)
18
- * - GOOGLE_GENERATIVE_AI_API_KEY (for provider=google)
19
- *
20
- * - MODEL (optional, defaults to provider-specific model)
21
- * anthropic: claude-haiku-4-5-20251001
22
- * openai: gpt-4o
23
- * google: gemini-2.0-flash-exp
24
- *
25
- * Examples:
26
- * # Use default (Anthropic Claude)
27
- * ANTHROPIC_API_KEY=xxx planning-agent.ts "Add user authentication"
28
- *
29
- * # Use OpenAI GPT-4
30
- * PROVIDER=openai OPENAI_API_KEY=xxx planning-agent.ts "Add user authentication"
31
- *
32
- * # Use Google Gemini with custom model
33
- * PROVIDER=google GOOGLE_GENERATIVE_AI_API_KEY=xxx MODEL=gemini-1.5-pro planning-agent.ts "Add user authentication"
34
- */
35
- export {};
36
- //# sourceMappingURL=planning-agent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"planning-agent.d.ts","sourceRoot":"","sources":["../../src/agents/planning-agent.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG"}