@polpo-ai/node 0.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (238) hide show
  1. package/LICENSE +13 -0
  2. package/dist/adapters/engine.d.ts +51 -0
  3. package/dist/adapters/engine.d.ts.map +1 -0
  4. package/dist/adapters/engine.js +316 -0
  5. package/dist/adapters/engine.js.map +1 -0
  6. package/dist/adapters/index.d.ts +2 -0
  7. package/dist/adapters/index.d.ts.map +1 -0
  8. package/dist/adapters/index.js +4 -0
  9. package/dist/adapters/index.js.map +1 -0
  10. package/dist/adapters/loop-engine.d.ts +36 -0
  11. package/dist/adapters/loop-engine.d.ts.map +1 -0
  12. package/dist/adapters/loop-engine.js +534 -0
  13. package/dist/adapters/loop-engine.js.map +1 -0
  14. package/dist/adapters/node-filesystem.d.ts +22 -0
  15. package/dist/adapters/node-filesystem.d.ts.map +1 -0
  16. package/dist/adapters/node-filesystem.js +59 -0
  17. package/dist/adapters/node-filesystem.js.map +1 -0
  18. package/dist/adapters/node-shell.d.ts +5 -0
  19. package/dist/adapters/node-shell.d.ts.map +1 -0
  20. package/dist/adapters/node-shell.js +34 -0
  21. package/dist/adapters/node-shell.js.map +1 -0
  22. package/dist/adapters/node-spawner.d.ts +14 -0
  23. package/dist/adapters/node-spawner.d.ts.map +1 -0
  24. package/dist/adapters/node-spawner.js +103 -0
  25. package/dist/adapters/node-spawner.js.map +1 -0
  26. package/dist/assessment/assessor.d.ts +6 -0
  27. package/dist/assessment/assessor.d.ts.map +1 -0
  28. package/dist/assessment/assessor.js +37 -0
  29. package/dist/assessment/assessor.js.map +1 -0
  30. package/dist/assessment/index.d.ts +6 -0
  31. package/dist/assessment/index.d.ts.map +1 -0
  32. package/dist/assessment/index.js +6 -0
  33. package/dist/assessment/index.js.map +1 -0
  34. package/dist/assessment/llm-review.d.ts +34 -0
  35. package/dist/assessment/llm-review.d.ts.map +1 -0
  36. package/dist/assessment/llm-review.js +669 -0
  37. package/dist/assessment/llm-review.js.map +1 -0
  38. package/dist/assessment/schemas.d.ts +5 -0
  39. package/dist/assessment/schemas.d.ts.map +1 -0
  40. package/dist/assessment/schemas.js +5 -0
  41. package/dist/assessment/schemas.js.map +1 -0
  42. package/dist/assessment/scoring.d.ts +5 -0
  43. package/dist/assessment/scoring.d.ts.map +1 -0
  44. package/dist/assessment/scoring.js +5 -0
  45. package/dist/assessment/scoring.js.map +1 -0
  46. package/dist/assessment/transcript-parser.d.ts +31 -0
  47. package/dist/assessment/transcript-parser.d.ts.map +1 -0
  48. package/dist/assessment/transcript-parser.js +203 -0
  49. package/dist/assessment/transcript-parser.js.map +1 -0
  50. package/dist/auth/index.d.ts +2 -0
  51. package/dist/auth/index.d.ts.map +1 -0
  52. package/dist/auth/index.js +4 -0
  53. package/dist/auth/index.js.map +1 -0
  54. package/dist/core/adapter.d.ts +62 -0
  55. package/dist/core/adapter.d.ts.map +1 -0
  56. package/dist/core/adapter.js +2 -0
  57. package/dist/core/adapter.js.map +1 -0
  58. package/dist/core/assessment-orchestrator.d.ts +18 -0
  59. package/dist/core/assessment-orchestrator.d.ts.map +1 -0
  60. package/dist/core/assessment-orchestrator.js +93 -0
  61. package/dist/core/assessment-orchestrator.js.map +1 -0
  62. package/dist/core/config.d.ts +17 -0
  63. package/dist/core/config.d.ts.map +1 -0
  64. package/dist/core/config.js +272 -0
  65. package/dist/core/config.js.map +1 -0
  66. package/dist/core/constants.d.ts +10 -0
  67. package/dist/core/constants.d.ts.map +1 -0
  68. package/dist/core/constants.js +11 -0
  69. package/dist/core/constants.js.map +1 -0
  70. package/dist/core/deadlock-resolver.d.ts +35 -0
  71. package/dist/core/deadlock-resolver.d.ts.map +1 -0
  72. package/dist/core/deadlock-resolver.js +317 -0
  73. package/dist/core/deadlock-resolver.js.map +1 -0
  74. package/dist/core/drizzle-sqlite-schema.d.ts +8 -0
  75. package/dist/core/drizzle-sqlite-schema.d.ts.map +1 -0
  76. package/dist/core/drizzle-sqlite-schema.js +250 -0
  77. package/dist/core/drizzle-sqlite-schema.js.map +1 -0
  78. package/dist/core/events.d.ts +26 -0
  79. package/dist/core/events.d.ts.map +1 -0
  80. package/dist/core/events.js +39 -0
  81. package/dist/core/events.js.map +1 -0
  82. package/dist/core/index.d.ts +37 -0
  83. package/dist/core/index.d.ts.map +1 -0
  84. package/dist/core/index.js +31 -0
  85. package/dist/core/index.js.map +1 -0
  86. package/dist/core/ink.d.ts +165 -0
  87. package/dist/core/ink.d.ts.map +1 -0
  88. package/dist/core/ink.js +445 -0
  89. package/dist/core/ink.js.map +1 -0
  90. package/dist/core/orchestrator.d.ts +387 -0
  91. package/dist/core/orchestrator.d.ts.map +1 -0
  92. package/dist/core/orchestrator.js +1015 -0
  93. package/dist/core/orchestrator.js.map +1 -0
  94. package/dist/core/question-detector.d.ts +19 -0
  95. package/dist/core/question-detector.d.ts.map +1 -0
  96. package/dist/core/question-detector.js +29 -0
  97. package/dist/core/question-detector.js.map +1 -0
  98. package/dist/core/runner.d.ts +14 -0
  99. package/dist/core/runner.d.ts.map +1 -0
  100. package/dist/core/runner.js +299 -0
  101. package/dist/core/runner.js.map +1 -0
  102. package/dist/core/session-reader.d.ts +46 -0
  103. package/dist/core/session-reader.d.ts.map +1 -0
  104. package/dist/core/session-reader.js +166 -0
  105. package/dist/core/session-reader.js.map +1 -0
  106. package/dist/index.d.ts +24 -0
  107. package/dist/index.d.ts.map +1 -0
  108. package/dist/index.js +29 -0
  109. package/dist/index.js.map +1 -0
  110. package/dist/llm/index.d.ts +8 -0
  111. package/dist/llm/index.d.ts.map +1 -0
  112. package/dist/llm/index.js +21 -0
  113. package/dist/llm/index.js.map +1 -0
  114. package/dist/llm/pi-client.d.ts +8 -0
  115. package/dist/llm/pi-client.d.ts.map +1 -0
  116. package/dist/llm/pi-client.js +8 -0
  117. package/dist/llm/pi-client.js.map +1 -0
  118. package/dist/llm/prompts.d.ts +14 -0
  119. package/dist/llm/prompts.d.ts.map +1 -0
  120. package/dist/llm/prompts.js +1618 -0
  121. package/dist/llm/prompts.js.map +1 -0
  122. package/dist/llm/retry.d.ts +5 -0
  123. package/dist/llm/retry.d.ts.map +1 -0
  124. package/dist/llm/retry.js +5 -0
  125. package/dist/llm/retry.js.map +1 -0
  126. package/dist/llm/skills.d.ts +265 -0
  127. package/dist/llm/skills.d.ts.map +1 -0
  128. package/dist/llm/skills.js +804 -0
  129. package/dist/llm/skills.js.map +1 -0
  130. package/dist/quality/index.d.ts +3 -0
  131. package/dist/quality/index.d.ts.map +1 -0
  132. package/dist/quality/index.js +3 -0
  133. package/dist/quality/index.js.map +1 -0
  134. package/dist/quality/quality-controller.d.ts +2 -0
  135. package/dist/quality/quality-controller.d.ts.map +1 -0
  136. package/dist/quality/quality-controller.js +2 -0
  137. package/dist/quality/quality-controller.js.map +1 -0
  138. package/dist/quality/sla-monitor.d.ts +2 -0
  139. package/dist/quality/sla-monitor.d.ts.map +1 -0
  140. package/dist/quality/sla-monitor.js +2 -0
  141. package/dist/quality/sla-monitor.js.map +1 -0
  142. package/dist/scheduling/cron.d.ts +2 -0
  143. package/dist/scheduling/cron.d.ts.map +1 -0
  144. package/dist/scheduling/cron.js +2 -0
  145. package/dist/scheduling/cron.js.map +1 -0
  146. package/dist/scheduling/index.d.ts +3 -0
  147. package/dist/scheduling/index.d.ts.map +1 -0
  148. package/dist/scheduling/index.js +3 -0
  149. package/dist/scheduling/index.js.map +1 -0
  150. package/dist/scheduling/scheduler.d.ts +2 -0
  151. package/dist/scheduling/scheduler.d.ts.map +1 -0
  152. package/dist/scheduling/scheduler.js +2 -0
  153. package/dist/scheduling/scheduler.js.map +1 -0
  154. package/dist/server/app.d.ts +19 -0
  155. package/dist/server/app.d.ts.map +1 -0
  156. package/dist/server/app.js +302 -0
  157. package/dist/server/app.js.map +1 -0
  158. package/dist/server/deps.d.ts +157 -0
  159. package/dist/server/deps.d.ts.map +1 -0
  160. package/dist/server/deps.js +9 -0
  161. package/dist/server/deps.js.map +1 -0
  162. package/dist/server/index.d.ts +43 -0
  163. package/dist/server/index.d.ts.map +1 -0
  164. package/dist/server/index.js +128 -0
  165. package/dist/server/index.js.map +1 -0
  166. package/dist/server/middleware/auth.d.ts +3 -0
  167. package/dist/server/middleware/auth.d.ts.map +1 -0
  168. package/dist/server/middleware/auth.js +35 -0
  169. package/dist/server/middleware/auth.js.map +1 -0
  170. package/dist/server/middleware/error.d.ts +15 -0
  171. package/dist/server/middleware/error.d.ts.map +1 -0
  172. package/dist/server/middleware/error.js +44 -0
  173. package/dist/server/middleware/error.js.map +1 -0
  174. package/dist/server/middleware/rate-limit.d.ts +16 -0
  175. package/dist/server/middleware/rate-limit.d.ts.map +1 -0
  176. package/dist/server/middleware/rate-limit.js +51 -0
  177. package/dist/server/middleware/rate-limit.js.map +1 -0
  178. package/dist/server/routes/config.d.ts +25 -0
  179. package/dist/server/routes/config.d.ts.map +1 -0
  180. package/dist/server/routes/config.js +446 -0
  181. package/dist/server/routes/config.js.map +1 -0
  182. package/dist/server/routes/files.d.ts +11 -0
  183. package/dist/server/routes/files.d.ts.map +1 -0
  184. package/dist/server/routes/files.js +514 -0
  185. package/dist/server/routes/files.js.map +1 -0
  186. package/dist/server/routes/filesystem.d.ts +3 -0
  187. package/dist/server/routes/filesystem.d.ts.map +1 -0
  188. package/dist/server/routes/filesystem.js +152 -0
  189. package/dist/server/routes/filesystem.js.map +1 -0
  190. package/dist/server/routes/providers.d.ts +7 -0
  191. package/dist/server/routes/providers.d.ts.map +1 -0
  192. package/dist/server/routes/providers.js +256 -0
  193. package/dist/server/routes/providers.js.map +1 -0
  194. package/dist/server/routes/skills.d.ts +11 -0
  195. package/dist/server/routes/skills.d.ts.map +1 -0
  196. package/dist/server/routes/skills.js +543 -0
  197. package/dist/server/routes/skills.js.map +1 -0
  198. package/dist/server/security.d.ts +34 -0
  199. package/dist/server/security.d.ts.map +1 -0
  200. package/dist/server/security.js +118 -0
  201. package/dist/server/security.js.map +1 -0
  202. package/dist/server/sse-bridge.d.ts +36 -0
  203. package/dist/server/sse-bridge.d.ts.map +1 -0
  204. package/dist/server/sse-bridge.js +110 -0
  205. package/dist/server/sse-bridge.js.map +1 -0
  206. package/dist/server/types.d.ts +69 -0
  207. package/dist/server/types.d.ts.map +1 -0
  208. package/dist/server/types.js +2 -0
  209. package/dist/server/types.js.map +1 -0
  210. package/dist/setup/env-persistence.d.ts +9 -0
  211. package/dist/setup/env-persistence.d.ts.map +1 -0
  212. package/dist/setup/env-persistence.js +42 -0
  213. package/dist/setup/env-persistence.js.map +1 -0
  214. package/dist/setup/index.d.ts +32 -0
  215. package/dist/setup/index.d.ts.map +1 -0
  216. package/dist/setup/index.js +24 -0
  217. package/dist/setup/index.js.map +1 -0
  218. package/dist/setup/models.d.ts +20 -0
  219. package/dist/setup/models.d.ts.map +1 -0
  220. package/dist/setup/models.js +33 -0
  221. package/dist/setup/models.js.map +1 -0
  222. package/dist/setup/providers.d.ts +26 -0
  223. package/dist/setup/providers.d.ts.map +1 -0
  224. package/dist/setup/providers.js +31 -0
  225. package/dist/setup/providers.js.map +1 -0
  226. package/dist/vault/encrypted-store.d.ts +45 -0
  227. package/dist/vault/encrypted-store.d.ts.map +1 -0
  228. package/dist/vault/encrypted-store.js +149 -0
  229. package/dist/vault/encrypted-store.js.map +1 -0
  230. package/dist/vault/index.d.ts +4 -0
  231. package/dist/vault/index.d.ts.map +1 -0
  232. package/dist/vault/index.js +3 -0
  233. package/dist/vault/index.js.map +1 -0
  234. package/dist/vault/resolver.d.ts +8 -0
  235. package/dist/vault/resolver.d.ts.map +1 -0
  236. package/dist/vault/resolver.js +8 -0
  237. package/dist/vault/resolver.js.map +1 -0
  238. package/package.json +76 -0
@@ -0,0 +1,152 @@
1
+ import { existsSync, readdirSync, renameSync, mkdirSync } from "node:fs";
2
+ import { resolve, join, dirname } from "node:path";
3
+ import { homedir } from "node:os";
4
+ import { POLPO_DIR_NAME, getPolpoDir } from "../../core/constants.js";
5
+ import { OpenAPIHono, createRoute, z } from "@hono/zod-openapi";
6
+ // ── Route definitions ─────────────────────────────────────────────────
7
+ const browseRoute = createRoute({
8
+ method: "get",
9
+ path: "/browse",
10
+ tags: ["Filesystem"],
11
+ summary: "Browse filesystem directories",
12
+ request: {
13
+ query: z.object({ path: z.string().optional() }),
14
+ },
15
+ responses: {
16
+ 200: {
17
+ content: {
18
+ "application/json": {
19
+ schema: z.object({
20
+ ok: z.boolean(),
21
+ data: z.object({
22
+ current: z.string(),
23
+ parent: z.string().nullable(),
24
+ dirs: z.array(z.object({
25
+ name: z.string(),
26
+ path: z.string(),
27
+ hasPolpoConfig: z.boolean(),
28
+ })),
29
+ }),
30
+ }),
31
+ },
32
+ },
33
+ description: "Directory listing",
34
+ },
35
+ },
36
+ });
37
+ const mkdirRoute = createRoute({
38
+ method: "post",
39
+ path: "/mkdir",
40
+ tags: ["Filesystem"],
41
+ summary: "Create a new directory",
42
+ request: {
43
+ body: {
44
+ content: {
45
+ "application/json": {
46
+ schema: z.object({ path: z.string() }),
47
+ },
48
+ },
49
+ },
50
+ },
51
+ responses: {
52
+ 200: {
53
+ content: { "application/json": { schema: z.object({ ok: z.boolean(), data: z.object({ path: z.string() }) }) } },
54
+ description: "Directory created",
55
+ },
56
+ },
57
+ });
58
+ const renameRoute = createRoute({
59
+ method: "post",
60
+ path: "/rename",
61
+ tags: ["Filesystem"],
62
+ summary: "Rename a directory",
63
+ request: {
64
+ body: {
65
+ content: {
66
+ "application/json": {
67
+ schema: z.object({ path: z.string(), newName: z.string() }),
68
+ },
69
+ },
70
+ },
71
+ },
72
+ responses: {
73
+ 200: {
74
+ content: { "application/json": { schema: z.object({ ok: z.boolean(), data: z.object({ path: z.string() }) }) } },
75
+ description: "Directory renamed",
76
+ },
77
+ },
78
+ });
79
+ // ── Route handlers ──────────────────────────────────────────────────
80
+ export function filesystemRoutes() {
81
+ const app = new OpenAPIHono();
82
+ // GET /filesystem/browse
83
+ app.openapi(browseRoute, (c) => {
84
+ const requestedPath = c.req.query("path") || homedir();
85
+ const target = resolve(requestedPath);
86
+ if (!existsSync(target)) {
87
+ return c.json({
88
+ ok: true,
89
+ data: { current: target, parent: dirname(target), dirs: [] },
90
+ });
91
+ }
92
+ try {
93
+ const entries = readdirSync(target, { withFileTypes: true });
94
+ const dirs = entries
95
+ .filter((e) => {
96
+ if (!e.isDirectory())
97
+ return false;
98
+ if (e.name.startsWith(".") && e.name !== POLPO_DIR_NAME)
99
+ return false;
100
+ return true;
101
+ })
102
+ .map((e) => {
103
+ const fullPath = join(target, e.name);
104
+ const hasPolpoConfig = existsSync(join(getPolpoDir(fullPath), "polpo.json"));
105
+ return { name: e.name, path: fullPath, hasPolpoConfig };
106
+ })
107
+ .sort((a, b) => a.name.localeCompare(b.name));
108
+ const parentDir = dirname(target);
109
+ return c.json({
110
+ ok: true,
111
+ data: {
112
+ current: target,
113
+ parent: parentDir !== target ? parentDir : null,
114
+ dirs,
115
+ },
116
+ });
117
+ }
118
+ catch {
119
+ return c.json({
120
+ ok: true,
121
+ data: { current: target, parent: dirname(target), dirs: [] },
122
+ });
123
+ }
124
+ });
125
+ // POST /filesystem/mkdir
126
+ app.openapi(mkdirRoute, (c) => {
127
+ const { path: dirPath } = c.req.valid("json");
128
+ const target = resolve(dirPath);
129
+ try {
130
+ mkdirSync(target, { recursive: true });
131
+ return c.json({ ok: true, data: { path: target } });
132
+ }
133
+ catch (err) {
134
+ return c.json({ ok: false, error: err instanceof Error ? err.message : "Failed to create directory" }, 400);
135
+ }
136
+ });
137
+ // POST /filesystem/rename
138
+ app.openapi(renameRoute, (c) => {
139
+ const { path: dirPath, newName } = c.req.valid("json");
140
+ const target = resolve(dirPath);
141
+ const newPath = join(dirname(target), newName);
142
+ try {
143
+ renameSync(target, newPath);
144
+ return c.json({ ok: true, data: { path: newPath } });
145
+ }
146
+ catch (err) {
147
+ return c.json({ ok: false, error: err instanceof Error ? err.message : "Rename failed" }, 400);
148
+ }
149
+ });
150
+ return app;
151
+ }
152
+ //# sourceMappingURL=filesystem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../../src/server/routes/filesystem.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { OpenAPIHono } from "@hono/zod-openapi";
2
+ /**
3
+ * Provider management routes — always available.
4
+ * Auth is handled by the middleware in app.ts (conditional on setup mode).
5
+ */
6
+ export declare function providerRoutes(polpoDir: string): OpenAPIHono;
7
+ //# sourceMappingURL=providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../../src/server/routes/providers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAkB,MAAM,mBAAmB,CAAC;AA2LhE;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,CAuF5D"}
@@ -0,0 +1,256 @@
1
+ import { resolve } from "node:path";
2
+ import { getPolpoDir } from "../../core/constants.js";
3
+ import { OpenAPIHono, createRoute, z } from "@hono/zod-openapi";
4
+ import { PROVIDER_ENV_MAP, listModels } from "../../llm/pi-client.js";
5
+ import { detectProviders, persistToEnvFile, removeFromEnvFile, } from "../../setup/index.js";
6
+ // ── Route definitions ─────────────────────────────────────────────
7
+ const listProvidersRoute = createRoute({
8
+ method: "get",
9
+ path: "/",
10
+ tags: ["Providers"],
11
+ summary: "List all LLM providers with credential status",
12
+ responses: {
13
+ 200: {
14
+ content: {
15
+ "application/json": {
16
+ schema: z.object({
17
+ ok: z.boolean(),
18
+ data: z.array(z.object({
19
+ name: z.string(),
20
+ envVar: z.string().optional(),
21
+ hasKey: z.boolean(),
22
+ source: z.enum(["env", "none"]),
23
+ })),
24
+ }),
25
+ },
26
+ },
27
+ description: "Provider list with credential status",
28
+ },
29
+ },
30
+ });
31
+ const allModelsRoute = createRoute({
32
+ method: "get",
33
+ path: "/models",
34
+ tags: ["Providers"],
35
+ summary: "List all available models, optionally filtered by provider",
36
+ request: {
37
+ query: z.object({ provider: z.string().optional() }),
38
+ },
39
+ responses: {
40
+ 200: {
41
+ content: {
42
+ "application/json": {
43
+ schema: z.object({ ok: z.boolean(), data: z.array(z.any()) }),
44
+ },
45
+ },
46
+ description: "Model list",
47
+ },
48
+ },
49
+ });
50
+ const providerModelsRoute = createRoute({
51
+ method: "get",
52
+ path: "/{name}/models",
53
+ tags: ["Providers"],
54
+ summary: "List models for a specific provider",
55
+ request: {
56
+ params: z.object({ name: z.string() }),
57
+ },
58
+ responses: {
59
+ 200: {
60
+ content: {
61
+ "application/json": {
62
+ schema: z.object({ ok: z.boolean(), data: z.array(z.any()) }),
63
+ },
64
+ },
65
+ description: "Provider models",
66
+ },
67
+ },
68
+ });
69
+ const saveApiKeyRoute = createRoute({
70
+ method: "post",
71
+ path: "/{name}/api-key",
72
+ tags: ["Providers"],
73
+ summary: "Save an API key for a provider",
74
+ request: {
75
+ params: z.object({ name: z.string() }),
76
+ body: {
77
+ content: {
78
+ "application/json": {
79
+ schema: z.object({
80
+ apiKey: z.string(),
81
+ workDir: z.string().optional(),
82
+ }),
83
+ },
84
+ },
85
+ },
86
+ },
87
+ responses: {
88
+ 200: {
89
+ content: {
90
+ "application/json": {
91
+ schema: z.object({ ok: z.boolean(), data: z.object({ message: z.string() }) }),
92
+ },
93
+ },
94
+ description: "API key saved",
95
+ },
96
+ 400: {
97
+ content: {
98
+ "application/json": {
99
+ schema: z.object({ ok: z.boolean(), error: z.string() }),
100
+ },
101
+ },
102
+ description: "Unknown provider",
103
+ },
104
+ },
105
+ });
106
+ const deleteApiKeyRoute = createRoute({
107
+ method: "delete",
108
+ path: "/{name}/api-key",
109
+ tags: ["Providers"],
110
+ summary: "Remove an API key for a provider",
111
+ request: {
112
+ params: z.object({ name: z.string() }),
113
+ body: {
114
+ content: {
115
+ "application/json": {
116
+ schema: z.object({ workDir: z.string().optional() }).optional(),
117
+ },
118
+ },
119
+ required: false,
120
+ },
121
+ },
122
+ responses: {
123
+ 200: {
124
+ content: {
125
+ "application/json": {
126
+ schema: z.object({ ok: z.boolean(), data: z.object({ message: z.string() }) }),
127
+ },
128
+ },
129
+ description: "API key removed",
130
+ },
131
+ 400: {
132
+ content: {
133
+ "application/json": {
134
+ schema: z.object({ ok: z.boolean(), error: z.string() }),
135
+ },
136
+ },
137
+ description: "Unknown provider",
138
+ },
139
+ },
140
+ });
141
+ const disconnectRoute = createRoute({
142
+ method: "delete",
143
+ path: "/{name}/disconnect",
144
+ tags: ["Providers"],
145
+ summary: "Disconnect a provider — removes API key",
146
+ request: {
147
+ params: z.object({ name: z.string() }),
148
+ body: {
149
+ content: {
150
+ "application/json": {
151
+ schema: z.object({ workDir: z.string().optional() }).optional(),
152
+ },
153
+ },
154
+ required: false,
155
+ },
156
+ },
157
+ responses: {
158
+ 200: {
159
+ content: {
160
+ "application/json": {
161
+ schema: z.object({ ok: z.boolean(), data: z.object({ message: z.string() }) }),
162
+ },
163
+ },
164
+ description: "Provider disconnected",
165
+ },
166
+ 400: {
167
+ content: {
168
+ "application/json": {
169
+ schema: z.object({ ok: z.boolean(), error: z.string() }),
170
+ },
171
+ },
172
+ description: "Unknown provider",
173
+ },
174
+ },
175
+ });
176
+ // ── Route handlers ──────────────────────────────────────────────────
177
+ /**
178
+ * Provider management routes — always available.
179
+ * Auth is handled by the middleware in app.ts (conditional on setup mode).
180
+ */
181
+ export function providerRoutes(polpoDir) {
182
+ const app = new OpenAPIHono();
183
+ // ── Static paths first (before /:name wildcard) ──
184
+ // GET /providers
185
+ app.openapi(listProvidersRoute, (c) => {
186
+ return c.json({ ok: true, data: detectProviders() });
187
+ });
188
+ // GET /providers/models
189
+ app.openapi(allModelsRoute, (c) => {
190
+ const provider = c.req.query("provider");
191
+ const models = listModels(provider || undefined)
192
+ .sort((a, b) => a.cost.input - b.cost.input);
193
+ return c.json({ ok: true, data: models });
194
+ });
195
+ // ── Dynamic /:name paths ──
196
+ // GET /providers/:name/models
197
+ app.openapi(providerModelsRoute, (c) => {
198
+ const { name } = c.req.valid("param");
199
+ const models = listModels(name).sort((a, b) => a.cost.input - b.cost.input);
200
+ return c.json({ ok: true, data: models });
201
+ });
202
+ // POST /providers/:name/api-key
203
+ app.openapi(saveApiKeyRoute, (c) => {
204
+ const { name } = c.req.valid("param");
205
+ const { apiKey, workDir: bodyWorkDir } = c.req.valid("json");
206
+ const envVar = PROVIDER_ENV_MAP[name];
207
+ if (!envVar)
208
+ return c.json({ ok: false, error: `Unknown provider: ${name}` }, 400);
209
+ process.env[envVar] = apiKey;
210
+ const targetDir = bodyWorkDir ? getPolpoDir(resolve(bodyWorkDir)) : polpoDir;
211
+ persistToEnvFile(targetDir, envVar, apiKey);
212
+ return c.json({ ok: true, data: { message: `${envVar} saved to .polpo/.env` } });
213
+ });
214
+ // DELETE /providers/:name/api-key
215
+ app.openapi(deleteApiKeyRoute, (c) => {
216
+ const { name } = c.req.valid("param");
217
+ let bodyWorkDir;
218
+ try {
219
+ const body = c.req.valid("json");
220
+ bodyWorkDir = body?.workDir;
221
+ }
222
+ catch { /* no body is fine for DELETE */ }
223
+ const envVar = PROVIDER_ENV_MAP[name];
224
+ if (!envVar)
225
+ return c.json({ ok: false, error: `Unknown provider: ${name}` }, 400);
226
+ delete process.env[envVar];
227
+ const targetDir = bodyWorkDir ? getPolpoDir(resolve(bodyWorkDir)) : polpoDir;
228
+ removeFromEnvFile(targetDir, envVar);
229
+ return c.json({ ok: true, data: { message: `${envVar} removed` } });
230
+ });
231
+ // DELETE /providers/:name/disconnect — remove env key
232
+ app.openapi(disconnectRoute, async (c) => {
233
+ const { name } = c.req.valid("param");
234
+ let bodyWorkDir;
235
+ try {
236
+ const body = c.req.valid("json");
237
+ bodyWorkDir = body?.workDir;
238
+ }
239
+ catch { /* no body is fine for DELETE */ }
240
+ const actions = [];
241
+ // Remove env var from process + .env file
242
+ const envVar = PROVIDER_ENV_MAP[name];
243
+ if (envVar && process.env[envVar]) {
244
+ delete process.env[envVar];
245
+ const targetDir = bodyWorkDir ? getPolpoDir(resolve(bodyWorkDir)) : polpoDir;
246
+ removeFromEnvFile(targetDir, envVar);
247
+ actions.push("API key removed");
248
+ }
249
+ return c.json({
250
+ ok: true,
251
+ data: { message: actions.length > 0 ? actions.join(", ") : "No credentials found" },
252
+ });
253
+ });
254
+ return app;
255
+ }
256
+ //# sourceMappingURL=providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../../../src/server/routes/providers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { OpenAPIHono } from "@hono/zod-openapi";
2
+ /**
3
+ * Skill routes — discover, install, remove, and assign skills.
4
+ * Pool lives in .polpo/skills/ (project) and ~/.polpo/skills/ (global).
5
+ */
6
+ export declare function skillRoutes(getDeps: () => {
7
+ polpoDir: string;
8
+ workDir: string;
9
+ getAgents: () => Promise<any[]>;
10
+ }): OpenAPIHono;
11
+ //# sourceMappingURL=skills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../../src/server/routes/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAkB,MAAM,mBAAmB,CAAC;AAqBhE;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;CACjC,GAAG,WAAW,CA8kBd"}