@runfusion/fusion 0.4.0 → 0.4.1

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 (30) hide show
  1. package/LICENSE +21 -0
  2. package/dist/bin.js +825 -749
  3. package/dist/client/assets/{AgentDetailView-DJwWfkpv.js → AgentDetailView-sy6Hg1Xr.js} +1 -1
  4. package/dist/client/assets/{AgentsView-DegK8aw-.js → AgentsView-DpEpW88a.js} +3 -3
  5. package/dist/client/assets/{ChatView-CYpEShLS.js → ChatView-BUt3C4cf.js} +1 -1
  6. package/dist/client/assets/{DevServerView-DfCTA9fx.js → DevServerView-BOyWtQJM.js} +1 -1
  7. package/dist/client/assets/{DirectoryPicker-B0qNpfLW.js → DirectoryPicker-BJyEEso5.js} +1 -1
  8. package/dist/client/assets/{DocumentsView-CsQxuyz3.js → DocumentsView-Dx0M1YHw.js} +1 -1
  9. package/dist/client/assets/{InsightsView-Bzs7A2jv.js → InsightsView-BtXdAo7D.js} +1 -1
  10. package/dist/client/assets/{MemoryView-Cl5ASqjW.js → MemoryView-kKPuqmwf.js} +1 -1
  11. package/dist/client/assets/{NodesView-BpiqRlvc.js → NodesView-B_ZwUORz.js} +1 -1
  12. package/dist/client/assets/{PiExtensionsManager-Cr6EoC7S.js → PiExtensionsManager-Db0EGr0Q.js} +1 -1
  13. package/dist/client/assets/{PluginManager-DXtQdfns.js → PluginManager-mOwWndfg.js} +1 -1
  14. package/dist/client/assets/{RoadmapsView-CYPLTTB0.js → RoadmapsView-DbUzBLeF.js} +1 -1
  15. package/dist/client/assets/SettingsModal-Bs_lNs5B.js +31 -0
  16. package/dist/client/assets/{SettingsModal-CNdVTVqD.js → SettingsModal-TRJu_mTn.js} +1 -1
  17. package/dist/client/assets/{SetupWizardModal-BLiljNn7.js → SetupWizardModal-D1bmCQrf.js} +1 -1
  18. package/dist/client/assets/{SkillsView-Dlpw5LKI.js → SkillsView-Dzzpd5Md.js} +1 -1
  19. package/dist/client/assets/{folder-open-B_38R5AA.js → folder-open-BcuByk6U.js} +1 -1
  20. package/dist/client/assets/index-BipedNj4.css +1 -0
  21. package/dist/client/assets/{index-DQKtk17v.js → index-k2c4LrUr.js} +5 -5
  22. package/dist/client/assets/{upload-DNQF7XCK.js → upload-BzNbXYEj.js} +1 -1
  23. package/dist/client/assets/{users-CG2_rCdk.js → users-BvIqhSXp.js} +1 -1
  24. package/dist/client/index.html +2 -2
  25. package/dist/client/version.json +1 -1
  26. package/dist/extension.js +68 -12
  27. package/dist/pi-claude-cli/package.json +1 -1
  28. package/package.json +17 -17
  29. package/dist/client/assets/SettingsModal-CyCC7MzL.js +0 -31
  30. package/dist/client/assets/index-DjOxzdj3.css +0 -1
@@ -1,4 +1,4 @@
1
- import{c as a}from"./index-DQKtk17v.js";/**
1
+ import{c as a}from"./index-k2c4LrUr.js";/**
2
2
  * @license lucide-react v1.7.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -1,4 +1,4 @@
1
- import{c as e}from"./index-DQKtk17v.js";/**
1
+ import{c as e}from"./index-k2c4LrUr.js";/**
2
2
  * @license lucide-react v1.7.0 - ISC
3
3
  *
4
4
  * This source code is licensed under the ISC license.
@@ -78,11 +78,11 @@
78
78
  }
79
79
  })();
80
80
  </script>
81
- <script type="module" crossorigin src="/assets/index-DQKtk17v.js"></script>
81
+ <script type="module" crossorigin src="/assets/index-k2c4LrUr.js"></script>
82
82
  <link rel="modulepreload" crossorigin href="/assets/vendor-react-K0fH_qHe.js">
83
83
  <link rel="modulepreload" crossorigin href="/assets/vendor-xterm-DzcZoU0P.js">
84
84
  <link rel="stylesheet" crossorigin href="/assets/vendor-xterm-LZoznX6r.css">
85
- <link rel="stylesheet" crossorigin href="/assets/index-DjOxzdj3.css">
85
+ <link rel="stylesheet" crossorigin href="/assets/index-BipedNj4.css">
86
86
  </head>
87
87
  <body>
88
88
  <div id="root"></div>
@@ -1 +1 @@
1
- {"version":"mog4dejv-658ae4e3"}
1
+ {"version":"mog5pn44-24e04f4a"}
package/dist/extension.js CHANGED
@@ -204,6 +204,7 @@ var init_settings_schema = __esm({
204
204
  },
205
205
  cloudflare: {
206
206
  enabled: false,
207
+ quickTunnel: false,
207
208
  tunnelName: "",
208
209
  tunnelToken: null,
209
210
  ingressUrl: ""
@@ -387,18 +388,18 @@ Call \`task_done()\` to signal completion.
387
388
  },
388
389
  "triage-welcome": {
389
390
  key: "triage-welcome",
390
- name: "Triage Welcome",
391
+ name: "Planning Welcome",
391
392
  roles: ["triage"],
392
- description: "Introductory section for the triage/specification agent",
393
+ description: "Introductory section for the planning agent",
393
394
  defaultContent: `You are a task specification agent for "fn", an AI-orchestrated task board.
394
395
 
395
396
  Your job: take a rough task description and produce a fully specified PROMPT.md that another AI agent can execute autonomously in a fresh context with zero memory of this conversation.`
396
397
  },
397
398
  "triage-context": {
398
399
  key: "triage-context",
399
- name: "Triage Context",
400
+ name: "Planning Context",
400
401
  roles: ["triage"],
401
- description: "Context-gathering instructions for triage",
402
+ description: "Context-gathering instructions for planning",
402
403
  defaultContent: `## What you receive
403
404
  - A raw task title and optional description (the user's rough idea)
404
405
  - Access to the project's files so you can understand context`
@@ -1087,7 +1088,7 @@ Output Requirements:
1087
1088
  }
1088
1089
  };
1089
1090
  COLUMN_LABELS = {
1090
- triage: "Triage",
1091
+ triage: "Planning",
1091
1092
  todo: "Todo",
1092
1093
  "in-progress": "In Progress",
1093
1094
  "in-review": "In Review",
@@ -1095,7 +1096,7 @@ Output Requirements:
1095
1096
  archived: "Archived"
1096
1097
  };
1097
1098
  COLUMN_DESCRIPTIONS = {
1098
- triage: "Raw ideas \u2014 AI will specify these",
1099
+ triage: "Raw ideas \u2014 AI will plan these",
1099
1100
  todo: "Specified and ready to start",
1100
1101
  "in-progress": "AI is working on this in a worktree",
1101
1102
  "in-review": "Complete \u2014 ready to merge",
@@ -2221,7 +2222,7 @@ var init_db = __esm({
2221
2222
  "../core/src/db.ts"() {
2222
2223
  "use strict";
2223
2224
  init_types();
2224
- SCHEMA_VERSION = 46;
2225
+ SCHEMA_VERSION = 47;
2225
2226
  SCHEMA_SQL = `
2226
2227
  -- Tasks table with JSON columns for nested data
2227
2228
  CREATE TABLE IF NOT EXISTS tasks (
@@ -3659,6 +3660,14 @@ CREATE INDEX IF NOT EXISTS idxTodoItemsSortOrder ON todo_items(listId, sortOrder
3659
3660
  this.db.exec("CREATE INDEX IF NOT EXISTS idxTodoItemsSortOrder ON todo_items(listId, sortOrder)");
3660
3661
  });
3661
3662
  }
3663
+ if (version < 47) {
3664
+ this.applyMigration(47, () => {
3665
+ if (this.hasTable("tasks") && this.hasColumn("tasks", "status")) {
3666
+ this.db.exec("UPDATE tasks SET status = 'planning' WHERE status = 'specifying'");
3667
+ this.db.exec("UPDATE tasks SET status = 'needs-replan' WHERE status = 'needs-respecify'");
3668
+ }
3669
+ });
3670
+ }
3662
3671
  }
3663
3672
  /**
3664
3673
  * Run a single migration step inside a transaction and bump the version.
@@ -32829,7 +32838,7 @@ ${task.description}
32829
32838
  let invalidatedStatus = false;
32830
32839
  try {
32831
32840
  await this.updateTask(id, {
32832
- status: "needs-respecify"
32841
+ status: "needs-replan"
32833
32842
  });
32834
32843
  invalidatedStatus = true;
32835
32844
  } catch (err) {
@@ -32837,7 +32846,7 @@ ${task.description}
32837
32846
  ...commentContextBase,
32838
32847
  phase: "addComment:awaiting-approval-invalidation",
32839
32848
  stage: "status-update",
32840
- nextStatus: "needs-respecify",
32849
+ nextStatus: "needs-replan",
32841
32850
  error: err instanceof Error ? err.message : String(err)
32842
32851
  });
32843
32852
  }
@@ -32854,7 +32863,7 @@ ${task.description}
32854
32863
  ...commentContextBase,
32855
32864
  phase: "addComment:awaiting-approval-invalidation",
32856
32865
  stage: "post-invalidation-log-entry",
32857
- nextStatus: "needs-respecify",
32866
+ nextStatus: "needs-replan",
32858
32867
  error: err instanceof Error ? err.message : String(err)
32859
32868
  });
32860
32869
  }
@@ -70921,6 +70930,9 @@ var init_provider_adapters = __esm({
70921
70930
  provider: "cloudflare",
70922
70931
  validateConfig(config) {
70923
70932
  validateBaseConfig(config, "cloudflare");
70933
+ if (config.provider === "cloudflare" && config.quickTunnel === true) {
70934
+ return;
70935
+ }
70924
70936
  if ("credentialsPath" in config && config.credentialsPath !== void 0) {
70925
70937
  assertNonEmpty(config.credentialsPath, "credentialsPath");
70926
70938
  if (isAbsoluteOrPathLike(config.credentialsPath)) {
@@ -71811,6 +71823,21 @@ var init_project_engine = __esm({
71811
71823
  if (!cloudflare.enabled) {
71812
71824
  return { provider, reason: "provider_not_enabled", message: "Cloudflare provider is disabled" };
71813
71825
  }
71826
+ if (cloudflare.quickTunnel === true) {
71827
+ const executable2 = await this.checkExecutableAvailable("cloudflared");
71828
+ if (!executable2.available) {
71829
+ return { provider, reason: "runtime_prerequisite_missing", message: executable2.message };
71830
+ }
71831
+ return {
71832
+ provider,
71833
+ config: {
71834
+ provider: "cloudflare",
71835
+ quickTunnel: true,
71836
+ executablePath: "cloudflared",
71837
+ args: ["tunnel", "--url", "http://localhost:4040"]
71838
+ }
71839
+ };
71840
+ }
71814
71841
  if (!cloudflare.tunnelName?.trim() || !cloudflare.ingressUrl?.trim()) {
71815
71842
  return { provider, reason: "provider_not_configured", message: "Cloudflare tunnel name and ingress URL must be configured" };
71816
71843
  }
@@ -76130,10 +76157,18 @@ var init_github_poll = __esm({
76130
76157
  }
76131
76158
  });
76132
76159
 
76133
- // ../dashboard/src/routes/register-git-github.ts
76160
+ // ../dashboard/src/routes/resolve-diff-base.ts
76134
76161
  import { execFile as execFile4 } from "node:child_process";
76135
76162
  import { promisify as promisify11 } from "node:util";
76136
76163
  var execFileAsync2;
76164
+ var init_resolve_diff_base = __esm({
76165
+ "../dashboard/src/routes/resolve-diff-base.ts"() {
76166
+ "use strict";
76167
+ execFileAsync2 = promisify11(execFile4);
76168
+ }
76169
+ });
76170
+
76171
+ // ../dashboard/src/routes/register-git-github.ts
76137
76172
  var init_register_git_github = __esm({
76138
76173
  "../dashboard/src/routes/register-git-github.ts"() {
76139
76174
  "use strict";
@@ -76142,7 +76177,7 @@ var init_register_git_github = __esm({
76142
76177
  init_github();
76143
76178
  init_github_poll();
76144
76179
  init_github_webhooks();
76145
- execFileAsync2 = promisify11(execFile4);
76180
+ init_resolve_diff_base();
76146
76181
  }
76147
76182
  });
76148
76183
 
@@ -76511,6 +76546,23 @@ var init_register_integrated_routers = __esm({
76511
76546
  }
76512
76547
  });
76513
76548
 
76549
+ // ../dashboard/src/routes/register-terminal-routes.ts
76550
+ var init_register_terminal_routes = __esm({
76551
+ "../dashboard/src/routes/register-terminal-routes.ts"() {
76552
+ "use strict";
76553
+ init_api_error();
76554
+ }
76555
+ });
76556
+
76557
+ // ../dashboard/src/routes/register-session-diff-routes.ts
76558
+ var init_register_session_diff_routes = __esm({
76559
+ "../dashboard/src/routes/register-session-diff-routes.ts"() {
76560
+ "use strict";
76561
+ init_api_error();
76562
+ init_resolve_diff_base();
76563
+ }
76564
+ });
76565
+
76514
76566
  // ../dashboard/src/routes.ts
76515
76567
  import multer from "multer";
76516
76568
  async function initPromptOverrides() {
@@ -76567,7 +76619,11 @@ var init_routes = __esm({
76567
76619
  init_register_usage_routes();
76568
76620
  init_register_auth_routes();
76569
76621
  init_register_integrated_routers();
76622
+ init_register_terminal_routes();
76623
+ init_register_session_diff_routes();
76624
+ init_resolve_diff_base();
76570
76625
  init_register_git_github();
76626
+ init_resolve_diff_base();
76571
76627
  upload = multer({
76572
76628
  storage: multer.memoryStorage(),
76573
76629
  limits: { fileSize: 5 * 1024 * 1024 }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fusion/pi-claude-cli",
3
- "version": "1.0.0",
3
+ "version": "0.4.1",
4
4
  "description": "Fusion vendored fork: pi coding-agent extension that routes LLM calls through the Claude Code CLI. Forked from rchern/pi-claude-cli (MIT). See UPSTREAM.md.",
5
5
  "license": "MIT",
6
6
  "private": true,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@runfusion/fusion",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "license": "MIT",
5
5
  "description": "Fusion CLI: HTTP API server, daemon, dashboard launcher, and task tooling for the Fusion AI coding agent.",
6
6
  "homepage": "https://github.com/Runfusion/Fusion#readme",
@@ -37,16 +37,6 @@
37
37
  "skill/**",
38
38
  "README.md"
39
39
  ],
40
- "scripts": {
41
- "dev": "tsx src/bin.ts",
42
- "prebuild": "node ../../scripts/sync-fusion-skill-tools.mjs",
43
- "build": "tsup",
44
- "build:exe": "bun run build.ts",
45
- "build:exe:all": "bun run build.ts --all",
46
- "typecheck": "tsc --noEmit",
47
- "test": "vitest run --silent=passed-only --reporter=dot",
48
- "test:build-exe": "FUSION_TEST_BUILD_EXE=1 vitest run --config vitest.build-exe.config.ts --silent=passed-only --reporter=dot"
49
- },
50
40
  "dependencies": {
51
41
  "@mariozechner/pi-ai": "^0.70.0",
52
42
  "@mariozechner/pi-coding-agent": "^0.70.0",
@@ -75,10 +65,6 @@
75
65
  }
76
66
  },
77
67
  "devDependencies": {
78
- "@fusion/core": "workspace:*",
79
- "@fusion/dashboard": "workspace:*",
80
- "@fusion/engine": "workspace:*",
81
- "@fusion/pi-claude-cli": "workspace:*",
82
68
  "@types/node": "^22.0.0",
83
69
  "@types/react": "^19.0.0",
84
70
  "@vitest/coverage-v8": "^3.1.0",
@@ -88,10 +74,24 @@
88
74
  "typebox": "^1.0.0",
89
75
  "typescript": "^5.7.0",
90
76
  "vitest": "^3.1.0",
91
- "yaml": "^2.8.3"
77
+ "yaml": "^2.8.3",
78
+ "@fusion/core": "0.4.1",
79
+ "@fusion/dashboard": "0.4.1",
80
+ "@fusion/pi-claude-cli": "0.4.1",
81
+ "@fusion/engine": "0.4.1"
92
82
  },
93
83
  "repository": {
94
84
  "type": "git",
95
85
  "url": "https://github.com/Runfusion/Fusion"
86
+ },
87
+ "scripts": {
88
+ "dev": "tsx src/bin.ts",
89
+ "prebuild": "node ../../scripts/sync-fusion-skill-tools.mjs",
90
+ "build": "tsup",
91
+ "build:exe": "bun run build.ts",
92
+ "build:exe:all": "bun run build.ts --all",
93
+ "typecheck": "tsc --noEmit",
94
+ "test": "vitest run --silent=passed-only --reporter=dot",
95
+ "test:build-exe": "FUSION_TEST_BUILD_EXE=1 vitest run --config vitest.build-exe.config.ts --silent=passed-only --reporter=dot"
96
96
  }
97
- }
97
+ }