nomoreide 0.1.42 → 0.1.43

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.
@@ -18,8 +18,8 @@
18
18
  }
19
19
  })();
20
20
  </script>
21
- <script type="module" crossorigin src="/assets/index-BpRNFLMS.js"></script>
22
- <link rel="stylesheet" crossorigin href="/assets/index-DDdHKSWq.css">
21
+ <script type="module" crossorigin src="/assets/index-WULLTGlU.js"></script>
22
+ <link rel="stylesheet" crossorigin href="/assets/index-Dj3f-wh2.css">
23
23
  </head>
24
24
  <body>
25
25
  <div id="root"></div>
@@ -6,6 +6,7 @@ import { errorRoutes } from "./errors-routes.js";
6
6
  import { gitRoutes } from "./git-routes.js";
7
7
  import { logSourceRoutes } from "./log-sources-routes.js";
8
8
  import { metricsRoutes } from "./metrics-routes.js";
9
+ import { onboardRoutes } from "./onboard-routes.js";
9
10
  import { serviceRoutes } from "./service-routes.js";
10
11
  import { shellRoutes } from "./shell-routes.js";
11
12
  import { terminalRoutes } from "./terminal-routes.js";
@@ -25,6 +26,7 @@ export const routes = [
25
26
  ...gitRoutes,
26
27
  ...logSourceRoutes,
27
28
  ...metricsRoutes,
29
+ ...onboardRoutes,
28
30
  ...serviceRoutes,
29
31
  ...terminalRoutes,
30
32
  ...shellRoutes,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/web/routes/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,MAAM,GAAY;IAC7B,GAAG,eAAe;IAClB,GAAG,WAAW;IACd,GAAG,eAAe;IAClB,GAAG,cAAc;IACjB,GAAG,WAAW;IACd,GAAG,SAAS;IACZ,GAAG,eAAe;IAClB,GAAG,aAAa;IAChB,GAAG,aAAa;IAChB,GAAG,cAAc;IACjB,GAAG,WAAW;CACf,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/web/routes/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,MAAM,GAAY;IAC7B,GAAG,eAAe;IAClB,GAAG,WAAW;IACd,GAAG,eAAe;IAClB,GAAG,cAAc;IACjB,GAAG,WAAW;IACd,GAAG,SAAS;IACZ,GAAG,eAAe;IAClB,GAAG,aAAa;IAChB,GAAG,aAAa;IAChB,GAAG,aAAa;IAChB,GAAG,cAAc;IACjB,GAAG,WAAW;CACf,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { type Route } from "./context.js";
2
+ /**
3
+ * Structured "Add from GitHub" wizard: paste a URL → clone + scan + propose →
4
+ * confirm → install (streamed) → register & start. (The AI-native path skips
5
+ * all this and drives the same core module from the agent dock instead.)
6
+ * Cloning / install live in the guarded `repo-onboard` core module so
7
+ * GitManager stays read-safe.
8
+ */
9
+ export declare const onboardRoutes: Route[];
@@ -0,0 +1,145 @@
1
+ import { cloneRepository, defaultReposDir, isInsideReposDir, proposeDatabases, proposeServices, runInstall, scanRepo, } from "../../core/repo-onboard.js";
2
+ import { readJson, sendJson } from "../http-utils.js";
3
+ import { errorMessage, route } from "./context.js";
4
+ /**
5
+ * Structured "Add from GitHub" wizard: paste a URL → clone + scan + propose →
6
+ * confirm → install (streamed) → register & start. (The AI-native path skips
7
+ * all this and drives the same core module from the agent dock instead.)
8
+ * Cloning / install live in the guarded `repo-onboard` core module so
9
+ * GitManager stays read-safe.
10
+ */
11
+ export const onboardRoutes = [
12
+ route("POST", "/api/onboard/scan", async ({ request, response }) => {
13
+ const body = await readJson(request);
14
+ const url = typeof body.url === "string" ? body.url.trim() : "";
15
+ if (!url) {
16
+ sendJson(response, { ok: false, error: "url is required" }, 400);
17
+ return;
18
+ }
19
+ try {
20
+ const { clonePath } = await cloneRepository(url, defaultReposDir());
21
+ const profile = await scanRepo(clonePath);
22
+ const proposals = proposeServices(profile);
23
+ const databases = proposeDatabases(profile);
24
+ sendJson(response, { ok: true, profile, proposals, databases });
25
+ }
26
+ catch (error) {
27
+ sendJson(response, { ok: false, error: errorMessage(error) }, 422);
28
+ }
29
+ }),
30
+ route("POST", "/api/onboard/install/stream", async ({ request, response }) => {
31
+ const body = await readJson(request);
32
+ const clonePath = typeof body.clonePath === "string" ? body.clonePath : "";
33
+ const command = typeof body.command === "string" ? body.command.trim() : "";
34
+ if (!clonePath || !isInsideReposDir(clonePath)) {
35
+ sendJson(response, { ok: false, error: "clonePath must be an onboarded repo" }, 400);
36
+ return;
37
+ }
38
+ if (!command) {
39
+ sendJson(response, { ok: false, error: "command is required" }, 400);
40
+ return;
41
+ }
42
+ openEventStream(response);
43
+ const heartbeat = setInterval(() => response.write(`: ping\n\n`), 15000);
44
+ request.on("close", () => clearInterval(heartbeat));
45
+ try {
46
+ const result = await runInstall({
47
+ cwd: clonePath,
48
+ command,
49
+ onLine: (line) => response.write(`event: output\ndata: ${JSON.stringify(line)}\n\n`),
50
+ });
51
+ response.write(`event: done\ndata: ${JSON.stringify(result)}\n\n`);
52
+ }
53
+ catch (error) {
54
+ response.write(`event: error\ndata: ${JSON.stringify({ error: errorMessage(error) })}\n\n`);
55
+ }
56
+ finally {
57
+ clearInterval(heartbeat);
58
+ response.end();
59
+ }
60
+ }),
61
+ route("POST", "/api/onboard/register", async ({ request, response, configStore, manager }) => {
62
+ const body = await readJson(request);
63
+ if (typeof body.name !== "string" ||
64
+ typeof body.cwd !== "string" ||
65
+ !isInsideReposDir(body.cwd)) {
66
+ sendJson(response, { ok: false, error: "name and an onboarded cwd are required" }, 400);
67
+ return;
68
+ }
69
+ try {
70
+ const definition = toServiceDefinition(body);
71
+ const config = await configStore.registerService(definition);
72
+ // Best-effort: surface the clone in the Git tab too.
73
+ await configStore
74
+ .registerGitRepository({ name: definition.name, path: String(body.cwd) })
75
+ .catch(() => undefined);
76
+ // Best-effort: register an accompanying database connection so it shows in
77
+ // the Database tab (e.g. a docker-compose Postgres/MySQL behind the app).
78
+ const database = parseDatabaseInput(body.database);
79
+ if (database) {
80
+ await configStore.registerDatabase(database).catch(() => undefined);
81
+ }
82
+ const started = body.start === true ? await manager.startService(definition.name) : null;
83
+ sendJson(response, { ok: true, config, started });
84
+ }
85
+ catch (error) {
86
+ sendJson(response, { ok: false, error: errorMessage(error) }, 422);
87
+ }
88
+ }),
89
+ ];
90
+ function openEventStream(response) {
91
+ response.writeHead(200, {
92
+ "content-type": "text/event-stream",
93
+ "cache-control": "no-cache, no-transform",
94
+ connection: "keep-alive",
95
+ });
96
+ response.write(`retry: 2000\n\n`);
97
+ }
98
+ /** Validate an optional database payload that rides along with registration. */
99
+ function parseDatabaseInput(value) {
100
+ if (!value || typeof value !== "object")
101
+ return undefined;
102
+ const db = value;
103
+ const engine = db.engine;
104
+ if (typeof db.name !== "string" ||
105
+ !db.name.trim() ||
106
+ typeof db.url !== "string" ||
107
+ !db.url.trim() ||
108
+ (engine !== "postgres" && engine !== "mysql" && engine !== "sqlite")) {
109
+ return undefined;
110
+ }
111
+ return { name: db.name.trim(), engine, url: db.url.trim() };
112
+ }
113
+ /** Map a confirmed onboarding proposal onto a ConfigStore ServiceDefinition. */
114
+ function toServiceDefinition(body) {
115
+ const name = String(body.name);
116
+ const cwd = String(body.cwd);
117
+ const port = typeof body.port === "number" ? body.port : undefined;
118
+ const description = typeof body.description === "string" && body.description.trim()
119
+ ? body.description.trim()
120
+ : undefined;
121
+ if (body.kind === "docker-compose") {
122
+ if (typeof body.composeService !== "string" || !body.composeService.trim()) {
123
+ throw new Error("composeService is required for a docker-compose service.");
124
+ }
125
+ return {
126
+ name,
127
+ kind: "docker-compose",
128
+ cwd,
129
+ composeFile: typeof body.composeFile === "string" && body.composeFile.trim()
130
+ ? body.composeFile.trim()
131
+ : undefined,
132
+ composeService: body.composeService.trim(),
133
+ port,
134
+ description,
135
+ };
136
+ }
137
+ if (typeof body.command !== "string" || !body.command.trim()) {
138
+ throw new Error("command is required for a local service.");
139
+ }
140
+ const env = body.env && typeof body.env === "object" && !Array.isArray(body.env)
141
+ ? body.env
142
+ : undefined;
143
+ return { name, command: body.command.trim(), cwd, port, env, description };
144
+ }
145
+ //# sourceMappingURL=onboard-routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"onboard-routes.js","sourceRoot":"","sources":["../../../src/web/routes/onboard-routes.ts"],"names":[],"mappings":"AACA,OAAO,EACL,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,QAAQ,GACT,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,KAAK,EAAc,MAAM,cAAc,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,aAAa,GAAY;IACpC,KAAK,CAAC,MAAM,EAAE,mBAAmB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;QACjE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,GAAG,CAAC,CAAC;YACjE,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,eAAe,CAAC,GAAG,EAAE,eAAe,EAAE,CAAC,CAAC;YACpE,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC1C,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;YAC3C,MAAM,SAAS,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;YAC5C,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC;QAClE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACrE,CAAC;IACH,CAAC,CAAC;IAEF,KAAK,CAAC,MAAM,EAAE,6BAA6B,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC3E,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;QACrC,MAAM,SAAS,GAAG,OAAO,IAAI,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3E,MAAM,OAAO,GAAG,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,IAAI,CAAC,SAAS,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/C,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,qCAAqC,EAAE,EAAE,GAAG,CAAC,CAAC;YACrF,OAAO;QACT,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,qBAAqB,EAAE,EAAE,GAAG,CAAC,CAAC;YACrE,OAAO;QACT,CAAC;QACD,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC1B,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,CAAC;QACzE,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC;gBAC9B,GAAG,EAAE,SAAS;gBACd,OAAO;gBACP,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CACf,QAAQ,CAAC,KAAK,CAAC,wBAAwB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;aACrE,CAAC,CAAC;YACH,QAAQ,CAAC,KAAK,CAAC,sBAAsB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACrE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,KAAK,CACZ,uBAAuB,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,CAC5E,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,aAAa,CAAC,SAAS,CAAC,CAAC;YACzB,QAAQ,CAAC,GAAG,EAAE,CAAC;QACjB,CAAC;IACH,CAAC,CAAC;IAEF,KAAK,CAAC,MAAM,EAAE,uBAAuB,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE;QAC3F,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAC;QACrC,IACE,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;YAC7B,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ;YAC5B,CAAC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,EAC3B,CAAC;YACD,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,wCAAwC,EAAE,EAAE,GAAG,CAAC,CAAC;YACxF,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YAC7D,qDAAqD;YACrD,MAAM,WAAW;iBACd,qBAAqB,CAAC,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;iBACxE,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC1B,2EAA2E;YAC3E,0EAA0E;YAC1E,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,WAAW,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YACtE,CAAC;YACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACzF,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,QAAQ,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QACrE,CAAC;IACH,CAAC,CAAC;CACH,CAAC;AAEF,SAAS,eAAe,CAAC,QAAwB;IAC/C,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE;QACtB,cAAc,EAAE,mBAAmB;QACnC,eAAe,EAAE,wBAAwB;QACzC,UAAU,EAAE,YAAY;KACzB,CAAC,CAAC;IACH,QAAQ,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACpC,CAAC;AAED,gFAAgF;AAChF,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC1D,MAAM,EAAE,GAAG,KAAgC,CAAC;IAC5C,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;IACzB,IACE,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ;QAC3B,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE;QACf,OAAO,EAAE,CAAC,GAAG,KAAK,QAAQ;QAC1B,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE;QACd,CAAC,MAAM,KAAK,UAAU,IAAI,MAAM,KAAK,OAAO,IAAI,MAAM,KAAK,QAAQ,CAAC,EACpE,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;AAC9D,CAAC;AAED,gFAAgF;AAChF,SAAS,mBAAmB,CAAC,IAA6B;IACxD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,MAAM,WAAW,GACf,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;QAC7D,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;QACzB,CAAC,CAAC,SAAS,CAAC;IAEhB,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACnC,IAAI,OAAO,IAAI,CAAC,cAAc,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC;YAC3E,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QACD,OAAO;YACL,IAAI;YACJ,IAAI,EAAE,gBAAgB;YACtB,GAAG;YACH,WAAW,EACT,OAAO,IAAI,CAAC,WAAW,KAAK,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;gBAC7D,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;gBACzB,CAAC,CAAC,SAAS;YACf,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE;YAC1C,IAAI;YACJ,WAAW;SACZ,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IACD,MAAM,GAAG,GACP,IAAI,CAAC,GAAG,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;QAClE,CAAC,CAAE,IAAI,CAAC,GAA8B;QACtC,CAAC,CAAC,SAAS,CAAC;IAChB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;AAC7E,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nomoreide",
3
- "version": "0.1.42",
3
+ "version": "0.1.43",
4
4
  "description": "An AI-native terminal workbench for services, Git review, logs, and MCP workflows.",
5
5
  "repository": {
6
6
  "type": "git",