@minimalcorp/tsunagi 0.1.18 → 0.1.19
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/build-manifest.json +3 -3
- package/.next/standalone/apps/web/.next/prerender-manifest.json +3 -3
- 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.html +1 -1
- package/.next/standalone/apps/web/.next/server/app/_not-found.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
- 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 +1 -1
- 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 +1 -1
- package/.next/standalone/apps/web/.next/server/app/index.html +1 -1
- package/.next/standalone/apps/web/.next/server/app/index.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/index.segments/_full.segment.rsc +1 -1
- 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 +1 -1
- package/.next/standalone/apps/web/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/settings.html +1 -1
- package/.next/standalone/apps/web/.next/server/app/settings.rsc +1 -1
- package/.next/standalone/apps/web/.next/server/app/settings.segments/_full.segment.rsc +1 -1
- 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 +1 -1
- package/.next/standalone/apps/web/.next/server/app/settings.segments/_tree.segment.rsc +1 -1
- 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/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/dist/server/routes/terminal.js +13 -11
- package/npm-shrinkwrap.json +12 -12
- package/package.json +1 -1
- /package/.next/standalone/apps/web/.next/static/{36-cU0G0900-sCM9SPr1i → UZBFC2azFDGUO9l2ed0nq}/_buildManifest.js +0 -0
- /package/.next/standalone/apps/web/.next/static/{36-cU0G0900-sCM9SPr1i → UZBFC2azFDGUO9l2ed0nq}/_clientMiddlewareManifest.js +0 -0
- /package/.next/standalone/apps/web/.next/static/{36-cU0G0900-sCM9SPr1i → UZBFC2azFDGUO9l2ed0nq}/_ssgManifest.js +0 -0
|
@@ -3,6 +3,7 @@ import * as os from 'os';
|
|
|
3
3
|
import * as path from 'path';
|
|
4
4
|
import { ptyManager } from '../pty-manager.js';
|
|
5
5
|
import { prisma } from '../lib/db.js';
|
|
6
|
+
import { getEnv } from '../lib/repositories/environment.js';
|
|
6
7
|
// サーバーはプロジェクトルートから起動されるため process.cwd() でルートを取得
|
|
7
8
|
const TSUNAGI_EDITOR_PATH = path.resolve(process.cwd(), 'scripts/monaco-editor.sh');
|
|
8
9
|
// Fastify(API) の公開ポート。index.ts と同じ既定値。monaco-editor.sh など PTY 内の
|
|
@@ -199,21 +200,22 @@ export async function terminalRoutes(fastify) {
|
|
|
199
200
|
return reply.status(200).send({ sessionId, reused: true });
|
|
200
201
|
}
|
|
201
202
|
try {
|
|
202
|
-
//
|
|
203
|
-
|
|
203
|
+
// sessionId(=tab_id) から Task(owner/repo) を解決し、repo スコープまで階層マージした
|
|
204
|
+
// 環境変数を取得する(global → owner → repo、後勝ちで上書き)。
|
|
205
|
+
// Plannerタブ等、Taskに紐づかないタブは Tab レコードが存在しないため global のみになる。
|
|
206
|
+
let dbEnv = {};
|
|
204
207
|
try {
|
|
205
|
-
const
|
|
206
|
-
where: {
|
|
207
|
-
|
|
208
|
-
globalEnvVars.forEach((e) => {
|
|
209
|
-
globalEnv[e.key] = e.value;
|
|
208
|
+
const tab = await prisma.tab.findUnique({
|
|
209
|
+
where: { tabId: sessionId },
|
|
210
|
+
include: { task: true },
|
|
210
211
|
});
|
|
211
|
-
|
|
212
|
+
dbEnv = tab ? await getEnv('repo', tab.task.owner, tab.task.repo) : await getEnv('global');
|
|
213
|
+
fastify.log.info({ count: Object.keys(dbEnv).length, owner: tab?.task.owner, repo: tab?.task.repo }, 'Loaded env vars');
|
|
212
214
|
}
|
|
213
215
|
catch (err) {
|
|
214
|
-
fastify.log.warn({ err }, 'Failed to load
|
|
216
|
+
fastify.log.warn({ err }, 'Failed to load env vars');
|
|
215
217
|
}
|
|
216
|
-
// 優先順位: リクエストで渡されたenv > DB
|
|
218
|
+
// 優先順位: リクエストで渡されたenv > DB env(global/owner/repo) > tsunagi独自のEDITOR設定
|
|
217
219
|
// tsunagi-editor.sh をデフォルトにすることで Ctrl+G が Monaco Modal を開く。
|
|
218
220
|
// DB / リクエストで EDITOR が明示設定されている場合はそちらが優先される。
|
|
219
221
|
const tsunagiDefaultEnv = {
|
|
@@ -223,7 +225,7 @@ export async function terminalRoutes(fastify) {
|
|
|
223
225
|
// ホストなので localhost。単一ポート化で API は SERVER_PORT(既定 2791)。
|
|
224
226
|
TSUNAGI_API_BASE: `http://localhost:${SERVER_PORT}`,
|
|
225
227
|
};
|
|
226
|
-
const mergedEnv = { ...tsunagiDefaultEnv, ...
|
|
228
|
+
const mergedEnv = { ...tsunagiDefaultEnv, ...dbEnv, ...env };
|
|
227
229
|
const session = ptyManager.createSession(sessionId, workingDir, mergedEnv);
|
|
228
230
|
// コマンドが指定されていればPTY起動後にシェルへ書き込む
|
|
229
231
|
if (command) {
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@minimalcorp/tsunagi",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.19",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@minimalcorp/tsunagi",
|
|
9
|
-
"version": "0.1.
|
|
9
|
+
"version": "0.1.19",
|
|
10
10
|
"license": "SEE LICENSE IN LICENSE",
|
|
11
11
|
"os": [
|
|
12
12
|
"darwin",
|
|
@@ -1034,9 +1034,9 @@
|
|
|
1034
1034
|
}
|
|
1035
1035
|
},
|
|
1036
1036
|
"node_modules/@types/node": {
|
|
1037
|
-
"version": "26.0
|
|
1038
|
-
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.0.
|
|
1039
|
-
"integrity": "sha512-
|
|
1037
|
+
"version": "26.1.0",
|
|
1038
|
+
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.0.tgz",
|
|
1039
|
+
"integrity": "sha512-O0A1G3xPGy4w7AgQdAQYUlQ+BKk2Oovw8eRpofyp5KdBZULnbe+WqaOVNrm705SHphCiG4XHsACrSmPu1f+Kgw==",
|
|
1040
1040
|
"license": "MIT",
|
|
1041
1041
|
"dependencies": {
|
|
1042
1042
|
"undici-types": "~8.3.0"
|
|
@@ -1826,9 +1826,9 @@
|
|
|
1826
1826
|
}
|
|
1827
1827
|
},
|
|
1828
1828
|
"node_modules/fast-uri": {
|
|
1829
|
-
"version": "3.1.
|
|
1830
|
-
"resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.
|
|
1831
|
-
"integrity": "sha512-
|
|
1829
|
+
"version": "3.1.3",
|
|
1830
|
+
"resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.3.tgz",
|
|
1831
|
+
"integrity": "sha512-i70LwGWUduXqzicKXWshooq+sWL1K3WUU5rKZNG/0i3a1OSoX3HqhH5WbWwTmqWfor4urUakGPiRQcleRZTwOg==",
|
|
1832
1832
|
"funding": [
|
|
1833
1833
|
{
|
|
1834
1834
|
"type": "github",
|
|
@@ -1842,9 +1842,9 @@
|
|
|
1842
1842
|
"license": "BSD-3-Clause"
|
|
1843
1843
|
},
|
|
1844
1844
|
"node_modules/fastify": {
|
|
1845
|
-
"version": "5.
|
|
1846
|
-
"resolved": "https://registry.npmjs.org/fastify/-/fastify-5.
|
|
1847
|
-
"integrity": "sha512-
|
|
1845
|
+
"version": "5.9.0",
|
|
1846
|
+
"resolved": "https://registry.npmjs.org/fastify/-/fastify-5.9.0.tgz",
|
|
1847
|
+
"integrity": "sha512-VMS5lE0zj+MZlJpQa3Qv5iGjfun0H2N7VRgoBwpcTNQ2bdIQpv7fDpb+HGteGbicBsGkzGS+X+hdx9mmrfWuHQ==",
|
|
1848
1848
|
"funding": [
|
|
1849
1849
|
{
|
|
1850
1850
|
"type": "github",
|
|
@@ -1864,7 +1864,7 @@
|
|
|
1864
1864
|
"abstract-logging": "^2.0.1",
|
|
1865
1865
|
"avvio": "^9.0.0",
|
|
1866
1866
|
"fast-json-stringify": "^6.0.0",
|
|
1867
|
-
"find-my-way": "^9.
|
|
1867
|
+
"find-my-way": "^9.6.0",
|
|
1868
1868
|
"light-my-request": "^6.0.0",
|
|
1869
1869
|
"pino": "^9.14.0 || ^10.1.0",
|
|
1870
1870
|
"process-warning": "^5.0.0",
|
package/package.json
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|