@knowsuchagency/fulcrum 1.8.2 → 1.9.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.
package/dist/index.html CHANGED
@@ -5,7 +5,7 @@
5
5
  <link rel="icon" type="image/png" href="/logo.png" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>Fulcrum</title>
8
- <script type="module" crossorigin src="/assets/index-CAuv6E6D.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-DAgdpYcQ.js"></script>
9
9
  <link rel="stylesheet" crossorigin href="/assets/index-CZgztbA5.css">
10
10
  </head>
11
11
  <body>
@@ -0,0 +1,4 @@
1
+ ALTER TABLE `projects` ADD `default_agent` text;--> statement-breakpoint
2
+ ALTER TABLE `projects` ADD `claude_options` text;--> statement-breakpoint
3
+ ALTER TABLE `projects` ADD `opencode_options` text;--> statement-breakpoint
4
+ ALTER TABLE `projects` ADD `opencode_model` text;
@@ -260,6 +260,13 @@
260
260
  "when": 1769252000000,
261
261
  "tag": "0036_unique_repository_per_project",
262
262
  "breakpoints": true
263
+ },
264
+ {
265
+ "idx": 37,
266
+ "version": "6",
267
+ "when": 1769338400000,
268
+ "tag": "0037_project_agent_config",
269
+ "breakpoints": true
263
270
  }
264
271
  ]
265
272
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@knowsuchagency/fulcrum",
3
- "version": "1.8.2",
3
+ "version": "1.9.0",
4
4
  "description": "Harness Attention. Orchestrate Agents. Ship.",
5
5
  "license": "PolyForm-Perimeter-1.0.0",
6
6
  "repository": {
package/server/index.js CHANGED
@@ -4547,6 +4547,10 @@ var init_schema = __esm(() => {
4547
4547
  appId: text("app_id").unique(),
4548
4548
  terminalTabId: text("terminal_tab_id").unique(),
4549
4549
  status: text("status").notNull().default("active"),
4550
+ defaultAgent: text("default_agent"),
4551
+ claudeOptions: text("claude_options"),
4552
+ opencodeOptions: text("opencode_options"),
4553
+ opencodeModel: text("opencode_model"),
4550
4554
  lastAccessedAt: text("last_accessed_at"),
4551
4555
  createdAt: text("created_at").notNull(),
4552
4556
  updatedAt: text("updated_at").notNull()
@@ -5605,6 +5609,16 @@ function runMigrations(sqlite, drizzleDb) {
5605
5609
  if (hasSelectedRepositoryIdsColumn && !hasSelectedProjectIdsColumn2) {
5606
5610
  shouldMark = true;
5607
5611
  }
5612
+ } else if (entry.tag.startsWith("0036")) {
5613
+ const hasProjectRepositoriesTable = sqlite.query("SELECT name FROM sqlite_master WHERE type='table' AND name='project_repositories'").get();
5614
+ if (hasProjectRepositoriesTable) {
5615
+ shouldMark = true;
5616
+ }
5617
+ } else if (entry.tag.startsWith("0037")) {
5618
+ const hasProjectDefaultAgentColumn = sqlite.query("SELECT name FROM pragma_table_info('projects') WHERE name='default_agent'").get();
5619
+ if (hasProjectDefaultAgentColumn) {
5620
+ shouldMark = true;
5621
+ }
5608
5622
  }
5609
5623
  if (shouldMark) {
5610
5624
  migrationsToMark.push(entry);
@@ -60225,6 +60239,10 @@ function buildProjectWithDetails(project, repo, appRow, services, tab) {
60225
60239
  appId: project.appId,
60226
60240
  terminalTabId: project.terminalTabId,
60227
60241
  status: project.status,
60242
+ defaultAgent: project.defaultAgent,
60243
+ claudeOptions: project.claudeOptions ? JSON.parse(project.claudeOptions) : null,
60244
+ opencodeOptions: project.opencodeOptions ? JSON.parse(project.opencodeOptions) : null,
60245
+ opencodeModel: project.opencodeModel ?? null,
60228
60246
  lastAccessedAt: project.lastAccessedAt,
60229
60247
  createdAt: project.createdAt,
60230
60248
  updatedAt: project.updatedAt,
@@ -60514,6 +60532,16 @@ app19.patch("/:id", async (c) => {
60514
60532
  updateData.notes = body.notes;
60515
60533
  if (body.status !== undefined)
60516
60534
  updateData.status = body.status;
60535
+ if (body.defaultAgent !== undefined)
60536
+ updateData.defaultAgent = body.defaultAgent;
60537
+ if (body.claudeOptions !== undefined) {
60538
+ updateData.claudeOptions = body.claudeOptions ? JSON.stringify(body.claudeOptions) : null;
60539
+ }
60540
+ if (body.opencodeOptions !== undefined) {
60541
+ updateData.opencodeOptions = body.opencodeOptions ? JSON.stringify(body.opencodeOptions) : null;
60542
+ }
60543
+ if (body.opencodeModel !== undefined)
60544
+ updateData.opencodeModel = body.opencodeModel;
60517
60545
  db2.update(projects).set(updateData).where(eq(projects.id, id)).run();
60518
60546
  const project = db2.select().from(projects).where(eq(projects.id, id)).get();
60519
60547
  const repo = project.repositoryId ? db2.select().from(repositories).where(eq(repositories.id, project.repositoryId)).get() : null;