teamcopilot 0.3.6 → 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.
- package/dist/chat/index.js +104 -81
- package/dist/cronjob/index.js +2 -0
- package/dist/cronjobs/index.js +822 -0
- package/dist/cronjobs/scheduler.js +936 -0
- package/dist/frontend/assets/{cssMode-BRVRAYCz.js → cssMode-Cqdl5sUM.js} +1 -1
- package/dist/frontend/assets/{freemarker2-B5FvHwsO.js → freemarker2-ykAhuplU.js} +1 -1
- package/dist/frontend/assets/{handlebars-DWX2asql.js → handlebars-DX_JwRM8.js} +1 -1
- package/dist/frontend/assets/{html-BEBxxD9G.js → html-Bi_zOcbU.js} +1 -1
- package/dist/frontend/assets/{htmlMode-B2LbPTwC.js → htmlMode-CkAUoAah.js} +1 -1
- package/dist/frontend/assets/index-Ba9bElZm.css +1 -0
- package/dist/frontend/assets/{index-D3TE04C5.js → index-Cgozj4fx.js} +245 -242
- package/dist/frontend/assets/{javascript-Bh4JwoPV.js → javascript-D3Rjwp97.js} +1 -1
- package/dist/frontend/assets/{jsonMode-7j-aplXT.js → jsonMode-K4i6LjP2.js} +1 -1
- package/dist/frontend/assets/{liquid-BP4OxkO7.js → liquid-D8F4-sAz.js} +1 -1
- package/dist/frontend/assets/{mdx-C1OIcGbY.js → mdx-C2xw8PNz.js} +1 -1
- package/dist/frontend/assets/{python-BO8Wy5jz.js → python-CqTGfu2v.js} +1 -1
- package/dist/frontend/assets/{razor-BDtqXvAH.js → razor-DFSsPzdZ.js} +1 -1
- package/dist/frontend/assets/{tsMode-D22HcCuX.js → tsMode-BkLQEtPb.js} +1 -1
- package/dist/frontend/assets/{typescript-CagwEzRw.js → typescript-CE_GQ-M1.js} +1 -1
- package/dist/frontend/assets/{xml-fE5sGZ5z.js → xml-CGjMtNcA.js} +1 -1
- package/dist/frontend/assets/{yaml-CZMoG4WG.js → yaml-Zju9kuFB.js} +1 -1
- package/dist/frontend/index.html +2 -2
- package/dist/index.js +3 -0
- package/dist/types/cronjob.js +2 -0
- package/dist/utils/chat-prompt-context.js +65 -0
- package/dist/utils/chat-session.js +12 -0
- package/dist/utils/index.js +27 -0
- package/dist/utils/workflow-interruption.js +5 -2
- package/dist/utils/workflow-run-validation.js +25 -0
- package/dist/utils/workspace-sync.js +17 -0
- package/dist/workflows/index.js +24 -25
- package/dist/workspace_files/.opencode/plugins/apply-patch-session-diff.ts +2 -2
- package/dist/workspace_files/.opencode/plugins/askCronjobUser.ts +106 -0
- package/dist/workspace_files/.opencode/plugins/manageCronjobTodos.ts +190 -0
- package/dist/workspace_files/.opencode/plugins/manageCronjobs.ts +376 -0
- package/dist/workspace_files/.opencode/plugins/markCronjobCompleted.ts +107 -0
- package/dist/workspace_files/.opencode/plugins/markCronjobFailed.ts +107 -0
- package/dist/workspace_files/AGENTS.md +51 -1
- package/package.json +1 -1
- package/prisma/generated/client/edge.js +50 -3
- package/prisma/generated/client/index-browser.js +47 -0
- package/prisma/generated/client/index.d.ts +13918 -7530
- package/prisma/generated/client/index.js +50 -3
- package/prisma/generated/client/package.json +1 -1
- package/prisma/generated/client/schema.prisma +72 -1
- package/prisma/generated/client/wasm.js +50 -3
- package/prisma/migrations/20260508050030_add_cronjobs/migration.sql +78 -0
- package/prisma/migrations/20260508093158_add_structured_cronjob_schedules/migration.sql +23 -0
- package/prisma/migrations/20260508105129_add_cronjob_targets/migration.sql +50 -0
- package/prisma/migrations/20260509044545_flatten_cronjob_schema/migration.sql +88 -0
- package/prisma/migrations/20260509052232_simplify_cronjob_schedule_storage/migration.sql +42 -0
- package/prisma/migrations/20260509054000_remove_chat_session_source_add_cronjob_run_indexes/migration.sql +28 -0
- package/prisma/migrations/20260509061000_cascade_cronjob_run_links/migration.sql +29 -0
- package/prisma/migrations/20260513073541_add_cronjob_run_todos/migration.sql +18 -0
- package/prisma/migrations/20260513133021_add_cronjob_user_response_wait/migration.sql +29 -0
- package/prisma/migrations/20260513135733_add_cronjob_user_handoff_state/migration.sql +30 -0
- package/prisma/migrations/20260513142511_drop_awaiting_user_response/migration.sql +35 -0
- package/prisma/migrations/20260514032204_simplify_cronjob_run_lifecycle/migration.sql +34 -0
- package/prisma/migrations/20260514043000_clear_cronjob_run_history/migration.sql +6 -0
- package/prisma/migrations/20260515094618_add_todo_list_version/migration.sql +32 -0
- package/prisma/migrations/20260516082714_add_cronjob_monitor_timeout/migration.sql +38 -0
- package/prisma/migrations/20260516083452_allow_decimal_cronjob_timeout/migration.sql +37 -0
- package/prisma/migrations/20260516084455_add_cronjob_timeout_defaults/migration.sql +31 -0
- package/prisma/schema.prisma +71 -1
- package/dist/frontend/assets/index-D1Hcz_bo.css +0 -1
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
-- RedefineTables
|
|
2
|
+
PRAGMA defer_foreign_keys=ON;
|
|
3
|
+
PRAGMA foreign_keys=OFF;
|
|
4
|
+
CREATE TABLE "new_cronjob_runs" (
|
|
5
|
+
"id" TEXT NOT NULL PRIMARY KEY,
|
|
6
|
+
"cronjob_id" TEXT NOT NULL,
|
|
7
|
+
"status" TEXT NOT NULL,
|
|
8
|
+
"started_at" BIGINT NOT NULL,
|
|
9
|
+
"completed_at" BIGINT,
|
|
10
|
+
"workflow_run_id" TEXT,
|
|
11
|
+
"summary" TEXT,
|
|
12
|
+
"session_id" TEXT,
|
|
13
|
+
"opencode_session_id" TEXT,
|
|
14
|
+
"error_message" TEXT,
|
|
15
|
+
"awaiting_user_response" BOOLEAN NOT NULL DEFAULT false,
|
|
16
|
+
"user_handoff_state" TEXT NOT NULL DEFAULT 'none',
|
|
17
|
+
CONSTRAINT "cronjob_runs_cronjob_id_fkey" FOREIGN KEY ("cronjob_id") REFERENCES "cronjobs" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
18
|
+
CONSTRAINT "cronjob_runs_session_id_fkey" FOREIGN KEY ("session_id") REFERENCES "chat_sessions" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
19
|
+
CONSTRAINT "cronjob_runs_workflow_run_id_fkey" FOREIGN KEY ("workflow_run_id") REFERENCES "workflow_runs" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
20
|
+
);
|
|
21
|
+
INSERT INTO "new_cronjob_runs" ("awaiting_user_response", "completed_at", "cronjob_id", "error_message", "id", "opencode_session_id", "session_id", "started_at", "status", "summary", "workflow_run_id") SELECT "awaiting_user_response", "completed_at", "cronjob_id", "error_message", "id", "opencode_session_id", "session_id", "started_at", "status", "summary", "workflow_run_id" FROM "cronjob_runs";
|
|
22
|
+
DROP TABLE "cronjob_runs";
|
|
23
|
+
ALTER TABLE "new_cronjob_runs" RENAME TO "cronjob_runs";
|
|
24
|
+
CREATE INDEX "cronjob_runs_cronjob_id_started_at_idx" ON "cronjob_runs"("cronjob_id", "started_at");
|
|
25
|
+
CREATE INDEX "cronjob_runs_cronjob_id_status_idx" ON "cronjob_runs"("cronjob_id", "status");
|
|
26
|
+
CREATE INDEX "cronjob_runs_workflow_run_id_idx" ON "cronjob_runs"("workflow_run_id");
|
|
27
|
+
CREATE INDEX "cronjob_runs_session_id_idx" ON "cronjob_runs"("session_id");
|
|
28
|
+
CREATE INDEX "cronjob_runs_opencode_session_id_status_idx" ON "cronjob_runs"("opencode_session_id", "status");
|
|
29
|
+
PRAGMA foreign_keys=ON;
|
|
30
|
+
PRAGMA defer_foreign_keys=OFF;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Warnings:
|
|
3
|
+
|
|
4
|
+
- You are about to drop the column `awaiting_user_response` on the `cronjob_runs` table. All the data in the column will be lost.
|
|
5
|
+
|
|
6
|
+
*/
|
|
7
|
+
-- RedefineTables
|
|
8
|
+
PRAGMA defer_foreign_keys=ON;
|
|
9
|
+
PRAGMA foreign_keys=OFF;
|
|
10
|
+
CREATE TABLE "new_cronjob_runs" (
|
|
11
|
+
"id" TEXT NOT NULL PRIMARY KEY,
|
|
12
|
+
"cronjob_id" TEXT NOT NULL,
|
|
13
|
+
"status" TEXT NOT NULL,
|
|
14
|
+
"started_at" BIGINT NOT NULL,
|
|
15
|
+
"completed_at" BIGINT,
|
|
16
|
+
"workflow_run_id" TEXT,
|
|
17
|
+
"summary" TEXT,
|
|
18
|
+
"session_id" TEXT,
|
|
19
|
+
"opencode_session_id" TEXT,
|
|
20
|
+
"error_message" TEXT,
|
|
21
|
+
"user_handoff_state" TEXT NOT NULL DEFAULT 'none',
|
|
22
|
+
CONSTRAINT "cronjob_runs_cronjob_id_fkey" FOREIGN KEY ("cronjob_id") REFERENCES "cronjobs" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
23
|
+
CONSTRAINT "cronjob_runs_session_id_fkey" FOREIGN KEY ("session_id") REFERENCES "chat_sessions" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
24
|
+
CONSTRAINT "cronjob_runs_workflow_run_id_fkey" FOREIGN KEY ("workflow_run_id") REFERENCES "workflow_runs" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
25
|
+
);
|
|
26
|
+
INSERT INTO "new_cronjob_runs" ("completed_at", "cronjob_id", "error_message", "id", "opencode_session_id", "session_id", "started_at", "status", "summary", "user_handoff_state", "workflow_run_id") SELECT "completed_at", "cronjob_id", "error_message", "id", "opencode_session_id", "session_id", "started_at", "status", "summary", "user_handoff_state", "workflow_run_id" FROM "cronjob_runs";
|
|
27
|
+
DROP TABLE "cronjob_runs";
|
|
28
|
+
ALTER TABLE "new_cronjob_runs" RENAME TO "cronjob_runs";
|
|
29
|
+
CREATE INDEX "cronjob_runs_cronjob_id_started_at_idx" ON "cronjob_runs"("cronjob_id", "started_at");
|
|
30
|
+
CREATE INDEX "cronjob_runs_cronjob_id_status_idx" ON "cronjob_runs"("cronjob_id", "status");
|
|
31
|
+
CREATE INDEX "cronjob_runs_workflow_run_id_idx" ON "cronjob_runs"("workflow_run_id");
|
|
32
|
+
CREATE INDEX "cronjob_runs_session_id_idx" ON "cronjob_runs"("session_id");
|
|
33
|
+
CREATE INDEX "cronjob_runs_opencode_session_id_status_idx" ON "cronjob_runs"("opencode_session_id", "status");
|
|
34
|
+
PRAGMA foreign_keys=ON;
|
|
35
|
+
PRAGMA defer_foreign_keys=OFF;
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Warnings:
|
|
3
|
+
|
|
4
|
+
- You are about to drop the column `user_handoff_state` on the `cronjob_runs` table. All the data in the column will be lost.
|
|
5
|
+
|
|
6
|
+
*/
|
|
7
|
+
-- RedefineTables
|
|
8
|
+
PRAGMA defer_foreign_keys=ON;
|
|
9
|
+
PRAGMA foreign_keys=OFF;
|
|
10
|
+
CREATE TABLE "new_cronjob_runs" (
|
|
11
|
+
"id" TEXT NOT NULL PRIMARY KEY,
|
|
12
|
+
"cronjob_id" TEXT NOT NULL,
|
|
13
|
+
"status" TEXT NOT NULL,
|
|
14
|
+
"started_at" BIGINT NOT NULL,
|
|
15
|
+
"completed_at" BIGINT,
|
|
16
|
+
"workflow_run_id" TEXT,
|
|
17
|
+
"summary" TEXT,
|
|
18
|
+
"session_id" TEXT,
|
|
19
|
+
"opencode_session_id" TEXT,
|
|
20
|
+
"error_message" TEXT,
|
|
21
|
+
CONSTRAINT "cronjob_runs_cronjob_id_fkey" FOREIGN KEY ("cronjob_id") REFERENCES "cronjobs" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
22
|
+
CONSTRAINT "cronjob_runs_session_id_fkey" FOREIGN KEY ("session_id") REFERENCES "chat_sessions" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
23
|
+
CONSTRAINT "cronjob_runs_workflow_run_id_fkey" FOREIGN KEY ("workflow_run_id") REFERENCES "workflow_runs" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
24
|
+
);
|
|
25
|
+
INSERT INTO "new_cronjob_runs" ("completed_at", "cronjob_id", "error_message", "id", "opencode_session_id", "session_id", "started_at", "status", "summary", "workflow_run_id") SELECT "completed_at", "cronjob_id", "error_message", "id", "opencode_session_id", "session_id", "started_at", "status", "summary", "workflow_run_id" FROM "cronjob_runs";
|
|
26
|
+
DROP TABLE "cronjob_runs";
|
|
27
|
+
ALTER TABLE "new_cronjob_runs" RENAME TO "cronjob_runs";
|
|
28
|
+
CREATE INDEX "cronjob_runs_cronjob_id_started_at_idx" ON "cronjob_runs"("cronjob_id", "started_at");
|
|
29
|
+
CREATE INDEX "cronjob_runs_cronjob_id_status_idx" ON "cronjob_runs"("cronjob_id", "status");
|
|
30
|
+
CREATE INDEX "cronjob_runs_workflow_run_id_idx" ON "cronjob_runs"("workflow_run_id");
|
|
31
|
+
CREATE INDEX "cronjob_runs_session_id_idx" ON "cronjob_runs"("session_id");
|
|
32
|
+
CREATE INDEX "cronjob_runs_opencode_session_id_status_idx" ON "cronjob_runs"("opencode_session_id", "status");
|
|
33
|
+
PRAGMA foreign_keys=ON;
|
|
34
|
+
PRAGMA defer_foreign_keys=OFF;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
-- RedefineTables
|
|
2
|
+
PRAGMA defer_foreign_keys=ON;
|
|
3
|
+
PRAGMA foreign_keys=OFF;
|
|
4
|
+
CREATE TABLE "new_cronjob_runs" (
|
|
5
|
+
"id" TEXT NOT NULL PRIMARY KEY,
|
|
6
|
+
"cronjob_id" TEXT NOT NULL,
|
|
7
|
+
"status" TEXT NOT NULL,
|
|
8
|
+
"started_at" BIGINT NOT NULL,
|
|
9
|
+
"completed_at" BIGINT,
|
|
10
|
+
"workflow_run_id" TEXT,
|
|
11
|
+
"summary" TEXT,
|
|
12
|
+
"session_id" TEXT,
|
|
13
|
+
"opencode_session_id" TEXT,
|
|
14
|
+
"error_message" TEXT,
|
|
15
|
+
"todo_list_version" INTEGER NOT NULL DEFAULT 0,
|
|
16
|
+
CONSTRAINT "cronjob_runs_cronjob_id_fkey" FOREIGN KEY ("cronjob_id") REFERENCES "cronjobs" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
17
|
+
CONSTRAINT "cronjob_runs_session_id_fkey" FOREIGN KEY ("session_id") REFERENCES "chat_sessions" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
|
|
18
|
+
CONSTRAINT "cronjob_runs_workflow_run_id_fkey" FOREIGN KEY ("workflow_run_id") REFERENCES "workflow_runs" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
19
|
+
);
|
|
20
|
+
INSERT INTO "new_cronjob_runs" ("completed_at", "cronjob_id", "error_message", "id", "opencode_session_id", "session_id", "started_at", "status", "summary", "workflow_run_id") SELECT "completed_at", "cronjob_id", "error_message", "id", "opencode_session_id", "session_id", "started_at", "status", "summary", "workflow_run_id" FROM "cronjob_runs";
|
|
21
|
+
DROP TABLE "cronjob_runs";
|
|
22
|
+
ALTER TABLE "new_cronjob_runs" RENAME TO "cronjob_runs";
|
|
23
|
+
CREATE INDEX "cronjob_runs_cronjob_id_started_at_idx" ON "cronjob_runs"("cronjob_id", "started_at");
|
|
24
|
+
CREATE INDEX "cronjob_runs_cronjob_id_status_idx" ON "cronjob_runs"("cronjob_id", "status");
|
|
25
|
+
CREATE INDEX "cronjob_runs_workflow_run_id_idx" ON "cronjob_runs"("workflow_run_id");
|
|
26
|
+
CREATE INDEX "cronjob_runs_session_id_idx" ON "cronjob_runs"("session_id");
|
|
27
|
+
CREATE INDEX "cronjob_runs_opencode_session_id_status_idx" ON "cronjob_runs"("opencode_session_id", "status");
|
|
28
|
+
CREATE UNIQUE INDEX "cronjob_runs_one_running_per_cronjob"
|
|
29
|
+
ON "cronjob_runs"("cronjob_id")
|
|
30
|
+
WHERE "status" = 'running';
|
|
31
|
+
PRAGMA foreign_keys=ON;
|
|
32
|
+
PRAGMA defer_foreign_keys=OFF;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Warnings:
|
|
3
|
+
|
|
4
|
+
- Added the required column `monitor_timeout_unit` to the `cronjobs` table without a default value. This is not possible if the table is not empty.
|
|
5
|
+
- Added the required column `monitor_timeout_value` to the `cronjobs` table without a default value. This is not possible if the table is not empty.
|
|
6
|
+
|
|
7
|
+
*/
|
|
8
|
+
-- RedefineTables
|
|
9
|
+
PRAGMA defer_foreign_keys=ON;
|
|
10
|
+
PRAGMA foreign_keys=OFF;
|
|
11
|
+
CREATE TABLE "new_cronjobs" (
|
|
12
|
+
"id" TEXT NOT NULL PRIMARY KEY,
|
|
13
|
+
"user_id" TEXT NOT NULL,
|
|
14
|
+
"name" TEXT NOT NULL,
|
|
15
|
+
"enabled" BOOLEAN NOT NULL,
|
|
16
|
+
"target_type" TEXT NOT NULL,
|
|
17
|
+
"prompt" TEXT,
|
|
18
|
+
"prompt_allow_workflow_runs_without_permission" BOOLEAN,
|
|
19
|
+
"workflow_slug" TEXT,
|
|
20
|
+
"workflow_input_json" TEXT,
|
|
21
|
+
"cron_expression" TEXT NOT NULL,
|
|
22
|
+
"timezone" TEXT NOT NULL,
|
|
23
|
+
"monitor_timeout_value" INTEGER NOT NULL,
|
|
24
|
+
"monitor_timeout_unit" TEXT NOT NULL,
|
|
25
|
+
"created_at" BIGINT NOT NULL,
|
|
26
|
+
"updated_at" BIGINT NOT NULL,
|
|
27
|
+
CONSTRAINT "cronjobs_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
28
|
+
);
|
|
29
|
+
INSERT INTO "new_cronjobs" ("created_at", "cron_expression", "enabled", "id", "name", "prompt", "prompt_allow_workflow_runs_without_permission", "target_type", "timezone", "updated_at", "user_id", "workflow_input_json", "workflow_slug") SELECT "created_at", "cron_expression", "enabled", "id", "name", "prompt", "prompt_allow_workflow_runs_without_permission", "target_type", "timezone", "updated_at", "user_id", "workflow_input_json", "workflow_slug" FROM "cronjobs";
|
|
30
|
+
DROP TABLE "cronjobs";
|
|
31
|
+
ALTER TABLE "new_cronjobs" RENAME TO "cronjobs";
|
|
32
|
+
CREATE INDEX "cronjobs_user_id_idx" ON "cronjobs"("user_id");
|
|
33
|
+
CREATE INDEX "cronjobs_enabled_idx" ON "cronjobs"("enabled");
|
|
34
|
+
CREATE INDEX "cronjobs_target_type_idx" ON "cronjobs"("target_type");
|
|
35
|
+
CREATE INDEX "cronjobs_workflow_slug_idx" ON "cronjobs"("workflow_slug");
|
|
36
|
+
CREATE UNIQUE INDEX "cronjobs_user_id_name_key" ON "cronjobs"("user_id", "name");
|
|
37
|
+
PRAGMA foreign_keys=ON;
|
|
38
|
+
PRAGMA defer_foreign_keys=OFF;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/*
|
|
2
|
+
Warnings:
|
|
3
|
+
|
|
4
|
+
- You are about to alter the column `monitor_timeout_value` on the `cronjobs` table. The data in that column could be lost. The data in that column will be cast from `Int` to `Float`.
|
|
5
|
+
|
|
6
|
+
*/
|
|
7
|
+
-- RedefineTables
|
|
8
|
+
PRAGMA defer_foreign_keys=ON;
|
|
9
|
+
PRAGMA foreign_keys=OFF;
|
|
10
|
+
CREATE TABLE "new_cronjobs" (
|
|
11
|
+
"id" TEXT NOT NULL PRIMARY KEY,
|
|
12
|
+
"user_id" TEXT NOT NULL,
|
|
13
|
+
"name" TEXT NOT NULL,
|
|
14
|
+
"enabled" BOOLEAN NOT NULL,
|
|
15
|
+
"target_type" TEXT NOT NULL,
|
|
16
|
+
"prompt" TEXT,
|
|
17
|
+
"prompt_allow_workflow_runs_without_permission" BOOLEAN,
|
|
18
|
+
"workflow_slug" TEXT,
|
|
19
|
+
"workflow_input_json" TEXT,
|
|
20
|
+
"cron_expression" TEXT NOT NULL,
|
|
21
|
+
"timezone" TEXT NOT NULL,
|
|
22
|
+
"monitor_timeout_value" REAL NOT NULL,
|
|
23
|
+
"monitor_timeout_unit" TEXT NOT NULL,
|
|
24
|
+
"created_at" BIGINT NOT NULL,
|
|
25
|
+
"updated_at" BIGINT NOT NULL,
|
|
26
|
+
CONSTRAINT "cronjobs_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
27
|
+
);
|
|
28
|
+
INSERT INTO "new_cronjobs" ("created_at", "cron_expression", "enabled", "id", "monitor_timeout_unit", "monitor_timeout_value", "name", "prompt", "prompt_allow_workflow_runs_without_permission", "target_type", "timezone", "updated_at", "user_id", "workflow_input_json", "workflow_slug") SELECT "created_at", "cron_expression", "enabled", "id", "monitor_timeout_unit", "monitor_timeout_value", "name", "prompt", "prompt_allow_workflow_runs_without_permission", "target_type", "timezone", "updated_at", "user_id", "workflow_input_json", "workflow_slug" FROM "cronjobs";
|
|
29
|
+
DROP TABLE "cronjobs";
|
|
30
|
+
ALTER TABLE "new_cronjobs" RENAME TO "cronjobs";
|
|
31
|
+
CREATE INDEX "cronjobs_user_id_idx" ON "cronjobs"("user_id");
|
|
32
|
+
CREATE INDEX "cronjobs_enabled_idx" ON "cronjobs"("enabled");
|
|
33
|
+
CREATE INDEX "cronjobs_target_type_idx" ON "cronjobs"("target_type");
|
|
34
|
+
CREATE INDEX "cronjobs_workflow_slug_idx" ON "cronjobs"("workflow_slug");
|
|
35
|
+
CREATE UNIQUE INDEX "cronjobs_user_id_name_key" ON "cronjobs"("user_id", "name");
|
|
36
|
+
PRAGMA foreign_keys=ON;
|
|
37
|
+
PRAGMA defer_foreign_keys=OFF;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
-- RedefineTables
|
|
2
|
+
PRAGMA defer_foreign_keys=ON;
|
|
3
|
+
PRAGMA foreign_keys=OFF;
|
|
4
|
+
CREATE TABLE "new_cronjobs" (
|
|
5
|
+
"id" TEXT NOT NULL PRIMARY KEY,
|
|
6
|
+
"user_id" TEXT NOT NULL,
|
|
7
|
+
"name" TEXT NOT NULL,
|
|
8
|
+
"enabled" BOOLEAN NOT NULL,
|
|
9
|
+
"target_type" TEXT NOT NULL,
|
|
10
|
+
"prompt" TEXT,
|
|
11
|
+
"prompt_allow_workflow_runs_without_permission" BOOLEAN,
|
|
12
|
+
"workflow_slug" TEXT,
|
|
13
|
+
"workflow_input_json" TEXT,
|
|
14
|
+
"cron_expression" TEXT NOT NULL,
|
|
15
|
+
"timezone" TEXT NOT NULL,
|
|
16
|
+
"monitor_timeout_value" REAL NOT NULL DEFAULT 2,
|
|
17
|
+
"monitor_timeout_unit" TEXT NOT NULL DEFAULT 'hours',
|
|
18
|
+
"created_at" BIGINT NOT NULL,
|
|
19
|
+
"updated_at" BIGINT NOT NULL,
|
|
20
|
+
CONSTRAINT "cronjobs_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "users" ("id") ON DELETE CASCADE ON UPDATE CASCADE
|
|
21
|
+
);
|
|
22
|
+
INSERT INTO "new_cronjobs" ("created_at", "cron_expression", "enabled", "id", "monitor_timeout_unit", "monitor_timeout_value", "name", "prompt", "prompt_allow_workflow_runs_without_permission", "target_type", "timezone", "updated_at", "user_id", "workflow_input_json", "workflow_slug") SELECT "created_at", "cron_expression", "enabled", "id", "monitor_timeout_unit", "monitor_timeout_value", "name", "prompt", "prompt_allow_workflow_runs_without_permission", "target_type", "timezone", "updated_at", "user_id", "workflow_input_json", "workflow_slug" FROM "cronjobs";
|
|
23
|
+
DROP TABLE "cronjobs";
|
|
24
|
+
ALTER TABLE "new_cronjobs" RENAME TO "cronjobs";
|
|
25
|
+
CREATE INDEX "cronjobs_user_id_idx" ON "cronjobs"("user_id");
|
|
26
|
+
CREATE INDEX "cronjobs_enabled_idx" ON "cronjobs"("enabled");
|
|
27
|
+
CREATE INDEX "cronjobs_target_type_idx" ON "cronjobs"("target_type");
|
|
28
|
+
CREATE INDEX "cronjobs_workflow_slug_idx" ON "cronjobs"("workflow_slug");
|
|
29
|
+
CREATE UNIQUE INDEX "cronjobs_user_id_name_key" ON "cronjobs"("user_id", "name");
|
|
30
|
+
PRAGMA foreign_keys=ON;
|
|
31
|
+
PRAGMA defer_foreign_keys=OFF;
|
package/prisma/schema.prisma
CHANGED
|
@@ -20,6 +20,7 @@ model users {
|
|
|
20
20
|
reset_token_expires_at BigInt?
|
|
21
21
|
workflowRuns workflow_runs[]
|
|
22
22
|
chatSessions chat_sessions[]
|
|
23
|
+
cronjobs cronjobs[]
|
|
23
24
|
resourcePermissionUsers resource_permission_users[]
|
|
24
25
|
createdResourceMetadata resource_metadata[] @relation("ResourceCreatedBy")
|
|
25
26
|
approvedResourceMetadata resource_metadata[] @relation("ResourceApprovedBy")
|
|
@@ -38,10 +39,11 @@ model workflow_runs {
|
|
|
38
39
|
workflow_slug String
|
|
39
40
|
session_id String?
|
|
40
41
|
message_id String?
|
|
41
|
-
run_source String // "user" | "api"
|
|
42
|
+
run_source String // "user" | "api" | "cronjob"
|
|
42
43
|
workflow_api_key_id String?
|
|
43
44
|
user users? @relation(fields: [ran_by_user_id], references: [id], onDelete: SetNull)
|
|
44
45
|
workflowApiKey workflow_api_keys? @relation(fields: [workflow_api_key_id], references: [id], onDelete: SetNull)
|
|
46
|
+
cronjobRuns cronjob_runs[]
|
|
45
47
|
|
|
46
48
|
@@index([started_at])
|
|
47
49
|
@@index([session_id, message_id])
|
|
@@ -102,11 +104,79 @@ model chat_sessions {
|
|
|
102
104
|
opencode_session_id String @unique
|
|
103
105
|
title String
|
|
104
106
|
last_seen_assistant_message_id String?
|
|
107
|
+
visible_to_user Boolean @default(true)
|
|
105
108
|
created_at BigInt
|
|
106
109
|
updated_at BigInt
|
|
107
110
|
trackedFiles chat_session_tracked_files[]
|
|
108
111
|
usage chat_session_usage?
|
|
112
|
+
cronjobRuns cronjob_runs[]
|
|
109
113
|
user users @relation(fields: [user_id], references: [id], onDelete: Cascade)
|
|
114
|
+
@@index([visible_to_user])
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
model cronjobs {
|
|
118
|
+
id String @id @default(uuid())
|
|
119
|
+
user_id String
|
|
120
|
+
name String
|
|
121
|
+
enabled Boolean
|
|
122
|
+
target_type String // "prompt" | "workflow"
|
|
123
|
+
prompt String?
|
|
124
|
+
prompt_allow_workflow_runs_without_permission Boolean?
|
|
125
|
+
workflow_slug String?
|
|
126
|
+
workflow_input_json String?
|
|
127
|
+
cron_expression String
|
|
128
|
+
timezone String
|
|
129
|
+
monitor_timeout_value Float @default(2)
|
|
130
|
+
monitor_timeout_unit String @default("hours") // "minutes" | "hours" | "days"
|
|
131
|
+
created_at BigInt
|
|
132
|
+
updated_at BigInt
|
|
133
|
+
user users @relation(fields: [user_id], references: [id], onDelete: Cascade)
|
|
134
|
+
runs cronjob_runs[]
|
|
135
|
+
|
|
136
|
+
@@unique([user_id, name])
|
|
137
|
+
@@index([user_id])
|
|
138
|
+
@@index([enabled])
|
|
139
|
+
@@index([target_type])
|
|
140
|
+
@@index([workflow_slug])
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
model cronjob_runs {
|
|
144
|
+
id String @id @default(uuid())
|
|
145
|
+
cronjob_id String
|
|
146
|
+
status String // prompt: "running" | "paused" | "success" | "failed" | "skipped" | "terminated"; workflow: "running" | "success" | "failed" | "skipped"
|
|
147
|
+
started_at BigInt
|
|
148
|
+
completed_at BigInt?
|
|
149
|
+
workflow_run_id String?
|
|
150
|
+
summary String?
|
|
151
|
+
session_id String?
|
|
152
|
+
opencode_session_id String?
|
|
153
|
+
error_message String?
|
|
154
|
+
todo_list_version Int @default(0)
|
|
155
|
+
cronjob cronjobs @relation(fields: [cronjob_id], references: [id], onDelete: Cascade)
|
|
156
|
+
session chat_sessions? @relation(fields: [session_id], references: [id], onDelete: Cascade)
|
|
157
|
+
workflowRun workflow_runs? @relation(fields: [workflow_run_id], references: [id], onDelete: Cascade)
|
|
158
|
+
todos cronjob_run_todos[]
|
|
159
|
+
|
|
160
|
+
@@index([cronjob_id, started_at])
|
|
161
|
+
@@index([cronjob_id, status])
|
|
162
|
+
@@index([workflow_run_id])
|
|
163
|
+
@@index([session_id])
|
|
164
|
+
@@index([opencode_session_id, status])
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
model cronjob_run_todos {
|
|
168
|
+
id String @id @default(uuid())
|
|
169
|
+
run_id String
|
|
170
|
+
content String
|
|
171
|
+
status String // "pending" = not started yet; "in_progress" = current todo; "completed" = finished
|
|
172
|
+
position Int
|
|
173
|
+
summary String?
|
|
174
|
+
created_at BigInt
|
|
175
|
+
completed_at BigInt?
|
|
176
|
+
run cronjob_runs @relation(fields: [run_id], references: [id], onDelete: Cascade)
|
|
177
|
+
|
|
178
|
+
@@index([run_id, status, position])
|
|
179
|
+
@@index([run_id, position])
|
|
110
180
|
}
|
|
111
181
|
|
|
112
182
|
model chat_session_usage {
|