@aion0/forge 0.6.1 → 0.8.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 (145) hide show
  1. package/.forge/mcp.json +8 -0
  2. package/.forge/worktrees/pipeline-0a33c50d/lib/help-docs/01-settings.md +5 -5
  3. package/.forge/worktrees/pipeline-0a33c50d/lib/help-docs/07-projects.md +1 -1
  4. package/.forge/worktrees/pipeline-2ba01c10/lib/help-docs/01-settings.md +5 -5
  5. package/.forge/worktrees/pipeline-2ba01c10/lib/help-docs/07-projects.md +1 -1
  6. package/.forge/worktrees/pipeline-3156a8b3/lib/help-docs/01-settings.md +5 -5
  7. package/.forge/worktrees/pipeline-3156a8b3/lib/help-docs/07-projects.md +1 -1
  8. package/.forge/worktrees/pipeline-316c6574/lib/help-docs/01-settings.md +5 -5
  9. package/.forge/worktrees/pipeline-316c6574/lib/help-docs/07-projects.md +1 -1
  10. package/.forge/worktrees/pipeline-44a94121/lib/help-docs/01-settings.md +5 -5
  11. package/.forge/worktrees/pipeline-44a94121/lib/help-docs/07-projects.md +1 -1
  12. package/.forge/worktrees/pipeline-4dd8dc2d/lib/help-docs/01-settings.md +5 -5
  13. package/.forge/worktrees/pipeline-4dd8dc2d/lib/help-docs/07-projects.md +1 -1
  14. package/.forge/worktrees/pipeline-d1757a50/lib/help-docs/01-settings.md +5 -5
  15. package/.forge/worktrees/pipeline-d1757a50/lib/help-docs/07-projects.md +1 -1
  16. package/.forge/worktrees/pipeline-d59c2fe2/lib/help-docs/01-settings.md +5 -5
  17. package/.forge/worktrees/pipeline-d59c2fe2/lib/help-docs/07-projects.md +1 -1
  18. package/.forge/worktrees/pipeline-d6a6ef23/lib/help-docs/01-settings.md +5 -5
  19. package/.forge/worktrees/pipeline-d6a6ef23/lib/help-docs/07-projects.md +1 -1
  20. package/.forge/worktrees/pipeline-e7f78b7a/lib/help-docs/01-settings.md +5 -5
  21. package/.forge/worktrees/pipeline-e7f78b7a/lib/help-docs/07-projects.md +1 -1
  22. package/.forge/worktrees/pipeline-e97c13c7/lib/help-docs/01-settings.md +5 -5
  23. package/.forge/worktrees/pipeline-e97c13c7/lib/help-docs/07-projects.md +1 -1
  24. package/.forge/worktrees/pipeline-ecd7cb0f/lib/help-docs/01-settings.md +5 -5
  25. package/.forge/worktrees/pipeline-ecd7cb0f/lib/help-docs/07-projects.md +1 -1
  26. package/CLAUDE.md +2 -2
  27. package/RELEASE_NOTES.md +101 -5
  28. package/app/api/auth/check/route.ts +18 -0
  29. package/app/api/browser-bridge/route.ts +70 -0
  30. package/app/api/chat/sessions/[id]/events/route.ts +17 -0
  31. package/app/api/chat/sessions/[id]/fork/route.ts +15 -0
  32. package/app/api/chat/sessions/[id]/messages/route.ts +21 -0
  33. package/app/api/chat/sessions/[id]/route.ts +23 -0
  34. package/app/api/chat/sessions/route.ts +12 -0
  35. package/app/api/chat/temper-ping/route.ts +18 -0
  36. package/app/api/chat-proxy/[...path]/route.ts +83 -0
  37. package/app/api/connector-tool/route.ts +38 -0
  38. package/app/api/connectors/[id]/settings/route.ts +112 -0
  39. package/app/api/connectors/route.ts +108 -0
  40. package/app/api/health/tools/route.ts +14 -0
  41. package/app/api/issue-scanner-gitlab/route.ts +95 -0
  42. package/app/api/jobs/[id]/reset_dedup/route.ts +15 -0
  43. package/app/api/jobs/[id]/route.ts +31 -0
  44. package/app/api/jobs/[id]/run/route.ts +44 -0
  45. package/app/api/jobs/[id]/runs/[runId]/route.ts +15 -0
  46. package/app/api/jobs/[id]/runs/route.ts +15 -0
  47. package/app/api/jobs/preview/route.ts +193 -0
  48. package/app/api/jobs/route.ts +36 -0
  49. package/app/api/notify/test/route.ts +39 -7
  50. package/app/api/pipelines/[id]/route.ts +10 -1
  51. package/app/api/pipelines/route.ts +16 -2
  52. package/app/api/plugins/route.ts +40 -8
  53. package/app/api/project-sessions/route.ts +50 -10
  54. package/app/api/settings/route.ts +13 -0
  55. package/app/chat/page.tsx +531 -0
  56. package/bin/forge-server.mjs +3 -1
  57. package/cli/chat.ts +283 -0
  58. package/cli/jobs.ts +176 -0
  59. package/cli/mw.ts +28 -1
  60. package/cli/worktree.ts +245 -0
  61. package/components/ConnectorsPanel.tsx +275 -0
  62. package/components/Dashboard.tsx +90 -37
  63. package/components/JobsView.tsx +361 -0
  64. package/components/LogViewer.tsx +12 -2
  65. package/components/PipelineView.tsx +275 -56
  66. package/components/PluginsPanel.tsx +3 -1
  67. package/components/SettingsModal.tsx +229 -40
  68. package/components/SkillsPanel.tsx +12 -4
  69. package/components/TerminalLauncher.tsx +3 -1
  70. package/components/WebTerminal.tsx +32 -9
  71. package/components/WorkspaceView.tsx +18 -10
  72. package/docs/Connector-DeclarativeExtract-Handoff.md +471 -0
  73. package/docs/Connector-DeclarativeExtract-Spec.md +364 -0
  74. package/docs/Implementation-Plan-Browser-Agent.md +487 -0
  75. package/docs/Jobs-Design.md +240 -0
  76. package/docs/LOCAL-DEPLOY.md +3 -3
  77. package/docs/RFC-Browser-Connectors.md +509 -0
  78. package/lib/agents/index.ts +44 -6
  79. package/lib/agents/types.ts +1 -1
  80. package/lib/browser-bridge-standalone.ts +317 -0
  81. package/lib/builtin-plugins/github-api.yaml +93 -0
  82. package/lib/builtin-plugins/gitlab.yaml +860 -0
  83. package/lib/builtin-plugins/mantis.probe.js +176 -0
  84. package/lib/builtin-plugins/mantis.yaml +964 -0
  85. package/lib/builtin-plugins/pmdb.yaml +178 -0
  86. package/lib/builtin-plugins/teams.yaml +913 -0
  87. package/lib/chat/__test__/smoke.ts +30 -0
  88. package/lib/chat/agent-loop.ts +523 -0
  89. package/lib/chat/bridge-client.ts +59 -0
  90. package/lib/chat/llm/anthropic.ts +99 -0
  91. package/lib/chat/llm/index.ts +20 -0
  92. package/lib/chat/llm/openai.ts +215 -0
  93. package/lib/chat/llm/types.ts +42 -0
  94. package/lib/chat/local-memory.ts +300 -0
  95. package/lib/chat/memory-store.ts +87 -0
  96. package/lib/chat/memory-tools.ts +157 -0
  97. package/lib/chat/protocols/http.ts +118 -0
  98. package/lib/chat/protocols/shell.ts +101 -0
  99. package/lib/chat/proxy.ts +51 -0
  100. package/lib/chat/session-store.ts +272 -0
  101. package/lib/chat/telegram-bridge.ts +276 -0
  102. package/lib/chat/temper.ts +281 -0
  103. package/lib/chat/tool-dispatcher.ts +190 -0
  104. package/lib/chat/types.ts +50 -0
  105. package/lib/chat-standalone.ts +286 -0
  106. package/lib/crypto.ts +1 -1
  107. package/lib/health.ts +131 -0
  108. package/lib/help-docs/00-overview.md +2 -1
  109. package/lib/help-docs/01-settings.md +46 -25
  110. package/lib/help-docs/07-projects.md +1 -1
  111. package/lib/help-docs/10-troubleshooting.md +10 -2
  112. package/lib/help-docs/16-gitlab-autofix.md +114 -0
  113. package/lib/help-docs/17-connectors.md +322 -0
  114. package/lib/help-docs/18-chrome-mcp.md +134 -0
  115. package/lib/help-docs/19-jobs.md +140 -0
  116. package/lib/help-docs/20-mantis-bug-fix.md +115 -0
  117. package/lib/help-docs/CLAUDE.md +10 -0
  118. package/lib/init.ts +137 -50
  119. package/lib/iso-time.ts +30 -0
  120. package/lib/issue-scanner-gitlab.ts +281 -0
  121. package/lib/jobs/dispatcher.ts +217 -0
  122. package/lib/jobs/scheduler.ts +334 -0
  123. package/lib/jobs/store.ts +319 -0
  124. package/lib/jobs/types.ts +117 -0
  125. package/lib/pipeline-scheduler.ts +1 -6
  126. package/lib/pipeline.ts +790 -10
  127. package/lib/plugins/registry.ts +133 -8
  128. package/lib/plugins/templates.ts +83 -0
  129. package/lib/plugins/types.ts +140 -1
  130. package/lib/session-watcher.ts +36 -10
  131. package/lib/settings.ts +65 -33
  132. package/lib/skills.ts +3 -1
  133. package/lib/task-manager.ts +50 -22
  134. package/lib/telegram-bot.ts +71 -0
  135. package/lib/terminal-standalone.ts +58 -36
  136. package/lib/workspace/orchestrator.ts +1 -0
  137. package/middleware.ts +10 -0
  138. package/package.json +3 -2
  139. package/scripts/bench/README.md +1 -1
  140. package/scripts/bench/tasks/01-text-utils/validator.sh +1 -1
  141. package/scripts/bench/tasks/02-pagination/setup.sh +1 -1
  142. package/scripts/bench/tasks/02-pagination/validator.sh +1 -1
  143. package/scripts/bench/tasks/03-bug-fix/setup.sh +1 -1
  144. package/scripts/bench/tasks/03-bug-fix/validator.sh +1 -1
  145. package/src/core/db/database.ts +21 -12
package/.forge/mcp.json CHANGED
@@ -3,6 +3,14 @@
3
3
  "forge": {
4
4
  "type": "sse",
5
5
  "url": "http://localhost:8406/sse?workspaceId=656c9e65-9d73-4cb6-a065-60d966e1fc78"
6
+ },
7
+ "chrome": {
8
+ "type": "stdio",
9
+ "command": "npx",
10
+ "args": [
11
+ "-y",
12
+ "chrome-devtools-mcp"
13
+ ]
6
14
  }
7
15
  }
8
16
  }
@@ -102,14 +102,14 @@ Profiles are reusable configurations that extend a base agent with custom enviro
102
102
 
103
103
  ```yaml
104
104
  agents:
105
- forti-k2:
105
+ forge-k2:
106
106
  base: claude
107
- name: Forti K2
108
- model: forti-k2
107
+ name: Forge K2
108
+ model: forge-k2
109
109
  env:
110
110
  ANTHROPIC_AUTH_TOKEN: sk-xxx
111
111
  ANTHROPIC_BASE_URL: http://my-server:7001/
112
- ANTHROPIC_SMALL_FAST_MODEL: forti-k2
112
+ ANTHROPIC_SMALL_FAST_MODEL: forge-k2
113
113
  CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: "true"
114
114
  DISABLE_TELEMETRY: "true"
115
115
  ```
@@ -142,7 +142,7 @@ In the agent configuration, set the `profile` field to link a profile:
142
142
  ```yaml
143
143
  agents:
144
144
  claude:
145
- profile: forti-k2 # Claude will use forti-k2's env/model when launched
145
+ profile: forge-k2 # Claude will use forge-k2's env/model when launched
146
146
  ```
147
147
 
148
148
  This applies the profile's environment variables and model override whenever that agent is launched in a terminal.
@@ -61,7 +61,7 @@ There are two ways to open a terminal for a project:
61
61
 
62
62
  When selecting an agent or profile for a terminal:
63
63
  - **Base agents** (Claude, Codex, Aider): Use their default configuration
64
- - **Profiles** (e.g., Forti K2, Claude Opus): Apply the profile's environment variables and model override
64
+ - **Profiles** (e.g., Forge K2, Claude Opus): Apply the profile's environment variables and model override
65
65
  - Environment variables are exported in the terminal before launching the CLI
66
66
  - Model is passed via `--model` flag (for claude-code agents)
67
67
 
@@ -102,14 +102,14 @@ Profiles are reusable configurations that extend a base agent with custom enviro
102
102
 
103
103
  ```yaml
104
104
  agents:
105
- forti-k2:
105
+ forge-k2:
106
106
  base: claude
107
- name: Forti K2
108
- model: forti-k2
107
+ name: Forge K2
108
+ model: forge-k2
109
109
  env:
110
110
  ANTHROPIC_AUTH_TOKEN: sk-xxx
111
111
  ANTHROPIC_BASE_URL: http://my-server:7001/
112
- ANTHROPIC_SMALL_FAST_MODEL: forti-k2
112
+ ANTHROPIC_SMALL_FAST_MODEL: forge-k2
113
113
  CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: "true"
114
114
  DISABLE_TELEMETRY: "true"
115
115
  ```
@@ -142,7 +142,7 @@ In the agent configuration, set the `profile` field to link a profile:
142
142
  ```yaml
143
143
  agents:
144
144
  claude:
145
- profile: forti-k2 # Claude will use forti-k2's env/model when launched
145
+ profile: forge-k2 # Claude will use forge-k2's env/model when launched
146
146
  ```
147
147
 
148
148
  This applies the profile's environment variables and model override whenever that agent is launched in a terminal.
@@ -61,7 +61,7 @@ There are two ways to open a terminal for a project:
61
61
 
62
62
  When selecting an agent or profile for a terminal:
63
63
  - **Base agents** (Claude, Codex, Aider): Use their default configuration
64
- - **Profiles** (e.g., Forti K2, Claude Opus): Apply the profile's environment variables and model override
64
+ - **Profiles** (e.g., Forge K2, Claude Opus): Apply the profile's environment variables and model override
65
65
  - Environment variables are exported in the terminal before launching the CLI
66
66
  - Model is passed via `--model` flag (for claude-code agents)
67
67
 
@@ -102,14 +102,14 @@ Profiles are reusable configurations that extend a base agent with custom enviro
102
102
 
103
103
  ```yaml
104
104
  agents:
105
- forti-k2:
105
+ forge-k2:
106
106
  base: claude
107
- name: Forti K2
108
- model: forti-k2
107
+ name: Forge K2
108
+ model: forge-k2
109
109
  env:
110
110
  ANTHROPIC_AUTH_TOKEN: sk-xxx
111
111
  ANTHROPIC_BASE_URL: http://my-server:7001/
112
- ANTHROPIC_SMALL_FAST_MODEL: forti-k2
112
+ ANTHROPIC_SMALL_FAST_MODEL: forge-k2
113
113
  CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: "true"
114
114
  DISABLE_TELEMETRY: "true"
115
115
  ```
@@ -142,7 +142,7 @@ In the agent configuration, set the `profile` field to link a profile:
142
142
  ```yaml
143
143
  agents:
144
144
  claude:
145
- profile: forti-k2 # Claude will use forti-k2's env/model when launched
145
+ profile: forge-k2 # Claude will use forge-k2's env/model when launched
146
146
  ```
147
147
 
148
148
  This applies the profile's environment variables and model override whenever that agent is launched in a terminal.
@@ -61,7 +61,7 @@ There are two ways to open a terminal for a project:
61
61
 
62
62
  When selecting an agent or profile for a terminal:
63
63
  - **Base agents** (Claude, Codex, Aider): Use their default configuration
64
- - **Profiles** (e.g., Forti K2, Claude Opus): Apply the profile's environment variables and model override
64
+ - **Profiles** (e.g., Forge K2, Claude Opus): Apply the profile's environment variables and model override
65
65
  - Environment variables are exported in the terminal before launching the CLI
66
66
  - Model is passed via `--model` flag (for claude-code agents)
67
67
 
@@ -102,14 +102,14 @@ Profiles are reusable configurations that extend a base agent with custom enviro
102
102
 
103
103
  ```yaml
104
104
  agents:
105
- forti-k2:
105
+ forge-k2:
106
106
  base: claude
107
- name: Forti K2
108
- model: forti-k2
107
+ name: Forge K2
108
+ model: forge-k2
109
109
  env:
110
110
  ANTHROPIC_AUTH_TOKEN: sk-xxx
111
111
  ANTHROPIC_BASE_URL: http://my-server:7001/
112
- ANTHROPIC_SMALL_FAST_MODEL: forti-k2
112
+ ANTHROPIC_SMALL_FAST_MODEL: forge-k2
113
113
  CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: "true"
114
114
  DISABLE_TELEMETRY: "true"
115
115
  ```
@@ -142,7 +142,7 @@ In the agent configuration, set the `profile` field to link a profile:
142
142
  ```yaml
143
143
  agents:
144
144
  claude:
145
- profile: forti-k2 # Claude will use forti-k2's env/model when launched
145
+ profile: forge-k2 # Claude will use forge-k2's env/model when launched
146
146
  ```
147
147
 
148
148
  This applies the profile's environment variables and model override whenever that agent is launched in a terminal.
@@ -61,7 +61,7 @@ There are two ways to open a terminal for a project:
61
61
 
62
62
  When selecting an agent or profile for a terminal:
63
63
  - **Base agents** (Claude, Codex, Aider): Use their default configuration
64
- - **Profiles** (e.g., Forti K2, Claude Opus): Apply the profile's environment variables and model override
64
+ - **Profiles** (e.g., Forge K2, Claude Opus): Apply the profile's environment variables and model override
65
65
  - Environment variables are exported in the terminal before launching the CLI
66
66
  - Model is passed via `--model` flag (for claude-code agents)
67
67
 
@@ -102,14 +102,14 @@ Profiles are reusable configurations that extend a base agent with custom enviro
102
102
 
103
103
  ```yaml
104
104
  agents:
105
- forti-k2:
105
+ forge-k2:
106
106
  base: claude
107
- name: Forti K2
108
- model: forti-k2
107
+ name: Forge K2
108
+ model: forge-k2
109
109
  env:
110
110
  ANTHROPIC_AUTH_TOKEN: sk-xxx
111
111
  ANTHROPIC_BASE_URL: http://my-server:7001/
112
- ANTHROPIC_SMALL_FAST_MODEL: forti-k2
112
+ ANTHROPIC_SMALL_FAST_MODEL: forge-k2
113
113
  CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: "true"
114
114
  DISABLE_TELEMETRY: "true"
115
115
  ```
@@ -142,7 +142,7 @@ In the agent configuration, set the `profile` field to link a profile:
142
142
  ```yaml
143
143
  agents:
144
144
  claude:
145
- profile: forti-k2 # Claude will use forti-k2's env/model when launched
145
+ profile: forge-k2 # Claude will use forge-k2's env/model when launched
146
146
  ```
147
147
 
148
148
  This applies the profile's environment variables and model override whenever that agent is launched in a terminal.
@@ -61,7 +61,7 @@ There are two ways to open a terminal for a project:
61
61
 
62
62
  When selecting an agent or profile for a terminal:
63
63
  - **Base agents** (Claude, Codex, Aider): Use their default configuration
64
- - **Profiles** (e.g., Forti K2, Claude Opus): Apply the profile's environment variables and model override
64
+ - **Profiles** (e.g., Forge K2, Claude Opus): Apply the profile's environment variables and model override
65
65
  - Environment variables are exported in the terminal before launching the CLI
66
66
  - Model is passed via `--model` flag (for claude-code agents)
67
67
 
@@ -102,14 +102,14 @@ Profiles are reusable configurations that extend a base agent with custom enviro
102
102
 
103
103
  ```yaml
104
104
  agents:
105
- forti-k2:
105
+ forge-k2:
106
106
  base: claude
107
- name: Forti K2
108
- model: forti-k2
107
+ name: Forge K2
108
+ model: forge-k2
109
109
  env:
110
110
  ANTHROPIC_AUTH_TOKEN: sk-xxx
111
111
  ANTHROPIC_BASE_URL: http://my-server:7001/
112
- ANTHROPIC_SMALL_FAST_MODEL: forti-k2
112
+ ANTHROPIC_SMALL_FAST_MODEL: forge-k2
113
113
  CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: "true"
114
114
  DISABLE_TELEMETRY: "true"
115
115
  ```
@@ -142,7 +142,7 @@ In the agent configuration, set the `profile` field to link a profile:
142
142
  ```yaml
143
143
  agents:
144
144
  claude:
145
- profile: forti-k2 # Claude will use forti-k2's env/model when launched
145
+ profile: forge-k2 # Claude will use forge-k2's env/model when launched
146
146
  ```
147
147
 
148
148
  This applies the profile's environment variables and model override whenever that agent is launched in a terminal.
@@ -61,7 +61,7 @@ There are two ways to open a terminal for a project:
61
61
 
62
62
  When selecting an agent or profile for a terminal:
63
63
  - **Base agents** (Claude, Codex, Aider): Use their default configuration
64
- - **Profiles** (e.g., Forti K2, Claude Opus): Apply the profile's environment variables and model override
64
+ - **Profiles** (e.g., Forge K2, Claude Opus): Apply the profile's environment variables and model override
65
65
  - Environment variables are exported in the terminal before launching the CLI
66
66
  - Model is passed via `--model` flag (for claude-code agents)
67
67
 
@@ -102,14 +102,14 @@ Profiles are reusable configurations that extend a base agent with custom enviro
102
102
 
103
103
  ```yaml
104
104
  agents:
105
- forti-k2:
105
+ forge-k2:
106
106
  base: claude
107
- name: Forti K2
108
- model: forti-k2
107
+ name: Forge K2
108
+ model: forge-k2
109
109
  env:
110
110
  ANTHROPIC_AUTH_TOKEN: sk-xxx
111
111
  ANTHROPIC_BASE_URL: http://my-server:7001/
112
- ANTHROPIC_SMALL_FAST_MODEL: forti-k2
112
+ ANTHROPIC_SMALL_FAST_MODEL: forge-k2
113
113
  CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: "true"
114
114
  DISABLE_TELEMETRY: "true"
115
115
  ```
@@ -142,7 +142,7 @@ In the agent configuration, set the `profile` field to link a profile:
142
142
  ```yaml
143
143
  agents:
144
144
  claude:
145
- profile: forti-k2 # Claude will use forti-k2's env/model when launched
145
+ profile: forge-k2 # Claude will use forge-k2's env/model when launched
146
146
  ```
147
147
 
148
148
  This applies the profile's environment variables and model override whenever that agent is launched in a terminal.
@@ -61,7 +61,7 @@ There are two ways to open a terminal for a project:
61
61
 
62
62
  When selecting an agent or profile for a terminal:
63
63
  - **Base agents** (Claude, Codex, Aider): Use their default configuration
64
- - **Profiles** (e.g., Forti K2, Claude Opus): Apply the profile's environment variables and model override
64
+ - **Profiles** (e.g., Forge K2, Claude Opus): Apply the profile's environment variables and model override
65
65
  - Environment variables are exported in the terminal before launching the CLI
66
66
  - Model is passed via `--model` flag (for claude-code agents)
67
67
 
@@ -102,14 +102,14 @@ Profiles are reusable configurations that extend a base agent with custom enviro
102
102
 
103
103
  ```yaml
104
104
  agents:
105
- forti-k2:
105
+ forge-k2:
106
106
  base: claude
107
- name: Forti K2
108
- model: forti-k2
107
+ name: Forge K2
108
+ model: forge-k2
109
109
  env:
110
110
  ANTHROPIC_AUTH_TOKEN: sk-xxx
111
111
  ANTHROPIC_BASE_URL: http://my-server:7001/
112
- ANTHROPIC_SMALL_FAST_MODEL: forti-k2
112
+ ANTHROPIC_SMALL_FAST_MODEL: forge-k2
113
113
  CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: "true"
114
114
  DISABLE_TELEMETRY: "true"
115
115
  ```
@@ -142,7 +142,7 @@ In the agent configuration, set the `profile` field to link a profile:
142
142
  ```yaml
143
143
  agents:
144
144
  claude:
145
- profile: forti-k2 # Claude will use forti-k2's env/model when launched
145
+ profile: forge-k2 # Claude will use forge-k2's env/model when launched
146
146
  ```
147
147
 
148
148
  This applies the profile's environment variables and model override whenever that agent is launched in a terminal.
@@ -61,7 +61,7 @@ There are two ways to open a terminal for a project:
61
61
 
62
62
  When selecting an agent or profile for a terminal:
63
63
  - **Base agents** (Claude, Codex, Aider): Use their default configuration
64
- - **Profiles** (e.g., Forti K2, Claude Opus): Apply the profile's environment variables and model override
64
+ - **Profiles** (e.g., Forge K2, Claude Opus): Apply the profile's environment variables and model override
65
65
  - Environment variables are exported in the terminal before launching the CLI
66
66
  - Model is passed via `--model` flag (for claude-code agents)
67
67
 
@@ -102,14 +102,14 @@ Profiles are reusable configurations that extend a base agent with custom enviro
102
102
 
103
103
  ```yaml
104
104
  agents:
105
- forti-k2:
105
+ forge-k2:
106
106
  base: claude
107
- name: Forti K2
108
- model: forti-k2
107
+ name: Forge K2
108
+ model: forge-k2
109
109
  env:
110
110
  ANTHROPIC_AUTH_TOKEN: sk-xxx
111
111
  ANTHROPIC_BASE_URL: http://my-server:7001/
112
- ANTHROPIC_SMALL_FAST_MODEL: forti-k2
112
+ ANTHROPIC_SMALL_FAST_MODEL: forge-k2
113
113
  CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: "true"
114
114
  DISABLE_TELEMETRY: "true"
115
115
  ```
@@ -142,7 +142,7 @@ In the agent configuration, set the `profile` field to link a profile:
142
142
  ```yaml
143
143
  agents:
144
144
  claude:
145
- profile: forti-k2 # Claude will use forti-k2's env/model when launched
145
+ profile: forge-k2 # Claude will use forge-k2's env/model when launched
146
146
  ```
147
147
 
148
148
  This applies the profile's environment variables and model override whenever that agent is launched in a terminal.
@@ -61,7 +61,7 @@ There are two ways to open a terminal for a project:
61
61
 
62
62
  When selecting an agent or profile for a terminal:
63
63
  - **Base agents** (Claude, Codex, Aider): Use their default configuration
64
- - **Profiles** (e.g., Forti K2, Claude Opus): Apply the profile's environment variables and model override
64
+ - **Profiles** (e.g., Forge K2, Claude Opus): Apply the profile's environment variables and model override
65
65
  - Environment variables are exported in the terminal before launching the CLI
66
66
  - Model is passed via `--model` flag (for claude-code agents)
67
67
 
@@ -102,14 +102,14 @@ Profiles are reusable configurations that extend a base agent with custom enviro
102
102
 
103
103
  ```yaml
104
104
  agents:
105
- forti-k2:
105
+ forge-k2:
106
106
  base: claude
107
- name: Forti K2
108
- model: forti-k2
107
+ name: Forge K2
108
+ model: forge-k2
109
109
  env:
110
110
  ANTHROPIC_AUTH_TOKEN: sk-xxx
111
111
  ANTHROPIC_BASE_URL: http://my-server:7001/
112
- ANTHROPIC_SMALL_FAST_MODEL: forti-k2
112
+ ANTHROPIC_SMALL_FAST_MODEL: forge-k2
113
113
  CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: "true"
114
114
  DISABLE_TELEMETRY: "true"
115
115
  ```
@@ -142,7 +142,7 @@ In the agent configuration, set the `profile` field to link a profile:
142
142
  ```yaml
143
143
  agents:
144
144
  claude:
145
- profile: forti-k2 # Claude will use forti-k2's env/model when launched
145
+ profile: forge-k2 # Claude will use forge-k2's env/model when launched
146
146
  ```
147
147
 
148
148
  This applies the profile's environment variables and model override whenever that agent is launched in a terminal.
@@ -61,7 +61,7 @@ There are two ways to open a terminal for a project:
61
61
 
62
62
  When selecting an agent or profile for a terminal:
63
63
  - **Base agents** (Claude, Codex, Aider): Use their default configuration
64
- - **Profiles** (e.g., Forti K2, Claude Opus): Apply the profile's environment variables and model override
64
+ - **Profiles** (e.g., Forge K2, Claude Opus): Apply the profile's environment variables and model override
65
65
  - Environment variables are exported in the terminal before launching the CLI
66
66
  - Model is passed via `--model` flag (for claude-code agents)
67
67
 
@@ -102,14 +102,14 @@ Profiles are reusable configurations that extend a base agent with custom enviro
102
102
 
103
103
  ```yaml
104
104
  agents:
105
- forti-k2:
105
+ forge-k2:
106
106
  base: claude
107
- name: Forti K2
108
- model: forti-k2
107
+ name: Forge K2
108
+ model: forge-k2
109
109
  env:
110
110
  ANTHROPIC_AUTH_TOKEN: sk-xxx
111
111
  ANTHROPIC_BASE_URL: http://my-server:7001/
112
- ANTHROPIC_SMALL_FAST_MODEL: forti-k2
112
+ ANTHROPIC_SMALL_FAST_MODEL: forge-k2
113
113
  CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: "true"
114
114
  DISABLE_TELEMETRY: "true"
115
115
  ```
@@ -142,7 +142,7 @@ In the agent configuration, set the `profile` field to link a profile:
142
142
  ```yaml
143
143
  agents:
144
144
  claude:
145
- profile: forti-k2 # Claude will use forti-k2's env/model when launched
145
+ profile: forge-k2 # Claude will use forge-k2's env/model when launched
146
146
  ```
147
147
 
148
148
  This applies the profile's environment variables and model override whenever that agent is launched in a terminal.
@@ -61,7 +61,7 @@ There are two ways to open a terminal for a project:
61
61
 
62
62
  When selecting an agent or profile for a terminal:
63
63
  - **Base agents** (Claude, Codex, Aider): Use their default configuration
64
- - **Profiles** (e.g., Forti K2, Claude Opus): Apply the profile's environment variables and model override
64
+ - **Profiles** (e.g., Forge K2, Claude Opus): Apply the profile's environment variables and model override
65
65
  - Environment variables are exported in the terminal before launching the CLI
66
66
  - Model is passed via `--model` flag (for claude-code agents)
67
67
 
@@ -102,14 +102,14 @@ Profiles are reusable configurations that extend a base agent with custom enviro
102
102
 
103
103
  ```yaml
104
104
  agents:
105
- forti-k2:
105
+ forge-k2:
106
106
  base: claude
107
- name: Forti K2
108
- model: forti-k2
107
+ name: Forge K2
108
+ model: forge-k2
109
109
  env:
110
110
  ANTHROPIC_AUTH_TOKEN: sk-xxx
111
111
  ANTHROPIC_BASE_URL: http://my-server:7001/
112
- ANTHROPIC_SMALL_FAST_MODEL: forti-k2
112
+ ANTHROPIC_SMALL_FAST_MODEL: forge-k2
113
113
  CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: "true"
114
114
  DISABLE_TELEMETRY: "true"
115
115
  ```
@@ -142,7 +142,7 @@ In the agent configuration, set the `profile` field to link a profile:
142
142
  ```yaml
143
143
  agents:
144
144
  claude:
145
- profile: forti-k2 # Claude will use forti-k2's env/model when launched
145
+ profile: forge-k2 # Claude will use forge-k2's env/model when launched
146
146
  ```
147
147
 
148
148
  This applies the profile's environment variables and model override whenever that agent is launched in a terminal.
@@ -61,7 +61,7 @@ There are two ways to open a terminal for a project:
61
61
 
62
62
  When selecting an agent or profile for a terminal:
63
63
  - **Base agents** (Claude, Codex, Aider): Use their default configuration
64
- - **Profiles** (e.g., Forti K2, Claude Opus): Apply the profile's environment variables and model override
64
+ - **Profiles** (e.g., Forge K2, Claude Opus): Apply the profile's environment variables and model override
65
65
  - Environment variables are exported in the terminal before launching the CLI
66
66
  - Model is passed via `--model` flag (for claude-code agents)
67
67
 
package/CLAUDE.md CHANGED
@@ -118,9 +118,9 @@ If a feature change affects user-facing behavior, update the corresponding help
118
118
  - GitHub: `github.com/aiwatching/forge`
119
119
 
120
120
  ## Obsidian Vault
121
- Location: /Users/zliu/MyDocuments/obsidian-project/Projects/Bastion
121
+ Location: ~/Documents/obsidian/MyProject
122
122
  When I ask about my notes, use bash to search and read files from this directory.
123
- Example: find /Users/zliu/MyDocuments/obsidian-project -name "*.md" | head -20
123
+ Example: find ~/Documents/obsidian -name "*.md" | head -20
124
124
 
125
125
  <!-- forge:template:obsidian-vault -->
126
126
  ## Obsidian Vault
package/RELEASE_NOTES.md CHANGED
@@ -1,11 +1,107 @@
1
- # Forge v0.6.1
1
+ # Forge v0.8.0
2
2
 
3
- Released: 2026-04-28
3
+ Released: 2026-05-19
4
4
 
5
- ## Changes since v0.6.0
5
+ ## Changes since v0.6.3
6
+
7
+ ### Features
8
+ - feat: job preview auto-fill + forge worktree CLI + faster startup
9
+
10
+ ### Documentation
11
+ - docs: example pipeline for a Forge Job driving Mantis → branch triage
12
+ - docs: Jobs — scheduled connector polls that fan out to pipelines or chat
13
+ - docs: connector declarative-extract spec + handoff + updated help doc
14
+ - docs: connector packaging section + plugin category ADR
15
+ - docs: ADR for browser-agent data architecture (Temper write strategy)
16
+ - docs: RFC + implementation plan for browser-agent / connector system
6
17
 
7
18
  ### Other
8
- - fix(server): daemonize standalones in \`forge server start\` (background)
19
+ - feat(chat): local memory fallback + simplified /chat web page
20
+ - feat(security): encrypt plugin secrets at rest + mask on API
21
+ - feat(pipeline): print fetch-bug-details + download-attachments to task log
22
+ - feat(mantis+pipeline): attachment download into worktree for vision analysis
23
+ - fix(pipeline): push-and-mr detects revoked glab token + prints fix cmd
24
+ - fix(pipeline): push-and-mr surfaces glab output + MR-list fallback
25
+ - feat(pipeline/mantis): fetch-bug-details exposes ALL fields downstream
26
+ - fix(pipeline-ui): fetch full pipeline on click — summary breaks detail view
27
+ - feat(jobs): expose {{total_matching}} placeholder in chat summary mode
28
+ - fix(mantis): regex escape — YAML | block passes backslashes verbatim
29
+ - fix(time): normalize all SQLite datetimes to ISO Z + add settings.timezone
30
+ - feat(jobs/mantis): target='main' chat dispatch + total_matching count
31
+ - fix(mantis): reset all filter fields before applying — no session leak
32
+ - feat(chat): persistent main session + clear-messages + fork
33
+ - feat(jobs): chat 'summary' dispatch mode — bundle N items into 1 LLM analysis
34
+ - perf(pipeline-ui): lazy-load runs per workflow, drop 5s full poll
35
+ - perf(watcher): defer initial sync + skip entry_count on first pass
36
+ - feat(pipeline-ui): 'Load older runs' button per workflow
37
+ - perf(pipeline): default limit 100 + ?workflow / ?before cursor
38
+ - perf(pipeline): mtime cache + summary mode for list — 1.6MB → <50KB
39
+ - perf(init): instrument 5s gap + demote skills sync failure to warn
40
+ - feat(teams): _probe diagnostic tool — DOM state in one call
41
+ - fix(chat): unwrap Node fetch 'fetch failed' with concrete remediation
42
+ - fix(teams): char-by-char typing for search input (keyboard events)
43
+ - feat(teams): v0.8.0 — send_message 3-tier resolver (left-rail → expand groups → search)
44
+ - feat(mantis): v0.4.3 — accurate filters via show_status + handler_id
45
+ - fix(pipeline): real workdir support + worktree-setup emits path only
46
+ - fix(pipeline): node tasks always start fresh Claude session
47
+ - fix(jobs): warn loudly when input_template keys render to empty
48
+ - feat(jobs): 'Force run' — reset dedup + run, one click
49
+ - fix(jobs): drop dedup_key from triggerPipeline — UNIQUE blocked replay
50
+ - feat(gitlab): full HTTP-API connector (32 tools) — replaces DOM scraping
51
+ - fix(mantis): bug notes always carry an id — fallback strategies + hash
52
+ - feat(chat): connector narrowing — /teams forces tool use; bare mention narrows tool list
53
+ - fix(chat): connector tools always surfaced + stronger 'use the tool' prompt
54
+ - fix(notify-test): explain 'fetch failed' (corp SSL / proxy / DNS)
55
+ - fix(notify-test): drop Markdown parse_mode + split chat_id + surface real reason
56
+ - fix(mantis): search_bugs — fix_schedule (version) filter + auto-pagination
57
+ - fix(mantis): search_bugs honours status + project_id, drops broken query syntax
58
+ - feat(health): startup probe + Pipelines banner for missing CLIs (glab/gh/git/jq)
59
+ - feat(pipeline): mantis-bug-fix-and-mr builtin + connector-tool API
60
+ - feat(mantis): notes carry stable note_id so Jobs can dedup on them
61
+ - feat(jobs): per-run verbose execution log persisted to job_runs.log
62
+ - feat(web): Jobs first in Automation, deep-link to logs filtered by job id
63
+ - fix(web): Automation sub-tabs squished header; new sub-toolbar row fix(terminal): Split Right/Down → SVG icons; mouse hint to tooltip feat(jobs): notes column — backfill + items_path mismatch surfaced
64
+ - feat(web): Automation hub — merge Tasks/Pipelines nav + add Jobs view
65
+ - feat(jobs): trace flow — Dashboard deep-link + CLI dispatches view
66
+ - feat(jobs): Jobs backend — scheduled connector polls + dispatch
67
+ - fix(settings): don't overwrite agent apiKey with masked placeholder
68
+ - feat(chat): port Temper memory to Forge — pinned blocks + memory_* tools
69
+ - feat(chat): reuse API agent profiles + add baseUrl (LiteLLM support)
70
+ - feat(bridge): drop pairing — bridge auths with the user's Forge token
71
+ - feat(connectors): Phase 3 — multi-protocol runtime (http, shell)
72
+ - feat(chat): Phase 5 part 3 — Telegram /chat command
73
+ - feat(chat): Phase 5 part 2 — forge chat CLI subcommand
74
+ - feat(chat): Phase 5 part 1 — chat-standalone (8408) + Next proxy
75
+ - fix(bridge): spawn browser-bridge from lib/init.ts too
76
+ - feat(chat): Phase 2 part 3 — HTTP API + WS push streaming
77
+ - feat(chat): Phase 2 part 2 — tool dispatcher + agent loop
78
+ - feat(chat): Phase 2 part 1 — chat backend foundation
79
+ - feat(bridge): Phase 1 — Forge↔Extension WebSocket bridge
80
+ - feat(connectors): teams v0.7.1 — send_message no longer requires confirmation
81
+ - feat(connectors): teams v0.7.0 — robust wait + send_message by name
82
+ - feat(connectors): teams v0.6.0 — read_chat + read_channel by name
83
+ - feat(connectors): teams v0.5.0 — channels support (list + read posts)
84
+ - feat(connectors): pmdb v0.2.0 — read-only Fortinet PMDB connector
85
+ - feat(connectors): teams v0.4.0 — send_message (destructive)
86
+ - feat(connectors): teams v0.3.0 — rewritten from real DOM probe
87
+ - feat(connectors): multi-runner — manifest declares execution context
88
+ - feat(connectors): teams (Microsoft Teams) — first-cut declarative manifest
89
+ - chore(connectors): bump gitlab to 0.2.0
90
+ - feat(connectors): gitlab — declarative manifest with 6 tools
91
+ - feat(connectors): declarative extract — manifest carries page + script
92
+ - chore(connectors): bump mantis to 0.2.0 — full tool set landed
93
+ - feat(mcp): user-managed external MCP servers in .mcp.json
94
+ - feat(connectors): mantis probe — auto-copy JSON result to clipboard
95
+ - fix(connectors): mantis probe — support 1.x classic URL + checkbox row marker
96
+ - feat(connectors): mantis selector probe sibling script
97
+ - chore(connectors): bump mantis + gitlab-browser to 0.1.1
98
+ - docs(connectors): DOM extraction is the default path, not REST APIs
99
+ - feat(ui): dedicated Connectors panel separate from Plugins
100
+ - fix(connectors-api): rely on middleware auth, drop explicit token check
101
+ - feat(api): connectors discovery + per-user settings endpoints
102
+ - feat(plugins): connector category + browser-side mode, mantis + gitlab manifests
103
+ - feat(gitlab): \`gitlab-issue-fix-and-review\` pipeline + scanner
104
+ - fix(mcp): mirror .forge/mcp.json to project root so claude picks it up
9
105
 
10
106
 
11
- **Full Changelog**: https://github.com/aiwatching/forge/compare/v0.6.0...v0.6.1
107
+ **Full Changelog**: https://github.com/aiwatching/forge/compare/v0.6.3...v0.8.0
@@ -0,0 +1,18 @@
1
+ /**
2
+ * POST /api/auth/check — validate an X-Forge-Token.
3
+ *
4
+ * Used by other Forge processes (e.g. bridge-standalone) to verify a
5
+ * token without re-implementing the token store. Returns 200 on valid,
6
+ * 401 otherwise. Body is ignored — the token must be in the
7
+ * X-Forge-Token header (or forge-api-token cookie).
8
+ */
9
+
10
+ import { NextResponse } from 'next/server';
11
+ import { isValidToken } from '../verify/route';
12
+
13
+ export async function POST(req: Request) {
14
+ if (!isValidToken(req)) {
15
+ return NextResponse.json({ ok: false }, { status: 401 });
16
+ }
17
+ return NextResponse.json({ ok: true });
18
+ }