@polpo-ai/core 0.11.1 → 0.12.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 (109) hide show
  1. package/dist/__tests__/mission-store.test.js +9 -13
  2. package/dist/__tests__/mission-store.test.js.map +1 -1
  3. package/dist/adapter.d.ts +10 -19
  4. package/dist/adapter.d.ts.map +1 -1
  5. package/dist/adapter.js +0 -7
  6. package/dist/adapter.js.map +1 -1
  7. package/dist/approval-manager.js +11 -11
  8. package/dist/approval-manager.js.map +1 -1
  9. package/dist/assessment-orchestrator.d.ts +1 -1
  10. package/dist/assessment-orchestrator.js +46 -46
  11. package/dist/assessment-orchestrator.js.map +1 -1
  12. package/dist/context-compactor.d.ts +1 -0
  13. package/dist/context-compactor.d.ts.map +1 -1
  14. package/dist/context-compactor.js.map +1 -1
  15. package/dist/escalation-manager.js +8 -8
  16. package/dist/escalation-manager.js.map +1 -1
  17. package/dist/events.d.ts +1 -25
  18. package/dist/events.d.ts.map +1 -1
  19. package/dist/hooks.d.ts +15 -9
  20. package/dist/hooks.d.ts.map +1 -1
  21. package/dist/hooks.js.map +1 -1
  22. package/dist/in-memory-stores.d.ts +21 -0
  23. package/dist/in-memory-stores.d.ts.map +1 -0
  24. package/dist/in-memory-stores.js +43 -0
  25. package/dist/in-memory-stores.js.map +1 -0
  26. package/dist/index.d.ts +2 -2
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +1 -0
  29. package/dist/index.js.map +1 -1
  30. package/dist/loop/hooks.d.ts +10 -28
  31. package/dist/loop/hooks.d.ts.map +1 -1
  32. package/dist/loop/hooks.js +2 -83
  33. package/dist/loop/hooks.js.map +1 -1
  34. package/dist/loop/step-helpers.d.ts +20 -0
  35. package/dist/loop/step-helpers.d.ts.map +1 -0
  36. package/dist/loop/step-helpers.js +69 -0
  37. package/dist/loop/step-helpers.js.map +1 -0
  38. package/dist/mission-executor.d.ts +16 -22
  39. package/dist/mission-executor.d.ts.map +1 -1
  40. package/dist/mission-executor.js +204 -459
  41. package/dist/mission-executor.js.map +1 -1
  42. package/dist/mission-gating.d.ts +89 -0
  43. package/dist/mission-gating.d.ts.map +1 -0
  44. package/dist/mission-gating.js +281 -0
  45. package/dist/mission-gating.js.map +1 -0
  46. package/dist/mission-store.d.ts +14 -8
  47. package/dist/mission-store.d.ts.map +1 -1
  48. package/dist/mission-store.js +19 -8
  49. package/dist/mission-store.js.map +1 -1
  50. package/dist/orchestrator-context.d.ts +1 -1
  51. package/dist/orchestrator-context.d.ts.map +1 -1
  52. package/dist/orchestrator-engine.d.ts +6 -6
  53. package/dist/orchestrator-engine.d.ts.map +1 -1
  54. package/dist/orchestrator-engine.js +10 -10
  55. package/dist/orchestrator-engine.js.map +1 -1
  56. package/dist/playbook-logic.d.ts +1 -1
  57. package/dist/playbook-logic.js +1 -1
  58. package/dist/scheduler.js +1 -1
  59. package/dist/scheduler.js.map +1 -1
  60. package/dist/schemas.d.ts +2 -2
  61. package/dist/session-store.d.ts +0 -2
  62. package/dist/session-store.d.ts.map +1 -1
  63. package/dist/session-store.js.map +1 -1
  64. package/dist/sla-monitor.js +3 -3
  65. package/dist/sla-monitor.js.map +1 -1
  66. package/dist/task-manager.d.ts +1 -1
  67. package/dist/task-manager.d.ts.map +1 -1
  68. package/dist/task-manager.js +37 -37
  69. package/dist/task-manager.js.map +1 -1
  70. package/dist/task-runner.d.ts.map +1 -1
  71. package/dist/task-runner.js +19 -36
  72. package/dist/task-runner.js.map +1 -1
  73. package/dist/task-store.d.ts +5 -19
  74. package/dist/task-store.d.ts.map +1 -1
  75. package/dist/tool-types.d.ts +0 -2
  76. package/dist/tool-types.d.ts.map +1 -1
  77. package/dist/types/agent.d.ts +186 -0
  78. package/dist/types/agent.d.ts.map +1 -0
  79. package/dist/types/agent.js +23 -0
  80. package/dist/types/agent.js.map +1 -0
  81. package/dist/types/assessment.d.ts +134 -0
  82. package/dist/types/assessment.d.ts.map +1 -0
  83. package/dist/types/assessment.js +18 -0
  84. package/dist/types/assessment.js.map +1 -0
  85. package/dist/types/config.d.ts +193 -0
  86. package/dist/types/config.d.ts.map +1 -0
  87. package/dist/types/config.js +8 -0
  88. package/dist/types/config.js.map +1 -0
  89. package/dist/types/mission.d.ts +226 -0
  90. package/dist/types/mission.d.ts.map +1 -0
  91. package/dist/types/mission.js +6 -0
  92. package/dist/types/mission.js.map +1 -0
  93. package/dist/types/notifications.d.ts +162 -0
  94. package/dist/types/notifications.d.ts.map +1 -0
  95. package/dist/types/notifications.js +6 -0
  96. package/dist/types/notifications.js.map +1 -0
  97. package/dist/types/task.d.ts +191 -0
  98. package/dist/types/task.d.ts.map +1 -0
  99. package/dist/types/task.js +5 -0
  100. package/dist/types/task.js.map +1 -0
  101. package/dist/types.d.ts +17 -1150
  102. package/dist/types.d.ts.map +1 -1
  103. package/dist/types.js +18 -31
  104. package/dist/types.js.map +1 -1
  105. package/package.json +1 -1
  106. package/dist/attachment-store.d.ts +0 -42
  107. package/dist/attachment-store.d.ts.map +0 -1
  108. package/dist/attachment-store.js +0 -13
  109. package/dist/attachment-store.js.map +0 -1
@@ -0,0 +1,186 @@
1
+ /**
2
+ * Agent domain — agent configuration, identity, vault, runtime activity,
3
+ * teams, and multi-team helpers.
4
+ */
5
+ import type { LoopConfig, LoopToolChoice, Pipeline } from "../loop/types.js";
6
+ /** Reasoning level for LLM calls (maps to pi-ai ThinkingLevel). */
7
+ export type ReasoningLevel = "off" | "minimal" | "low" | "medium" | "high" | "xhigh";
8
+ /** Agent identity — who this agent is and how it behaves */
9
+ /** A structured responsibility area */
10
+ export interface AgentResponsibility {
11
+ /** Responsibility area (e.g. "Customer Relations", "Content Creation") */
12
+ area: string;
13
+ /** What the agent does in this area */
14
+ description: string;
15
+ /** Priority level — affects how the agent prioritizes competing tasks */
16
+ priority?: "critical" | "high" | "medium" | "low";
17
+ }
18
+ export interface AgentIdentity {
19
+ displayName?: string;
20
+ title?: string;
21
+ company?: string;
22
+ email?: string;
23
+ bio?: string;
24
+ timezone?: string;
25
+ /** Avatar image path relative to project root (e.g. ".polpo/avatars/alice.png").
26
+ * Served via GET /api/v1/files/read?path=<avatar> */
27
+ avatar?: string;
28
+ /** Responsibilities — simple strings or structured objects with area/description/priority.
29
+ * Structured format is preferred for clarity. */
30
+ responsibilities?: (string | AgentResponsibility)[];
31
+ /** Communication tone — HOW the agent communicates.
32
+ * Examples: "Professional but warm", "Concise and data-driven", "Casual and friendly" */
33
+ tone?: string;
34
+ /** Personality traits — WHO the agent IS as a persona.
35
+ * Examples: "Detail-oriented and empathetic", "Creative problem-solver" */
36
+ personality?: string;
37
+ /** Social & web accounts — free-form key-value.
38
+ * Keys are platform names, values are handles/URLs.
39
+ * Examples: { x: "@alice", linkedin: "linkedin.com/in/alice", github: "alice", website: "https://alice.dev" } */
40
+ socials?: Record<string, string>;
41
+ }
42
+ /** Vault credential entry */
43
+ export interface VaultEntry {
44
+ /** Service type for semantic meaning */
45
+ type: "smtp" | "imap" | "oauth" | "api_key" | "login" | "custom";
46
+ /** Human-readable label */
47
+ label?: string;
48
+ /** Credential fields — values can be literals or ${ENV_VAR} references */
49
+ credentials: Record<string, string>;
50
+ }
51
+ export interface AgentConfig {
52
+ name: string;
53
+ /** ISO timestamp of when this agent was created / added to the team. Auto-set by addAgent(). */
54
+ createdAt?: string;
55
+ role?: string;
56
+ /** Model to use. Format: "provider/model" (e.g. "anthropic/claude-sonnet-4-5-20250929") or bare model ID (auto-inferred). */
57
+ model?: string;
58
+ /** Image generation model. Format: "provider/model".
59
+ * Default: "fal/fal-ai/flux/dev". Drives the image_generate tool.
60
+ * Provider must be in the supported set: fal. */
61
+ image_model?: string;
62
+ /** Video generation model. Format: "provider/model".
63
+ * Default: "fal/luma-ray-2-flash". Drives the video_generate tool.
64
+ * Provider must be in the supported set: fal. */
65
+ video_model?: string;
66
+ /** Vision model for image_analyze. Format: "provider/model".
67
+ * Default: "openai/gpt-4o-mini". Must be a multimodal LLM.
68
+ * Provider must be in the supported set: openai, anthropic. */
69
+ vision_model?: string;
70
+ /** Speech-to-text model. Format: "provider/model".
71
+ * Default: "openai/whisper-1". Drives the audio_transcribe tool.
72
+ * Provider must be in the supported set: openai, deepgram. */
73
+ transcribe_model?: string;
74
+ /** Text-to-speech model. Format: "provider/model".
75
+ * Default: "openai/tts-1". Drives the audio_speak tool.
76
+ * Provider must be in the supported set: openai, deepgram, elevenlabs, edge.
77
+ * Use "edge/edge-tts" for the free local Microsoft Edge voices. */
78
+ tts_model?: string;
79
+ /** Web search backend for search_web / search_find_similar.
80
+ * Default: "exa". Currently only "exa" is supported in OSS;
81
+ * cloud may add more. */
82
+ search_provider?: string;
83
+ /** Allowed tools for the agent (e.g. ["read", "write", "edit", "bash", "glob", "grep", "browser_*", "email_*", "image_*", "video_*", "audio_*", "excel_*", "pdf_*", "docx_*"]).
84
+ * Core tools (always available): read, write, edit, bash, glob, grep, ls, http_fetch, http_download, register_outcome, vault_get, vault_list. */
85
+ allowedTools?: string[];
86
+ /** Filesystem sandbox — directories the agent is allowed to access.
87
+ * Paths can be absolute or relative to workDir. When set, all file tool operations
88
+ * and bash cwd are validated against these paths. When omitted, defaults to [workDir]. */
89
+ allowedPaths?: string[];
90
+ /** Agent's identity — persona, responsibilities, communication style */
91
+ identity?: AgentIdentity;
92
+ /** Agent this one reports to — org chart hierarchy for escalation.
93
+ * When a task fails or needs a decision, escalates up the chain. */
94
+ reportsTo?: string;
95
+ /** System prompt appended to the agent's base prompt */
96
+ systemPrompt?: string;
97
+ /** Installed skill names (e.g. "find-skills", "frontend-design") */
98
+ skills?: string[];
99
+ /** Max conversation turns before stopping. Default 150 */
100
+ maxTurns?: number;
101
+ /** Max concurrent tasks for this agent. Default: unlimited (undefined). */
102
+ maxConcurrency?: number;
103
+ /** Reasoning / deep thinking level for this agent's LLM calls.
104
+ * "off" disables thinking (default). Higher levels = more reasoning tokens = better quality but slower + more expensive.
105
+ * Falls back to the global `settings.reasoning` when not set. */
106
+ reasoning?: ReasoningLevel;
107
+ /** Runtime/environment ref for configurable loop execution. */
108
+ runtime?: string;
109
+ /** Runtime-only model tool-choice policy materialized from an active loop step. */
110
+ toolChoice?: LoopToolChoice;
111
+ /** Project-level loop names this agent is allowed to use. */
112
+ assignedLoops?: string[];
113
+ /** Default project-level loop name for this agent. */
114
+ defaultLoop?: string;
115
+ /** Legacy inline loop steps. Prefer project-level loops + assignedLoops. */
116
+ loops?: Record<string, LoopConfig>;
117
+ /** Legacy inline pipeline wiring loop, switch, parallel, and human steps. */
118
+ pipeline?: Pipeline;
119
+ /** Volatile agent — created for a specific mission, auto-removed when mission completes */
120
+ volatile?: boolean;
121
+ /** Mission group this volatile agent belongs to */
122
+ missionGroup?: string;
123
+ /** Browser profile name for persistent context (cookies, auth, localStorage).
124
+ * Defaults to agent name. Used with agent-browser's --profile flag.
125
+ * Profiles stored in .polpo/browser-profiles/<name>/. */
126
+ browserProfile?: string;
127
+ /** Allowed recipient email domains for email_send (e.g. ["acme.com", "partner.io"]).
128
+ * When set, emails can only be sent to addresses in these domains.
129
+ * When omitted, all domains are allowed (backwards compatible). */
130
+ emailAllowedDomains?: string[];
131
+ /** Semantic version (e.g. "1.0.0"). Used by Ink registry for package identification. */
132
+ version?: string;
133
+ /** Author name or "Name <email>" string. */
134
+ author?: string;
135
+ /** Searchable tags for registry discovery (e.g. ["frontend", "react", "testing"]). */
136
+ tags?: string[];
137
+ }
138
+ export interface AgentActivity {
139
+ lastTool?: string;
140
+ lastFile?: string;
141
+ filesCreated: string[];
142
+ filesEdited: string[];
143
+ toolCalls: number;
144
+ totalTokens: number;
145
+ lastUpdate: string;
146
+ summary?: string;
147
+ sessionId?: string;
148
+ /**
149
+ * Billable per-tool inference cost captured from a tool's gateway
150
+ * response (e.g. managed image/video generation). Each entry mirrors the
151
+ * fields the completions billing path meters. Absent for tools that don't
152
+ * go through the gateway (BYOK / direct provider). Consumed by the cloud
153
+ * data plane after a run completes → Autumn + usage_logs.
154
+ */
155
+ toolUsage?: ToolUsageRecord[];
156
+ }
157
+ /** One billable tool inference, harvested from `result.details.usage`. */
158
+ export interface ToolUsageRecord {
159
+ toolName: string;
160
+ generationId?: string;
161
+ marketCostUsd?: number;
162
+ actualCostUsd?: number;
163
+ resolvedModel?: string;
164
+ finalProvider?: string;
165
+ credentialType?: string;
166
+ }
167
+ export interface AgentProcess {
168
+ agentName: string;
169
+ pid: number;
170
+ taskId: string;
171
+ startedAt: string;
172
+ alive: boolean;
173
+ activity: AgentActivity;
174
+ }
175
+ export interface Team {
176
+ name: string;
177
+ description?: string;
178
+ agents: AgentConfig[];
179
+ }
180
+ /** Get all agents across all teams (flattened). */
181
+ export declare function getAllAgents(teams: Team[]): AgentConfig[];
182
+ /** Find a specific agent by name across all teams. */
183
+ export declare function findAgent(teams: Team[], agentName: string): AgentConfig | undefined;
184
+ /** Find the team an agent belongs to. */
185
+ export declare function findAgentTeam(teams: Team[], agentName: string): Team | undefined;
186
+ //# sourceMappingURL=agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/types/agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Agent domain — agent configuration, identity, vault, runtime activity,
3
+ * teams, and multi-team helpers.
4
+ */
5
+ // === Multi-team helpers ===
6
+ /** Get all agents across all teams (flattened). */
7
+ export function getAllAgents(teams) {
8
+ return teams.flatMap(t => t.agents);
9
+ }
10
+ /** Find a specific agent by name across all teams. */
11
+ export function findAgent(teams, agentName) {
12
+ for (const t of teams) {
13
+ const agent = t.agents.find(a => a.name === agentName);
14
+ if (agent)
15
+ return agent;
16
+ }
17
+ return undefined;
18
+ }
19
+ /** Find the team an agent belongs to. */
20
+ export function findAgentTeam(teams, agentName) {
21
+ return teams.find(t => t.agents.some(a => a.name === agentName));
22
+ }
23
+ //# sourceMappingURL=agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/types/agent.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAqNH,6BAA6B;AAE7B,mDAAmD;AACnD,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,SAAiB;IACxD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;QACvD,IAAI,KAAK;YAAE,OAAO,KAAK,CAAC;IAC1B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,SAAiB;IAC5D,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC;AACnE,CAAC"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * Assessment domain — evaluation dimensions, reviewer results, assessment
3
+ * outcomes, and the review context passed to LLM reviewers.
4
+ */
5
+ import type { TaskExpectation, TaskOutcome, TaskResult } from "./task.js";
6
+ export interface EvalDimension {
7
+ name: string;
8
+ description: string;
9
+ weight: number;
10
+ rubric?: Record<number, string>;
11
+ }
12
+ export interface DimensionScore {
13
+ dimension: string;
14
+ score: number;
15
+ reasoning: string;
16
+ weight: number;
17
+ evidence?: {
18
+ file: string;
19
+ line: number;
20
+ note: string;
21
+ }[];
22
+ }
23
+ /** Serializable representation of a single message in the reviewer's conversation */
24
+ export interface ReviewerMessage {
25
+ role: "user" | "assistant" | "toolResult";
26
+ /** For user/assistant: text content. For toolResult: the tool output text. */
27
+ content: string;
28
+ /** Tool calls made by the assistant (if role === "assistant") */
29
+ toolCalls?: {
30
+ id: string;
31
+ name: string;
32
+ arguments: Record<string, unknown>;
33
+ }[];
34
+ /** For toolResult messages */
35
+ toolCallId?: string;
36
+ toolName?: string;
37
+ isError?: boolean;
38
+ timestamp: number;
39
+ }
40
+ /** Phase 1 exploration trace from a single reviewer */
41
+ export interface ReviewerExploration {
42
+ /** Full analysis text produced by the reviewer during exploration */
43
+ analysis: string;
44
+ /** Files read by the reviewer during exploration */
45
+ filesRead: string[];
46
+ /** Complete conversation (user prompts, assistant responses, tool calls & results) */
47
+ messages: ReviewerMessage[];
48
+ }
49
+ /** Individual reviewer result from llm_review multi-evaluator consensus */
50
+ export interface ReviewerResult {
51
+ /** Reviewer index (1-based) */
52
+ index: number;
53
+ /** Per-dimension scores from this reviewer */
54
+ scores: {
55
+ dimension: string;
56
+ score: number;
57
+ reasoning: string;
58
+ evidence?: {
59
+ file: string;
60
+ line: number;
61
+ note: string;
62
+ }[];
63
+ }[];
64
+ /** Reviewer's summary */
65
+ summary: string;
66
+ /** Weighted average score for this reviewer */
67
+ globalScore: number;
68
+ /** Phase 1 exploration trace (analysis, files read, full conversation) */
69
+ exploration?: ReviewerExploration;
70
+ /** Errors from scoring strategy attempts (Phase 2 fallback chain) */
71
+ scoringAttemptErrors?: string[];
72
+ }
73
+ export interface CheckResult {
74
+ type: TaskExpectation["type"];
75
+ passed: boolean;
76
+ message: string;
77
+ details?: string;
78
+ /** Per-dimension scores from llm_review (consensus/median) */
79
+ scores?: DimensionScore[];
80
+ /** Weighted average score (1-5) from llm_review */
81
+ globalScore?: number;
82
+ /** Individual reviewer results (llm_review only) — shows how each reviewer voted */
83
+ reviewers?: ReviewerResult[];
84
+ }
85
+ export interface MetricResult {
86
+ name: string;
87
+ value: number;
88
+ threshold: number;
89
+ passed: boolean;
90
+ }
91
+ export type AssessmentTrigger = "initial" | "reassess" | "fix" | "retry" | "auto-correct" | "judge";
92
+ export interface AssessmentResult {
93
+ passed: boolean;
94
+ checks: CheckResult[];
95
+ metrics: MetricResult[];
96
+ llmReview?: string;
97
+ scores?: DimensionScore[];
98
+ globalScore?: number;
99
+ timestamp: string;
100
+ /** What triggered this assessment. Defaults to "initial" for backwards compatibility. */
101
+ trigger?: AssessmentTrigger;
102
+ }
103
+ /**
104
+ * Replace the current assessment on a TaskResult, archiving the old one in assessmentHistory.
105
+ * Also tags the new assessment with the given trigger.
106
+ */
107
+ export declare function setAssessment(result: TaskResult, assessment: AssessmentResult, trigger: AssessmentTrigger): void;
108
+ export interface ReviewContext {
109
+ taskTitle: string;
110
+ taskDescription: string;
111
+ /** Last assistant message from the agent conversation. */
112
+ agentOutput?: string;
113
+ /** Agent stderr (errors, warnings). */
114
+ agentStderr?: string;
115
+ /** Agent exit code. */
116
+ exitCode?: number;
117
+ /** Agent execution duration in ms. */
118
+ duration?: number;
119
+ filesCreated?: string[];
120
+ filesEdited?: string[];
121
+ /** Total tool calls made by the agent. */
122
+ toolCalls?: number;
123
+ /** Summary of tools used (name → count). */
124
+ toolsSummary?: string;
125
+ /**
126
+ * Structured execution timeline built from the JSONL activity log.
127
+ * Shows what the agent did step-by-step: tool calls, text messages, outcomes.
128
+ * This is the primary evidence for reviewing non-file-based tasks.
129
+ */
130
+ executionSummary?: string;
131
+ /** Explicit outcomes registered by the agent (files, text, URLs, JSON data). */
132
+ outcomes?: TaskOutcome[];
133
+ }
134
+ //# sourceMappingURL=assessment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assessment.d.ts","sourceRoot":"","sources":["../../src/types/assessment.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Assessment domain — evaluation dimensions, reviewer results, assessment
3
+ * outcomes, and the review context passed to LLM reviewers.
4
+ */
5
+ /**
6
+ * Replace the current assessment on a TaskResult, archiving the old one in assessmentHistory.
7
+ * Also tags the new assessment with the given trigger.
8
+ */
9
+ export function setAssessment(result, assessment, trigger) {
10
+ if (result.assessment) {
11
+ if (!result.assessmentHistory)
12
+ result.assessmentHistory = [];
13
+ result.assessmentHistory.push(result.assessment);
14
+ }
15
+ assessment.trigger = trigger;
16
+ result.assessment = assessment;
17
+ }
18
+ //# sourceMappingURL=assessment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assessment.js","sourceRoot":"","sources":["../../src/types/assessment.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA+FH;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,MAAkB,EAAE,UAA4B,EAAE,OAA0B;IACxG,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,iBAAiB;YAAE,MAAM,CAAC,iBAAiB,GAAG,EAAE,CAAC;QAC7D,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACnD,CAAC;IACD,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;IAC7B,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;AACjC,CAAC"}
@@ -0,0 +1,193 @@
1
+ /**
2
+ * Config domain — project configuration (polpo.json), settings, providers,
3
+ * model config, runner config, and persisted state.
4
+ */
5
+ import type { Task, RetryPolicy } from "./task.js";
6
+ import type { AgentConfig, AgentProcess, Team, ReasoningLevel } from "./agent.js";
7
+ import type { ApprovalGate, SLAConfig } from "./mission.js";
8
+ import type { NotificationsConfig, EscalationPolicy } from "./notifications.js";
9
+ export interface RunnerConfig {
10
+ runId: string;
11
+ taskId: string;
12
+ agent: AgentConfig;
13
+ task: Task;
14
+ polpoDir: string;
15
+ cwd: string;
16
+ /** Per-task output directory (.polpo/output/<taskId>/). Agents should write deliverables here. */
17
+ outputDir: string;
18
+ storage?: "file" | "sqlite" | "postgres";
19
+ /** PostgreSQL connection URL (for storage: "postgres"). */
20
+ databaseUrl?: string;
21
+ /** UDS path for push-notifying the orchestrator on completion. */
22
+ notifySocket?: string;
23
+ /** Email domain allowlist (from settings or agent config). */
24
+ emailAllowedDomains?: string[];
25
+ /** Global reasoning level from settings — used as fallback for agents that don't specify one. */
26
+ reasoning?: ReasoningLevel;
27
+ /**
28
+ * Provider overrides from polpo.json (custom baseUrl endpoints: Ollama,
29
+ * vLLM, proxies). The runner subprocess never reads polpo.json, so the
30
+ * overrides must travel with the config or custom-provider agents break
31
+ * inside the runner.
32
+ */
33
+ providers?: Record<string, ProviderConfig>;
34
+ }
35
+ export interface PolpoFileConfig {
36
+ project: string;
37
+ /** Multiple teams — each with its own agents.
38
+ * @since 0.2 — replaces the old singular `team` field. */
39
+ teams: Team[];
40
+ settings: PolpoSettings;
41
+ providers?: Record<string, ProviderConfig>;
42
+ /** Semantic version (e.g. "1.0.0"). Used by Ink registry for company package identification. */
43
+ version?: string;
44
+ /** Author name or "Name <email>" string. */
45
+ author?: string;
46
+ /** Searchable tags for registry discovery (e.g. ["saas", "startup", "fullstack"]). */
47
+ tags?: string[];
48
+ }
49
+ /** Shape that parseConfig() accepts from disk — supports both old `team` and new `teams`. */
50
+ export interface PolpoFileConfigRaw {
51
+ project?: string;
52
+ teams?: Team[];
53
+ settings?: Partial<PolpoSettings>;
54
+ providers?: Record<string, ProviderConfig>;
55
+ }
56
+ export interface ProviderConfig {
57
+ /** Override base URL for the provider (e.g. custom proxy, Ollama, vLLM). */
58
+ baseUrl?: string;
59
+ /** API compatibility mode for custom endpoints. */
60
+ api?: "openai-completions" | "openai-responses" | "anthropic-messages";
61
+ /** Custom model definitions for this provider (used with custom endpoints). */
62
+ models?: CustomModelDef[];
63
+ }
64
+ /** Custom model definition for non-catalog providers (Ollama, vLLM, LM Studio, etc.) */
65
+ export interface CustomModelDef {
66
+ /** Model ID used in API calls. */
67
+ id: string;
68
+ /** Human-readable name. */
69
+ name: string;
70
+ /** Whether the model supports extended thinking / reasoning. */
71
+ reasoning?: boolean;
72
+ /** Supported input types. Default: ["text"] */
73
+ input?: ("text" | "image")[];
74
+ /** Cost per million tokens. Default: all zeros (free/local). */
75
+ cost?: {
76
+ input: number;
77
+ output: number;
78
+ cacheRead: number;
79
+ cacheWrite: number;
80
+ };
81
+ /** Context window size in tokens. Default: 200000 */
82
+ contextWindow?: number;
83
+ /** Max output tokens. Default: 8192 */
84
+ maxTokens?: number;
85
+ }
86
+ export interface ModelConfig {
87
+ /** Primary model spec (e.g. "anthropic/claude-opus-4-6"). */
88
+ primary?: string;
89
+ /** Ordered fallback models — tried when primary fails. */
90
+ fallbacks?: string[];
91
+ }
92
+ /** Model allowlist entry with optional alias. */
93
+ export interface ModelAllowlistEntry {
94
+ /** Display alias for this model (e.g. "Sonnet", "GPT"). */
95
+ alias?: string;
96
+ /** Per-model parameter overrides. */
97
+ params?: Record<string, unknown>;
98
+ }
99
+ export interface PolpoConfig {
100
+ version: string;
101
+ project: string;
102
+ teams: Team[];
103
+ tasks: Omit<Task, "status" | "retries" | "result" | "createdAt" | "updatedAt">[];
104
+ settings: PolpoSettings;
105
+ /** Per-provider API key and base URL overrides. */
106
+ providers?: Record<string, ProviderConfig>;
107
+ }
108
+ export interface PolpoSettings {
109
+ maxRetries: number;
110
+ workDir: string;
111
+ logLevel: "quiet" | "normal" | "verbose";
112
+ taskTimeout?: number;
113
+ staleThreshold?: number;
114
+ defaultRetryPolicy?: RetryPolicy;
115
+ /** Whether missions can define volatile agents in their team: section. Default: true */
116
+ enableVolatileTeams?: boolean;
117
+ /** When to clean up volatile agents: "on_complete" (default) removes them when the mission
118
+ * finishes, "manual" keeps them until the user explicitly removes them or the mission is deleted */
119
+ volatileCleanup?: "on_complete" | "manual";
120
+ /** Max fix attempts per review cycle before falling back to full retry. Default: 2 */
121
+ maxFixAttempts?: number;
122
+ /** Max auto-answer rounds per task when agent asks questions. Default: 2 */
123
+ maxQuestionRounds?: number;
124
+ /** Max deadlock resolution attempts per task. Default: 2 */
125
+ maxResolutionAttempts?: number;
126
+ /** Auto-correct correctable expectations (e.g. file_exists paths) on assessment failure. Default: true */
127
+ autoCorrectExpectations?: boolean;
128
+ /** Skills to load into the orchestrator's system prompt.
129
+ * Skill names are resolved against the pool (project + global). */
130
+ orchestratorSkills?: string[];
131
+ /** Model for orchestrator LLM calls (question detection, deadlock, missions).
132
+ * Can be a simple string ("anthropic/claude-opus-4-6") or a ModelConfig with fallbacks. */
133
+ orchestratorModel?: string | ModelConfig;
134
+ /** Image-capable model for tasks that need vision (falls back to orchestratorModel). */
135
+ imageModel?: string;
136
+ /** Model allowlist — when set, only these models can be used.
137
+ * Keys are model specs (e.g. "anthropic/claude-opus-4-6"), values are aliases/params. */
138
+ modelAllowlist?: Record<string, ModelAllowlistEntry>;
139
+ /** Global reasoning / deep thinking level for orchestrator LLM calls (chat, plan generation, assessment).
140
+ * "off" disables thinking (default). Can be overridden per-agent via AgentConfig.reasoning.
141
+ * Higher levels produce better results but are slower and more expensive. */
142
+ reasoning?: ReasoningLevel;
143
+ /** Storage backend for tasks, missions, and runs. Default: "file" (filesystem JSON).
144
+ * "postgres" requires @polpo-ai/drizzle and a databaseUrl. */
145
+ storage?: "file" | "sqlite" | "postgres";
146
+ /** PostgreSQL connection URL (required when storage is "postgres").
147
+ * Example: "postgres://user:pass@localhost:5432/polpo" */
148
+ databaseUrl?: string;
149
+ /** Max assessment retries when all reviewers fail before falling back to fix/retry. Default: 1 */
150
+ maxAssessmentRetries?: number;
151
+ /** Max concurrent agent processes. Default: unlimited (undefined). */
152
+ maxConcurrency?: number;
153
+ /** Approval gates — checkpoints that block task/mission execution until approved. */
154
+ approvalGates?: ApprovalGate[];
155
+ /** Notification system — routes events to external channels (Slack, email, Telegram). */
156
+ notifications?: NotificationsConfig;
157
+ /** Default escalation policy — defines escalation chain when tasks fail repeatedly. */
158
+ escalationPolicy?: EscalationPolicy;
159
+ /** SLA monitoring configuration. */
160
+ sla?: SLAConfig;
161
+ /** Enable the scheduling engine. Default: true if any mission has a schedule. */
162
+ enableScheduler?: boolean;
163
+ /** Default quality threshold for missions (1-5). Missions below this score are marked failed. */
164
+ defaultQualityThreshold?: number;
165
+ /** Allowed recipient email domains — applies to all agents (can be overridden per-agent). */
166
+ emailAllowedDomains?: string[];
167
+ /** LLM gateway configuration. */
168
+ gateway?: {
169
+ /** Gateway endpoint URL (e.g. "https://ai-gateway.vercel.sh/v1", "http://localhost:11434/v1") */
170
+ url: string;
171
+ /** Environment variable name containing the API key (e.g. "AI_GATEWAY_API_KEY"). The key itself is NOT stored in config. */
172
+ apiKeyEnv?: string;
173
+ /** Custom headers to send with every request (e.g. OpenRouter requires HTTP-Referer). */
174
+ headers?: Record<string, string>;
175
+ };
176
+ }
177
+ export interface PolpoState {
178
+ project: string;
179
+ teams: Team[];
180
+ tasks: Task[];
181
+ processes: AgentProcess[];
182
+ startedAt?: string;
183
+ completedAt?: string;
184
+ }
185
+ export interface PolpoSettingsExtended {
186
+ /** Approval gates configuration. */
187
+ approvalGates?: ApprovalGate[];
188
+ /** Notification system configuration. */
189
+ notifications?: NotificationsConfig;
190
+ /** Default escalation policy for tasks. */
191
+ escalationPolicy?: EscalationPolicy;
192
+ }
193
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Config domain — project configuration (polpo.json), settings, providers,
3
+ * model config, runner config, and persisted state.
4
+ */
5
+ export {};
6
+ // === Quality & Scheduling Settings (on PolpoSettings) ===
7
+ // These are added to PolpoSettings directly — see the interface above.
8
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;;AAsNH,2DAA2D;AAC3D,uEAAuE"}