@grackle-ai/plugin-core 0.96.3
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/codespace-handlers.d.ts +6 -0
- package/dist/codespace-handlers.d.ts.map +1 -0
- package/dist/codespace-handlers.js +66 -0
- package/dist/codespace-handlers.js.map +1 -0
- package/dist/cron-phase.d.ts +46 -0
- package/dist/cron-phase.d.ts.map +1 -0
- package/dist/cron-phase.js +88 -0
- package/dist/cron-phase.js.map +1 -0
- package/dist/dispatch-phase.d.ts +46 -0
- package/dist/dispatch-phase.d.ts.map +1 -0
- package/dist/dispatch-phase.js +99 -0
- package/dist/dispatch-phase.js.map +1 -0
- package/dist/environment-handlers.d.ts +16 -0
- package/dist/environment-handlers.d.ts.map +1 -0
- package/dist/environment-handlers.js +255 -0
- package/dist/environment-handlers.js.map +1 -0
- package/dist/environment-reconciliation.d.ts +35 -0
- package/dist/environment-reconciliation.d.ts.map +1 -0
- package/dist/environment-reconciliation.js +74 -0
- package/dist/environment-reconciliation.js.map +1 -0
- package/dist/escalation-handlers.d.ts +8 -0
- package/dist/escalation-handlers.d.ts.map +1 -0
- package/dist/escalation-handlers.js +60 -0
- package/dist/escalation-handlers.js.map +1 -0
- package/dist/finding-handlers.d.ts +8 -0
- package/dist/finding-handlers.d.ts.map +1 -0
- package/dist/finding-handlers.js +38 -0
- package/dist/finding-handlers.js.map +1 -0
- package/dist/grpc-proto-converters.d.ts +31 -0
- package/dist/grpc-proto-converters.d.ts.map +1 -0
- package/dist/grpc-proto-converters.js +222 -0
- package/dist/grpc-proto-converters.js.map +1 -0
- package/dist/grpc-service.d.ts +21 -0
- package/dist/grpc-service.d.ts.map +1 -0
- package/dist/grpc-service.js +50 -0
- package/dist/grpc-service.js.map +1 -0
- package/dist/grpc-shared.d.ts +22 -0
- package/dist/grpc-shared.d.ts.map +1 -0
- package/dist/grpc-shared.js +68 -0
- package/dist/grpc-shared.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/knowledge-handlers.d.ts +12 -0
- package/dist/knowledge-handlers.d.ts.map +1 -0
- package/dist/knowledge-handlers.js +149 -0
- package/dist/knowledge-handlers.js.map +1 -0
- package/dist/lifecycle-cleanup.d.ts +13 -0
- package/dist/lifecycle-cleanup.d.ts.map +1 -0
- package/dist/lifecycle-cleanup.js +35 -0
- package/dist/lifecycle-cleanup.js.map +1 -0
- package/dist/lifecycle.d.ts +28 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +132 -0
- package/dist/lifecycle.js.map +1 -0
- package/dist/orphan-phase.d.ts +27 -0
- package/dist/orphan-phase.d.ts.map +1 -0
- package/dist/orphan-phase.js +69 -0
- package/dist/orphan-phase.js.map +1 -0
- package/dist/persona-handlers.d.ts +12 -0
- package/dist/persona-handlers.d.ts.map +1 -0
- package/dist/persona-handlers.js +156 -0
- package/dist/persona-handlers.js.map +1 -0
- package/dist/root-task-boot.d.ts +67 -0
- package/dist/root-task-boot.d.ts.map +1 -0
- package/dist/root-task-boot.js +234 -0
- package/dist/root-task-boot.js.map +1 -0
- package/dist/schedule-expression.d.ts +43 -0
- package/dist/schedule-expression.d.ts.map +1 -0
- package/dist/schedule-expression.js +105 -0
- package/dist/schedule-expression.js.map +1 -0
- package/dist/schedule-handlers.d.ts +12 -0
- package/dist/schedule-handlers.d.ts.map +1 -0
- package/dist/schedule-handlers.js +122 -0
- package/dist/schedule-handlers.js.map +1 -0
- package/dist/session-handlers.d.ts +40 -0
- package/dist/session-handlers.d.ts.map +1 -0
- package/dist/session-handlers.js +610 -0
- package/dist/session-handlers.js.map +1 -0
- package/dist/settings-handlers.d.ts +10 -0
- package/dist/settings-handlers.d.ts.map +1 -0
- package/dist/settings-handlers.js +80 -0
- package/dist/settings-handlers.js.map +1 -0
- package/dist/signals/escalation-auto.d.ts +20 -0
- package/dist/signals/escalation-auto.d.ts.map +1 -0
- package/dist/signals/escalation-auto.js +126 -0
- package/dist/signals/escalation-auto.js.map +1 -0
- package/dist/signals/orphan-reparent.d.ts +31 -0
- package/dist/signals/orphan-reparent.d.ts.map +1 -0
- package/dist/signals/orphan-reparent.js +175 -0
- package/dist/signals/orphan-reparent.js.map +1 -0
- package/dist/signals/sigchld.d.ts +12 -0
- package/dist/signals/sigchld.d.ts.map +1 -0
- package/dist/signals/sigchld.js +177 -0
- package/dist/signals/sigchld.js.map +1 -0
- package/dist/task-handlers.d.ts +22 -0
- package/dist/task-handlers.d.ts.map +1 -0
- package/dist/task-handlers.js +517 -0
- package/dist/task-handlers.js.map +1 -0
- package/dist/test-utils/integration-setup.d.ts +11 -0
- package/dist/test-utils/integration-setup.d.ts.map +1 -0
- package/dist/test-utils/integration-setup.js +26 -0
- package/dist/test-utils/integration-setup.js.map +1 -0
- package/dist/test-utils/mock-database.d.ts +152 -0
- package/dist/test-utils/mock-database.d.ts.map +1 -0
- package/dist/test-utils/mock-database.js +169 -0
- package/dist/test-utils/mock-database.js.map +1 -0
- package/dist/token-handlers.d.ts +12 -0
- package/dist/token-handlers.d.ts.map +1 -0
- package/dist/token-handlers.js +85 -0
- package/dist/token-handlers.js.map +1 -0
- package/dist/tsdoc-metadata.json +11 -0
- package/dist/utils/format-gh-error.d.ts +6 -0
- package/dist/utils/format-gh-error.d.ts.map +1 -0
- package/dist/utils/format-gh-error.js +30 -0
- package/dist/utils/format-gh-error.js.map +1 -0
- package/dist/workspace-handlers.d.ts +16 -0
- package/dist/workspace-handlers.d.ts.map +1 -0
- package/dist/workspace-handlers.js +146 -0
- package/dist/workspace-handlers.js.map +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { ConnectError, Code } from "@connectrpc/connect";
|
|
2
|
+
import { create } from "@bufbuild/protobuf";
|
|
3
|
+
import { grackle } from "@grackle-ai/common";
|
|
4
|
+
import { workspaceStore, envRegistry, workspaceEnvironmentLinkStore, slugify } from "@grackle-ai/database";
|
|
5
|
+
import { v4 as uuid } from "uuid";
|
|
6
|
+
import { emit } from "@grackle-ai/core";
|
|
7
|
+
import { logger } from "@grackle-ai/core";
|
|
8
|
+
import { workspaceRowToProto } from "./grpc-proto-converters.js";
|
|
9
|
+
/** List all workspaces, optionally filtered by environment. */
|
|
10
|
+
export async function listWorkspaces(req) {
|
|
11
|
+
const rows = workspaceStore.listWorkspaces(req.environmentId || undefined);
|
|
12
|
+
// Batch-fetch linked environment IDs to avoid N+1 queries
|
|
13
|
+
const linkedEnvMap = workspaceEnvironmentLinkStore.getLinkedEnvironmentIdsByWorkspaces(rows.map((r) => r.id));
|
|
14
|
+
return create(grackle.WorkspaceListSchema, {
|
|
15
|
+
workspaces: rows.map((row) => workspaceRowToProto(row, linkedEnvMap)),
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
/** Create a new workspace. */
|
|
19
|
+
export async function createWorkspace(req) {
|
|
20
|
+
if (!req.name) {
|
|
21
|
+
throw new ConnectError("name is required", Code.InvalidArgument);
|
|
22
|
+
}
|
|
23
|
+
if (!req.environmentId) {
|
|
24
|
+
throw new ConnectError("environment_id is required", Code.InvalidArgument);
|
|
25
|
+
}
|
|
26
|
+
const env = envRegistry.getEnvironment(req.environmentId);
|
|
27
|
+
if (!env) {
|
|
28
|
+
throw new ConnectError(`Environment not found: ${req.environmentId}`, Code.NotFound);
|
|
29
|
+
}
|
|
30
|
+
let id = slugify(req.name) || uuid().slice(0, 8);
|
|
31
|
+
// If slug already exists (e.g. archived workspace), append a short suffix
|
|
32
|
+
if (workspaceStore.getWorkspace(id)) {
|
|
33
|
+
id = `${id}-${uuid().slice(0, 4)}`;
|
|
34
|
+
}
|
|
35
|
+
if ((req.tokenBudget ?? 0) < 0 || (req.costBudgetMillicents ?? 0) < 0) {
|
|
36
|
+
throw new ConnectError("Budget values must be >= 0", Code.InvalidArgument);
|
|
37
|
+
}
|
|
38
|
+
// useWorktrees defaults to true when not specified
|
|
39
|
+
const useWorktrees = req.useWorktrees ?? true;
|
|
40
|
+
workspaceStore.createWorkspace(id, req.name, req.description, req.repoUrl, req.environmentId, useWorktrees, req.workingDirectory ?? "", req.defaultPersonaId ?? "", req.tokenBudget ?? 0, req.costBudgetMillicents ?? 0);
|
|
41
|
+
emit("workspace.created", { workspaceId: id });
|
|
42
|
+
logger.info({ workspaceId: id }, "Workspace created");
|
|
43
|
+
const row = workspaceStore.getWorkspace(id);
|
|
44
|
+
return workspaceRowToProto(row);
|
|
45
|
+
}
|
|
46
|
+
/** Get a workspace by ID. */
|
|
47
|
+
export async function getWorkspace(req) {
|
|
48
|
+
const row = workspaceStore.getWorkspace(req.id);
|
|
49
|
+
if (!row) {
|
|
50
|
+
throw new ConnectError(`Workspace not found: ${req.id}`, Code.NotFound);
|
|
51
|
+
}
|
|
52
|
+
return workspaceRowToProto(row);
|
|
53
|
+
}
|
|
54
|
+
/** Archive a workspace. */
|
|
55
|
+
export async function archiveWorkspace(req) {
|
|
56
|
+
workspaceStore.archiveWorkspace(req.id);
|
|
57
|
+
emit("workspace.archived", { workspaceId: req.id });
|
|
58
|
+
logger.info({ workspaceId: req.id }, "Workspace archived");
|
|
59
|
+
return create(grackle.EmptySchema, {});
|
|
60
|
+
}
|
|
61
|
+
/** Update workspace properties. */
|
|
62
|
+
export async function updateWorkspace(req) {
|
|
63
|
+
const existing = workspaceStore.getWorkspace(req.id);
|
|
64
|
+
if (!existing) {
|
|
65
|
+
throw new ConnectError(`Workspace not found: ${req.id}`, Code.NotFound);
|
|
66
|
+
}
|
|
67
|
+
if (req.name?.trim() === "") {
|
|
68
|
+
throw new ConnectError("Workspace name cannot be empty", Code.InvalidArgument);
|
|
69
|
+
}
|
|
70
|
+
if (req.repoUrl !== undefined && req.repoUrl !== "" && !/^https?:\/\//i.test(req.repoUrl)) {
|
|
71
|
+
throw new ConnectError("Repository URL must use http or https scheme", Code.InvalidArgument);
|
|
72
|
+
}
|
|
73
|
+
if (req.environmentId !== undefined) {
|
|
74
|
+
const env = envRegistry.getEnvironment(req.environmentId);
|
|
75
|
+
if (!env) {
|
|
76
|
+
throw new ConnectError(`Environment not found: ${req.environmentId}`, Code.NotFound);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if ((req.tokenBudget !== undefined && req.tokenBudget < 0) || (req.costBudgetMillicents !== undefined && req.costBudgetMillicents < 0)) {
|
|
80
|
+
throw new ConnectError("Budget values must be >= 0", Code.InvalidArgument);
|
|
81
|
+
}
|
|
82
|
+
const row = workspaceStore.updateWorkspace(req.id, {
|
|
83
|
+
name: req.name !== undefined ? req.name.trim() : undefined,
|
|
84
|
+
description: req.description,
|
|
85
|
+
repoUrl: req.repoUrl,
|
|
86
|
+
environmentId: req.environmentId,
|
|
87
|
+
useWorktrees: req.useWorktrees ?? undefined,
|
|
88
|
+
workingDirectory: req.workingDirectory,
|
|
89
|
+
defaultPersonaId: req.defaultPersonaId,
|
|
90
|
+
tokenBudget: req.tokenBudget,
|
|
91
|
+
costBudgetMillicents: req.costBudgetMillicents,
|
|
92
|
+
});
|
|
93
|
+
if (!row) {
|
|
94
|
+
throw new ConnectError(`Workspace not found after update: ${req.id}`, Code.NotFound);
|
|
95
|
+
}
|
|
96
|
+
emit("workspace.updated", { workspaceId: req.id });
|
|
97
|
+
return workspaceRowToProto(row);
|
|
98
|
+
}
|
|
99
|
+
/** Link an additional environment to a workspace's pool. */
|
|
100
|
+
export async function linkEnvironment(req) {
|
|
101
|
+
const workspace = workspaceStore.getWorkspace(req.workspaceId);
|
|
102
|
+
if (!workspace) {
|
|
103
|
+
throw new ConnectError(`Workspace not found: ${req.workspaceId}`, Code.NotFound);
|
|
104
|
+
}
|
|
105
|
+
const env = envRegistry.getEnvironment(req.environmentId);
|
|
106
|
+
if (!env) {
|
|
107
|
+
throw new ConnectError(`Environment not found: ${req.environmentId}`, Code.NotFound);
|
|
108
|
+
}
|
|
109
|
+
if (workspace.environmentId === req.environmentId) {
|
|
110
|
+
throw new ConnectError("Cannot link the primary environment — it is already in the pool", Code.InvalidArgument);
|
|
111
|
+
}
|
|
112
|
+
if (workspaceEnvironmentLinkStore.isLinked(req.workspaceId, req.environmentId)) {
|
|
113
|
+
throw new ConnectError(`Environment ${req.environmentId} is already linked to workspace ${req.workspaceId}`, Code.InvalidArgument);
|
|
114
|
+
}
|
|
115
|
+
try {
|
|
116
|
+
workspaceEnvironmentLinkStore.linkEnvironment(req.workspaceId, req.environmentId);
|
|
117
|
+
}
|
|
118
|
+
catch (err) {
|
|
119
|
+
// Handle race condition: concurrent requests may both pass isLinked() check
|
|
120
|
+
// but one hits the unique/PK constraint. Surface as InvalidArgument, not Internal.
|
|
121
|
+
// Narrow to UNIQUE/PRIMARYKEY violations only — FK failures should bubble as-is.
|
|
122
|
+
const message = err instanceof Error ? err.message : "";
|
|
123
|
+
if (/UNIQUE constraint failed|SQLITE_CONSTRAINT_PRIMARYKEY/i.test(message)) {
|
|
124
|
+
throw new ConnectError(`Environment ${req.environmentId} is already linked to workspace ${req.workspaceId}`, Code.InvalidArgument);
|
|
125
|
+
}
|
|
126
|
+
throw err;
|
|
127
|
+
}
|
|
128
|
+
emit("workspace.updated", { workspaceId: req.workspaceId });
|
|
129
|
+
logger.info({ workspaceId: req.workspaceId, environmentId: req.environmentId }, "Environment linked to workspace");
|
|
130
|
+
return workspaceRowToProto(workspace);
|
|
131
|
+
}
|
|
132
|
+
/** Remove a linked environment from a workspace's pool. */
|
|
133
|
+
export async function unlinkEnvironment(req) {
|
|
134
|
+
const workspace = workspaceStore.getWorkspace(req.workspaceId);
|
|
135
|
+
if (!workspace) {
|
|
136
|
+
throw new ConnectError(`Workspace not found: ${req.workspaceId}`, Code.NotFound);
|
|
137
|
+
}
|
|
138
|
+
if (!workspaceEnvironmentLinkStore.isLinked(req.workspaceId, req.environmentId)) {
|
|
139
|
+
throw new ConnectError(`Environment ${req.environmentId} is not linked to workspace ${req.workspaceId}`, Code.NotFound);
|
|
140
|
+
}
|
|
141
|
+
workspaceEnvironmentLinkStore.unlinkEnvironment(req.workspaceId, req.environmentId);
|
|
142
|
+
emit("workspace.updated", { workspaceId: req.workspaceId });
|
|
143
|
+
logger.info({ workspaceId: req.workspaceId, environmentId: req.environmentId }, "Environment unlinked from workspace");
|
|
144
|
+
return workspaceRowToProto(workspace);
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=workspace-handlers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-handlers.js","sourceRoot":"","sources":["../src/workspace-handlers.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@grackle-ai/plugin-core",
|
|
3
|
+
"version": "0.96.3",
|
|
4
|
+
"description": "Core plugin for Grackle — gRPC handlers, reconciliation phases, and event subscribers",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "https://github.com/nick-pape/grackle.git",
|
|
9
|
+
"directory": "packages/plugin-core"
|
|
10
|
+
},
|
|
11
|
+
"keywords": [
|
|
12
|
+
"grackle",
|
|
13
|
+
"plugin",
|
|
14
|
+
"core"
|
|
15
|
+
],
|
|
16
|
+
"homepage": "https://github.com/nick-pape/grackle#readme",
|
|
17
|
+
"bugs": {
|
|
18
|
+
"url": "https://github.com/nick-pape/grackle/issues"
|
|
19
|
+
},
|
|
20
|
+
"engines": {
|
|
21
|
+
"node": ">=22.0.0 <24.0.0"
|
|
22
|
+
},
|
|
23
|
+
"type": "module",
|
|
24
|
+
"main": "dist/index.js",
|
|
25
|
+
"types": "dist/index.d.ts",
|
|
26
|
+
"files": [
|
|
27
|
+
"dist/"
|
|
28
|
+
],
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"@bufbuild/protobuf": "^2.5.0",
|
|
31
|
+
"@connectrpc/connect": "^2.0.0",
|
|
32
|
+
"@connectrpc/connect-node": "^2.0.0",
|
|
33
|
+
"cron-parser": "^4.9.0",
|
|
34
|
+
"pino": "^10.3.1",
|
|
35
|
+
"ulid": "^2.3.0",
|
|
36
|
+
"uuid": "^11.0.0",
|
|
37
|
+
"@grackle-ai/adapter-sdk": "0.96.3",
|
|
38
|
+
"@grackle-ai/auth": "0.96.3",
|
|
39
|
+
"@grackle-ai/common": "0.96.3",
|
|
40
|
+
"@grackle-ai/database": "0.96.3",
|
|
41
|
+
"@grackle-ai/core": "0.96.3",
|
|
42
|
+
"@grackle-ai/plugin-sdk": "0.96.3",
|
|
43
|
+
"@grackle-ai/knowledge": "0.96.3",
|
|
44
|
+
"@grackle-ai/prompt": "0.96.3"
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"@rushstack/heft": "1.2.7",
|
|
48
|
+
"@types/node": "^22.0.0",
|
|
49
|
+
"@types/uuid": "^10.0.0",
|
|
50
|
+
"vitest": "^3.2.1",
|
|
51
|
+
"@grackle-ai/heft-rig": "0.0.1"
|
|
52
|
+
},
|
|
53
|
+
"scripts": {
|
|
54
|
+
"build": "heft build --clean",
|
|
55
|
+
"test": "vitest run",
|
|
56
|
+
"clean": "heft clean",
|
|
57
|
+
"_phase:build": "heft run --only build -- --clean",
|
|
58
|
+
"_phase:test": "vitest run"
|
|
59
|
+
}
|
|
60
|
+
}
|