@minimalcorp/tsunagi 0.1.3 → 0.1.5
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/.next/standalone/apps/web/.next/BUILD_ID +1 -1
- package/.next/standalone/apps/web/.next/app-path-routes-manifest.json +1 -0
- package/.next/standalone/apps/web/.next/build-manifest.json +3 -3
- package/.next/standalone/apps/web/.next/prerender-manifest.json +3 -3
- package/.next/standalone/apps/web/.next/routes-manifest.json +6 -0
- package/.next/standalone/apps/web/.next/server/app/_global-error.html +1 -1
- package/.next/standalone/apps/web/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/apps/web/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/apps/web/.next/server/app/_not-found.rsc +2 -2
- package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
- package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
- package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/apps/web/.next/server/app/health/route/app-paths-manifest.json +3 -0
- package/.next/standalone/apps/web/.next/server/app/health/route/build-manifest.json +9 -0
- package/.next/standalone/apps/web/.next/server/app/health/route/server-reference-manifest.json +4 -0
- package/.next/standalone/apps/web/.next/server/app/health/route.js +6 -0
- package/.next/standalone/apps/web/.next/server/app/health/route.js.map +5 -0
- package/.next/standalone/apps/web/.next/server/app/health/route.js.nft.json +1 -0
- package/.next/standalone/apps/web/.next/server/app/health/route_client-reference-manifest.js +3 -0
- package/.next/standalone/apps/web/.next/server/app/icon.png/route.js +2 -1
- package/.next/standalone/apps/web/.next/server/app/icon.png/route.js.nft.json +1 -1
- package/.next/standalone/apps/web/.next/server/app/index.html +1 -1
- package/.next/standalone/apps/web/.next/server/app/index.rsc +3 -3
- package/.next/standalone/apps/web/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/apps/web/.next/server/app/index.segments/_full.segment.rsc +3 -3
- package/.next/standalone/apps/web/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/index.segments/_index.segment.rsc +2 -2
- package/.next/standalone/apps/web/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/apps/web/.next/server/app/page.js.nft.json +1 -1
- package/.next/standalone/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/standalone/apps/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/standalone/apps/web/.next/server/app/settings.html +1 -1
- package/.next/standalone/apps/web/.next/server/app/settings.rsc +2 -2
- package/.next/standalone/apps/web/.next/server/app/settings.segments/_full.segment.rsc +2 -2
- package/.next/standalone/apps/web/.next/server/app/settings.segments/_head.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/settings.segments/_index.segment.rsc +2 -2
- package/.next/standalone/apps/web/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/.next/standalone/apps/web/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/settings.segments/settings.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/tasks/[id]/page.js.nft.json +1 -1
- package/.next/standalone/apps/web/.next/server/app/tasks/[id]/page_client-reference-manifest.js +1 -1
- package/.next/standalone/apps/web/.next/server/app-paths-manifest.json +1 -0
- package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__03yk.z3._.js +3 -0
- package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__0op9af~._.js +3 -0
- package/.next/standalone/apps/web/.next/server/chunks/apps_web__next-internal_server_app_health_route_actions_08pjq78.js +3 -0
- package/.next/standalone/apps/web/.next/server/chunks/node_modules_next_06p.d_a._.js +13 -0
- package/.next/standalone/apps/web/.next/server/chunks/ssr/{[root-of-the-server]__0dg0i1g._.js → [root-of-the-server]__092mq4r._.js} +2 -2
- package/.next/standalone/apps/web/.next/server/chunks/ssr/{[root-of-the-server]__12yece_._.js → [root-of-the-server]__0_p.e.m._.js} +15 -15
- package/.next/standalone/apps/web/.next/server/chunks/ssr/{[root-of-the-server]__0qw6wy3._.js → [root-of-the-server]__12vhk8e._.js} +15 -15
- package/.next/standalone/apps/web/.next/server/chunks/ssr/_0g.cd6a._.js +1 -1
- package/.next/standalone/apps/web/.next/server/chunks/ssr/apps_web_src_app_tasks_[id]_page_tsx_0jshsm2._.js +2 -2
- package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_07.c491._.js → node_modules_0-31hvv._.js} +1 -1
- package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0t3_1om._.js → node_modules_00je7te._.js} +1 -1
- package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_02~gcwc._.js → node_modules_08zu-qy._.js} +1 -1
- package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0gpuu-x._.js → node_modules_0f5l4h2._.js} +1 -1
- package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_12qdm6m._.js → node_modules_0m9gy6q._.js} +1 -1
- package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0cphr_r._.js → node_modules_0o0.qfb._.js} +1 -1
- package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_0-4t5u4._.js → node_modules_0yo5dp5._.js} +1 -1
- package/.next/standalone/apps/web/.next/server/chunks/ssr/{node_modules_055srxz._.js → node_modules_0zdgon0._.js} +1 -1
- package/.next/standalone/apps/web/.next/server/middleware-build-manifest.js +3 -3
- package/.next/standalone/apps/web/.next/server/pages/404.html +1 -1
- package/.next/standalone/apps/web/.next/server/pages/500.html +1 -1
- package/.next/standalone/apps/web/.next/server/server-reference-manifest.js +1 -1
- package/.next/standalone/apps/web/.next/server/server-reference-manifest.json +1 -1
- package/.next/standalone/apps/web/.next/static/chunks/{0l0s3fn6xga.t.js → 06h0.7cz1a2pw.js} +13 -13
- package/.next/standalone/apps/web/.next/static/chunks/0g.gfve6-xixo.css +4 -0
- package/.next/standalone/apps/web/.next/static/chunks/{0hx_sdyz0yyfb.js → 0u1x2j.2fd983.js} +7 -7
- package/.next/standalone/apps/web/.next/static/chunks/0wd663tqvi2ts.js +3 -0
- package/.next/standalone/apps/web/.next/static/chunks/{0ew.-lnxoet~x.js → 0zi97fcrx3u_8.js} +13 -13
- package/dist/auto-migrate.js +6 -7
- package/dist/cli.js +195 -10
- package/dist/plugin-lifecycle.d.ts +4 -1
- package/dist/plugin-lifecycle.js +11 -4
- package/dist/server/generated/prisma/commonInputTypes.d.ts +36 -36
- package/dist/server/generated/prisma/internal/class.js +2 -2
- package/dist/server/generated/prisma/models/Tab.d.ts +0 -7
- package/dist/server/generated/prisma/models/Task.d.ts +32 -25
- package/dist/server/index.js +6 -1
- package/dist/server/lib/repositories/task.d.ts +4 -2
- package/dist/server/lib/repositories/task.js +8 -6
- package/dist/server/lib/services/task-service.js +27 -17
- package/dist/server/routes/hooks.js +24 -12
- package/dist/server/routes/tasks.js +2 -2
- package/dist/server/routes/terminal.js +3 -2
- package/package.json +2 -1
- package/prisma/migrations/20260410000000_clear_stale_tab_todos/migration.sql +4 -0
- package/prisma/migrations/20260413000000_make_task_order_non_nullable/migration.sql +47 -0
- package/prisma/schema.prisma +1 -1
- package/tsunagi-marketplace/plugins/tsunagi-plugin/skills/tsunagi-task/SKILL.md +21 -0
- package/.next/standalone/apps/web/.next/server/chunks/[root-of-the-server]__0jam776._.js +0 -13
- package/.next/standalone/apps/web/.next/static/chunks/0b8.3al6nvw3d.css +0 -4
- package/.next/standalone/apps/web/.next/static/chunks/12r3ashx0krmo.js +0 -3
- /package/.next/standalone/apps/web/.next/static/{y1VVVedZfN-isLJKKaC_l → 3spyaOCz0ow4ijl7Dvjpb}/_buildManifest.js +0 -0
- /package/.next/standalone/apps/web/.next/static/{y1VVVedZfN-isLJKKaC_l → 3spyaOCz0ow4ijl7Dvjpb}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/apps/web/.next/static/{y1VVVedZfN-isLJKKaC_l → 3spyaOCz0ow4ijl7Dvjpb}/_ssgManifest.js +0 -0
package/dist/auto-migrate.js
CHANGED
|
@@ -12,15 +12,14 @@ function getStateDir() {
|
|
|
12
12
|
}
|
|
13
13
|
async function autoMigrate() {
|
|
14
14
|
try {
|
|
15
|
-
console.log('DB migration started');
|
|
16
15
|
await fs.mkdir(getStateDir(), { recursive: true });
|
|
17
16
|
const { stdout } = await execAsync('npx prisma migrate deploy');
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
17
|
+
// Extract "N migration(s) applied." line from prisma output
|
|
18
|
+
const match = stdout.match(/(\d+)\s+migrations?\s+applied/i);
|
|
19
|
+
if (match) {
|
|
20
|
+
const count = parseInt(match[1], 10);
|
|
21
|
+
console.log(`${count} migration${count === 1 ? '' : 's'} applied.`);
|
|
22
|
+
}
|
|
24
23
|
}
|
|
25
24
|
catch (error) {
|
|
26
25
|
console.error('DB migration failed:', error instanceof Error ? error.message : error);
|
package/dist/cli.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { spawn, spawnSync } from 'node:child_process';
|
|
3
3
|
import * as fs from 'node:fs';
|
|
4
|
+
import * as http from 'node:http';
|
|
4
5
|
import * as path from 'node:path';
|
|
5
6
|
import { fileURLToPath } from 'node:url';
|
|
6
7
|
import { cleanupPluginState, ensureCleanPluginState } from './plugin-lifecycle.js';
|
|
@@ -35,22 +36,139 @@ const PACKAGE_ROOT = path.resolve(DIST_DIR, '..');
|
|
|
35
36
|
const AUTO_MIGRATE_JS = path.join(DIST_DIR, 'auto-migrate.js');
|
|
36
37
|
const FASTIFY_ENTRY_JS = path.join(DIST_DIR, 'server', 'index.js');
|
|
37
38
|
const NEXT_STANDALONE_ENTRY = path.join(PACKAGE_ROOT, '.next', 'standalone', 'apps', 'web', 'server.js');
|
|
39
|
+
const DOCS_DIR = path.join(PACKAGE_ROOT, 'docs');
|
|
40
|
+
const DOCS_PORT = 2793;
|
|
41
|
+
const isDebug = !!process.env.TSUNAGI_DEBUG;
|
|
42
|
+
const isDocker = fs.existsSync('/.dockerenv');
|
|
43
|
+
// ---------------------------------------------------------------------------
|
|
44
|
+
// Braille-dots spinner
|
|
45
|
+
// ---------------------------------------------------------------------------
|
|
46
|
+
const SPINNER_FRAMES = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
|
|
47
|
+
function createSpinner(message) {
|
|
48
|
+
let i = 0;
|
|
49
|
+
const timer = setInterval(() => {
|
|
50
|
+
process.stdout.write(`\r${SPINNER_FRAMES[i % SPINNER_FRAMES.length]} ${message}`);
|
|
51
|
+
i++;
|
|
52
|
+
}, 80);
|
|
53
|
+
return {
|
|
54
|
+
stop() {
|
|
55
|
+
clearInterval(timer);
|
|
56
|
+
// Clear the spinner line
|
|
57
|
+
process.stdout.write('\r' + ' '.repeat(message.length + 4) + '\r');
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
// ---------------------------------------------------------------------------
|
|
62
|
+
// ASCII art
|
|
63
|
+
// ---------------------------------------------------------------------------
|
|
64
|
+
const TSUNAGI_AA = `
|
|
65
|
+
__ _
|
|
66
|
+
/ /____ __ _____ ___ ____ _(_)
|
|
67
|
+
/ __(_-</ // / _ \\/ _ \`/ _ \`/ /
|
|
68
|
+
\\__/___/\\_,_/_//_/\\_,_/\\_, /_/
|
|
69
|
+
/___/
|
|
70
|
+
`;
|
|
71
|
+
// ---------------------------------------------------------------------------
|
|
72
|
+
// Phase 1: Auto-migrate (synchronous child process)
|
|
73
|
+
// ---------------------------------------------------------------------------
|
|
38
74
|
function runAutoMigrate() {
|
|
39
75
|
if (!fs.existsSync(AUTO_MIGRATE_JS)) {
|
|
40
76
|
console.error(`[tsunagi] Missing build artifact: ${AUTO_MIGRATE_JS}`);
|
|
41
77
|
process.exit(1);
|
|
42
78
|
}
|
|
43
79
|
const result = spawnSync(process.execPath, [AUTO_MIGRATE_JS], {
|
|
44
|
-
stdio: 'inherit',
|
|
80
|
+
stdio: isDebug ? 'inherit' : ['inherit', 'pipe', 'pipe'],
|
|
45
81
|
cwd: PACKAGE_ROOT,
|
|
46
82
|
});
|
|
47
83
|
if (result.status !== 0) {
|
|
84
|
+
const stderr = result.stderr?.toString().trim();
|
|
85
|
+
if (stderr)
|
|
86
|
+
console.error(stderr);
|
|
48
87
|
console.error('[tsunagi] Database migration failed.');
|
|
49
88
|
process.exit(result.status ?? 1);
|
|
50
89
|
}
|
|
90
|
+
// Display migration result (e.g. "1 migration applied.")
|
|
91
|
+
const stdout = result.stdout?.toString().trim();
|
|
92
|
+
if (stdout)
|
|
93
|
+
console.log(stdout);
|
|
51
94
|
}
|
|
52
95
|
runAutoMigrate();
|
|
53
|
-
|
|
96
|
+
// ---------------------------------------------------------------------------
|
|
97
|
+
// Phase 2: Plugin lifecycle
|
|
98
|
+
// ---------------------------------------------------------------------------
|
|
99
|
+
const pluginResult = ensureCleanPluginState();
|
|
100
|
+
console.log(pluginResult === 'clean' ? 'clean installed tsunagi plugin' : 'installed tsunagi plugin');
|
|
101
|
+
// ---------------------------------------------------------------------------
|
|
102
|
+
// Docs static file server
|
|
103
|
+
// ---------------------------------------------------------------------------
|
|
104
|
+
const MIME_TYPES = {
|
|
105
|
+
'.html': 'text/html; charset=utf-8',
|
|
106
|
+
'.css': 'text/css',
|
|
107
|
+
'.js': 'application/javascript',
|
|
108
|
+
'.json': 'application/json',
|
|
109
|
+
'.png': 'image/png',
|
|
110
|
+
'.jpg': 'image/jpeg',
|
|
111
|
+
'.svg': 'image/svg+xml',
|
|
112
|
+
'.ico': 'image/x-icon',
|
|
113
|
+
'.wasm': 'application/wasm',
|
|
114
|
+
'.woff': 'font/woff',
|
|
115
|
+
'.woff2': 'font/woff2',
|
|
116
|
+
'.ttf': 'font/ttf',
|
|
117
|
+
'.txt': 'text/plain',
|
|
118
|
+
'.xml': 'application/xml',
|
|
119
|
+
};
|
|
120
|
+
function startDocsServer() {
|
|
121
|
+
if (!fs.existsSync(DOCS_DIR))
|
|
122
|
+
return null;
|
|
123
|
+
const serveFile = (filePath, res) => {
|
|
124
|
+
const ext = path.extname(filePath);
|
|
125
|
+
const contentType = MIME_TYPES[ext] || 'application/octet-stream';
|
|
126
|
+
fs.readFile(filePath, (err, data) => {
|
|
127
|
+
if (err) {
|
|
128
|
+
res.writeHead(404).end();
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
res.writeHead(200, { 'Content-Type': contentType });
|
|
132
|
+
res.end(data);
|
|
133
|
+
});
|
|
134
|
+
};
|
|
135
|
+
const server = http.createServer((req, res) => {
|
|
136
|
+
let urlPath;
|
|
137
|
+
try {
|
|
138
|
+
urlPath = decodeURIComponent(new URL(req.url ?? '/', 'http://localhost').pathname);
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
res.writeHead(400).end();
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
const filePath = path.resolve(DOCS_DIR, '.' + urlPath);
|
|
145
|
+
if (!filePath.startsWith(DOCS_DIR)) {
|
|
146
|
+
res.writeHead(403).end();
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
fs.stat(filePath, (err, stat) => {
|
|
150
|
+
if (err) {
|
|
151
|
+
res.writeHead(404).end();
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
if (stat.isDirectory()) {
|
|
155
|
+
if (!urlPath.endsWith('/')) {
|
|
156
|
+
res.writeHead(301, { Location: urlPath + '/' }).end();
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
serveFile(path.join(filePath, 'index.html'), res);
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
serveFile(filePath, res);
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
server.listen(DOCS_PORT, '0.0.0.0');
|
|
167
|
+
return server;
|
|
168
|
+
}
|
|
169
|
+
// ---------------------------------------------------------------------------
|
|
170
|
+
// Phase 3: Verify build artifacts & spawn servers
|
|
171
|
+
// ---------------------------------------------------------------------------
|
|
54
172
|
function verifyArtifact(p, label) {
|
|
55
173
|
if (!fs.existsSync(p)) {
|
|
56
174
|
console.error(`[tsunagi] Missing ${label}: ${p}`);
|
|
@@ -60,21 +178,83 @@ function verifyArtifact(p, label) {
|
|
|
60
178
|
}
|
|
61
179
|
verifyArtifact(FASTIFY_ENTRY_JS, 'Fastify server artifact');
|
|
62
180
|
verifyArtifact(NEXT_STANDALONE_ENTRY, 'Next.js standalone artifact');
|
|
181
|
+
const PORT = process.env.PORT ?? '2791';
|
|
182
|
+
const spinner = createSpinner('Initializing...');
|
|
63
183
|
const fastifyChild = spawn(process.execPath, [FASTIFY_ENTRY_JS], {
|
|
64
|
-
stdio: 'inherit',
|
|
184
|
+
stdio: ['inherit', 'pipe', 'pipe'],
|
|
65
185
|
cwd: PACKAGE_ROOT,
|
|
66
|
-
env: process.env,
|
|
186
|
+
env: { ...process.env, NODE_ENV: 'production' },
|
|
67
187
|
});
|
|
68
188
|
const nextChild = spawn(process.execPath, [NEXT_STANDALONE_ENTRY], {
|
|
69
|
-
stdio: 'inherit',
|
|
189
|
+
stdio: ['inherit', 'pipe', 'pipe'],
|
|
70
190
|
cwd: path.dirname(NEXT_STANDALONE_ENTRY),
|
|
71
|
-
env: { ...process.env, PORT:
|
|
191
|
+
env: { ...process.env, PORT, NODE_ENV: 'production', HOSTNAME: '0.0.0.0' },
|
|
192
|
+
});
|
|
193
|
+
const docsServer = startDocsServer();
|
|
194
|
+
// ---------------------------------------------------------------------------
|
|
195
|
+
// Child process output forwarding
|
|
196
|
+
// ---------------------------------------------------------------------------
|
|
197
|
+
fastifyChild.stdout?.on('data', (data) => {
|
|
198
|
+
if (isDebug)
|
|
199
|
+
process.stdout.write(data);
|
|
72
200
|
});
|
|
201
|
+
fastifyChild.stderr?.on('data', (data) => {
|
|
202
|
+
process.stderr.write(data);
|
|
203
|
+
});
|
|
204
|
+
nextChild.stdout?.on('data', (data) => {
|
|
205
|
+
if (isDebug)
|
|
206
|
+
process.stdout.write(data);
|
|
207
|
+
});
|
|
208
|
+
nextChild.stderr?.on('data', (data) => {
|
|
209
|
+
process.stderr.write(data);
|
|
210
|
+
});
|
|
211
|
+
// ---------------------------------------------------------------------------
|
|
212
|
+
// Ready detection via /health polling
|
|
213
|
+
// ---------------------------------------------------------------------------
|
|
214
|
+
const SERVER_PORT = 2792;
|
|
215
|
+
const POLL_INTERVAL_MS = 300;
|
|
216
|
+
function pollHealth(port) {
|
|
217
|
+
return new Promise((resolve) => {
|
|
218
|
+
const poll = () => {
|
|
219
|
+
const req = http.get(`http://localhost:${port}/health`, (res) => {
|
|
220
|
+
if (res.statusCode === 200) {
|
|
221
|
+
res.resume();
|
|
222
|
+
resolve();
|
|
223
|
+
}
|
|
224
|
+
else {
|
|
225
|
+
res.resume();
|
|
226
|
+
setTimeout(poll, POLL_INTERVAL_MS);
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
req.on('error', () => {
|
|
230
|
+
setTimeout(poll, POLL_INTERVAL_MS);
|
|
231
|
+
});
|
|
232
|
+
};
|
|
233
|
+
poll();
|
|
234
|
+
});
|
|
235
|
+
}
|
|
236
|
+
Promise.all([pollHealth(SERVER_PORT), pollHealth(Number(PORT))]).then(() => {
|
|
237
|
+
spinner.stop();
|
|
238
|
+
console.log(TSUNAGI_AA);
|
|
239
|
+
const url = `http://localhost:${PORT}`;
|
|
240
|
+
if (!isDocker) {
|
|
241
|
+
const cmd = process.platform === 'darwin' ? 'open' : 'xdg-open';
|
|
242
|
+
spawn(cmd, [url], { stdio: 'ignore', detached: true }).unref();
|
|
243
|
+
}
|
|
244
|
+
console.log(`Open ${url}`);
|
|
245
|
+
if (docsServer) {
|
|
246
|
+
console.log(`Docs http://localhost:${DOCS_PORT}`);
|
|
247
|
+
}
|
|
248
|
+
});
|
|
249
|
+
// ---------------------------------------------------------------------------
|
|
250
|
+
// Shutdown
|
|
251
|
+
// ---------------------------------------------------------------------------
|
|
73
252
|
let shuttingDown = false;
|
|
74
253
|
function shutdown(code) {
|
|
75
254
|
if (shuttingDown)
|
|
76
255
|
return;
|
|
77
256
|
shuttingDown = true;
|
|
257
|
+
spinner.stop();
|
|
78
258
|
for (const child of [fastifyChild, nextChild]) {
|
|
79
259
|
if (child && !child.killed && child.exitCode === null) {
|
|
80
260
|
try {
|
|
@@ -85,6 +265,7 @@ function shutdown(code) {
|
|
|
85
265
|
}
|
|
86
266
|
}
|
|
87
267
|
}
|
|
268
|
+
docsServer?.close();
|
|
88
269
|
cleanupPluginState();
|
|
89
270
|
process.exit(code);
|
|
90
271
|
}
|
|
@@ -95,10 +276,14 @@ process.on('exit', () => {
|
|
|
95
276
|
cleanupPluginState();
|
|
96
277
|
});
|
|
97
278
|
fastifyChild.on('exit', (code) => {
|
|
98
|
-
|
|
99
|
-
|
|
279
|
+
if (!shuttingDown) {
|
|
280
|
+
console.error(`[tsunagi] Fastify server exited unexpectedly (code ${code})`);
|
|
281
|
+
shutdown(code ?? 1);
|
|
282
|
+
}
|
|
100
283
|
});
|
|
101
284
|
nextChild.on('exit', (code) => {
|
|
102
|
-
|
|
103
|
-
|
|
285
|
+
if (!shuttingDown) {
|
|
286
|
+
console.error(`[tsunagi] Next.js server exited unexpectedly (code ${code})`);
|
|
287
|
+
shutdown(code ?? 1);
|
|
288
|
+
}
|
|
104
289
|
});
|
|
@@ -3,8 +3,11 @@
|
|
|
3
3
|
* marketplace registrations and then installing fresh copies.
|
|
4
4
|
*
|
|
5
5
|
* Exits the process with code 1 on install failure.
|
|
6
|
+
*
|
|
7
|
+
* @returns `'clean'` if orphaned state was cleaned up before install,
|
|
8
|
+
* `'fresh'` if no prior state existed.
|
|
6
9
|
*/
|
|
7
|
-
export declare function ensureCleanPluginState():
|
|
10
|
+
export declare function ensureCleanPluginState(): 'clean' | 'fresh';
|
|
8
11
|
/**
|
|
9
12
|
* Best-effort cleanup. Called on process shutdown. Never throws.
|
|
10
13
|
*/
|
package/dist/plugin-lifecycle.js
CHANGED
|
@@ -31,8 +31,10 @@ function getMarketplaceDir() {
|
|
|
31
31
|
// Fallback for unexpected layouts
|
|
32
32
|
return candidate;
|
|
33
33
|
}
|
|
34
|
-
function
|
|
35
|
-
|
|
34
|
+
function debugLog(msg) {
|
|
35
|
+
if (process.env.TSUNAGI_DEBUG) {
|
|
36
|
+
console.log(`[tsunagi:plugin] ${msg}`);
|
|
37
|
+
}
|
|
36
38
|
}
|
|
37
39
|
/** プラグインがインストール済みか確認する */
|
|
38
40
|
function isPluginInstalled() {
|
|
@@ -76,10 +78,14 @@ function runClaude(args) {
|
|
|
76
78
|
* marketplace registrations and then installing fresh copies.
|
|
77
79
|
*
|
|
78
80
|
* Exits the process with code 1 on install failure.
|
|
81
|
+
*
|
|
82
|
+
* @returns `'clean'` if orphaned state was cleaned up before install,
|
|
83
|
+
* `'fresh'` if no prior state existed.
|
|
79
84
|
*/
|
|
80
85
|
export function ensureCleanPluginState() {
|
|
81
86
|
// Phase 1: best-effort cleanup of any orphaned state from a previous run.
|
|
82
87
|
// Check existence first to avoid error output when plugin is not installed (normal first-boot case).
|
|
88
|
+
const hadOrphan = isPluginInstalled() || isMarketplaceAdded();
|
|
83
89
|
if (isPluginInstalled()) {
|
|
84
90
|
runClaude(`plugin uninstall ${PLUGIN_REF}`);
|
|
85
91
|
}
|
|
@@ -94,13 +100,14 @@ export function ensureCleanPluginState() {
|
|
|
94
100
|
console.error(`[tsunagi:plugin] Marketplace path: ${marketplaceDir}`);
|
|
95
101
|
process.exit(1);
|
|
96
102
|
}
|
|
97
|
-
|
|
103
|
+
debugLog('Marketplace added');
|
|
98
104
|
if (!runClaude(`plugin install ${PLUGIN_REF} --scope user`)) {
|
|
99
105
|
console.error('[tsunagi:plugin] Failed to install Claude Code plugin.');
|
|
100
106
|
runClaude(`plugin marketplace remove ${MARKETPLACE_NAME}`);
|
|
101
107
|
process.exit(1);
|
|
102
108
|
}
|
|
103
|
-
|
|
109
|
+
debugLog('Plugin installed');
|
|
110
|
+
return hadOrphan ? 'clean' : 'fresh';
|
|
104
111
|
}
|
|
105
112
|
/**
|
|
106
113
|
* Best-effort cleanup. Called on process shutdown. Never throws.
|
|
@@ -74,6 +74,16 @@ export type IntNullableFilter<$PrismaModel = never> = {
|
|
|
74
74
|
gte?: number | Prisma.IntFieldRefInput<$PrismaModel>;
|
|
75
75
|
not?: Prisma.NestedIntNullableFilter<$PrismaModel> | number | null;
|
|
76
76
|
};
|
|
77
|
+
export type IntFilter<$PrismaModel = never> = {
|
|
78
|
+
equals?: number | Prisma.IntFieldRefInput<$PrismaModel>;
|
|
79
|
+
in?: number[];
|
|
80
|
+
notIn?: number[];
|
|
81
|
+
lt?: number | Prisma.IntFieldRefInput<$PrismaModel>;
|
|
82
|
+
lte?: number | Prisma.IntFieldRefInput<$PrismaModel>;
|
|
83
|
+
gt?: number | Prisma.IntFieldRefInput<$PrismaModel>;
|
|
84
|
+
gte?: number | Prisma.IntFieldRefInput<$PrismaModel>;
|
|
85
|
+
not?: Prisma.NestedIntFilter<$PrismaModel> | number;
|
|
86
|
+
};
|
|
77
87
|
export type DateTimeNullableFilter<$PrismaModel = never> = {
|
|
78
88
|
equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> | null;
|
|
79
89
|
in?: Date[] | string[] | null;
|
|
@@ -119,29 +129,6 @@ export type IntNullableWithAggregatesFilter<$PrismaModel = never> = {
|
|
|
119
129
|
_min?: Prisma.NestedIntNullableFilter<$PrismaModel>;
|
|
120
130
|
_max?: Prisma.NestedIntNullableFilter<$PrismaModel>;
|
|
121
131
|
};
|
|
122
|
-
export type DateTimeNullableWithAggregatesFilter<$PrismaModel = never> = {
|
|
123
|
-
equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> | null;
|
|
124
|
-
in?: Date[] | string[] | null;
|
|
125
|
-
notIn?: Date[] | string[] | null;
|
|
126
|
-
lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>;
|
|
127
|
-
lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>;
|
|
128
|
-
gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>;
|
|
129
|
-
gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>;
|
|
130
|
-
not?: Prisma.NestedDateTimeNullableWithAggregatesFilter<$PrismaModel> | Date | string | null;
|
|
131
|
-
_count?: Prisma.NestedIntNullableFilter<$PrismaModel>;
|
|
132
|
-
_min?: Prisma.NestedDateTimeNullableFilter<$PrismaModel>;
|
|
133
|
-
_max?: Prisma.NestedDateTimeNullableFilter<$PrismaModel>;
|
|
134
|
-
};
|
|
135
|
-
export type IntFilter<$PrismaModel = never> = {
|
|
136
|
-
equals?: number | Prisma.IntFieldRefInput<$PrismaModel>;
|
|
137
|
-
in?: number[];
|
|
138
|
-
notIn?: number[];
|
|
139
|
-
lt?: number | Prisma.IntFieldRefInput<$PrismaModel>;
|
|
140
|
-
lte?: number | Prisma.IntFieldRefInput<$PrismaModel>;
|
|
141
|
-
gt?: number | Prisma.IntFieldRefInput<$PrismaModel>;
|
|
142
|
-
gte?: number | Prisma.IntFieldRefInput<$PrismaModel>;
|
|
143
|
-
not?: Prisma.NestedIntFilter<$PrismaModel> | number;
|
|
144
|
-
};
|
|
145
132
|
export type IntWithAggregatesFilter<$PrismaModel = never> = {
|
|
146
133
|
equals?: number | Prisma.IntFieldRefInput<$PrismaModel>;
|
|
147
134
|
in?: number[];
|
|
@@ -157,6 +144,19 @@ export type IntWithAggregatesFilter<$PrismaModel = never> = {
|
|
|
157
144
|
_min?: Prisma.NestedIntFilter<$PrismaModel>;
|
|
158
145
|
_max?: Prisma.NestedIntFilter<$PrismaModel>;
|
|
159
146
|
};
|
|
147
|
+
export type DateTimeNullableWithAggregatesFilter<$PrismaModel = never> = {
|
|
148
|
+
equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> | null;
|
|
149
|
+
in?: Date[] | string[] | null;
|
|
150
|
+
notIn?: Date[] | string[] | null;
|
|
151
|
+
lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>;
|
|
152
|
+
lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>;
|
|
153
|
+
gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>;
|
|
154
|
+
gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>;
|
|
155
|
+
not?: Prisma.NestedDateTimeNullableWithAggregatesFilter<$PrismaModel> | Date | string | null;
|
|
156
|
+
_count?: Prisma.NestedIntNullableFilter<$PrismaModel>;
|
|
157
|
+
_min?: Prisma.NestedDateTimeNullableFilter<$PrismaModel>;
|
|
158
|
+
_max?: Prisma.NestedDateTimeNullableFilter<$PrismaModel>;
|
|
159
|
+
};
|
|
160
160
|
export type BoolFilter<$PrismaModel = never> = {
|
|
161
161
|
equals?: boolean | Prisma.BooleanFieldRefInput<$PrismaModel>;
|
|
162
162
|
not?: Prisma.NestedBoolFilter<$PrismaModel> | boolean;
|
|
@@ -304,19 +304,6 @@ export type NestedFloatNullableFilter<$PrismaModel = never> = {
|
|
|
304
304
|
gte?: number | Prisma.FloatFieldRefInput<$PrismaModel>;
|
|
305
305
|
not?: Prisma.NestedFloatNullableFilter<$PrismaModel> | number | null;
|
|
306
306
|
};
|
|
307
|
-
export type NestedDateTimeNullableWithAggregatesFilter<$PrismaModel = never> = {
|
|
308
|
-
equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> | null;
|
|
309
|
-
in?: Date[] | string[] | null;
|
|
310
|
-
notIn?: Date[] | string[] | null;
|
|
311
|
-
lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>;
|
|
312
|
-
lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>;
|
|
313
|
-
gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>;
|
|
314
|
-
gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>;
|
|
315
|
-
not?: Prisma.NestedDateTimeNullableWithAggregatesFilter<$PrismaModel> | Date | string | null;
|
|
316
|
-
_count?: Prisma.NestedIntNullableFilter<$PrismaModel>;
|
|
317
|
-
_min?: Prisma.NestedDateTimeNullableFilter<$PrismaModel>;
|
|
318
|
-
_max?: Prisma.NestedDateTimeNullableFilter<$PrismaModel>;
|
|
319
|
-
};
|
|
320
307
|
export type NestedIntWithAggregatesFilter<$PrismaModel = never> = {
|
|
321
308
|
equals?: number | Prisma.IntFieldRefInput<$PrismaModel>;
|
|
322
309
|
in?: number[];
|
|
@@ -342,6 +329,19 @@ export type NestedFloatFilter<$PrismaModel = never> = {
|
|
|
342
329
|
gte?: number | Prisma.FloatFieldRefInput<$PrismaModel>;
|
|
343
330
|
not?: Prisma.NestedFloatFilter<$PrismaModel> | number;
|
|
344
331
|
};
|
|
332
|
+
export type NestedDateTimeNullableWithAggregatesFilter<$PrismaModel = never> = {
|
|
333
|
+
equals?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel> | null;
|
|
334
|
+
in?: Date[] | string[] | null;
|
|
335
|
+
notIn?: Date[] | string[] | null;
|
|
336
|
+
lt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>;
|
|
337
|
+
lte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>;
|
|
338
|
+
gt?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>;
|
|
339
|
+
gte?: Date | string | Prisma.DateTimeFieldRefInput<$PrismaModel>;
|
|
340
|
+
not?: Prisma.NestedDateTimeNullableWithAggregatesFilter<$PrismaModel> | Date | string | null;
|
|
341
|
+
_count?: Prisma.NestedIntNullableFilter<$PrismaModel>;
|
|
342
|
+
_min?: Prisma.NestedDateTimeNullableFilter<$PrismaModel>;
|
|
343
|
+
_max?: Prisma.NestedDateTimeNullableFilter<$PrismaModel>;
|
|
344
|
+
};
|
|
345
345
|
export type NestedBoolFilter<$PrismaModel = never> = {
|
|
346
346
|
equals?: boolean | Prisma.BooleanFieldRefInput<$PrismaModel>;
|
|
347
347
|
not?: Prisma.NestedBoolFilter<$PrismaModel> | boolean;
|
|
@@ -15,7 +15,7 @@ const config = {
|
|
|
15
15
|
"clientVersion": "7.6.0",
|
|
16
16
|
"engineVersion": "75cbdc1eb7150937890ad5465d861175c6624711",
|
|
17
17
|
"activeProvider": "sqlite",
|
|
18
|
-
"inlineSchema": "generator client {\n provider = \"prisma-client\"\n output = \"../src/generated/prisma\"\n}\n\ndatasource db {\n provider = \"sqlite\"\n}\n\n// Repository\nmodel Repository {\n id String @id @default(uuid())\n owner String\n repo String\n cloneUrl String @map(\"clone_url\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n\n tasks Task[]\n environmentVars EnvironmentVariable[]\n\n @@unique([owner, repo])\n @@map(\"repositories\")\n}\n\n// Task\nmodel Task {\n id String @id @default(uuid())\n title String\n description String\n status String // 'backlog' | 'planning' | 'coding' | 'reviewing' | 'done'\n owner String\n repo String\n branch String\n baseBranch String @map(\"base_branch\") // rebase/merge判定用のベースブランチ\n repoId String @map(\"repo_id\")\n worktreeStatus String @map(\"worktree_status\") // 'pending' | 'created' | 'error'\n\n // Pull Request情報\n pullRequestUrl String? @map(\"pull_request_url\")\n\n effort Int?\n order Int
|
|
18
|
+
"inlineSchema": "generator client {\n provider = \"prisma-client\"\n output = \"../src/generated/prisma\"\n}\n\ndatasource db {\n provider = \"sqlite\"\n}\n\n// Repository\nmodel Repository {\n id String @id @default(uuid())\n owner String\n repo String\n cloneUrl String @map(\"clone_url\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n\n tasks Task[]\n environmentVars EnvironmentVariable[]\n\n @@unique([owner, repo])\n @@map(\"repositories\")\n}\n\n// Task\nmodel Task {\n id String @id @default(uuid())\n title String\n description String\n status String // 'backlog' | 'planning' | 'coding' | 'reviewing' | 'done'\n owner String\n repo String\n branch String\n baseBranch String @map(\"base_branch\") // rebase/merge判定用のベースブランチ\n repoId String @map(\"repo_id\")\n worktreeStatus String @map(\"worktree_status\") // 'pending' | 'created' | 'error'\n\n // Pull Request情報\n pullRequestUrl String? @map(\"pull_request_url\")\n\n effort Int?\n order Int @default(0)\n deletedAt DateTime? @map(\"deleted_at\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n repository Repository @relation(fields: [repoId], references: [id], onDelete: Cascade)\n tabs Tab[]\n\n @@index([owner, repo])\n @@index([status])\n @@index([deletedAt])\n @@map(\"tasks\")\n}\n\n// Tab\nmodel Tab {\n tabId String @id @map(\"tab_id\")\n taskId String @map(\"task_id\")\n order Int // タブ表示用の連番\n status String // 'idle' | 'running' | 'success' | 'error'\n createdAt DateTime @default(now()) @map(\"created_at\")\n startedAt DateTime @map(\"started_at\")\n completedAt DateTime? @map(\"completed_at\")\n todos String? @default(\"[]\") // JSON: Todo[]\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n task Task @relation(fields: [taskId], references: [id], onDelete: Cascade)\n\n @@index([taskId])\n @@map(\"tabs\")\n}\n\n// PlannerTab - プランナーClaude用のタブ(タスクに紐づかない)\nmodel PlannerTab {\n tabId String @id @map(\"tab_id\")\n order Int\n status String // 'idle' | 'running' | 'success' | 'error'\n createdAt DateTime @default(now()) @map(\"created_at\")\n startedAt DateTime @map(\"started_at\")\n completedAt DateTime? @map(\"completed_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n @@map(\"planner_tabs\")\n}\n\n// EnvironmentVariable\nmodel EnvironmentVariable {\n id String @id @default(uuid())\n key String\n value String\n scope String // 'global' | 'owner' | 'repo' - 階層構造の優先順位制御\n owner String?\n repo String?\n enabled Boolean @default(true)\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n repository Repository? @relation(fields: [owner, repo], references: [owner, repo], onDelete: Cascade)\n\n @@unique([key, scope, owner, repo])\n @@index([scope, owner, repo])\n @@map(\"environment_variables\")\n}\n",
|
|
19
19
|
"runtimeDataModel": {
|
|
20
20
|
"models": {},
|
|
21
21
|
"enums": {},
|
|
@@ -29,7 +29,7 @@ const config = {
|
|
|
29
29
|
config.runtimeDataModel = JSON.parse("{\"models\":{\"Repository\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"owner\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"repo\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"cloneUrl\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"clone_url\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"tasks\",\"kind\":\"object\",\"type\":\"Task\",\"relationName\":\"RepositoryToTask\"},{\"name\":\"environmentVars\",\"kind\":\"object\",\"type\":\"EnvironmentVariable\",\"relationName\":\"EnvironmentVariableToRepository\"}],\"dbName\":\"repositories\"},\"Task\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"title\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"description\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"owner\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"repo\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"branch\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"baseBranch\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"base_branch\"},{\"name\":\"repoId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"repo_id\"},{\"name\":\"worktreeStatus\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"worktree_status\"},{\"name\":\"pullRequestUrl\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"pull_request_url\"},{\"name\":\"effort\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"order\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"deletedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"deleted_at\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"repository\",\"kind\":\"object\",\"type\":\"Repository\",\"relationName\":\"RepositoryToTask\"},{\"name\":\"tabs\",\"kind\":\"object\",\"type\":\"Tab\",\"relationName\":\"TabToTask\"}],\"dbName\":\"tasks\"},\"Tab\":{\"fields\":[{\"name\":\"tabId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"tab_id\"},{\"name\":\"taskId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"task_id\"},{\"name\":\"order\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"startedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"started_at\"},{\"name\":\"completedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"completed_at\"},{\"name\":\"todos\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"task\",\"kind\":\"object\",\"type\":\"Task\",\"relationName\":\"TabToTask\"}],\"dbName\":\"tabs\"},\"PlannerTab\":{\"fields\":[{\"name\":\"tabId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"tab_id\"},{\"name\":\"order\",\"kind\":\"scalar\",\"type\":\"Int\"},{\"name\":\"status\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"startedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"started_at\"},{\"name\":\"completedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"completed_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"}],\"dbName\":\"planner_tabs\"},\"EnvironmentVariable\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"key\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"scope\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"owner\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"repo\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"enabled\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"repository\",\"kind\":\"object\",\"type\":\"Repository\",\"relationName\":\"EnvironmentVariableToRepository\"}],\"dbName\":\"environment_variables\"}},\"enums\":{},\"types\":{}}");
|
|
30
30
|
config.parameterizationSchema = {
|
|
31
31
|
strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"repository\",\"task\",\"tabs\",\"_count\",\"tasks\",\"environmentVars\",\"Repository.findUnique\",\"Repository.findUniqueOrThrow\",\"Repository.findFirst\",\"Repository.findFirstOrThrow\",\"Repository.findMany\",\"data\",\"Repository.createOne\",\"Repository.createMany\",\"Repository.createManyAndReturn\",\"Repository.updateOne\",\"Repository.updateMany\",\"Repository.updateManyAndReturn\",\"create\",\"update\",\"Repository.upsertOne\",\"Repository.deleteOne\",\"Repository.deleteMany\",\"having\",\"_min\",\"_max\",\"Repository.groupBy\",\"Repository.aggregate\",\"Task.findUnique\",\"Task.findUniqueOrThrow\",\"Task.findFirst\",\"Task.findFirstOrThrow\",\"Task.findMany\",\"Task.createOne\",\"Task.createMany\",\"Task.createManyAndReturn\",\"Task.updateOne\",\"Task.updateMany\",\"Task.updateManyAndReturn\",\"Task.upsertOne\",\"Task.deleteOne\",\"Task.deleteMany\",\"_avg\",\"_sum\",\"Task.groupBy\",\"Task.aggregate\",\"Tab.findUnique\",\"Tab.findUniqueOrThrow\",\"Tab.findFirst\",\"Tab.findFirstOrThrow\",\"Tab.findMany\",\"Tab.createOne\",\"Tab.createMany\",\"Tab.createManyAndReturn\",\"Tab.updateOne\",\"Tab.updateMany\",\"Tab.updateManyAndReturn\",\"Tab.upsertOne\",\"Tab.deleteOne\",\"Tab.deleteMany\",\"Tab.groupBy\",\"Tab.aggregate\",\"PlannerTab.findUnique\",\"PlannerTab.findUniqueOrThrow\",\"PlannerTab.findFirst\",\"PlannerTab.findFirstOrThrow\",\"PlannerTab.findMany\",\"PlannerTab.createOne\",\"PlannerTab.createMany\",\"PlannerTab.createManyAndReturn\",\"PlannerTab.updateOne\",\"PlannerTab.updateMany\",\"PlannerTab.updateManyAndReturn\",\"PlannerTab.upsertOne\",\"PlannerTab.deleteOne\",\"PlannerTab.deleteMany\",\"PlannerTab.groupBy\",\"PlannerTab.aggregate\",\"EnvironmentVariable.findUnique\",\"EnvironmentVariable.findUniqueOrThrow\",\"EnvironmentVariable.findFirst\",\"EnvironmentVariable.findFirstOrThrow\",\"EnvironmentVariable.findMany\",\"EnvironmentVariable.createOne\",\"EnvironmentVariable.createMany\",\"EnvironmentVariable.createManyAndReturn\",\"EnvironmentVariable.updateOne\",\"EnvironmentVariable.updateMany\",\"EnvironmentVariable.updateManyAndReturn\",\"EnvironmentVariable.upsertOne\",\"EnvironmentVariable.deleteOne\",\"EnvironmentVariable.deleteMany\",\"EnvironmentVariable.groupBy\",\"EnvironmentVariable.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"key\",\"value\",\"scope\",\"owner\",\"repo\",\"enabled\",\"createdAt\",\"updatedAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"contains\",\"startsWith\",\"endsWith\",\"tabId\",\"order\",\"status\",\"startedAt\",\"completedAt\",\"taskId\",\"todos\",\"title\",\"description\",\"branch\",\"baseBranch\",\"repoId\",\"worktreeStatus\",\"pullRequestUrl\",\"effort\",\"deletedAt\",\"cloneUrl\",\"every\",\"some\",\"none\",\"key_scope_owner_repo\",\"owner_repo\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"),
|
|
32
|
-
graph: "mgIxUAsHAACpAQAgCAAAqgEAIGEAAKgBADBiAAAQABBjAACoAQAwZAEAAAABaAEAngEAIWkBAJ4BACFrQACgAQAhiAEBAJ4BACGNAQAAtgEAIAEAAAABACAVAwAAtAEAIAUAALUBACBhAACyAQAwYgAAAwAQYwAAsgEAMGQBAJ4BACFoAQCeAQAhaQEAngEAIWtAAKABACFsQACgAQAheQIAswEAIXoBAJ4BACF_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_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_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-AEAMJIBAAD5AQAgkwEAAPoBADCUAQAA-gEAMJUBAAD6AQAwlgEAAPoBADCXAQAA_AEAMJgBAAD9AQAwCxUAAOoBADAWAADvAQAwkAEAAOsBADCRAQAA7AEAMJIBAADtAQAgkwEAAO4BADCUAQAA7gEAMJUBAADuAQAwlgEAAO4BADCXAQAA8AEAMJgBAADxAQAwB2QBAAAAAWUBAAAAAWYBAAAAAWcBAAAAAWogAAAAAWtAAAAAAWxAAAAAAQIAAAAOACAVAAD1AQAgAwAAAA4AIBUAAPUBACAWAAD0AQAgAQ4AAIoCADAOAwAArwEAIGEAAKwBADBiAAAMABBjAACsAQAwZAEAAAABZQEAngEAIWYBAJ4BACFnAQCeAQAhaAEArQEAIWkBAK0BACFqIACuAQAha0AAoAEAIWxAAKABACGMAQAAqwEAIAIAAAAOACAOAAD0AQAgAgAAAPIBACAOAADzAQAgDGEAAPEBADBiAADyAQAQYwAA8QEAMGQBAJ4BACFlAQCeAQAhZgEAngEAIWcBAJ4BACFoAQCtAQAhaQEArQEAIWogAK4BACFrQACgAQAhbEAAoAEAIQxhAADxAQAwYgAA8gEAEGMAAPEBADBkAQCeAQAhZQEAngEAIWYBAJ4BACFnAQCeAQAhaAEArQEAIWkBAK0BACFqIACuAQAha0AAoAEAIWxAAKABACEHZAEAuwEAIWUBALsBACFmAQC7AQAhZwEAuwEAIWogALwBACFrQAC9AQAhbEAAvQEAIQdkAQC7AQAhZQEAuwEAIWYBALsBACFnAQC7AQAhaiAAvAEAIWtAAL0BACFsQAC9AQAhB2QBAAAAAWUBAAAAAWYBAAAAAWcBAAAAAWogAAAAAWtAAAAAAWxAAAAAARAFAADkAQAgZAEAAAABaAEAAAABaQEAAAABa0AAAAABbEAAAAABeQIAAAABegEAAAABfwEAAAABgAEBAAAAAYEBAQAAAAGCAQEAAAABhAEBAAAAAYUBAQAAAAGGAQIAAAABhwFAAAAAAQIAAAAFACAVAACBAgAgAwAAAAUAIBUAAIECACAWAACAAgAgAQ4AAIkCADAVAwAAtAEAIAUAALUBACBhAACyAQAwYgAAAwAQYwAAsgEAMGQBAAAAAWgBAJ4BACFpAQCeAQAha0AAoAEAIWxAAKABACF5AgCzAQAhegEAngEAIX8BAJ4BACGAAQEAngEAIYEBAQCeAQAhggEBAJ4BACGDAQEAngEAIYQBAQCeAQAhhQEBAK0BACGGAQIAswEAIYcBQAChAQAhAgAAAAUAIA4AAIACACACAAAA_gEAIA4AAP8BACATYQAA_QEAMGIAAP4BABBjAAD9AQAwZAEAngEAIWgBAJ4BACFpAQCeAQAha0AAoAEAIWxAAKABACF5AgCzAQAhegEAngEAIX8BAJ4BACGAAQEAngEAIYEBAQCeAQAhggEBAJ4BACGDAQEAngEAIYQBAQCeAQAhhQEBAK0BACGGAQIAswEAIYcBQAChAQAhE2EAAP0BADBiAAD-AQAQYwAA_QEAMGQBAJ4BACFoAQCeAQAhaQEAngEAIWtAAKABACFsQACgAQAheQIAswEAIXoBAJ4BACF_AQCeAQAhgAEBAJ4BACGBAQEAngEAIYIBAQCeAQAhgwEBAJ4BACGEAQEAngEAIYUBAQCtAQAhhgECALMBACGHAUAAoQEAIQ9kAQC7AQAhaAEAuwEAIWkBALsBACFrQAC9AQAhbEAAvQEAIXkCANQBACF6AQC7AQAhfwEAuwEAIYABAQC7AQAhgQEBALsBACGCAQEAuwEAIYQBAQC7AQAhhQEBAL4BACGGAQIA1AEAIYcBQADHAQAhEAUAANYBACBkAQC7AQAhaAEAuwEAIWkBALsBACFrQAC9AQAhbEAAvQEAIXkCANQBACF6AQC7AQAhfwEAuwEAIYABAQC7AQAhgQEBALsBACGCAQEAuwEAIYQBAQC7AQAhhQEBAL4BACGGAQIA1AEAIYcBQADHAQAhEAUAAOQBACBkAQAAAAFoAQAAAAFpAQAAAAFrQAAAAAFsQAAAAAF5AgAAAAF6AQAAAAF_AQAAAAGAAQEAAAABgQEBAAAAAYIBAQAAAAGEAQEAAAABhQEBAAAAAYYBAgAAAAGHAUAAAAABBBUAAPYBADCQAQAA9wEAMJIBAAD5AQAglgEAAPoBADAEFQAA6gEAMJABAADrAQAwkgEAAO0BACCWAQAA7gEAMAAAAgcAAIQCACAIAACFAgAgBgMAAIYCACAFAACIAgAgeQAAtwEAIIUBAAC3AQAghgEAALcBACCHAQAAtwEAIAAPZAEAAAABaAEAAAABaQEAAAABa0AAAAABbEAAAAABeQIAAAABegEAAAABfwEAAAABgAEBAAAAAYEBAQAAAAGCAQEAAAABhAEBAAAAAYUBAQAAAAGGAQIAAAABhwFAAAAAAQdkAQAAAAFlAQAAAAFmAQAAAAFnAQAAAAFqIAAAAAFrQAAAAAFsQAAAAAEGCAAAgwIAIGQBAAAAAWgBAAAAAWkBAAAAAWtAAAAAAYgBAQAAAAECAAAAAQAgFQAAiwIAIAhrQAAAAAFsQAAAAAF4AQAAAAF5AgAAAAF6AQAAAAF7QAAAAAF8QAAAAAF-AQAAAAEDAAAAEAAgFQAAiwIAIBYAAJACACAIAAAAEAAgCAAA6QEAIA4AAJACACBkAQC7AQAhaAEAuwEAIWkBALsBACFrQAC9AQAhiAEBALsBACEGCAAA6QEAIGQBALsBACFoAQC7AQAhaQEAuwEAIWtAAL0BACGIAQEAuwEAIREDAADjAQAgZAEAAAABaAEAAAABaQEAAAABa0AAAAABbEAAAAABeQIAAAABegEAAAABfwEAAAABgAEBAAAAAYEBAQAAAAGCAQEAAAABgwEBAAAAAYQBAQAAAAGFAQEAAAABhgECAAAAAYcBQAAAAAECAAAABQAgFQAAkQIAIAMAAAADACAVAACRAgAgFgAAlQIAIBMAAAADACADAADVAQAgDgAAlQIAIGQBALsBACFoAQC7AQAhaQEAuwEAIWtAAL0BACFsQAC9AQAheQIA1AEAIXoBALsBACF_AQC7AQAhgAEBALsBACGBAQEAuwEAIYIBAQC7AQAhgwEBALsBACGEAQEAuwEAIYUBAQC-AQAhhgECANQBACGHAUAAxwEAIREDAADVAQAgZAEAuwEAIWgBALsBACFpAQC7AQAha0AAvQEAIWxAAL0BACF5AgDUAQAhegEAuwEAIX8BALsBACGAAQEAuwEAIYEBAQC7AQAhggEBALsBACGDAQEAuwEAIYQBAQC7AQAhhQEBAL4BACGGAQIA1AEAIYcBQADHAQAhBgcAAIICACBkAQAAAAFoAQAAAAFpAQAAAAFrQAAAAAGIAQEAAAABAgAAAAEAIBUAAJYCACADAAAAEAAgFQAAlgIAIBYAAJoCACAIAAAAEAAgBwAA6AEAIA4AAJoCACBkAQC7AQAhaAEAuwEAIWkBALsBACFrQAC9AQAhiAEBALsBACEGBwAA6AEAIGQBALsBACFoAQC7AQAhaQEAuwEAIWtAAL0BACGIAQEAuwEAIQMGAAYHBgIIDwUDAwABBQoDBgAEAQQAAgEFCwABAxEBAgcSAAgTAAAAAAMGAAsbAAwcAA0AAAADBgALGwAMHAANAQMAAQEDAAEFBgASGwAVHAAWLQATLgAUAAAAAAAFBgASGwAVHAAWLQATLgAUAQQAAgEEAAIFBgAbGwAeHAAfLQAcLgAdAAAAAAAFBgAbGwAeHAAfLQAcLgAdAAAABQYAJRsAKBwAKS0AJi4AJwAAAAAABQYAJRsAKBwAKS0AJi4AJwEDeQEBA38BAwYALhsALxwAMAAAAAMGAC4bAC8cADAJAgEKFAELFgEMFwENGAEPGgEQHAcRHQgSHwETIQcUIgkXIwEYJAEZJQcdKAoeKQ4fKgIgKwIhLAIiLQIjLgIkMAIlMgcmMw8nNQIoNwcpOBAqOQIrOgIsOwcvPhEwPxcxQAMyQQMzQgM0QwM1RAM2RgM3SAc4SRg5SwM6TQc7Thk8TwM9UAM-UQc_VBpAVSBBVyFCWCFDWyFEXCFFXSFGXyFHYQdIYiJJZCFKZgdLZyNMaCFNaSFOagdPbSRQbipRbwVScAVTcQVUcgVVcwVWdQVXdwdYeCtZewVafQdbfixcgAEFXYEBBV6CAQdfhQEtYIYBMQ"
|
|
32
|
+
graph: "mgIxUAsHAACpAQAgCAAAqgEAIGEAAKgBADBiAAAQABBjAACoAQAwZAEAAAABaAEAngEAIWkBAJ4BACFrQACgAQAhiAEBAJ4BACGNAQAAtgEAIAEAAAABACAVAwAAtAEAIAUAALUBACBhAACyAQAwYgAAAwAQYwAAsgEAMGQBAJ4BACFoAQCeAQAhaQEAngEAIWtAAKABACFsQACgAQAheQIAnwEAIXoBAJ4BACF_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_AQC7AQAhgAEBALsBACGBAQEAuwEAIYIBAQC7AQAhgwEBALsBACGEAQEAuwEAIYUBAQC-AQAhhgECANQBACGHAUAAxwEAIQIAAAADACAOAAA2ACACAAAAAwAgDgAANgAgAwAAAAUAIBUAAC8AIBYAADQAIAEAAAAFACABAAAAAwAgCAYAAM8BACAbAADSAQAgHAAA0QEAIC0AANABACAuAADTAQAghQEAALcBACCGAQAAtwEAIIcBAAC3AQAgE2EAAKMBADBiAAA9ABBjAACjAQAwZAEAiAEAIWgBAIgBACFpAQCIAQAha0AAiwEAIWxAAIsBACF5AgCXAQAhegEAiAEAIX8BAIgBACGAAQEAiAEAIYEBAQCIAQAhggEBAIgBACGDAQEAiAEAIYQBAQCIAQAhhQEBAIkBACGGAQIApAEAIYcBQACYAQAhAwAAAAMAIAEAADwAMBoAAD0AIAMAAAADACABAAAEADACAAAFACABAAAACQAgAQAAAAkAIAMAAAAHACABAAAIADACAAAJACADAAAABwAgAQAACAAwAgAACQAgAwAAAAcAIAEAAAgAMAIAAAkAIAoEAADOAQAga0AAAAABbEAAAAABeAEAAAABeQIAAAABegEAAAABe0AAAAABfEAAAAABfQEAAAABfgEAAAABAQ4AAEUAIAlrQAAAAAFsQAAAAAF4AQAAAAF5AgAAAAF6AQAAAAF7QAAAAAF8QAAAAAF9AQAAAAF-AQAAAAEBDgAARwAwAQ4AAEcAMAoEAADNAQAga0AAvQEAIWxAAL0BACF4AQC7AQAheQIAxgEAIXoBALsBACF7QAC9AQAhfEAAxwEAIX0BALsBACF-AQC-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_AQCeAQAhgAEBAJ4BACGBAQEAngEAIYIBAQCeAQAhgwEBAJ4BACGEAQEAngEAIYUBAQCtAQAhhgECALMBACGHAUAAoQEAIQhtAgAAAAFuAgAAAAVvAgAAAAVwAgAAAAFxAgAAAAFyAgAAAAFzAgAAAAF0AgCSAQAhDAcAAKkBACAIAACqAQAgYQAAqAEAMGIAABAAEGMAAKgBADBkAQCeAQAhaAEAngEAIWkBAJ4BACFrQACgAQAhiAEBAJ4BACGOAQAAEAAgjwEAABAAIAOJAQAABwAgigEAAAcAIIsBAAAHACACaAEAAAABaQEAAAABAAAAAAGTAQEAAAABAZMBIAAAAAEBkwFAAAAAAQGTAQEAAAABBxUAAJYCACAWAACZAgAgkAEAAJcCACCRAQAAmAIAIJQBAAAQACCVAQAAEAAglgEAAAEAIAMVAACWAgAgkAEAAJcCACCWAQAAAQAgAAAAAAAFkwECAAAAAZkBAgAAAAGaAQIAAAABmwECAAAAAZwBAgAAAAEBkwFAAAAAAQAAAAAABRUAAJECACAWAACUAgAgkAEAAJICACCRAQAAkwIAIJYBAAAFACADFQAAkQIAIJABAACSAgAglgEAAAUAIAAAAAAABZMBAgAAAAGZAQIAAAABmgECAAAAAZsBAgAAAAGcAQIAAAABBRUAAIsCACAWAACPAgAgkAEAAIwCACCRAQAAjgIAIJYBAAABACALFQAA1wEAMBYAANwBADCQAQAA2AEAMJEBAADZAQAwkgEAANoBACCTAQAA2wEAMJQBAADbAQAwlQEAANsBADCWAQAA2wEAMJcBAADdAQAwmAEAAN4BADAIa0AAAAABbEAAAAABeAEAAAABeQIAAAABegEAAAABe0AAAAABfEAAAAABfgEAAAABAgAAAAkAIBUAAOIBACADAAAACQAgFQAA4gEAIBYAAOEBACABDgAAjQIAMA0EAACxAQAgYQAAsAEAMGIAAAcAEGMAALABADBrQACgAQAhbEAAoAEAIXgBAAAAAXkCAJ8BACF6AQCeAQAhe0AAoAEAIXxAAKEBACF9AQCeAQAhfgEArQEAIQIAAAAJACAOAADhAQAgAgAAAN8BACAOAADgAQAgDGEAAN4BADBiAADfAQAQYwAA3gEAMGtAAKABACFsQACgAQAheAEAngEAIXkCAJ8BACF6AQCeAQAhe0AAoAEAIXxAAKEBACF9AQCeAQAhfgEArQEAIQxhAADeAQAwYgAA3wEAEGMAAN4BADBrQACgAQAhbEAAoAEAIXgBAJ4BACF5AgCfAQAhegEAngEAIXtAAKABACF8QAChAQAhfQEAngEAIX4BAK0BACEIa0AAvQEAIWxAAL0BACF4AQC7AQAheQIAxgEAIXoBALsBACF7QAC9AQAhfEAAxwEAIX4BAL4BACEIa0AAvQEAIWxAAL0BACF4AQC7AQAheQIAxgEAIXoBALsBACF7QAC9AQAhfEAAxwEAIX4BAL4BACEIa0AAAAABbEAAAAABeAEAAAABeQIAAAABegEAAAABe0AAAAABfEAAAAABfgEAAAABAxUAAIsCACCQAQAAjAIAIJYBAAABACAEFQAA1wEAMJABAADYAQAwkgEAANoBACCWAQAA2wEAMAAAAAsVAAD2AQAwFgAA-wEAMJABAAD3AQAwkQEAAPgBADCSAQAA-QEAIJMBAAD6AQAwlAEAAPoBADCVAQAA-gEAMJYBAAD6AQAwlwEAAPwBADCYAQAA_QEAMAsVAADqAQAwFgAA7wEAMJABAADrAQAwkQEAAOwBADCSAQAA7QEAIJMBAADuAQAwlAEAAO4BADCVAQAA7gEAMJYBAADuAQAwlwEAAPABADCYAQAA8QEAMAdkAQAAAAFlAQAAAAFmAQAAAAFnAQAAAAFqIAAAAAFrQAAAAAFsQAAAAAECAAAADgAgFQAA9QEAIAMAAAAOACAVAAD1AQAgFgAA9AEAIAEOAACKAgAwDgMAAK8BACBhAACsAQAwYgAADAAQYwAArAEAMGQBAAAAAWUBAJ4BACFmAQCeAQAhZwEAngEAIWgBAK0BACFpAQCtAQAhaiAArgEAIWtAAKABACFsQACgAQAhjAEAAKsBACACAAAADgAgDgAA9AEAIAIAAADyAQAgDgAA8wEAIAxhAADxAQAwYgAA8gEAEGMAAPEBADBkAQCeAQAhZQEAngEAIWYBAJ4BACFnAQCeAQAhaAEArQEAIWkBAK0BACFqIACuAQAha0AAoAEAIWxAAKABACEMYQAA8QEAMGIAAPIBABBjAADxAQAwZAEAngEAIWUBAJ4BACFmAQCeAQAhZwEAngEAIWgBAK0BACFpAQCtAQAhaiAArgEAIWtAAKABACFsQACgAQAhB2QBALsBACFlAQC7AQAhZgEAuwEAIWcBALsBACFqIAC8AQAha0AAvQEAIWxAAL0BACEHZAEAuwEAIWUBALsBACFmAQC7AQAhZwEAuwEAIWogALwBACFrQAC9AQAhbEAAvQEAIQdkAQAAAAFlAQAAAAFmAQAAAAFnAQAAAAFqIAAAAAFrQAAAAAFsQAAAAAEQBQAA5AEAIGQBAAAAAWgBAAAAAWkBAAAAAWtAAAAAAWxAAAAAAXkCAAAAAXoBAAAAAX8BAAAAAYABAQAAAAGBAQEAAAABggEBAAAAAYQBAQAAAAGFAQEAAAABhgECAAAAAYcBQAAAAAECAAAABQAgFQAAgQIAIAMAAAAFACAVAACBAgAgFgAAgAIAIAEOAACJAgAwFQMAALQBACAFAAC1AQAgYQAAsgEAMGIAAAMAEGMAALIBADBkAQAAAAFoAQCeAQAhaQEAngEAIWtAAKABACFsQACgAQAheQIAnwEAIXoBAJ4BACF_AQCeAQAhgAEBAJ4BACGBAQEAngEAIYIBAQCeAQAhgwEBAJ4BACGEAQEAngEAIYUBAQCtAQAhhgECALMBACGHAUAAoQEAIQIAAAAFACAOAACAAgAgAgAAAP4BACAOAAD_AQAgE2EAAP0BADBiAAD-AQAQYwAA_QEAMGQBAJ4BACFoAQCeAQAhaQEAngEAIWtAAKABACFsQACgAQAheQIAnwEAIXoBAJ4BACF_AQCeAQAhgAEBAJ4BACGBAQEAngEAIYIBAQCeAQAhgwEBAJ4BACGEAQEAngEAIYUBAQCtAQAhhgECALMBACGHAUAAoQEAIRNhAAD9AQAwYgAA_gEAEGMAAP0BADBkAQCeAQAhaAEAngEAIWkBAJ4BACFrQACgAQAhbEAAoAEAIXkCAJ8BACF6AQCeAQAhfwEAngEAIYABAQCeAQAhgQEBAJ4BACGCAQEAngEAIYMBAQCeAQAhhAEBAJ4BACGFAQEArQEAIYYBAgCzAQAhhwFAAKEBACEPZAEAuwEAIWgBALsBACFpAQC7AQAha0AAvQEAIWxAAL0BACF5AgDGAQAhegEAuwEAIX8BALsBACGAAQEAuwEAIYEBAQC7AQAhggEBALsBACGEAQEAuwEAIYUBAQC-AQAhhgECANQBACGHAUAAxwEAIRAFAADWAQAgZAEAuwEAIWgBALsBACFpAQC7AQAha0AAvQEAIWxAAL0BACF5AgDGAQAhegEAuwEAIX8BALsBACGAAQEAuwEAIYEBAQC7AQAhggEBALsBACGEAQEAuwEAIYUBAQC-AQAhhgECANQBACGHAUAAxwEAIRAFAADkAQAgZAEAAAABaAEAAAABaQEAAAABa0AAAAABbEAAAAABeQIAAAABegEAAAABfwEAAAABgAEBAAAAAYEBAQAAAAGCAQEAAAABhAEBAAAAAYUBAQAAAAGGAQIAAAABhwFAAAAAAQQVAAD2AQAwkAEAAPcBADCSAQAA-QEAIJYBAAD6AQAwBBUAAOoBADCQAQAA6wEAMJIBAADtAQAglgEAAO4BADAAAAIHAACEAgAgCAAAhQIAIAUDAACGAgAgBQAAiAIAIIUBAAC3AQAghgEAALcBACCHAQAAtwEAIAAPZAEAAAABaAEAAAABaQEAAAABa0AAAAABbEAAAAABeQIAAAABegEAAAABfwEAAAABgAEBAAAAAYEBAQAAAAGCAQEAAAABhAEBAAAAAYUBAQAAAAGGAQIAAAABhwFAAAAAAQdkAQAAAAFlAQAAAAFmAQAAAAFnAQAAAAFqIAAAAAFrQAAAAAFsQAAAAAEGCAAAgwIAIGQBAAAAAWgBAAAAAWkBAAAAAWtAAAAAAYgBAQAAAAECAAAAAQAgFQAAiwIAIAhrQAAAAAFsQAAAAAF4AQAAAAF5AgAAAAF6AQAAAAF7QAAAAAF8QAAAAAF-AQAAAAEDAAAAEAAgFQAAiwIAIBYAAJACACAIAAAAEAAgCAAA6QEAIA4AAJACACBkAQC7AQAhaAEAuwEAIWkBALsBACFrQAC9AQAhiAEBALsBACEGCAAA6QEAIGQBALsBACFoAQC7AQAhaQEAuwEAIWtAAL0BACGIAQEAuwEAIREDAADjAQAgZAEAAAABaAEAAAABaQEAAAABa0AAAAABbEAAAAABeQIAAAABegEAAAABfwEAAAABgAEBAAAAAYEBAQAAAAGCAQEAAAABgwEBAAAAAYQBAQAAAAGFAQEAAAABhgECAAAAAYcBQAAAAAECAAAABQAgFQAAkQIAIAMAAAADACAVAACRAgAgFgAAlQIAIBMAAAADACADAADVAQAgDgAAlQIAIGQBALsBACFoAQC7AQAhaQEAuwEAIWtAAL0BACFsQAC9AQAheQIAxgEAIXoBALsBACF_AQC7AQAhgAEBALsBACGBAQEAuwEAIYIBAQC7AQAhgwEBALsBACGEAQEAuwEAIYUBAQC-AQAhhgECANQBACGHAUAAxwEAIREDAADVAQAgZAEAuwEAIWgBALsBACFpAQC7AQAha0AAvQEAIWxAAL0BACF5AgDGAQAhegEAuwEAIX8BALsBACGAAQEAuwEAIYEBAQC7AQAhggEBALsBACGDAQEAuwEAIYQBAQC7AQAhhQEBAL4BACGGAQIA1AEAIYcBQADHAQAhBgcAAIICACBkAQAAAAFoAQAAAAFpAQAAAAFrQAAAAAGIAQEAAAABAgAAAAEAIBUAAJYCACADAAAAEAAgFQAAlgIAIBYAAJoCACAIAAAAEAAgBwAA6AEAIA4AAJoCACBkAQC7AQAhaAEAuwEAIWkBALsBACFrQAC9AQAhiAEBALsBACEGBwAA6AEAIGQBALsBACFoAQC7AQAhaQEAuwEAIWtAAL0BACGIAQEAuwEAIQMGAAYHBgIIDwUDAwABBQoDBgAEAQQAAgEFCwABAxEBAgcSAAgTAAAAAAMGAAsbAAwcAA0AAAADBgALGwAMHAANAQMAAQEDAAEFBgASGwAVHAAWLQATLgAUAAAAAAAFBgASGwAVHAAWLQATLgAUAQQAAgEEAAIFBgAbGwAeHAAfLQAcLgAdAAAAAAAFBgAbGwAeHAAfLQAcLgAdAAAABQYAJRsAKBwAKS0AJi4AJwAAAAAABQYAJRsAKBwAKS0AJi4AJwEDeQEBA38BAwYALhsALxwAMAAAAAMGAC4bAC8cADAJAgEKFAELFgEMFwENGAEPGgEQHAcRHQgSHwETIQcUIgkXIwEYJAEZJQcdKAoeKQ4fKgIgKwIhLAIiLQIjLgIkMAIlMgcmMw8nNQIoNwcpOBAqOQIrOgIsOwcvPhEwPxcxQAMyQQMzQgM0QwM1RAM2RgM3SAc4SRg5SwM6TQc7Thk8TwM9UAM-UQc_VBpAVSBBVyFCWCFDWyFEXCFFXSFGXyFHYQdIYiJJZCFKZgdLZyNMaCFNaSFOagdPbSRQbipRbwVScAVTcQVUcgVVcwVWdQVXdwdYeCtZewVafQdbfixcgAEFXYEBBV6CAQdfhQEtYIYBMQ"
|
|
33
33
|
};
|
|
34
34
|
async function decodeBase64AsWasm(wasmBase64) {
|
|
35
35
|
const { Buffer } = await import('node:buffer');
|
|
@@ -420,13 +420,6 @@ export type TabUncheckedUpdateManyWithoutTaskNestedInput = {
|
|
|
420
420
|
updateMany?: Prisma.TabUpdateManyWithWhereWithoutTaskInput | Prisma.TabUpdateManyWithWhereWithoutTaskInput[];
|
|
421
421
|
deleteMany?: Prisma.TabScalarWhereInput | Prisma.TabScalarWhereInput[];
|
|
422
422
|
};
|
|
423
|
-
export type IntFieldUpdateOperationsInput = {
|
|
424
|
-
set?: number;
|
|
425
|
-
increment?: number;
|
|
426
|
-
decrement?: number;
|
|
427
|
-
multiply?: number;
|
|
428
|
-
divide?: number;
|
|
429
|
-
};
|
|
430
423
|
export type TabCreateWithoutTaskInput = {
|
|
431
424
|
tabId: string;
|
|
432
425
|
order: number;
|