@grackle-ai/server 0.72.0 → 0.72.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.
- package/dist/auto-reconnect.js +3 -3
- package/dist/auto-reconnect.js.map +1 -1
- package/dist/credential-bundle.d.ts +12 -0
- package/dist/credential-bundle.d.ts.map +1 -0
- package/dist/credential-bundle.js +183 -0
- package/dist/credential-bundle.js.map +1 -0
- package/dist/credential-providers.d.ts +0 -10
- package/dist/credential-providers.d.ts.map +1 -1
- package/dist/credential-providers.js +5 -177
- package/dist/credential-providers.js.map +1 -1
- package/dist/db-seed.d.ts +16 -0
- package/dist/db-seed.d.ts.map +1 -0
- package/dist/db-seed.js +176 -0
- package/dist/db-seed.js.map +1 -0
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +1 -165
- package/dist/db.js.map +1 -1
- package/dist/finding-store.d.ts +0 -2
- package/dist/finding-store.d.ts.map +1 -1
- package/dist/finding-store.js +0 -23
- package/dist/finding-store.js.map +1 -1
- package/dist/grpc-service.d.ts.map +1 -1
- package/dist/grpc-service.js +10 -7
- package/dist/grpc-service.js.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/orchestrator-context.js +27 -1
- package/dist/orchestrator-context.js.map +1 -1
- package/dist/task-store.d.ts +24 -1
- package/dist/task-store.d.ts.map +1 -1
- package/dist/task-store.js +43 -20
- package/dist/task-store.js.map +1 -1
- package/dist/{token-broker.d.ts → token-push.d.ts} +3 -27
- package/dist/token-push.d.ts.map +1 -0
- package/dist/{token-broker.js → token-push.js} +25 -71
- package/dist/token-push.js.map +1 -0
- package/dist/token-store.d.ts +25 -0
- package/dist/token-store.d.ts.map +1 -0
- package/dist/token-store.js +58 -0
- package/dist/token-store.js.map +1 -0
- package/dist/ws-bridge.d.ts.map +1 -1
- package/dist/ws-bridge.js +10 -7
- package/dist/ws-bridge.js.map +1 -1
- package/package.json +7 -7
- package/dist/token-broker.d.ts.map +0 -1
- package/dist/token-broker.js.map +0 -1
package/dist/db-seed.js
ADDED
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
import { SYSTEM_PERSONA_ID, ROOT_TASK_ID } from "@grackle-ai/common";
|
|
2
|
+
/**
|
|
3
|
+
* Seed the database with application-level defaults.
|
|
4
|
+
* Call once at startup after {@link initDatabase} has applied schema migrations.
|
|
5
|
+
*
|
|
6
|
+
* @param conn - The raw better-sqlite3 connection to seed.
|
|
7
|
+
*/
|
|
8
|
+
export function seedDatabase(conn) {
|
|
9
|
+
// Capture persona count BEFORE any seed inserts so we can distinguish
|
|
10
|
+
// fresh installs from upgrades in the onboarding backfill below.
|
|
11
|
+
const personaCount = conn
|
|
12
|
+
.prepare("SELECT COUNT(*) as cnt FROM personas")
|
|
13
|
+
.get();
|
|
14
|
+
// Seed: create default "Claude Code" persona if no personas exist
|
|
15
|
+
if (personaCount.cnt === 0) {
|
|
16
|
+
conn.exec(`
|
|
17
|
+
INSERT INTO personas (id, name, description, system_prompt, runtime, model, max_turns)
|
|
18
|
+
VALUES (
|
|
19
|
+
'claude-code',
|
|
20
|
+
'Claude Code',
|
|
21
|
+
'Default agent persona using Claude Code runtime',
|
|
22
|
+
'',
|
|
23
|
+
'claude-code',
|
|
24
|
+
'sonnet',
|
|
25
|
+
0
|
|
26
|
+
)
|
|
27
|
+
`);
|
|
28
|
+
conn.exec(`
|
|
29
|
+
INSERT OR IGNORE INTO settings (key, value)
|
|
30
|
+
VALUES ('default_persona_id', 'claude-code')
|
|
31
|
+
`);
|
|
32
|
+
}
|
|
33
|
+
// Migration: update the seed persona with the completion checklist and clearer name.
|
|
34
|
+
// Guards: only run when the system_prompt is still empty and name is still "Claude Code"
|
|
35
|
+
// so we don't overwrite user customizations.
|
|
36
|
+
conn.exec(`
|
|
37
|
+
UPDATE personas SET system_prompt = 'When you have finished implementing the task, you MUST complete ALL steps below in order. Do NOT stop early or go to "waiting for input" until every step is done.
|
|
38
|
+
|
|
39
|
+
### Phase 1: Implement & Test
|
|
40
|
+
1. **Implement** the task requirements.
|
|
41
|
+
2. **Write tests**: Write unit tests, integration tests, or E2E specs as appropriate. Every implementation MUST include tests unless the change is purely cosmetic or untestable (state why if skipping).
|
|
42
|
+
3. **Build**: Run the repository''s build command and fix any errors.
|
|
43
|
+
4. **Run tests**: Run relevant tests and ensure they pass.
|
|
44
|
+
5. **Manual test**: If the change affects UI, visually verify. If it affects CLI or API, run the commands manually. State explicitly if skipping and why.
|
|
45
|
+
|
|
46
|
+
### Phase 2: Create PR
|
|
47
|
+
6. **Sync with main**: Fetch and merge the main branch. If merge conflicts arise, resolve them, stage, and commit the merge. NEVER rebase.
|
|
48
|
+
7. **Rebuild after merge**: If the merge brought in new commits, rebuild to catch integration conflicts.
|
|
49
|
+
8. **Commit**: Stage your changed files and create a descriptive git commit. Use a conventional commit message (e.g., fix: ..., feat: ...).
|
|
50
|
+
9. **Push**: Push your branch to the remote.
|
|
51
|
+
10. **Create PR**: Create a pull request that links back to the issue (e.g., "Closes #ISSUE").
|
|
52
|
+
|
|
53
|
+
### Phase 3: PR Readiness (you MUST complete this — do NOT skip)
|
|
54
|
+
After creating the PR, you must ensure it is ready to merge.
|
|
55
|
+
|
|
56
|
+
11. **Check for merge conflicts**: Verify the PR has no merge conflicts. If it does, fetch and merge the main branch, resolve conflicts, rebuild, commit, and push.
|
|
57
|
+
12. **Wait for CI**: Wait for all CI checks to complete. If any check fails, read the logs, fix the issue, commit, push, and repeat.
|
|
58
|
+
13. **Address code review comments**: Check for automated code review comments. For each unresolved comment: read the suggestion, fix the code or dismiss with an explanation, reply to the comment, and resolve the thread. After fixing, commit, push, and check again. Repeat until all review threads are resolved.
|
|
59
|
+
14. **Post finding**: Use finding_post to summarize what you did and any key decisions.
|
|
60
|
+
|
|
61
|
+
IMPORTANT: The PR is the deliverable, but a PR with failing CI or unresolved review comments is NOT done. You MUST complete Phase 3. Do NOT go to "waiting for input" until CI is green AND all review threads are resolved.'
|
|
62
|
+
WHERE id = 'claude-code' AND system_prompt = '' AND name = 'Claude Code'
|
|
63
|
+
`);
|
|
64
|
+
conn.exec(`
|
|
65
|
+
UPDATE personas
|
|
66
|
+
SET name = 'Software Engineer',
|
|
67
|
+
description = 'Default agent persona for software engineering tasks'
|
|
68
|
+
WHERE id = 'claude-code'
|
|
69
|
+
AND name = 'Claude Code'
|
|
70
|
+
AND NOT EXISTS (
|
|
71
|
+
SELECT 1 FROM personas
|
|
72
|
+
WHERE name = 'Software Engineer'
|
|
73
|
+
AND id != 'claude-code'
|
|
74
|
+
)
|
|
75
|
+
`);
|
|
76
|
+
// Seed: ensure a System persona exists with the canonical SYSTEM_PERSONA_ID.
|
|
77
|
+
// Copies runtime + model from the seed persona so the FRE choice propagates.
|
|
78
|
+
// Handles name collisions: if a user-created persona named "System" already
|
|
79
|
+
// exists under a different id, reassign it to SYSTEM_PERSONA_ID.
|
|
80
|
+
{
|
|
81
|
+
const existingSystemById = conn
|
|
82
|
+
.prepare("SELECT id FROM personas WHERE id = ?")
|
|
83
|
+
.get(SYSTEM_PERSONA_ID);
|
|
84
|
+
if (!existingSystemById) {
|
|
85
|
+
const seedRow = conn
|
|
86
|
+
.prepare("SELECT runtime, model FROM personas WHERE id = 'claude-code'")
|
|
87
|
+
.get();
|
|
88
|
+
const systemRuntime = seedRow?.runtime || "claude-code";
|
|
89
|
+
const systemModel = seedRow?.model || "sonnet";
|
|
90
|
+
const existingSystemByName = conn
|
|
91
|
+
.prepare("SELECT id FROM personas WHERE name = 'System'")
|
|
92
|
+
.get();
|
|
93
|
+
if (existingSystemByName && existingSystemByName.id !== SYSTEM_PERSONA_ID) {
|
|
94
|
+
// Reassign existing "System" persona to the canonical id and update
|
|
95
|
+
// all stored references atomically so a crash can't leave dangling refs.
|
|
96
|
+
const reassignSystemPersona = conn.transaction((oldId) => {
|
|
97
|
+
conn.prepare("UPDATE personas SET id = ? WHERE id = ?").run(SYSTEM_PERSONA_ID, oldId);
|
|
98
|
+
conn.prepare("UPDATE settings SET value = ? WHERE key = 'default_persona_id' AND value = ?").run(SYSTEM_PERSONA_ID, oldId);
|
|
99
|
+
conn.prepare("UPDATE sessions SET persona_id = ? WHERE persona_id = ?").run(SYSTEM_PERSONA_ID, oldId);
|
|
100
|
+
conn.prepare("UPDATE tasks SET default_persona_id = ? WHERE default_persona_id = ?").run(SYSTEM_PERSONA_ID, oldId);
|
|
101
|
+
conn.prepare("UPDATE workspaces SET default_persona_id = ? WHERE default_persona_id = ?").run(SYSTEM_PERSONA_ID, oldId);
|
|
102
|
+
});
|
|
103
|
+
reassignSystemPersona(existingSystemByName.id);
|
|
104
|
+
}
|
|
105
|
+
else if (!existingSystemByName) {
|
|
106
|
+
conn
|
|
107
|
+
.prepare(`
|
|
108
|
+
INSERT INTO personas (id, name, description, system_prompt, runtime, model, max_turns, type)
|
|
109
|
+
VALUES (?, 'System', 'Central orchestrator persona', ?, ?, ?, 0, 'agent')
|
|
110
|
+
`)
|
|
111
|
+
.run(SYSTEM_PERSONA_ID, [
|
|
112
|
+
"You are the System — the central orchestrator for Grackle, an agent kernel that manages AI coding agents.",
|
|
113
|
+
"",
|
|
114
|
+
"You help the user coordinate work across their development environments. You can:",
|
|
115
|
+
"- Answer questions and have conversations",
|
|
116
|
+
"- Help plan and break down work into tasks",
|
|
117
|
+
"- Create and manage workspaces (project containers tied to environments)",
|
|
118
|
+
"- Create, assign, and monitor tasks executed by AI coding agents",
|
|
119
|
+
"- Share and query findings (knowledge shared between agents)",
|
|
120
|
+
"",
|
|
121
|
+
"When the user describes work to be done:",
|
|
122
|
+
"1. Help them think through the approach",
|
|
123
|
+
"2. Break complex work into discrete, well-scoped tasks",
|
|
124
|
+
"3. Create tasks with clear titles and descriptions that an AI agent can execute independently",
|
|
125
|
+
"4. Start tasks on appropriate environments",
|
|
126
|
+
"5. Monitor progress and report results",
|
|
127
|
+
"",
|
|
128
|
+
"You are always available for conversation. Think of yourself as the user's AI project manager — you coordinate the agents, track progress, and ensure work is organized effectively.",
|
|
129
|
+
"",
|
|
130
|
+
"Keep responses concise and action-oriented. When the user wants something done, bias toward creating and starting tasks rather than lengthy discussion.",
|
|
131
|
+
].join("\n"), systemRuntime, systemModel);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
// Seed: create root task (well-known "system" task) if it doesn't exist.
|
|
136
|
+
conn
|
|
137
|
+
.prepare(`
|
|
138
|
+
INSERT OR IGNORE INTO tasks (id, workspace_id, title, description, status, branch, parent_task_id, depth, can_decompose, default_persona_id)
|
|
139
|
+
VALUES (?, NULL, 'System', '', 'not_started', 'system', '', 0, 1, ?)
|
|
140
|
+
`)
|
|
141
|
+
.run(ROOT_TASK_ID, SYSTEM_PERSONA_ID);
|
|
142
|
+
// Backfill: ensure default_persona_id setting exists for upgrades.
|
|
143
|
+
// Existing installations may have personas but no default_persona_id setting,
|
|
144
|
+
// which would cause resolvePersona() to fail when no persona is explicitly specified.
|
|
145
|
+
const existingDefault = conn
|
|
146
|
+
.prepare("SELECT value FROM settings WHERE key = 'default_persona_id'")
|
|
147
|
+
.get();
|
|
148
|
+
if (!existingDefault) {
|
|
149
|
+
// Prefer the seed persona 'claude-code' if it exists; otherwise fall back
|
|
150
|
+
// to the first persona alphabetically.
|
|
151
|
+
const fallback = (conn.prepare("SELECT id FROM personas WHERE id = 'claude-code'").get() ??
|
|
152
|
+
conn.prepare("SELECT id FROM personas ORDER BY name LIMIT 1").get());
|
|
153
|
+
if (fallback) {
|
|
154
|
+
conn
|
|
155
|
+
.prepare("INSERT OR IGNORE INTO settings (key, value) VALUES ('default_persona_id', ?)")
|
|
156
|
+
.run(fallback.id);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
// Backfill: ensure onboarding_completed setting exists.
|
|
160
|
+
// Fresh installs (no pre-existing environments or personas) get "false" to trigger
|
|
161
|
+
// the setup wizard. Upgrades (pre-existing data) get "true" to skip it.
|
|
162
|
+
// personaCount was captured before the seed insert, so it reflects user-created personas.
|
|
163
|
+
const existingOnboarding = conn
|
|
164
|
+
.prepare("SELECT value FROM settings WHERE key = 'onboarding_completed'")
|
|
165
|
+
.get();
|
|
166
|
+
if (!existingOnboarding) {
|
|
167
|
+
const environmentCount = conn
|
|
168
|
+
.prepare("SELECT COUNT(*) as cnt FROM environments")
|
|
169
|
+
.get();
|
|
170
|
+
const isFreshInstall = environmentCount.cnt === 0 && personaCount.cnt === 0;
|
|
171
|
+
conn
|
|
172
|
+
.prepare("INSERT OR IGNORE INTO settings (key, value) VALUES ('onboarding_completed', ?)")
|
|
173
|
+
.run(isFreshInstall ? "false" : "true");
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=db-seed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"db-seed.js","sourceRoot":"","sources":["../src/db-seed.ts"],"names":[],"mappings":"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"}
|
package/dist/db.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAKxE,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAEtC,iFAAiF;AACjF,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,+CAA+C;AAC/C,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,cAAc,EAAE,CAAC;CACnC;AAED,yFAAyF;AACzF,QAAA,IAAI,MAAM,EAAE,YAAY,CAAC,OAAO,QAAQ,CAAC,GAAG,SAAS,CAAC;AAEtD;;;;;GAKG;AACH,QAAA,IAAI,EAAE,EAAG,qBAAqB,CAAC,OAAO,MAAM,CAAC,GAAG;IAC9C,OAAO,EAAE,YAAY,CAAC,OAAO,QAAQ,CAAC,CAAC;CACxC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAsElD;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,cAAc,CAAC,EAAE,YAAY,CAAC,OAAO,QAAQ,CAAC,GAAG,kBAAkB,
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAEtC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAKxE,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AAEtC,iFAAiF;AACjF,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,+CAA+C;AAC/C,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,cAAc,EAAE,CAAC;CACnC;AAED,yFAAyF;AACzF,QAAA,IAAI,MAAM,EAAE,YAAY,CAAC,OAAO,QAAQ,CAAC,GAAG,SAAS,CAAC;AAEtD;;;;;GAKG;AACH,QAAA,IAAI,EAAE,EAAG,qBAAqB,CAAC,OAAO,MAAM,CAAC,GAAG;IAC9C,OAAO,EAAE,YAAY,CAAC,OAAO,QAAQ,CAAC,CAAC;CACxC,CAAC;AAEF;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAsElD;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,cAAc,CAAC,EAAE,YAAY,CAAC,OAAO,QAAQ,CAAC,GAAG,kBAAkB,CAkd/F;AAED,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,OAAO,EAAE,EAAE,IAAI,OAAO,EAAE,CAAC"}
|
package/dist/db.js
CHANGED
|
@@ -2,7 +2,7 @@ import Database from "better-sqlite3";
|
|
|
2
2
|
import { drizzle } from "drizzle-orm/better-sqlite3";
|
|
3
3
|
import { join } from "node:path";
|
|
4
4
|
import { mkdirSync } from "node:fs";
|
|
5
|
-
import { DB_FILENAME
|
|
5
|
+
import { DB_FILENAME } from "@grackle-ai/common";
|
|
6
6
|
import { grackleHome } from "./paths.js";
|
|
7
7
|
import * as schema from "./schema.js";
|
|
8
8
|
/** Raw better-sqlite3 instance. Available after {@link openDatabase} has been called. */
|
|
@@ -471,170 +471,6 @@ export function initDatabase(sqliteOverride) {
|
|
|
471
471
|
}
|
|
472
472
|
// Migration: add index on workspaces.environment_id for efficient lookup
|
|
473
473
|
conn.exec("CREATE INDEX IF NOT EXISTS idx_workspaces_environment_id ON workspaces(environment_id)");
|
|
474
|
-
// Seed: create default "Claude Code" persona if no personas exist
|
|
475
|
-
const personaCount = conn
|
|
476
|
-
.prepare("SELECT COUNT(*) as cnt FROM personas")
|
|
477
|
-
.get();
|
|
478
|
-
if (personaCount.cnt === 0) {
|
|
479
|
-
conn.exec(`
|
|
480
|
-
INSERT INTO personas (id, name, description, system_prompt, runtime, model, max_turns)
|
|
481
|
-
VALUES (
|
|
482
|
-
'claude-code',
|
|
483
|
-
'Claude Code',
|
|
484
|
-
'Default agent persona using Claude Code runtime',
|
|
485
|
-
'',
|
|
486
|
-
'claude-code',
|
|
487
|
-
'sonnet',
|
|
488
|
-
0
|
|
489
|
-
)
|
|
490
|
-
`);
|
|
491
|
-
conn.exec(`
|
|
492
|
-
INSERT OR IGNORE INTO settings (key, value)
|
|
493
|
-
VALUES ('default_persona_id', 'claude-code')
|
|
494
|
-
`);
|
|
495
|
-
}
|
|
496
|
-
// Migration: update the seed persona with the completion checklist and clearer name.
|
|
497
|
-
// Guards: only run when the system_prompt is still empty and name is still "Claude Code"
|
|
498
|
-
// so we don't overwrite user customizations.
|
|
499
|
-
conn.exec(`
|
|
500
|
-
UPDATE personas SET system_prompt = 'When you have finished implementing the task, you MUST complete ALL steps below in order. Do NOT stop early or go to "waiting for input" until every step is done.
|
|
501
|
-
|
|
502
|
-
### Phase 1: Implement & Test
|
|
503
|
-
1. **Implement** the task requirements.
|
|
504
|
-
2. **Write tests**: Write unit tests, integration tests, or E2E specs as appropriate. Every implementation MUST include tests unless the change is purely cosmetic or untestable (state why if skipping).
|
|
505
|
-
3. **Build**: Run the repository''s build command and fix any errors.
|
|
506
|
-
4. **Run tests**: Run relevant tests and ensure they pass.
|
|
507
|
-
5. **Manual test**: If the change affects UI, visually verify. If it affects CLI or API, run the commands manually. State explicitly if skipping and why.
|
|
508
|
-
|
|
509
|
-
### Phase 2: Create PR
|
|
510
|
-
6. **Sync with main**: Fetch and merge the main branch. If merge conflicts arise, resolve them, stage, and commit the merge. NEVER rebase.
|
|
511
|
-
7. **Rebuild after merge**: If the merge brought in new commits, rebuild to catch integration conflicts.
|
|
512
|
-
8. **Commit**: Stage your changed files and create a descriptive git commit. Use a conventional commit message (e.g., fix: ..., feat: ...).
|
|
513
|
-
9. **Push**: Push your branch to the remote.
|
|
514
|
-
10. **Create PR**: Create a pull request that links back to the issue (e.g., "Closes #ISSUE").
|
|
515
|
-
|
|
516
|
-
### Phase 3: PR Readiness (you MUST complete this — do NOT skip)
|
|
517
|
-
After creating the PR, you must ensure it is ready to merge.
|
|
518
|
-
|
|
519
|
-
11. **Check for merge conflicts**: Verify the PR has no merge conflicts. If it does, fetch and merge the main branch, resolve conflicts, rebuild, commit, and push.
|
|
520
|
-
12. **Wait for CI**: Wait for all CI checks to complete. If any check fails, read the logs, fix the issue, commit, push, and repeat.
|
|
521
|
-
13. **Address code review comments**: Check for automated code review comments. For each unresolved comment: read the suggestion, fix the code or dismiss with an explanation, reply to the comment, and resolve the thread. After fixing, commit, push, and check again. Repeat until all review threads are resolved.
|
|
522
|
-
14. **Post finding**: Use finding_post to summarize what you did and any key decisions.
|
|
523
|
-
|
|
524
|
-
IMPORTANT: The PR is the deliverable, but a PR with failing CI or unresolved review comments is NOT done. You MUST complete Phase 3. Do NOT go to "waiting for input" until CI is green AND all review threads are resolved.'
|
|
525
|
-
WHERE id = 'claude-code' AND system_prompt = '' AND name = 'Claude Code'
|
|
526
|
-
`);
|
|
527
|
-
conn.exec(`
|
|
528
|
-
UPDATE personas
|
|
529
|
-
SET name = 'Software Engineer',
|
|
530
|
-
description = 'Default agent persona for software engineering tasks'
|
|
531
|
-
WHERE id = 'claude-code'
|
|
532
|
-
AND name = 'Claude Code'
|
|
533
|
-
AND NOT EXISTS (
|
|
534
|
-
SELECT 1 FROM personas
|
|
535
|
-
WHERE name = 'Software Engineer'
|
|
536
|
-
AND id != 'claude-code'
|
|
537
|
-
)
|
|
538
|
-
`);
|
|
539
|
-
// Seed: ensure a System persona exists with the canonical SYSTEM_PERSONA_ID.
|
|
540
|
-
// Copies runtime + model from the seed persona so the FRE choice propagates.
|
|
541
|
-
// Handles name collisions: if a user-created persona named "System" already
|
|
542
|
-
// exists under a different id, reassign it to SYSTEM_PERSONA_ID.
|
|
543
|
-
{
|
|
544
|
-
const existingSystemById = conn
|
|
545
|
-
.prepare("SELECT id FROM personas WHERE id = ?")
|
|
546
|
-
.get(SYSTEM_PERSONA_ID);
|
|
547
|
-
if (!existingSystemById) {
|
|
548
|
-
const seedRow = conn
|
|
549
|
-
.prepare("SELECT runtime, model FROM personas WHERE id = 'claude-code'")
|
|
550
|
-
.get();
|
|
551
|
-
const systemRuntime = seedRow?.runtime || "claude-code";
|
|
552
|
-
const systemModel = seedRow?.model || "sonnet";
|
|
553
|
-
const existingSystemByName = conn
|
|
554
|
-
.prepare("SELECT id FROM personas WHERE name = 'System'")
|
|
555
|
-
.get();
|
|
556
|
-
if (existingSystemByName && existingSystemByName.id !== SYSTEM_PERSONA_ID) {
|
|
557
|
-
// Reassign existing "System" persona to the canonical id and update
|
|
558
|
-
// all stored references atomically so a crash can't leave dangling refs.
|
|
559
|
-
const reassignSystemPersona = conn.transaction((oldId) => {
|
|
560
|
-
conn.prepare("UPDATE personas SET id = ? WHERE id = ?").run(SYSTEM_PERSONA_ID, oldId);
|
|
561
|
-
conn.prepare("UPDATE settings SET value = ? WHERE key = 'default_persona_id' AND value = ?").run(SYSTEM_PERSONA_ID, oldId);
|
|
562
|
-
conn.prepare("UPDATE sessions SET persona_id = ? WHERE persona_id = ?").run(SYSTEM_PERSONA_ID, oldId);
|
|
563
|
-
conn.prepare("UPDATE tasks SET default_persona_id = ? WHERE default_persona_id = ?").run(SYSTEM_PERSONA_ID, oldId);
|
|
564
|
-
conn.prepare("UPDATE workspaces SET default_persona_id = ? WHERE default_persona_id = ?").run(SYSTEM_PERSONA_ID, oldId);
|
|
565
|
-
});
|
|
566
|
-
reassignSystemPersona(existingSystemByName.id);
|
|
567
|
-
}
|
|
568
|
-
else if (!existingSystemByName) {
|
|
569
|
-
conn
|
|
570
|
-
.prepare(`
|
|
571
|
-
INSERT INTO personas (id, name, description, system_prompt, runtime, model, max_turns, type)
|
|
572
|
-
VALUES (?, 'System', 'Central orchestrator persona', ?, ?, ?, 0, 'agent')
|
|
573
|
-
`)
|
|
574
|
-
.run(SYSTEM_PERSONA_ID, [
|
|
575
|
-
"You are the System — the central orchestrator for Grackle, an agent kernel that manages AI coding agents.",
|
|
576
|
-
"",
|
|
577
|
-
"You help the user coordinate work across their development environments. You can:",
|
|
578
|
-
"- Answer questions and have conversations",
|
|
579
|
-
"- Help plan and break down work into tasks",
|
|
580
|
-
"- Create and manage workspaces (project containers tied to environments)",
|
|
581
|
-
"- Create, assign, and monitor tasks executed by AI coding agents",
|
|
582
|
-
"- Share and query findings (knowledge shared between agents)",
|
|
583
|
-
"",
|
|
584
|
-
"When the user describes work to be done:",
|
|
585
|
-
"1. Help them think through the approach",
|
|
586
|
-
"2. Break complex work into discrete, well-scoped tasks",
|
|
587
|
-
"3. Create tasks with clear titles and descriptions that an AI agent can execute independently",
|
|
588
|
-
"4. Start tasks on appropriate environments",
|
|
589
|
-
"5. Monitor progress and report results",
|
|
590
|
-
"",
|
|
591
|
-
"You are always available for conversation. Think of yourself as the user's AI project manager — you coordinate the agents, track progress, and ensure work is organized effectively.",
|
|
592
|
-
"",
|
|
593
|
-
"Keep responses concise and action-oriented. When the user wants something done, bias toward creating and starting tasks rather than lengthy discussion.",
|
|
594
|
-
].join("\n"), systemRuntime, systemModel);
|
|
595
|
-
}
|
|
596
|
-
}
|
|
597
|
-
}
|
|
598
|
-
// Seed: create root task (well-known "system" task) if it doesn't exist.
|
|
599
|
-
conn
|
|
600
|
-
.prepare(`
|
|
601
|
-
INSERT OR IGNORE INTO tasks (id, workspace_id, title, description, status, branch, parent_task_id, depth, can_decompose, default_persona_id)
|
|
602
|
-
VALUES (?, NULL, 'System', '', 'not_started', 'system', '', 0, 1, ?)
|
|
603
|
-
`)
|
|
604
|
-
.run(ROOT_TASK_ID, SYSTEM_PERSONA_ID);
|
|
605
|
-
// Backfill: ensure default_persona_id setting exists for upgrades.
|
|
606
|
-
// Existing installations may have personas but no default_persona_id setting,
|
|
607
|
-
// which would cause resolvePersona() to fail when no persona is explicitly specified.
|
|
608
|
-
const existingDefault = conn
|
|
609
|
-
.prepare("SELECT value FROM settings WHERE key = 'default_persona_id'")
|
|
610
|
-
.get();
|
|
611
|
-
if (!existingDefault) {
|
|
612
|
-
// Prefer the seed persona 'claude-code' if it exists; otherwise fall back
|
|
613
|
-
// to the first persona alphabetically.
|
|
614
|
-
const fallback = (conn.prepare("SELECT id FROM personas WHERE id = 'claude-code'").get() ??
|
|
615
|
-
conn.prepare("SELECT id FROM personas ORDER BY name LIMIT 1").get());
|
|
616
|
-
if (fallback) {
|
|
617
|
-
conn
|
|
618
|
-
.prepare("INSERT OR IGNORE INTO settings (key, value) VALUES ('default_persona_id', ?)")
|
|
619
|
-
.run(fallback.id);
|
|
620
|
-
}
|
|
621
|
-
}
|
|
622
|
-
// Backfill: ensure onboarding_completed setting exists.
|
|
623
|
-
// Fresh installs (no pre-existing environments or personas) get "false" to trigger
|
|
624
|
-
// the setup wizard. Upgrades (pre-existing data) get "true" to skip it.
|
|
625
|
-
// personaCount was captured before the seed insert, so it reflects user-created personas.
|
|
626
|
-
const existingOnboarding = conn
|
|
627
|
-
.prepare("SELECT value FROM settings WHERE key = 'onboarding_completed'")
|
|
628
|
-
.get();
|
|
629
|
-
if (!existingOnboarding) {
|
|
630
|
-
const environmentCount = conn
|
|
631
|
-
.prepare("SELECT COUNT(*) as cnt FROM environments")
|
|
632
|
-
.get();
|
|
633
|
-
const isFreshInstall = environmentCount.cnt === 0 && personaCount.cnt === 0;
|
|
634
|
-
conn
|
|
635
|
-
.prepare("INSERT OR IGNORE INTO settings (key, value) VALUES ('onboarding_completed', ?)")
|
|
636
|
-
.run(isFreshInstall ? "false" : "true");
|
|
637
|
-
}
|
|
638
474
|
return { migrationErrors };
|
|
639
475
|
}
|
|
640
476
|
export { sqlite };
|
package/dist/db.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
|
package/dist/finding-store.d.ts
CHANGED
|
@@ -4,6 +4,4 @@ export type { FindingRow };
|
|
|
4
4
|
export declare function postFinding(id: string, workspaceId: string, taskId: string, sessionId: string, category: string, title: string, content: string, tags: string[]): void;
|
|
5
5
|
/** Query findings for a workspace, optionally filtering by categories and tags. */
|
|
6
6
|
export declare function queryFindings(workspaceId: string, categories?: string[], tags?: string[], limit?: number): FindingRow[];
|
|
7
|
-
/** Build a summarized text context of recent findings for a workspace. */
|
|
8
|
-
export declare function buildFindingsContext(workspaceId: string): string;
|
|
9
7
|
//# sourceMappingURL=finding-store.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finding-store.d.ts","sourceRoot":"","sources":["../src/finding-store.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAIxD,YAAY,EAAE,UAAU,EAAE,CAAC;AAE3B,mCAAmC;AACnC,wBAAgB,WAAW,CACzB,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,GACb,IAAI,CAWN;AAED,mFAAmF;AACnF,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,EAAE,EACrB,IAAI,CAAC,EAAE,MAAM,EAAE,EACf,KAAK,CAAC,EAAE,MAAM,GACb,UAAU,EAAE,CA8Bd
|
|
1
|
+
{"version":3,"file":"finding-store.d.ts","sourceRoot":"","sources":["../src/finding-store.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAIxD,YAAY,EAAE,UAAU,EAAE,CAAC;AAE3B,mCAAmC;AACnC,wBAAgB,WAAW,CACzB,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,GACb,IAAI,CAWN;AAED,mFAAmF;AACnF,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,EAAE,EACrB,IAAI,CAAC,EAAE,MAAM,EAAE,EACf,KAAK,CAAC,EAAE,MAAM,GACb,UAAU,EAAE,CA8Bd"}
|
package/dist/finding-store.js
CHANGED
|
@@ -42,27 +42,4 @@ export function queryFindings(workspaceId, categories, tags, limit) {
|
|
|
42
42
|
}
|
|
43
43
|
return results;
|
|
44
44
|
}
|
|
45
|
-
/** Build a summarized text context of recent findings for a workspace. */
|
|
46
|
-
export function buildFindingsContext(workspaceId) {
|
|
47
|
-
const allFindings = queryFindings(workspaceId, undefined, undefined, 20);
|
|
48
|
-
if (allFindings.length === 0) {
|
|
49
|
-
return "";
|
|
50
|
-
}
|
|
51
|
-
const lines = ["## Workspace Findings (shared knowledge from other agents)\n"];
|
|
52
|
-
let totalChars = lines[0].length;
|
|
53
|
-
const MAX_CHARS = 8000;
|
|
54
|
-
const MAX_PER_FINDING = 500;
|
|
55
|
-
for (const f of allFindings) {
|
|
56
|
-
const content = f.content.length > MAX_PER_FINDING
|
|
57
|
-
? f.content.slice(0, MAX_PER_FINDING) + "..."
|
|
58
|
-
: f.content;
|
|
59
|
-
const entry = `### [${f.category}] ${f.title}\n${content}\n`;
|
|
60
|
-
if (totalChars + entry.length > MAX_CHARS) {
|
|
61
|
-
break;
|
|
62
|
-
}
|
|
63
|
-
lines.push(entry);
|
|
64
|
-
totalChars += entry.length;
|
|
65
|
-
}
|
|
66
|
-
return lines.join("\n");
|
|
67
|
-
}
|
|
68
45
|
//# sourceMappingURL=finding-store.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"finding-store.js","sourceRoot":"","sources":["../src/finding-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAmB,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAIvD,mCAAmC;AACnC,MAAM,UAAU,WAAW,CACzB,EAAU,EACV,WAAmB,EACnB,MAAc,EACd,SAAiB,EACjB,QAAgB,EAChB,KAAa,EACb,OAAe,EACf,IAAc;IAEd,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;QACzB,EAAE;QACF,WAAW;QACX,MAAM;QACN,SAAS;QACT,QAAQ;QACR,KAAK;QACL,OAAO;QACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC,GAAG,EAAE,CAAC;AACX,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,aAAa,CAC3B,WAAmB,EACnB,UAAqB,EACrB,IAAe,EACf,KAAc;IAEd,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;IAE9C,IAAI,OAAqB,CAAC;IAC1B,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,OAAO,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;aACjC,KAAK,CAAC,GAAG,CACR,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,EACrC,GAAG,CAAA,GAAG,QAAQ,CAAC,QAAQ,oCAAoC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAC1F,CAAC;aACD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;aACjC,KAAK,CAAC,UAAU,CAAC;aACjB,GAAG,EAAE,CAAC;IACX,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;aACjC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;aAC5C,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;aACjC,KAAK,CAAC,UAAU,CAAC;aACjB,GAAG,EAAE,CAAC;IACX,CAAC;IAED,8CAA8C;IAC9C,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YAC7B,MAAM,OAAO,GAAG,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC
|
|
1
|
+
{"version":3,"file":"finding-store.js","sourceRoot":"","sources":["../src/finding-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,QAAQ,EAAmB,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAIvD,mCAAmC;AACnC,MAAM,UAAU,WAAW,CACzB,EAAU,EACV,WAAmB,EACnB,MAAc,EACd,SAAiB,EACjB,QAAgB,EAChB,KAAa,EACb,OAAe,EACf,IAAc;IAEd,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;QACzB,EAAE;QACF,WAAW;QACX,MAAM;QACN,SAAS;QACT,QAAQ;QACR,KAAK;QACL,OAAO;QACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;KAC3B,CAAC,CAAC,GAAG,EAAE,CAAC;AACX,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,aAAa,CAC3B,WAAmB,EACnB,UAAqB,EACrB,IAAe,EACf,KAAc;IAEd,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC;IAE9C,IAAI,OAAqB,CAAC;IAC1B,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,OAAO,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;aACjC,KAAK,CAAC,GAAG,CACR,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,EACrC,GAAG,CAAA,GAAG,QAAQ,CAAC,QAAQ,oCAAoC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAC1F,CAAC;aACD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;aACjC,KAAK,CAAC,UAAU,CAAC;aACjB,GAAG,EAAE,CAAC;IACX,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;aACjC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;aAC5C,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;aACjC,KAAK,CAAC,UAAU,CAAC;aACjB,GAAG,EAAE,CAAC;IACX,CAAC;IAED,8CAA8C;IAC9C,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;YAC7B,MAAM,OAAO,GAAG,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grpc-service.d.ts","sourceRoot":"","sources":["../src/grpc-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"grpc-service.d.ts","sourceRoot":"","sources":["../src/grpc-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAkG7E;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAYvD;AAsLD,gFAAgF;AAChF,wBAAgB,mBAAmB,CACjC,UAAU,EAAE;IACV,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB,EAAE,GACF,MAAM,CAUR;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAczE;AAED,iFAAiF;AACjF,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CAohDjE"}
|
package/dist/grpc-service.js
CHANGED
|
@@ -7,7 +7,8 @@ import * as sessionStore from "./session-store.js";
|
|
|
7
7
|
import * as adapterManager from "./adapter-manager.js";
|
|
8
8
|
import { reconnectOrProvision } from "@grackle-ai/adapter-sdk";
|
|
9
9
|
import * as streamHub from "./stream-hub.js";
|
|
10
|
-
import * as
|
|
10
|
+
import * as tokenStore from "./token-store.js";
|
|
11
|
+
import * as tokenPush from "./token-push.js";
|
|
11
12
|
import * as workspaceStore from "./workspace-store.js";
|
|
12
13
|
import * as taskStore from "./task-store.js";
|
|
13
14
|
import * as findingStore from "./finding-store.js";
|
|
@@ -347,7 +348,7 @@ export function registerGrackleRoutes(router) {
|
|
|
347
348
|
const conn = await adapter.connect(req.id, config, powerlineToken);
|
|
348
349
|
adapterManager.setConnection(req.id, conn);
|
|
349
350
|
// Push stored tokens to newly connected environment
|
|
350
|
-
await
|
|
351
|
+
await tokenPush.pushToEnv(req.id);
|
|
351
352
|
envRegistry.updateEnvironmentStatus(req.id, "connected");
|
|
352
353
|
envRegistry.markBootstrapped(req.id);
|
|
353
354
|
emit("environment.changed", {});
|
|
@@ -475,7 +476,7 @@ export function registerGrackleRoutes(router) {
|
|
|
475
476
|
}
|
|
476
477
|
// Push fresh credentials before spawning (best-effort).
|
|
477
478
|
// For local envs, skip file tokens — the PowerLine is on the same machine.
|
|
478
|
-
await
|
|
479
|
+
await tokenPush.refreshTokensForTask(req.environmentId, runtime, env.adapterType === "local" ? { excludeFileTokens: true } : undefined);
|
|
479
480
|
processEventStream(conn.client.spawn(powerlineReq), {
|
|
480
481
|
sessionId,
|
|
481
482
|
logPath,
|
|
@@ -740,7 +741,7 @@ export function registerGrackleRoutes(router) {
|
|
|
740
741
|
}
|
|
741
742
|
},
|
|
742
743
|
async setToken(req) {
|
|
743
|
-
|
|
744
|
+
tokenStore.setToken({
|
|
744
745
|
name: req.name,
|
|
745
746
|
type: req.type,
|
|
746
747
|
envVar: req.envVar,
|
|
@@ -748,10 +749,11 @@ export function registerGrackleRoutes(router) {
|
|
|
748
749
|
value: req.value,
|
|
749
750
|
expiresAt: req.expiresAt,
|
|
750
751
|
});
|
|
752
|
+
await tokenPush.pushToAll();
|
|
751
753
|
return create(grackle.EmptySchema, {});
|
|
752
754
|
},
|
|
753
755
|
async listTokens() {
|
|
754
|
-
const items =
|
|
756
|
+
const items = tokenStore.listTokens();
|
|
755
757
|
return create(grackle.TokenListSchema, {
|
|
756
758
|
tokens: items.map((t) => create(grackle.TokenInfoSchema, {
|
|
757
759
|
name: t.name,
|
|
@@ -763,7 +765,8 @@ export function registerGrackleRoutes(router) {
|
|
|
763
765
|
});
|
|
764
766
|
},
|
|
765
767
|
async deleteToken(req) {
|
|
766
|
-
|
|
768
|
+
tokenStore.deleteToken(req.name);
|
|
769
|
+
await tokenPush.pushToAll();
|
|
767
770
|
return create(grackle.EmptySchema, {});
|
|
768
771
|
},
|
|
769
772
|
// ─── Credential Providers ─────────────────────────────────
|
|
@@ -1038,7 +1041,7 @@ export function registerGrackleRoutes(router) {
|
|
|
1038
1041
|
emit("task.started", { taskId: task.id, sessionId, workspaceId: task.workspaceId || "" });
|
|
1039
1042
|
// Re-push stored tokens + provider credentials (scoped to runtime) so they're fresh for this session.
|
|
1040
1043
|
// For local envs, skip file tokens — the PowerLine is on the same machine.
|
|
1041
|
-
await
|
|
1044
|
+
await tokenPush.refreshTokensForTask(environmentId, runtime, env?.adapterType === "local" ? { excludeFileTokens: true } : undefined);
|
|
1042
1045
|
const mcpServersJson = personaMcpServersToJson(persona);
|
|
1043
1046
|
const useWorktrees = workspace?.useWorktrees ?? false;
|
|
1044
1047
|
if (!useWorktrees) {
|