@polpo-ai/server 0.2.2

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 (73) hide show
  1. package/dist/deps.d.ts +164 -0
  2. package/dist/deps.d.ts.map +1 -0
  3. package/dist/deps.js +9 -0
  4. package/dist/deps.js.map +1 -0
  5. package/dist/errors.d.ts +7 -0
  6. package/dist/errors.d.ts.map +1 -0
  7. package/dist/errors.js +12 -0
  8. package/dist/errors.js.map +1 -0
  9. package/dist/index.d.ts +25 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +25 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/playbook-utils.d.ts +36 -0
  14. package/dist/playbook-utils.d.ts.map +1 -0
  15. package/dist/playbook-utils.js +80 -0
  16. package/dist/playbook-utils.js.map +1 -0
  17. package/dist/routes/approvals.d.ts +17 -0
  18. package/dist/routes/approvals.d.ts.map +1 -0
  19. package/dist/routes/approvals.js +201 -0
  20. package/dist/routes/approvals.js.map +1 -0
  21. package/dist/routes/chat.d.ts +9 -0
  22. package/dist/routes/chat.d.ts.map +1 -0
  23. package/dist/routes/chat.js +170 -0
  24. package/dist/routes/chat.js.map +1 -0
  25. package/dist/routes/health.d.ts +7 -0
  26. package/dist/routes/health.d.ts.map +1 -0
  27. package/dist/routes/health.js +44 -0
  28. package/dist/routes/health.js.map +1 -0
  29. package/dist/routes/missions.d.ts +36 -0
  30. package/dist/routes/missions.d.ts.map +1 -0
  31. package/dist/routes/missions.js +636 -0
  32. package/dist/routes/missions.js.map +1 -0
  33. package/dist/routes/notifications.d.ts +8 -0
  34. package/dist/routes/notifications.d.ts.map +1 -0
  35. package/dist/routes/notifications.js +240 -0
  36. package/dist/routes/notifications.js.map +1 -0
  37. package/dist/routes/peers.d.ts +16 -0
  38. package/dist/routes/peers.d.ts.map +1 -0
  39. package/dist/routes/peers.js +183 -0
  40. package/dist/routes/peers.js.map +1 -0
  41. package/dist/routes/playbooks.d.ts +12 -0
  42. package/dist/routes/playbooks.d.ts.map +1 -0
  43. package/dist/routes/playbooks.js +223 -0
  44. package/dist/routes/playbooks.js.map +1 -0
  45. package/dist/routes/schedules.d.ts +7 -0
  46. package/dist/routes/schedules.d.ts.map +1 -0
  47. package/dist/routes/schedules.js +193 -0
  48. package/dist/routes/schedules.js.map +1 -0
  49. package/dist/routes/state.d.ts +16 -0
  50. package/dist/routes/state.d.ts.map +1 -0
  51. package/dist/routes/state.js +196 -0
  52. package/dist/routes/state.js.map +1 -0
  53. package/dist/routes/tasks.d.ts +17 -0
  54. package/dist/routes/tasks.d.ts.map +1 -0
  55. package/dist/routes/tasks.js +379 -0
  56. package/dist/routes/tasks.js.map +1 -0
  57. package/dist/routes/vault.d.ts +14 -0
  58. package/dist/routes/vault.d.ts.map +1 -0
  59. package/dist/routes/vault.js +237 -0
  60. package/dist/routes/vault.js.map +1 -0
  61. package/dist/routes/watchers.d.ts +6 -0
  62. package/dist/routes/watchers.d.ts.map +1 -0
  63. package/dist/routes/watchers.js +119 -0
  64. package/dist/routes/watchers.js.map +1 -0
  65. package/dist/schemas.d.ts +406 -0
  66. package/dist/schemas.d.ts.map +1 -0
  67. package/dist/schemas.js +314 -0
  68. package/dist/schemas.js.map +1 -0
  69. package/dist/security.d.ts +33 -0
  70. package/dist/security.d.ts.map +1 -0
  71. package/dist/security.js +66 -0
  72. package/dist/security.js.map +1 -0
  73. package/package.json +46 -0
@@ -0,0 +1,314 @@
1
+ import { z } from "@hono/zod-openapi";
2
+ import { ApiHttpError } from "./errors.js";
3
+ // ── Outcome schemas ───────────────────────────────────────────────────
4
+ const ExpectedOutcomeSchema = z.object({
5
+ type: z.enum(["file", "text", "url", "json", "media"]),
6
+ label: z.string().min(1),
7
+ description: z.string().optional(),
8
+ path: z.string().optional(),
9
+ mimeType: z.string().optional(),
10
+ required: z.boolean().optional(),
11
+ tags: z.array(z.string()).optional(),
12
+ });
13
+ // ── Notification rule schema (shared for scoped rules) ────────────────
14
+ const NotificationRuleSchema = z.object({
15
+ id: z.string().min(1),
16
+ name: z.string().min(1),
17
+ events: z.array(z.string().min(1)).min(1),
18
+ condition: z.any().optional(),
19
+ channels: z.array(z.string().min(1)).min(1),
20
+ severity: z.enum(["info", "warning", "critical"]).optional(),
21
+ template: z.string().optional(),
22
+ cooldownMs: z.number().int().min(0).optional(),
23
+ includeOutcomes: z.boolean().optional(),
24
+ outcomeFilter: z.array(z.enum(["file", "text", "url", "json", "media"])).optional(),
25
+ maxAttachmentSize: z.number().int().min(0).optional(),
26
+ });
27
+ const ScopedNotificationRulesSchema = z.object({
28
+ rules: z.array(NotificationRuleSchema),
29
+ inherit: z.boolean().optional(),
30
+ });
31
+ // ── Task schemas ──────────────────────────────────────────────────────
32
+ export const CreateTaskSchema = z.object({
33
+ title: z.string().min(1),
34
+ description: z.string().min(1),
35
+ assignTo: z.string().min(1),
36
+ /** Create task as draft (won't be picked up by orchestrator until moved to pending). Default: false. */
37
+ draft: z.boolean().optional(),
38
+ expectations: z.array(z.any()).optional(),
39
+ expectedOutcomes: z.array(ExpectedOutcomeSchema).optional(),
40
+ dependsOn: z.array(z.string()).optional(),
41
+ group: z.string().optional(),
42
+ maxDuration: z.number().positive().optional(),
43
+ retryPolicy: z
44
+ .object({
45
+ escalateAfter: z.number().int().min(0).optional(),
46
+ fallbackAgent: z.string().optional(),
47
+ escalateModel: z.string().optional(),
48
+ })
49
+ .optional(),
50
+ notifications: ScopedNotificationRulesSchema.optional(),
51
+ /** Whether this task produces irreversible side effects. Blocks automatic retry/fix. */
52
+ sideEffects: z.boolean().optional(),
53
+ });
54
+ export const UpdateTaskSchema = z.object({
55
+ description: z.string().min(1).optional(),
56
+ assignTo: z.string().min(1).optional(),
57
+ status: z.enum(["draft", "pending", "awaiting_approval", "assigned", "in_progress", "review", "done", "failed"]).optional(),
58
+ expectations: z.array(z.any()).optional(),
59
+ retries: z.number().int().min(0).optional(),
60
+ maxRetries: z.number().int().min(0).optional(),
61
+ /** Whether this task produces irreversible side effects. Blocks automatic retry/fix. */
62
+ sideEffects: z.boolean().optional(),
63
+ });
64
+ // ── Mission schemas ──────────────────────────────────────────────────
65
+ export const CreateMissionSchema = z.object({
66
+ data: z.string().min(1),
67
+ prompt: z.string().optional(),
68
+ name: z.string().optional(),
69
+ status: z
70
+ .enum(["draft", "scheduled", "recurring", "active", "paused", "completed", "failed", "cancelled"])
71
+ .optional(),
72
+ /** End date for recurring schedules (ISO timestamp). */
73
+ endDate: z.string().datetime().optional(),
74
+ notifications: ScopedNotificationRulesSchema.optional(),
75
+ });
76
+ export const UpdateMissionSchema = z.object({
77
+ data: z.string().min(1).optional(),
78
+ status: z
79
+ .enum(["draft", "scheduled", "recurring", "active", "paused", "completed", "failed", "cancelled"])
80
+ .optional(),
81
+ name: z.string().optional(),
82
+ /** End date for recurring schedules (ISO timestamp). */
83
+ endDate: z.string().datetime().nullable().optional(),
84
+ });
85
+ // ── Atomic mission data schemas ──────────────────────────────────
86
+ export const AddMissionTaskSchema = z.object({
87
+ title: z.string().min(1),
88
+ description: z.string().min(1),
89
+ assignTo: z.string().min(1).optional(),
90
+ dependsOn: z.array(z.string().min(1)).optional(),
91
+ expectations: z.array(z.any()).optional(),
92
+ expectedOutcomes: z.array(z.any()).optional(),
93
+ maxDuration: z.number().positive().optional(),
94
+ retryPolicy: z.object({
95
+ escalateAfter: z.number().int().min(0).optional(),
96
+ fallbackAgent: z.string().optional(),
97
+ }).optional(),
98
+ notifications: z.any().optional(),
99
+ sideEffects: z.boolean().optional(),
100
+ });
101
+ export const UpdateMissionTaskSchema = z.object({
102
+ title: z.string().min(1).optional(),
103
+ description: z.string().min(1).optional(),
104
+ assignTo: z.string().min(1).optional(),
105
+ dependsOn: z.array(z.string().min(1)).optional(),
106
+ expectations: z.array(z.any()).optional(),
107
+ expectedOutcomes: z.array(z.any()).optional(),
108
+ maxDuration: z.number().positive().optional(),
109
+ retryPolicy: z.object({
110
+ escalateAfter: z.number().int().min(0).optional(),
111
+ fallbackAgent: z.string().optional(),
112
+ }).optional(),
113
+ notifications: z.any().optional(),
114
+ sideEffects: z.boolean().optional(),
115
+ });
116
+ export const ReorderMissionTasksSchema = z.object({
117
+ titles: z.array(z.string().min(1)).min(1),
118
+ });
119
+ export const AddMissionCheckpointSchema = z.object({
120
+ name: z.string().min(1),
121
+ afterTasks: z.array(z.string().min(1)).min(1),
122
+ blocksTasks: z.array(z.string().min(1)).min(1),
123
+ message: z.string().optional(),
124
+ notifyChannels: z.array(z.string().min(1)).optional(),
125
+ });
126
+ export const UpdateMissionCheckpointSchema = z.object({
127
+ name: z.string().min(1).optional(),
128
+ afterTasks: z.array(z.string().min(1)).min(1).optional(),
129
+ blocksTasks: z.array(z.string().min(1)).min(1).optional(),
130
+ message: z.string().optional(),
131
+ notifyChannels: z.array(z.string().min(1)).optional(),
132
+ });
133
+ export const AddMissionDelaySchema = z.object({
134
+ name: z.string().min(1),
135
+ afterTasks: z.array(z.string().min(1)).min(1),
136
+ blocksTasks: z.array(z.string().min(1)).min(1),
137
+ duration: z.string().min(1),
138
+ message: z.string().optional(),
139
+ notifyChannels: z.array(z.string().min(1)).optional(),
140
+ });
141
+ export const UpdateMissionDelaySchema = z.object({
142
+ name: z.string().min(1).optional(),
143
+ afterTasks: z.array(z.string().min(1)).min(1).optional(),
144
+ blocksTasks: z.array(z.string().min(1)).min(1).optional(),
145
+ duration: z.string().min(1).optional(),
146
+ message: z.string().optional(),
147
+ notifyChannels: z.array(z.string().min(1)).optional(),
148
+ });
149
+ export const AddMissionQualityGateSchema = z.object({
150
+ name: z.string().min(1),
151
+ afterTasks: z.array(z.string().min(1)).min(1),
152
+ blocksTasks: z.array(z.string().min(1)).min(1),
153
+ minScore: z.number().min(1).max(5).optional(),
154
+ requireAllPassed: z.boolean().optional(),
155
+ condition: z.string().optional(),
156
+ notifyChannels: z.array(z.string().min(1)).optional(),
157
+ });
158
+ export const UpdateMissionQualityGateSchema = z.object({
159
+ name: z.string().min(1).optional(),
160
+ afterTasks: z.array(z.string().min(1)).min(1).optional(),
161
+ blocksTasks: z.array(z.string().min(1)).min(1).optional(),
162
+ minScore: z.number().min(1).max(5).optional(),
163
+ requireAllPassed: z.boolean().optional(),
164
+ condition: z.string().optional(),
165
+ notifyChannels: z.array(z.string().min(1)).optional(),
166
+ });
167
+ export const AddMissionTeamMemberSchema = z.object({
168
+ name: z.string().min(1),
169
+ role: z.string().optional(),
170
+ model: z.string().optional(),
171
+ systemPrompt: z.string().optional(),
172
+ allowedTools: z.array(z.string()).optional(),
173
+ });
174
+ export const UpdateMissionTeamMemberSchema = z.object({
175
+ name: z.string().min(1).optional(),
176
+ role: z.string().optional(),
177
+ model: z.string().optional(),
178
+ systemPrompt: z.string().optional(),
179
+ allowedTools: z.array(z.string()).optional(),
180
+ });
181
+ export const UpdateMissionNotificationsSchema = z.object({
182
+ notifications: ScopedNotificationRulesSchema.nullable(),
183
+ });
184
+ // ── Settings schema ───────────────────────────────────────────────────
185
+ const ModelConfigSchema = z.object({
186
+ primary: z.string().optional(),
187
+ fallbacks: z.array(z.string()).optional(),
188
+ });
189
+ export const UpdateSettingsSchema = z.object({
190
+ orchestratorModel: z.union([z.string(), ModelConfigSchema]).optional(),
191
+ imageModel: z.string().nullable().optional(),
192
+ reasoning: z.enum(["off", "minimal", "low", "medium", "high", "xhigh"]).optional(),
193
+ });
194
+ // ── Agent schemas ─────────────────────────────────────────────────────
195
+ const AgentResponsibilitySchema = z.object({
196
+ area: z.string(),
197
+ description: z.string(),
198
+ priority: z.enum(["critical", "high", "medium", "low"]).optional(),
199
+ });
200
+ const AgentIdentitySchema = z.object({
201
+ displayName: z.string().optional(),
202
+ title: z.string().optional(),
203
+ company: z.string().optional(),
204
+ email: z.string().optional(),
205
+ bio: z.string().optional(),
206
+ timezone: z.string().optional(),
207
+ avatar: z.string().optional(),
208
+ responsibilities: z.array(z.union([z.string(), AgentResponsibilitySchema])).optional(),
209
+ tone: z.string().optional(),
210
+ personality: z.string().optional(),
211
+ socials: z.record(z.string(), z.string()).optional(),
212
+ });
213
+ export const AddAgentSchema = z.object({
214
+ name: z.string().min(1),
215
+ role: z.string().optional(),
216
+ model: z.string().optional(),
217
+ allowedTools: z.array(z.string()).optional(),
218
+ systemPrompt: z.string().optional(),
219
+ skills: z.array(z.string()).optional(),
220
+ maxTurns: z.number().int().positive().optional(),
221
+ // Identity & hierarchy (vault credentials managed via encrypted store)
222
+ identity: AgentIdentitySchema.optional(),
223
+ reportsTo: z.string().optional(),
224
+ // Extended tool categories (browser, email, vault, image, video, audio, excel, pdf, docx, search — HTTP is always-on core)
225
+ browserProfile: z.string().optional(),
226
+ });
227
+ export const UpdateAgentSchema = z.object({
228
+ role: z.string().optional(),
229
+ model: z.string().optional(),
230
+ allowedTools: z.array(z.string()).optional(),
231
+ allowedPaths: z.array(z.string()).optional(),
232
+ systemPrompt: z.string().optional(),
233
+ skills: z.array(z.string()).optional(),
234
+ maxTurns: z.number().int().positive().optional(),
235
+ maxConcurrency: z.number().int().positive().optional(),
236
+ identity: AgentIdentitySchema.optional(),
237
+ reportsTo: z.string().optional(),
238
+ reasoning: z.string().optional(),
239
+ browserProfile: z.string().optional(),
240
+ emailAllowedDomains: z.array(z.string()).optional(),
241
+ team: z.string().optional(),
242
+ });
243
+ export const RenameTeamSchema = z.object({
244
+ oldName: z.string().min(1),
245
+ name: z.string().min(1),
246
+ });
247
+ export const AddTeamSchema = z.object({
248
+ name: z.string().min(1),
249
+ description: z.string().optional(),
250
+ });
251
+ // ── Notification channel config schema ─────────────────────────────────
252
+ const ChannelGatewaySchema = z.object({
253
+ dmPolicy: z.enum(["pairing", "allowlist", "open", "disabled"]).optional(),
254
+ allowFrom: z.array(z.string()).optional(),
255
+ enableInbound: z.boolean().optional(),
256
+ sessionIdleMinutes: z.number().int().min(1).optional(),
257
+ }).strict();
258
+ export const NotificationChannelConfigSchema = z.object({
259
+ type: z.enum(["slack", "email", "telegram", "whatsapp", "webhook"]),
260
+ // Slack
261
+ webhookUrl: z.string().url().optional(),
262
+ // Email
263
+ to: z.array(z.string().email()).optional(),
264
+ provider: z.string().optional(),
265
+ from: z.string().optional(),
266
+ host: z.string().optional(),
267
+ port: z.number().int().min(1).max(65535).optional(),
268
+ // Shared
269
+ apiKey: z.string().optional(),
270
+ // Telegram
271
+ botToken: z.string().optional(),
272
+ chatId: z.string().optional(),
273
+ // WhatsApp
274
+ profileDir: z.string().optional(),
275
+ // Webhook
276
+ url: z.string().url().optional(),
277
+ headers: z.record(z.string(), z.string()).optional(),
278
+ // Gateway
279
+ gateway: ChannelGatewaySchema.optional(),
280
+ });
281
+ // ── Direct notification schema ─────────────────────────────────────────
282
+ export const SendNotificationSchema = z.object({
283
+ channel: z.string().min(1),
284
+ title: z.string().min(1),
285
+ body: z.string().min(1),
286
+ severity: z.enum(["info", "warning", "critical"]).optional(),
287
+ delayMs: z.number().int().min(0).optional(),
288
+ });
289
+ // ── Approval schemas ──────────────────────────────────────────────────
290
+ export const ApproveRequestSchema = z.object({
291
+ resolvedBy: z.string().optional(),
292
+ note: z.string().optional(),
293
+ });
294
+ export const RejectRequestSchema = z.object({
295
+ feedback: z.string().min(1),
296
+ resolvedBy: z.string().optional(),
297
+ });
298
+ // ── Memory schema ─────────────────────────────────────────────────────
299
+ export const UpdateMemorySchema = z.object({
300
+ content: z.string(),
301
+ });
302
+ // ── Helper ────────────────────────────────────────────────────────────
303
+ /** Parse and validate request body against a Zod schema. Throws ApiHttpError on failure. */
304
+ export function parseBody(schema, data) {
305
+ const result = schema.safeParse(data);
306
+ if (!result.success) {
307
+ const issues = result.error.issues
308
+ .map((i) => `${i.path.join(".")}: ${i.message}`)
309
+ .join("; ");
310
+ throw new ApiHttpError(issues, "VALIDATION_ERROR", 400);
311
+ }
312
+ return result.data;
313
+ }
314
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Security redaction module — pure functions for sanitizing sensitive data
3
+ * before exposing it through API responses or persisting to transcript logs.
4
+ *
5
+ * Handles:
6
+ * - Provider API key masking
7
+ * - Transcript parameter sanitization (passwords, tokens, secrets)
8
+ *
9
+ * NOTE: Vault credentials are no longer stored on AgentConfig — they live in
10
+ * the encrypted vault store (.polpo/vault.enc). Agent/team/state redaction
11
+ * functions are kept as pass-throughs for API compatibility.
12
+ */
13
+ import type { AgentConfig, Team, PolpoState, PolpoConfig, PolpoFileConfig } from "@polpo-ai/core/types";
14
+ /** Regex matching parameter names that likely contain secrets. */
15
+ export declare const SENSITIVE_PARAM_RE: RegExp;
16
+ /**
17
+ * Returns the agent config as-is (vault credentials are no longer inline).
18
+ * Kept for backward compatibility with callers that expect redaction.
19
+ */
20
+ export declare function redactAgentConfig(agent: AgentConfig): AgentConfig;
21
+ /** Returns the team as-is (no inline credentials to redact). */
22
+ export declare function redactTeam(team: Team): Team;
23
+ /** Returns the state as-is (no inline credentials to redact). */
24
+ export declare function redactPolpoState(state: PolpoState): PolpoState;
25
+ /** Return config as-is — providers no longer contain secrets (API keys resolved via env/OAuth only). */
26
+ export declare function redactPolpoConfig<T extends PolpoConfig | PolpoFileConfig>(config: T): T;
27
+ /**
28
+ * Sanitize a transcript entry by masking sensitive parameter values in tool_use inputs.
29
+ * Only touches entries with `type === "tool_use"` that have an `input` object.
30
+ * Returns the entry unchanged for all other types (assistant, tool_result, etc.).
31
+ */
32
+ export declare function sanitizeTranscriptEntry(entry: Record<string, unknown>): Record<string, unknown>;
33
+ //# sourceMappingURL=security.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAIxG,kEAAkE;AAClE,eAAO,MAAM,kBAAkB,QAAoD,CAAC;AAIpF;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,WAAW,GAAG,WAAW,CAEjE;AAID,gEAAgE;AAChE,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAE3C;AAID,iEAAiE;AACjE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,CAE9D;AAID,wGAAwG;AACxG,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,WAAW,GAAG,eAAe,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAEvF;AAID;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAqB/F"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Security redaction module — pure functions for sanitizing sensitive data
3
+ * before exposing it through API responses or persisting to transcript logs.
4
+ *
5
+ * Handles:
6
+ * - Provider API key masking
7
+ * - Transcript parameter sanitization (passwords, tokens, secrets)
8
+ *
9
+ * NOTE: Vault credentials are no longer stored on AgentConfig — they live in
10
+ * the encrypted vault store (.polpo/vault.enc). Agent/team/state redaction
11
+ * functions are kept as pass-throughs for API compatibility.
12
+ */
13
+ // ── Constants ──
14
+ /** Regex matching parameter names that likely contain secrets. */
15
+ export const SENSITIVE_PARAM_RE = /pass|secret|token|key|auth|password|credential/i;
16
+ // ── Agent Config Redaction ──
17
+ /**
18
+ * Returns the agent config as-is (vault credentials are no longer inline).
19
+ * Kept for backward compatibility with callers that expect redaction.
20
+ */
21
+ export function redactAgentConfig(agent) {
22
+ return agent;
23
+ }
24
+ // ── Team Redaction ──
25
+ /** Returns the team as-is (no inline credentials to redact). */
26
+ export function redactTeam(team) {
27
+ return team;
28
+ }
29
+ // ── State Redaction ──
30
+ /** Returns the state as-is (no inline credentials to redact). */
31
+ export function redactPolpoState(state) {
32
+ return state;
33
+ }
34
+ // ── Config Redaction ──
35
+ /** Return config as-is — providers no longer contain secrets (API keys resolved via env/OAuth only). */
36
+ export function redactPolpoConfig(config) {
37
+ return config;
38
+ }
39
+ // ── Transcript Sanitization ──
40
+ /**
41
+ * Sanitize a transcript entry by masking sensitive parameter values in tool_use inputs.
42
+ * Only touches entries with `type === "tool_use"` that have an `input` object.
43
+ * Returns the entry unchanged for all other types (assistant, tool_result, etc.).
44
+ */
45
+ export function sanitizeTranscriptEntry(entry) {
46
+ if (entry.type !== "tool_use")
47
+ return entry;
48
+ const input = entry.input;
49
+ if (!input || typeof input !== "object")
50
+ return entry;
51
+ const sanitized = {};
52
+ let changed = false;
53
+ for (const [key, value] of Object.entries(input)) {
54
+ if (SENSITIVE_PARAM_RE.test(key) && typeof value === "string") {
55
+ sanitized[key] = "[REDACTED]";
56
+ changed = true;
57
+ }
58
+ else {
59
+ sanitized[key] = value;
60
+ }
61
+ }
62
+ if (!changed)
63
+ return entry;
64
+ return { ...entry, input: sanitized };
65
+ }
66
+ //# sourceMappingURL=security.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security.js","sourceRoot":"","sources":["../src/security.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,kBAAkB;AAElB,kEAAkE;AAClE,MAAM,CAAC,MAAM,kBAAkB,GAAG,iDAAiD,CAAC;AAEpF,+BAA+B;AAE/B;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAkB;IAClD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,uBAAuB;AAEvB,gEAAgE;AAChE,MAAM,UAAU,UAAU,CAAC,IAAU;IACnC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,wBAAwB;AAExB,iEAAiE;AACjE,MAAM,UAAU,gBAAgB,CAAC,KAAiB;IAChD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,yBAAyB;AAEzB,wGAAwG;AACxG,MAAM,UAAU,iBAAiB,CAA0C,MAAS;IAClF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,gCAAgC;AAEhC;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAA8B;IACpE,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;QAAE,OAAO,KAAK,CAAC;IAE5C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;IAC1B,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAEtD,MAAM,SAAS,GAA4B,EAAE,CAAC;IAC9C,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,EAAE,CAAC;QAC5E,IAAI,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9D,SAAS,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;YAC9B,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACzB,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAE3B,OAAO,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AACxC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "@polpo-ai/server",
3
+ "version": "0.2.2",
4
+ "description": "Polpo API route factories — edge-compatible Hono routes for tasks, agents, missions, vault, and more",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "types": "./dist/index.d.ts",
11
+ "import": "./dist/index.js"
12
+ }
13
+ },
14
+ "scripts": {
15
+ "build": "tsc",
16
+ "prepublishOnly": "tsc"
17
+ },
18
+ "files": [
19
+ "dist",
20
+ "README.md"
21
+ ],
22
+ "dependencies": {
23
+ "@hono/zod-openapi": ">=1.0.0",
24
+ "@polpo-ai/core": ">=0.2.0",
25
+ "hono": ">=4.0.0",
26
+ "nanoid": ">=5.0.0"
27
+ },
28
+ "peerDependencies": {
29
+ "zod": ">=3.0.0 || >=4.0.0"
30
+ },
31
+ "license": "MIT",
32
+ "repository": {
33
+ "type": "git",
34
+ "url": "https://github.com/lumea-labs/polpo",
35
+ "directory": "packages/server"
36
+ },
37
+ "keywords": [
38
+ "polpo",
39
+ "api",
40
+ "hono",
41
+ "openapi",
42
+ "edge",
43
+ "cloudflare-workers",
44
+ "serverless"
45
+ ]
46
+ }