jinn-cli 0.1.0

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.
Files changed (227) hide show
  1. package/dist/bin/jimmy.d.ts +3 -0
  2. package/dist/bin/jimmy.d.ts.map +1 -0
  3. package/dist/bin/jimmy.js +148 -0
  4. package/dist/bin/jimmy.js.map +1 -0
  5. package/dist/src/cli/chrome-allow.d.ts +5 -0
  6. package/dist/src/cli/chrome-allow.d.ts.map +1 -0
  7. package/dist/src/cli/chrome-allow.js +241 -0
  8. package/dist/src/cli/chrome-allow.js.map +1 -0
  9. package/dist/src/cli/create.d.ts +2 -0
  10. package/dist/src/cli/create.d.ts.map +1 -0
  11. package/dist/src/cli/create.js +72 -0
  12. package/dist/src/cli/create.js.map +1 -0
  13. package/dist/src/cli/instances.d.ts +14 -0
  14. package/dist/src/cli/instances.d.ts.map +1 -0
  15. package/dist/src/cli/instances.js +43 -0
  16. package/dist/src/cli/instances.js.map +1 -0
  17. package/dist/src/cli/list.d.ts +2 -0
  18. package/dist/src/cli/list.d.ts.map +1 -0
  19. package/dist/src/cli/list.js +38 -0
  20. package/dist/src/cli/list.js.map +1 -0
  21. package/dist/src/cli/migrate.d.ts +5 -0
  22. package/dist/src/cli/migrate.d.ts.map +1 -0
  23. package/dist/src/cli/migrate.js +203 -0
  24. package/dist/src/cli/migrate.js.map +1 -0
  25. package/dist/src/cli/nuke.d.ts +2 -0
  26. package/dist/src/cli/nuke.d.ts.map +1 -0
  27. package/dist/src/cli/nuke.js +91 -0
  28. package/dist/src/cli/nuke.js.map +1 -0
  29. package/dist/src/cli/remove.d.ts +4 -0
  30. package/dist/src/cli/remove.d.ts.map +1 -0
  31. package/dist/src/cli/remove.js +47 -0
  32. package/dist/src/cli/remove.js.map +1 -0
  33. package/dist/src/cli/setup.d.ts +4 -0
  34. package/dist/src/cli/setup.d.ts.map +1 -0
  35. package/dist/src/cli/setup.js +483 -0
  36. package/dist/src/cli/setup.js.map +1 -0
  37. package/dist/src/cli/skills.d.ts +28 -0
  38. package/dist/src/cli/skills.d.ts.map +1 -0
  39. package/dist/src/cli/skills.js +284 -0
  40. package/dist/src/cli/skills.js.map +1 -0
  41. package/dist/src/cli/start.d.ts +5 -0
  42. package/dist/src/cli/start.d.ts.map +1 -0
  43. package/dist/src/cli/start.js +34 -0
  44. package/dist/src/cli/start.js.map +1 -0
  45. package/dist/src/cli/status.d.ts +2 -0
  46. package/dist/src/cli/status.d.ts.map +1 -0
  47. package/dist/src/cli/status.js +60 -0
  48. package/dist/src/cli/status.js.map +1 -0
  49. package/dist/src/cli/stop.d.ts +2 -0
  50. package/dist/src/cli/stop.d.ts.map +1 -0
  51. package/dist/src/cli/stop.js +11 -0
  52. package/dist/src/cli/stop.js.map +1 -0
  53. package/dist/src/connectors/slack/format.d.ts +10 -0
  54. package/dist/src/connectors/slack/format.d.ts.map +1 -0
  55. package/dist/src/connectors/slack/format.js +55 -0
  56. package/dist/src/connectors/slack/format.js.map +1 -0
  57. package/dist/src/connectors/slack/index.d.ts +18 -0
  58. package/dist/src/connectors/slack/index.d.ts.map +1 -0
  59. package/dist/src/connectors/slack/index.js +122 -0
  60. package/dist/src/connectors/slack/index.js.map +1 -0
  61. package/dist/src/connectors/slack/threads.d.ts +2 -0
  62. package/dist/src/connectors/slack/threads.d.ts.map +1 -0
  63. package/dist/src/connectors/slack/threads.js +10 -0
  64. package/dist/src/connectors/slack/threads.js.map +1 -0
  65. package/dist/src/cron/jobs.d.ts +5 -0
  66. package/dist/src/cron/jobs.d.ts.map +1 -0
  67. package/dist/src/cron/jobs.js +23 -0
  68. package/dist/src/cron/jobs.js.map +1 -0
  69. package/dist/src/cron/runner.d.ts +3 -0
  70. package/dist/src/cron/runner.d.ts.map +1 -0
  71. package/dist/src/cron/runner.js +118 -0
  72. package/dist/src/cron/runner.js.map +1 -0
  73. package/dist/src/cron/scheduler.d.ts +5 -0
  74. package/dist/src/cron/scheduler.d.ts.map +1 -0
  75. package/dist/src/cron/scheduler.js +39 -0
  76. package/dist/src/cron/scheduler.js.map +1 -0
  77. package/dist/src/engines/claude.d.ts +14 -0
  78. package/dist/src/engines/claude.d.ts.map +1 -0
  79. package/dist/src/engines/claude.js +264 -0
  80. package/dist/src/engines/claude.js.map +1 -0
  81. package/dist/src/engines/codex.d.ts +15 -0
  82. package/dist/src/engines/codex.d.ts.map +1 -0
  83. package/dist/src/engines/codex.js +346 -0
  84. package/dist/src/engines/codex.js.map +1 -0
  85. package/dist/src/gateway/api.d.ts +13 -0
  86. package/dist/src/gateway/api.d.ts.map +1 -0
  87. package/dist/src/gateway/api.js +819 -0
  88. package/dist/src/gateway/api.js.map +1 -0
  89. package/dist/src/gateway/daemon-entry.d.ts +2 -0
  90. package/dist/src/gateway/daemon-entry.d.ts.map +1 -0
  91. package/dist/src/gateway/daemon-entry.js +12 -0
  92. package/dist/src/gateway/daemon-entry.js.map +1 -0
  93. package/dist/src/gateway/lifecycle.d.ts +10 -0
  94. package/dist/src/gateway/lifecycle.d.ts.map +1 -0
  95. package/dist/src/gateway/lifecycle.js +124 -0
  96. package/dist/src/gateway/lifecycle.js.map +1 -0
  97. package/dist/src/gateway/org.d.ts +10 -0
  98. package/dist/src/gateway/org.d.ts.map +1 -0
  99. package/dist/src/gateway/org.js +71 -0
  100. package/dist/src/gateway/org.js.map +1 -0
  101. package/dist/src/gateway/server.d.ts +4 -0
  102. package/dist/src/gateway/server.d.ts.map +1 -0
  103. package/dist/src/gateway/server.js +301 -0
  104. package/dist/src/gateway/server.js.map +1 -0
  105. package/dist/src/gateway/watcher.d.ts +14 -0
  106. package/dist/src/gateway/watcher.d.ts.map +1 -0
  107. package/dist/src/gateway/watcher.js +104 -0
  108. package/dist/src/gateway/watcher.js.map +1 -0
  109. package/dist/src/index.d.ts +5 -0
  110. package/dist/src/index.d.ts.map +1 -0
  111. package/dist/src/index.js +4 -0
  112. package/dist/src/index.js.map +1 -0
  113. package/dist/src/sessions/context.d.ts +20 -0
  114. package/dist/src/sessions/context.d.ts.map +1 -0
  115. package/dist/src/sessions/context.js +532 -0
  116. package/dist/src/sessions/context.js.map +1 -0
  117. package/dist/src/sessions/manager.d.ts +38 -0
  118. package/dist/src/sessions/manager.d.ts.map +1 -0
  119. package/dist/src/sessions/manager.js +208 -0
  120. package/dist/src/sessions/manager.js.map +1 -0
  121. package/dist/src/sessions/queue.d.ts +14 -0
  122. package/dist/src/sessions/queue.d.ts.map +1 -0
  123. package/dist/src/sessions/queue.js +42 -0
  124. package/dist/src/sessions/queue.js.map +1 -0
  125. package/dist/src/sessions/registry.d.ts +46 -0
  126. package/dist/src/sessions/registry.d.ts.map +1 -0
  127. package/dist/src/sessions/registry.js +193 -0
  128. package/dist/src/sessions/registry.js.map +1 -0
  129. package/dist/src/shared/config.d.ts +3 -0
  130. package/dist/src/shared/config.d.ts.map +1 -0
  131. package/dist/src/shared/config.js +11 -0
  132. package/dist/src/shared/config.js.map +1 -0
  133. package/dist/src/shared/logger.d.ts +12 -0
  134. package/dist/src/shared/logger.d.ts.map +1 -0
  135. package/dist/src/shared/logger.js +35 -0
  136. package/dist/src/shared/logger.js.map +1 -0
  137. package/dist/src/shared/paths.d.ts +19 -0
  138. package/dist/src/shared/paths.d.ts.map +1 -0
  139. package/dist/src/shared/paths.js +31 -0
  140. package/dist/src/shared/paths.js.map +1 -0
  141. package/dist/src/shared/types.d.ts +166 -0
  142. package/dist/src/shared/types.d.ts.map +1 -0
  143. package/dist/src/shared/types.js +4 -0
  144. package/dist/src/shared/types.js.map +1 -0
  145. package/dist/src/shared/version.d.ts +15 -0
  146. package/dist/src/shared/version.d.ts.map +1 -0
  147. package/dist/src/shared/version.js +56 -0
  148. package/dist/src/shared/version.js.map +1 -0
  149. package/dist/web/404.html +1 -0
  150. package/dist/web/_next/static/chunks/198-fd91406a158c5c25.js +1 -0
  151. package/dist/web/_next/static/chunks/517.62389e8d3c929c43.js +1 -0
  152. package/dist/web/_next/static/chunks/534-17c49c944e0d0fe1.js +1 -0
  153. package/dist/web/_next/static/chunks/573-070537ec2452d03e.js +1 -0
  154. package/dist/web/_next/static/chunks/590-2c34156c7417317e.js +1 -0
  155. package/dist/web/_next/static/chunks/704-af2893821e1d18dc.js +1 -0
  156. package/dist/web/_next/static/chunks/7273c211.06e3b6021d90b73f.js +1 -0
  157. package/dist/web/_next/static/chunks/73-c226535579393e21.js +1 -0
  158. package/dist/web/_next/static/chunks/743-5bb03adbb0e4ddec.js +1 -0
  159. package/dist/web/_next/static/chunks/874.97d5a27895061057.js +1 -0
  160. package/dist/web/_next/static/chunks/8e6518bb-c26e82767f1faf66.js +1 -0
  161. package/dist/web/_next/static/chunks/app/_not-found/page-bb075b0779827928.js +1 -0
  162. package/dist/web/_next/static/chunks/app/chat/page-6d5bc707a45c92c6.js +1 -0
  163. package/dist/web/_next/static/chunks/app/costs/page-d6c03718defdb599.js +1 -0
  164. package/dist/web/_next/static/chunks/app/cron/page-4c563eef2b6231fe.js +1 -0
  165. package/dist/web/_next/static/chunks/app/kanban/page-55a73165a36f4077.js +1 -0
  166. package/dist/web/_next/static/chunks/app/layout-5129b67d5f126cf0.js +1 -0
  167. package/dist/web/_next/static/chunks/app/logs/page-e18889d67e48c9c9.js +1 -0
  168. package/dist/web/_next/static/chunks/app/org/page-d5cd8d9b7864737b.js +1 -0
  169. package/dist/web/_next/static/chunks/app/page-b81992940fd1dbc6.js +1 -0
  170. package/dist/web/_next/static/chunks/app/sessions/page-2eef6ac7882a28ba.js +1 -0
  171. package/dist/web/_next/static/chunks/app/settings/page-4fb01b9b09500170.js +1 -0
  172. package/dist/web/_next/static/chunks/app/skills/page-df9465e314561bb5.js +1 -0
  173. package/dist/web/_next/static/chunks/framework-077b27ad7787463c.js +1 -0
  174. package/dist/web/_next/static/chunks/main-app-437f51faf74fbb3b.js +1 -0
  175. package/dist/web/_next/static/chunks/main-f1c74cefd4965abf.js +1 -0
  176. package/dist/web/_next/static/chunks/pages/_app-77a85fe7d6bca671.js +1 -0
  177. package/dist/web/_next/static/chunks/pages/_error-68febf4b34900064.js +1 -0
  178. package/dist/web/_next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
  179. package/dist/web/_next/static/chunks/webpack-0f39b7e91dce9791.js +1 -0
  180. package/dist/web/_next/static/css/4a6a5bca9238c104.css +1 -0
  181. package/dist/web/_next/static/vLvOwhC8JocJzSHTHKKOv/_buildManifest.js +1 -0
  182. package/dist/web/_next/static/vLvOwhC8JocJzSHTHKKOv/_ssgManifest.js +1 -0
  183. package/dist/web/chat.html +1 -0
  184. package/dist/web/chat.txt +20 -0
  185. package/dist/web/costs.html +16 -0
  186. package/dist/web/costs.txt +20 -0
  187. package/dist/web/cron.html +1 -0
  188. package/dist/web/cron.txt +20 -0
  189. package/dist/web/index.html +1 -0
  190. package/dist/web/index.txt +20 -0
  191. package/dist/web/kanban.html +1 -0
  192. package/dist/web/kanban.txt +20 -0
  193. package/dist/web/logs.html +7 -0
  194. package/dist/web/logs.txt +20 -0
  195. package/dist/web/org.html +1 -0
  196. package/dist/web/org.txt +20 -0
  197. package/dist/web/sessions.html +1 -0
  198. package/dist/web/sessions.txt +20 -0
  199. package/dist/web/settings.html +1 -0
  200. package/dist/web/settings.txt +20 -0
  201. package/dist/web/skills.html +1 -0
  202. package/dist/web/skills.txt +20 -0
  203. package/package.json +43 -0
  204. package/template/AGENTS.md +167 -0
  205. package/template/CLAUDE.md +106 -0
  206. package/template/config.default.yaml +27 -0
  207. package/template/docs/architecture.md +74 -0
  208. package/template/docs/connectors.md +72 -0
  209. package/template/docs/cron.md +137 -0
  210. package/template/docs/org.md +105 -0
  211. package/template/docs/overview.md +39 -0
  212. package/template/docs/self-modification.md +65 -0
  213. package/template/docs/skills.md +58 -0
  214. package/template/knowledge/.gitkeep +0 -0
  215. package/template/migrations/.gitkeep +0 -0
  216. package/template/migrations/0.1.0/MIGRATION.md +25 -0
  217. package/template/skills/cron-manager/SKILL.md +127 -0
  218. package/template/skills/find-and-install/SKILL.md +92 -0
  219. package/template/skills/management/SKILL.md +203 -0
  220. package/template/skills/migrate/SKILL.md +154 -0
  221. package/template/skills/new/SKILL.md +19 -0
  222. package/template/skills/onboarding/SKILL.md +106 -0
  223. package/template/skills/self-heal/SKILL.md +114 -0
  224. package/template/skills/skill-creator/SKILL.md +112 -0
  225. package/template/skills/status/SKILL.md +19 -0
  226. package/template/skills/sync/SKILL.md +67 -0
  227. package/template/skills.json +3 -0
@@ -0,0 +1,483 @@
1
+ import fs from "node:fs";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import readline from "node:readline";
5
+ import { execSync, spawn } from "node:child_process";
6
+ import yaml from "js-yaml";
7
+ import { JINN_HOME, CONFIG_PATH, CRON_JOBS, CRON_RUNS, TMP_DIR, TEMPLATE_DIR, LOGS_DIR, DOCS_DIR, SKILLS_DIR, ORG_DIR, CLAUDE_SKILLS_DIR, AGENTS_SKILLS_DIR, } from "../shared/paths.js";
8
+ import { initDb } from "../sessions/registry.js";
9
+ import { getPackageVersion } from "../shared/version.js";
10
+ const GREEN = "\x1b[32m";
11
+ const YELLOW = "\x1b[33m";
12
+ const RED = "\x1b[31m";
13
+ const DIM = "\x1b[2m";
14
+ const RESET = "\x1b[0m";
15
+ function ok(msg) {
16
+ console.log(` ${GREEN}[ok]${RESET} ${msg}`);
17
+ }
18
+ function warn(msg) {
19
+ console.log(` ${YELLOW}[warn]${RESET} ${msg}`);
20
+ }
21
+ function fail(msg) {
22
+ console.log(` ${RED}[missing]${RESET} ${msg}`);
23
+ }
24
+ function info(msg) {
25
+ console.log(` ${DIM}${msg}${RESET}`);
26
+ }
27
+ function prompt(question, defaultValue) {
28
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
29
+ const suffix = defaultValue ? ` ${DIM}(${defaultValue})${RESET}` : "";
30
+ return new Promise((resolve) => {
31
+ rl.question(` ${question}${suffix}: `, (answer) => {
32
+ rl.close();
33
+ resolve(answer.trim() || defaultValue || "");
34
+ });
35
+ });
36
+ }
37
+ function whichBin(name) {
38
+ try {
39
+ return execSync(`which ${name}`, { encoding: "utf-8" }).trim();
40
+ }
41
+ catch {
42
+ return null;
43
+ }
44
+ }
45
+ function runVersion(bin) {
46
+ try {
47
+ return execSync(`${bin} --version`, { encoding: "utf-8", timeout: 10000 }).trim();
48
+ }
49
+ catch {
50
+ return null;
51
+ }
52
+ }
53
+ function ensureDir(dir) {
54
+ if (fs.existsSync(dir))
55
+ return false;
56
+ fs.mkdirSync(dir, { recursive: true });
57
+ return true;
58
+ }
59
+ function ensureFile(filePath, content) {
60
+ if (fs.existsSync(filePath))
61
+ return false;
62
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
63
+ fs.writeFileSync(filePath, content, "utf-8");
64
+ return true;
65
+ }
66
+ /**
67
+ * Apply template placeholder replacements to file content.
68
+ * Only applies to .md and .yaml files.
69
+ */
70
+ function applyTemplateReplacements(content, replacements) {
71
+ let result = content;
72
+ for (const [placeholder, value] of Object.entries(replacements)) {
73
+ result = result.replaceAll(placeholder, value);
74
+ }
75
+ return result;
76
+ }
77
+ /**
78
+ * Recursively copy template directory contents into dest, skipping files that already exist.
79
+ * Applies template placeholder replacements to .md and .yaml files.
80
+ * Returns list of created file paths.
81
+ */
82
+ function copyTemplateDir(srcDir, destDir, replacements) {
83
+ const created = [];
84
+ if (!fs.existsSync(srcDir))
85
+ return created;
86
+ fs.mkdirSync(destDir, { recursive: true });
87
+ const entries = fs.readdirSync(srcDir, { withFileTypes: true });
88
+ for (const entry of entries) {
89
+ const srcPath = path.join(srcDir, entry.name);
90
+ const destPath = path.join(destDir, entry.name);
91
+ if (entry.isDirectory()) {
92
+ created.push(...copyTemplateDir(srcPath, destPath, replacements));
93
+ }
94
+ else if (entry.name === ".gitkeep") {
95
+ // skip .gitkeep — directory already created
96
+ continue;
97
+ }
98
+ else if (!fs.existsSync(destPath)) {
99
+ fs.mkdirSync(path.dirname(destPath), { recursive: true });
100
+ const ext = path.extname(entry.name).toLowerCase();
101
+ if (replacements && (ext === ".md" || ext === ".yaml" || ext === ".yml")) {
102
+ const content = fs.readFileSync(srcPath, "utf-8");
103
+ fs.writeFileSync(destPath, applyTemplateReplacements(content, replacements), "utf-8");
104
+ }
105
+ else {
106
+ fs.copyFileSync(srcPath, destPath);
107
+ }
108
+ created.push(destPath);
109
+ }
110
+ }
111
+ return created;
112
+ }
113
+ /**
114
+ * Detect project context by scanning ~/Projects/ for common project indicators
115
+ * and suggest relevant skills the user might want to install.
116
+ */
117
+ function detectProjectContext(portalSlug) {
118
+ const projectsDir = path.join(os.homedir(), "Projects");
119
+ if (!fs.existsSync(projectsDir))
120
+ return;
121
+ const indicators = [
122
+ {
123
+ check: (dir) => {
124
+ try {
125
+ return fs.readdirSync(dir).some((e) => e.endsWith(".xcodeproj"));
126
+ }
127
+ catch {
128
+ return false;
129
+ }
130
+ },
131
+ query: "ios swift xcode",
132
+ label: "iOS",
133
+ },
134
+ {
135
+ check: (dir) => fs.existsSync(path.join(dir, "Package.swift")),
136
+ query: "ios swift xcode",
137
+ label: "iOS/Swift",
138
+ },
139
+ {
140
+ check: (dir) => fs.existsSync(path.join(dir, "Dockerfile")),
141
+ query: "docker container",
142
+ label: "Docker",
143
+ },
144
+ {
145
+ check: (dir) => fs.existsSync(path.join(dir, ".github", "workflows")),
146
+ query: "github actions ci",
147
+ label: "GitHub Actions",
148
+ },
149
+ {
150
+ check: (dir) => {
151
+ try {
152
+ return fs.readdirSync(dir).some((e) => e.startsWith("playwright.config"));
153
+ }
154
+ catch {
155
+ return false;
156
+ }
157
+ },
158
+ query: "playwright testing",
159
+ label: "Playwright",
160
+ },
161
+ {
162
+ check: (dir) => {
163
+ const pkgPath = path.join(dir, "package.json");
164
+ if (!fs.existsSync(pkgPath))
165
+ return false;
166
+ try {
167
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf-8"));
168
+ const deps = { ...pkg.dependencies, ...pkg.devDependencies };
169
+ return deps != null && ("react" in deps || "next" in deps);
170
+ }
171
+ catch {
172
+ return false;
173
+ }
174
+ },
175
+ query: "react nextjs",
176
+ label: "React",
177
+ },
178
+ ];
179
+ const detected = new Map(); // label → query
180
+ try {
181
+ const topLevel = fs.readdirSync(projectsDir, { withFileTypes: true })
182
+ .filter((e) => e.isDirectory());
183
+ const projectDirs = [];
184
+ for (const dir of topLevel) {
185
+ const dirPath = path.join(projectsDir, dir.name);
186
+ projectDirs.push(dirPath);
187
+ // One level deeper for org-style folders (e.g. ~/Projects/Personal/foo)
188
+ try {
189
+ const subDirs = fs.readdirSync(dirPath, { withFileTypes: true })
190
+ .filter((e) => e.isDirectory());
191
+ for (const sub of subDirs) {
192
+ projectDirs.push(path.join(dirPath, sub.name));
193
+ }
194
+ }
195
+ catch {
196
+ // ignore permission errors
197
+ }
198
+ }
199
+ for (const projDir of projectDirs) {
200
+ for (const ind of indicators) {
201
+ if (detected.has(ind.label))
202
+ continue;
203
+ if (ind.check(projDir)) {
204
+ detected.set(ind.label, ind.query);
205
+ }
206
+ }
207
+ }
208
+ }
209
+ catch {
210
+ return;
211
+ }
212
+ if (detected.size > 0) {
213
+ console.log("");
214
+ for (const [label, query] of detected) {
215
+ console.log(` 💡 Detected ${label} projects. Run ${DIM}${portalSlug} skills find ${query}${RESET} to discover relevant skills.`);
216
+ }
217
+ }
218
+ }
219
+ const DEFAULT_CONFIG = `jinn:
220
+ version: "${getPackageVersion()}"
221
+
222
+ gateway:
223
+ port: 7777
224
+ host: "127.0.0.1"
225
+ engines:
226
+ default: claude
227
+ claude:
228
+ bin: claude
229
+ model: opus
230
+ effortLevel: medium
231
+ codex:
232
+ bin: codex
233
+ model: gpt-5.4
234
+ connectors: {}
235
+ portal: {}
236
+ logging:
237
+ file: true
238
+ stdout: true
239
+ level: info
240
+ `;
241
+ function defaultClaudeMd(portalName) {
242
+ return `# ${portalName} AI Gateway
243
+
244
+ This is the ${portalName} home directory (~/.jinn).
245
+ ${portalName} orchestrates Claude Code and Codex as AI engines.
246
+ `;
247
+ }
248
+ function defaultAgentsMd(portalName) {
249
+ return `# ${portalName} Agents
250
+
251
+ Agents are configured via employees in the org/ directory.
252
+ `;
253
+ }
254
+ export async function runSetup(opts) {
255
+ console.log("\nJinn Setup\n");
256
+ if (opts?.force && fs.existsSync(JINN_HOME)) {
257
+ console.log(` ${YELLOW}[force]${RESET} Removing ${JINN_HOME}...`);
258
+ fs.rmSync(JINN_HOME, { recursive: true, force: true });
259
+ console.log(` ${GREEN}[ok]${RESET} Removed ${JINN_HOME}\n`);
260
+ }
261
+ // 1. Check Node.js version
262
+ const nodeVersion = parseInt(process.versions.node.split(".")[0], 10);
263
+ if (nodeVersion >= 22) {
264
+ ok(`Node.js v${process.versions.node}`);
265
+ }
266
+ else {
267
+ warn(`Node.js v${process.versions.node} -- v22+ recommended`);
268
+ }
269
+ // 2. Check for claude binary
270
+ const claudePath = whichBin("claude");
271
+ if (claudePath) {
272
+ ok(`claude found at ${claudePath}`);
273
+ }
274
+ else {
275
+ fail("claude not found");
276
+ info("Install with: npm install -g @anthropic-ai/claude-code");
277
+ }
278
+ // 3. Check for codex binary
279
+ const codexPath = whichBin("codex");
280
+ if (codexPath) {
281
+ ok(`codex found at ${codexPath}`);
282
+ }
283
+ else {
284
+ fail("codex not found");
285
+ info("Install with: npm install -g @openai/codex");
286
+ }
287
+ // 4. Check auth / versions
288
+ console.log("");
289
+ if (claudePath) {
290
+ const ver = runVersion("claude");
291
+ if (ver)
292
+ ok(`claude --version: ${ver}`);
293
+ else
294
+ warn("claude --version failed");
295
+ }
296
+ if (codexPath) {
297
+ const ver = runVersion("codex");
298
+ if (ver)
299
+ ok(`codex --version: ${ver}`);
300
+ else
301
+ warn("codex --version failed");
302
+ }
303
+ // 5. Interactive setup (only when stdin is a TTY and config doesn't exist yet)
304
+ const isFreshSetup = !fs.existsSync(CONFIG_PATH);
305
+ const isInteractive = process.stdin.isTTY && isFreshSetup;
306
+ // Derive default COO name from instance name if set, otherwise "Jinn"
307
+ const instanceName = process.env.JINN_INSTANCE;
308
+ const defaultName = instanceName
309
+ ? instanceName.charAt(0).toUpperCase() + instanceName.slice(1)
310
+ : "Jinn";
311
+ let chosenName = defaultName;
312
+ let chosenEngine = "claude";
313
+ if (isInteractive) {
314
+ console.log("");
315
+ chosenName = await prompt("What should your AI assistant be called?", defaultName);
316
+ // Determine available engines
317
+ const engines = [];
318
+ if (claudePath)
319
+ engines.push("claude");
320
+ if (codexPath)
321
+ engines.push("codex");
322
+ if (engines.length === 2) {
323
+ const engineAnswer = await prompt("Preferred engine? (claude/codex)", "claude");
324
+ chosenEngine = engineAnswer === "codex" ? "codex" : "claude";
325
+ }
326
+ else if (engines.length === 1) {
327
+ chosenEngine = engines[0];
328
+ ok(`Using ${chosenEngine} as default engine (only engine installed)`);
329
+ }
330
+ }
331
+ // 6. Create ~/.jinn directory structure
332
+ console.log("");
333
+ const created = [];
334
+ if (ensureDir(JINN_HOME))
335
+ created.push(JINN_HOME);
336
+ // Copy or create config files
337
+ const templateConfig = path.join(TEMPLATE_DIR, "config.yaml");
338
+ const templateClaude = path.join(TEMPLATE_DIR, "CLAUDE.md");
339
+ const templateAgents = path.join(TEMPLATE_DIR, "AGENTS.md");
340
+ if (!fs.existsSync(CONFIG_PATH)) {
341
+ let source = fs.existsSync(templateConfig)
342
+ ? fs.readFileSync(templateConfig, "utf-8")
343
+ : DEFAULT_CONFIG;
344
+ // Stamp the current package version into the config
345
+ source = source.replace(/version:\s*"[^"]*"/, `version: "${getPackageVersion()}"`);
346
+ // Apply interactive choices
347
+ source = source.replace(/default:\s*claude/, `default: ${chosenEngine}`);
348
+ if (chosenName !== "Jinn") {
349
+ source = source.replace("portal: {}", `portal:\n portalName: "${chosenName}"`);
350
+ }
351
+ ensureFile(CONFIG_PATH, source);
352
+ created.push(CONFIG_PATH);
353
+ }
354
+ // Read portal name from config for template replacements
355
+ const portalName = (() => {
356
+ try {
357
+ const cfg = yaml.load(fs.readFileSync(CONFIG_PATH, "utf-8"));
358
+ return cfg?.portal?.portalName || "Jinn";
359
+ }
360
+ catch {
361
+ return "Jinn";
362
+ }
363
+ })();
364
+ const portalSlug = portalName.toLowerCase().replace(/\s+/g, "-");
365
+ const templateReplacements = {
366
+ "{{portalName}}": portalName,
367
+ "{{portalSlug}}": portalSlug,
368
+ };
369
+ const claudeMdPath = path.join(JINN_HOME, "CLAUDE.md");
370
+ if (!fs.existsSync(claudeMdPath)) {
371
+ let source = fs.existsSync(templateClaude)
372
+ ? fs.readFileSync(templateClaude, "utf-8")
373
+ : defaultClaudeMd(portalName);
374
+ source = applyTemplateReplacements(source, templateReplacements);
375
+ ensureFile(claudeMdPath, source);
376
+ created.push(claudeMdPath);
377
+ }
378
+ const agentsMdPath = path.join(JINN_HOME, "AGENTS.md");
379
+ if (!fs.existsSync(agentsMdPath)) {
380
+ let source = fs.existsSync(templateAgents)
381
+ ? fs.readFileSync(templateAgents, "utf-8")
382
+ : defaultAgentsMd(portalName);
383
+ source = applyTemplateReplacements(source, templateReplacements);
384
+ ensureFile(agentsMdPath, source);
385
+ created.push(agentsMdPath);
386
+ }
387
+ // 6. Initialize SQLite database
388
+ try {
389
+ initDb();
390
+ ok("Sessions database initialized");
391
+ }
392
+ catch (err) {
393
+ warn(`Failed to initialize sessions database: ${err}`);
394
+ }
395
+ // 7. Create cron/jobs.json
396
+ if (ensureFile(CRON_JOBS, "[]"))
397
+ created.push(CRON_JOBS);
398
+ // 8. Create cron/runs/
399
+ if (ensureDir(CRON_RUNS))
400
+ created.push(CRON_RUNS);
401
+ // 9. Create connectors/
402
+ const connectorsDir = path.join(JINN_HOME, "connectors");
403
+ if (ensureDir(connectorsDir))
404
+ created.push(connectorsDir);
405
+ // 10. Create knowledge/
406
+ const knowledgeDir = path.join(JINN_HOME, "knowledge");
407
+ if (ensureDir(knowledgeDir))
408
+ created.push(knowledgeDir);
409
+ // 11. Create tmp/
410
+ if (ensureDir(TMP_DIR))
411
+ created.push(TMP_DIR);
412
+ // Other standard dirs
413
+ if (ensureDir(LOGS_DIR))
414
+ created.push(LOGS_DIR);
415
+ // Copy template contents for docs, skills, and org (skips existing files)
416
+ created.push(...copyTemplateDir(path.join(TEMPLATE_DIR, "docs"), DOCS_DIR, templateReplacements));
417
+ created.push(...copyTemplateDir(path.join(TEMPLATE_DIR, "skills"), SKILLS_DIR, templateReplacements));
418
+ created.push(...copyTemplateDir(path.join(TEMPLATE_DIR, "org"), ORG_DIR, templateReplacements));
419
+ // Copy skills.json manifest
420
+ const templateSkillsJson = path.join(TEMPLATE_DIR, "skills.json");
421
+ const destSkillsJson = path.join(JINN_HOME, "skills.json");
422
+ if (fs.existsSync(templateSkillsJson) && !fs.existsSync(destSkillsJson)) {
423
+ fs.copyFileSync(templateSkillsJson, destSkillsJson);
424
+ created.push(destSkillsJson);
425
+ }
426
+ // Ensure dirs exist even if template had nothing to copy
427
+ ensureDir(DOCS_DIR);
428
+ ensureDir(SKILLS_DIR);
429
+ ensureDir(ORG_DIR);
430
+ // Create .claude/skills/ and .agents/skills/ with symlinks to skills/
431
+ ensureDir(CLAUDE_SKILLS_DIR);
432
+ ensureDir(AGENTS_SKILLS_DIR);
433
+ if (fs.existsSync(SKILLS_DIR)) {
434
+ const skillDirs = fs.readdirSync(SKILLS_DIR, { withFileTypes: true })
435
+ .filter((e) => e.isDirectory())
436
+ .map((e) => e.name);
437
+ for (const name of skillDirs) {
438
+ const relTarget = path.join("..", "..", "skills", name);
439
+ for (const targetDir of [CLAUDE_SKILLS_DIR, AGENTS_SKILLS_DIR]) {
440
+ const linkPath = path.join(targetDir, name);
441
+ if (!fs.existsSync(linkPath)) {
442
+ try {
443
+ fs.symlinkSync(relTarget, linkPath);
444
+ }
445
+ catch {
446
+ // ignore — may fail on some platforms
447
+ }
448
+ }
449
+ }
450
+ }
451
+ }
452
+ // Create .claude/settings.local.json for engine permissions
453
+ const settingsPath = path.join(JINN_HOME, ".claude", "settings.local.json");
454
+ if (ensureFile(settingsPath, JSON.stringify({
455
+ permissions: {
456
+ allow: [
457
+ "Bash(npm:*)", "Bash(pnpm:*)", "Bash(node:*)", "Bash(jinn:*)",
458
+ "Bash(curl:*)", "Bash(cat:*)", "Bash(ls:*)", "Bash(mkdir:*)",
459
+ "Bash(cp:*)", "Bash(mv:*)", "Bash(rm:*)", "Bash(git:*)",
460
+ "Read", "Write", "Edit", "Glob", "Grep",
461
+ ],
462
+ },
463
+ }, null, 2) + "\n")) {
464
+ created.push(settingsPath);
465
+ }
466
+ // Pre-cache skills CLI for instant searches later
467
+ spawn('npx', ['skills', '--version'], { stdio: 'ignore', detached: true }).unref();
468
+ // Detect project context and suggest relevant skills
469
+ detectProjectContext(portalSlug);
470
+ // 12. Print summary
471
+ console.log("");
472
+ if (created.length === 0) {
473
+ ok("Everything already set up -- nothing to do");
474
+ }
475
+ else {
476
+ ok(`Created ${created.length} item(s):`);
477
+ for (const item of created) {
478
+ info(item);
479
+ }
480
+ }
481
+ console.log(`\n${GREEN}Setup complete.${RESET} Run ${DIM}jinn start${RESET} to launch the gateway.\n`);
482
+ }
483
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/setup.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ export declare const SKILLS_JSON: string;
2
+ export interface SkillManifestEntry {
3
+ name: string;
4
+ source: string;
5
+ installedAt: string;
6
+ }
7
+ export declare function readManifest(): SkillManifestEntry[];
8
+ export declare function writeManifest(entries: SkillManifestEntry[]): void;
9
+ export declare function upsertManifest(name: string, source: string): void;
10
+ export declare function removeFromManifest(name: string): boolean;
11
+ export declare function snapshotDirs(): Map<string, Set<string>>;
12
+ export declare function diffSnapshots(before: Map<string, Set<string>>, after: Map<string, Set<string>>): Array<{
13
+ dir: string;
14
+ name: string;
15
+ }>;
16
+ export declare function extractSkillName(pkg: string): string;
17
+ export declare function findExistingSkill(name: string): {
18
+ name: string;
19
+ dir: string;
20
+ } | null;
21
+ export declare function copySkillToInstance(name: string, sourceDir: string): void;
22
+ export declare function skillsFind(query?: string): void;
23
+ export declare function skillsAdd(pkg: string): void;
24
+ export declare function skillsRemove(name: string): void;
25
+ export declare function skillsList(): void;
26
+ export declare function skillsUpdate(): void;
27
+ export declare function skillsRestore(): void;
28
+ //# sourceMappingURL=skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../../src/cli/skills.ts"],"names":[],"mappings":"AAYA,eAAO,MAAM,WAAW,QAAsC,CAAC;AAW/D,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,YAAY,IAAI,kBAAkB,EAAE,CAOnD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAEjE;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAcjE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAOxD;AAID,wBAAgB,YAAY,IAAI,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAWvD;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EAChC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GAC9B,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAWtC;AAID,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAQpD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQpF;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAIzE;AAkBD,wBAAgB,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAQ/C;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAyC3C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAW/C;AAED,wBAAgB,UAAU,IAAI,IAAI,CAkCjC;AAED,wBAAgB,YAAY,IAAI,IAAI,CAmCnC;AAED,wBAAgB,aAAa,IAAI,IAAI,CAwCpC"}