claude-flow-novice 1.6.1 → 1.6.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.
- package/.claude/agents/cfn-loop/product-owner.md +54 -4
- package/.claude/commands/cfn-claude-sync.md +303 -0
- package/.claude/commands/cfn-loop-epic.md +290 -0
- package/.claude/commands/cfn-loop-single.md +168 -0
- package/.claude/commands/cfn-loop-sprints.md +384 -0
- package/.claude/commands/cfn-loop.md +180 -0
- package/.claude/commands/metrics-summary.md +58 -0
- package/.claude/commands/parse-epic.md +357 -0
- package/.claude/settings.json +4 -4
- package/.claude/settings.local.json +9 -2
- package/.claude-flow-novice/.claude/agents/cfn-loop/product-owner.md +792 -0
- package/.claude-flow-novice/dist/mcp/server.js +21 -2
- package/.claude-flow-novice/dist/src/api/claude-client.js +138 -3
- package/.claude-flow-novice/dist/src/api/claude-client.js.map +1 -1
- package/.claude-flow-novice/dist/src/cfn-loop/phase-orchestrator-example.js +1 -1
- package/.claude-flow-novice/dist/src/cfn-loop/scope-control.js +247 -0
- package/.claude-flow-novice/dist/src/cfn-loop/scope-control.js.map +1 -0
- package/.claude-flow-novice/dist/src/cli/commands/swarm.js +32 -15
- package/.claude-flow-novice/dist/src/cli/commands/swarm.js.map +1 -1
- package/.claude-flow-novice/dist/src/cli/commands/transparency.js +455 -0
- package/.claude-flow-novice/dist/src/cli/commands/transparency.js.map +1 -0
- package/.claude-flow-novice/dist/src/cli/simple-commands/init/templates/CLAUDE.md +129 -13
- package/.claude-flow-novice/dist/src/components/visualizations/index.js +9 -0
- package/.claude-flow-novice/dist/src/components/visualizations/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/adapters/v1-coordinator-adapter.js +462 -0
- package/.claude-flow-novice/dist/src/coordination/adapters/v1-coordinator-adapter.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/config-translator.js +248 -0
- package/.claude-flow-novice/dist/src/coordination/config-translator.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/coordination-toggle.js +287 -0
- package/.claude-flow-novice/dist/src/coordination/coordination-toggle.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/distributed-consensus.js +68 -9
- package/.claude-flow-novice/dist/src/coordination/distributed-consensus.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/feature-flags.js +166 -0
- package/.claude-flow-novice/dist/src/coordination/feature-flags.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/queen-agent.js +18 -4
- package/.claude-flow-novice/dist/src/coordination/queen-agent.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/role-assignment.js +6 -110
- package/.claude-flow-novice/dist/src/coordination/role-assignment.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/v2/cache/artifact-cache-optimizer.js +632 -0
- package/.claude-flow-novice/dist/src/coordination/v2/cache/artifact-cache-optimizer.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/cache/index.js +11 -0
- package/.claude-flow-novice/dist/src/coordination/v2/cache/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/checkpoints/checkpoint-compressor.js +318 -0
- package/.claude-flow-novice/dist/src/coordination/v2/checkpoints/checkpoint-compressor.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/cascading-shutdown.example.js +364 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/cascading-shutdown.example.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/cascading-shutdown.js +492 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/cascading-shutdown.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/hierarchical-coordinator.js +786 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/hierarchical-coordinator.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/index.js +16 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/parent-child-manager.js +342 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/parent-child-manager.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/swarm-coordinator-v2.js +601 -0
- package/.claude-flow-novice/dist/src/coordination/v2/coordinators/swarm-coordinator-v2.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/core/help-request-metrics.js +211 -0
- package/.claude-flow-novice/dist/src/coordination/v2/core/help-request-metrics.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/core/index.js +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/core/index.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/v2/core/message-broker.js +365 -6
- package/.claude-flow-novice/dist/src/coordination/v2/core/message-broker.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/v2/core/resource-manager-safe.js +478 -0
- package/.claude-flow-novice/dist/src/coordination/v2/core/resource-manager-safe.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/core/state-machine-config.js +5 -2
- package/.claude-flow-novice/dist/src/coordination/v2/core/state-machine-config.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/v2/core/state-machine.js +189 -0
- package/.claude-flow-novice/dist/src/coordination/v2/core/state-machine.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/v2/deadlock/deadlock-detector.js +424 -0
- package/.claude-flow-novice/dist/src/coordination/v2/deadlock/deadlock-detector.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/deadlock/index.js +9 -0
- package/.claude-flow-novice/dist/src/coordination/v2/deadlock/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/deadlock/resource-manager.js +669 -0
- package/.claude-flow-novice/dist/src/coordination/v2/deadlock/resource-manager.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/artifact-storage.js +451 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/artifact-storage.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/cycle-detector.js +271 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/cycle-detector.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/dependency-graph.js +335 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/dependency-graph.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/dependency-manager.js +439 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/dependency-manager.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/dependency-request.js +92 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/dependency-request.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/index.js +21 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/topological-sort.js +223 -0
- package/.claude-flow-novice/dist/src/coordination/v2/dependency/topological-sort.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/help-coordinator.js +436 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/help-coordinator.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/help-matcher.js +278 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/help-matcher.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/help-request-handler.js +317 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/help-request-handler.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/help-request.js +273 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/help-request.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/index.js +15 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/waiting-agent-pool.js +512 -0
- package/.claude-flow-novice/dist/src/coordination/v2/help-system/waiting-agent-pool.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/index.js +6 -0
- package/.claude-flow-novice/dist/src/coordination/v2/index.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/v2/integration/help-deadlock-integration.js +557 -0
- package/.claude-flow-novice/dist/src/coordination/v2/integration/help-deadlock-integration.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/integration/index.js +14 -0
- package/.claude-flow-novice/dist/src/coordination/v2/integration/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/integration/message-bus-completion-integration.example.js +212 -0
- package/.claude-flow-novice/dist/src/coordination/v2/integration/message-bus-completion-integration.example.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/integration/message-bus-completion-integration.js +552 -0
- package/.claude-flow-novice/dist/src/coordination/v2/integration/message-bus-completion-integration.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/memory/dependency-storage.js +367 -0
- package/.claude-flow-novice/dist/src/coordination/v2/memory/dependency-storage.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/memory/index.js +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/memory/index.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channel.js +371 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channel.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/dependency-channel.js +355 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/dependency-channel.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/help-channel.js +424 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/help-channel.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/index.js +16 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/state-channel.js +295 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/state-channel.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/task-channel.js +411 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/channels/task-channel.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/index.js +14 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/message-bus.js +387 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/message-bus.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/message-persistence.js +589 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/message-persistence.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/message-router.js +444 -0
- package/.claude-flow-novice/dist/src/coordination/v2/messaging/message-router.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/checkpoint-manager.js +29 -8
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/checkpoint-manager.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/help-coordinator.js +470 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/help-coordinator.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/hierarchical-background-integration.js +450 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/hierarchical-background-integration.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/index.js +5 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/index.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/multi-level-control.js +545 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/multi-level-control.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/query-controller.js +44 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/query-controller.js.map +1 -1
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/query-message-integration.js +415 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/query-message-integration.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/session-pool-optimizer.js +615 -0
- package/.claude-flow-novice/dist/src/coordination/v2/sdk/session-pool-optimizer.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/security/payload-validator.js +259 -0
- package/.claude-flow-novice/dist/src/coordination/v2/security/payload-validator.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/transparency/index.js +17 -0
- package/.claude-flow-novice/dist/src/coordination/v2/transparency/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/transparency/transparency-integration.js +357 -0
- package/.claude-flow-novice/dist/src/coordination/v2/transparency/transparency-integration.js.map +1 -0
- package/.claude-flow-novice/dist/src/coordination/v2/transparency/transparency-system.js +679 -0
- package/.claude-flow-novice/dist/src/coordination/v2/transparency/transparency-system.js.map +1 -0
- package/.claude-flow-novice/dist/src/core/agent-manager.js +30 -0
- package/.claude-flow-novice/dist/src/core/agent-manager.js.map +1 -1
- package/.claude-flow-novice/dist/src/mcp/server.js +21 -2
- package/.claude-flow-novice/dist/src/mcp/server.js.map +1 -1
- package/.claude-flow-novice/dist/src/observability/metrics-counter.js +268 -0
- package/.claude-flow-novice/dist/src/observability/metrics-counter.js.map +1 -0
- package/.claude-flow-novice/dist/src/observability/metrics-storage.js +265 -0
- package/.claude-flow-novice/dist/src/observability/metrics-storage.js.map +1 -0
- package/.claude-flow-novice/dist/src/observability/telemetry.js +26 -0
- package/.claude-flow-novice/dist/src/observability/telemetry.js.map +1 -1
- package/.claude-flow-novice/dist/src/providers/tiered-router.js +64 -10
- package/.claude-flow-novice/dist/src/providers/tiered-router.js.map +1 -1
- package/.claude-flow-novice/dist/src/providers/zai-provider.js +196 -97
- package/.claude-flow-novice/dist/src/providers/zai-provider.js.map +1 -1
- package/.claude-flow-novice/dist/src/slash-commands/cfn-claude-sync.js +533 -0
- package/.claude-flow-novice/dist/src/slash-commands/index.js +5 -0
- package/.claude-flow-novice/dist/src/slash-commands/metrics-summary-class.js +74 -0
- package/.claude-flow-novice/dist/src/slash-commands/metrics-summary.js +335 -0
- package/.claude-flow-novice/dist/src/slash-commands/register-all-commands.js +12 -0
- package/.claude-flow-novice/dist/src/verification/checkpoint-compression-demo.js +96 -0
- package/.claude-flow-novice/dist/src/verification/checkpoint-compression-demo.js.map +1 -0
- package/.claude-flow-novice/dist/src/verification/checkpoint-compression.js +406 -0
- package/.claude-flow-novice/dist/src/verification/checkpoint-compression.js.map +1 -0
- package/.claude-flow-novice/dist/src/verification/checkpoint-manager.js +35 -5
- package/.claude-flow-novice/dist/src/verification/checkpoint-manager.js.map +1 -1
- package/.claude-flow-novice/dist/src/web/api/config/api-config.js +186 -0
- package/.claude-flow-novice/dist/src/web/api/config/api-config.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/middleware/auth.js +205 -0
- package/.claude-flow-novice/dist/src/web/api/middleware/auth.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/middleware/cache.js +262 -0
- package/.claude-flow-novice/dist/src/web/api/middleware/cache.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/middleware/error-handler.js +250 -0
- package/.claude-flow-novice/dist/src/web/api/middleware/error-handler.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/middleware/request-logger.js +217 -0
- package/.claude-flow-novice/dist/src/web/api/middleware/request-logger.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/middleware/validation.js +325 -0
- package/.claude-flow-novice/dist/src/web/api/middleware/validation.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/routes/events.js +465 -0
- package/.claude-flow-novice/dist/src/web/api/routes/events.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/routes/hierarchy.js +302 -0
- package/.claude-flow-novice/dist/src/web/api/routes/hierarchy.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/routes/index.js +14 -0
- package/.claude-flow-novice/dist/src/web/api/routes/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/routes/metrics.js +561 -0
- package/.claude-flow-novice/dist/src/web/api/routes/metrics.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/routes/status.js +450 -0
- package/.claude-flow-novice/dist/src/web/api/routes/status.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/api/server.js +451 -0
- package/.claude-flow-novice/dist/src/web/api/server.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/dashboard/hooks/useWebSocket.js +385 -0
- package/.claude-flow-novice/dist/src/web/dashboard/hooks/useWebSocket.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/dashboard/index.js +87 -0
- package/.claude-flow-novice/dist/src/web/dashboard/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/web/dashboard/types.js +6 -0
- package/.claude-flow-novice/dist/src/web/dashboard/types.js.map +1 -0
- package/.claude-flow-novice/metrics.db +0 -0
- package/.claude-flow-novice/metrics.db-shm +0 -0
- package/.claude-flow-novice/metrics.db-wal +0 -0
- package/CLAUDE.md +29 -0
- package/README.md +27 -0
- package/config/hooks/post-edit-pipeline.js +36 -2
- package/examples/metrics-counter-demo.ts +106 -0
- package/examples/persistent-metrics-demo.ts +83 -0
- package/examples/phase-5-multi-level-control.ts +282 -0
- package/examples/session-pool-optimizer-example.ts +311 -0
- package/package.json +15 -3
- package/scripts/check-routing-stats.cjs +122 -0
- package/scripts/pre-publish-validation.cjs +212 -0
- package/scripts/test-provider-routing.cjs +228 -0
- package/scripts/test-routing-telemetry.cjs +147 -0
- package/scripts/test-zai-10k.cjs +81 -0
- package/scripts/test-zai-api.cjs +191 -0
- package/scripts/test-zai-diagnostic.cjs +151 -0
- package/scripts/test-zai-final.cjs +128 -0
- package/scripts/test-zai-with-env.cjs +85 -0
- package/scripts/validate-coordination-cli.js +69 -0
- package/scripts/validate-coordination-toggle-integration.cjs +501 -0
- package/src/cli/simple-commands/init/templates/CLAUDE.md +29 -0
- package/src/observability/metrics-counter.ts +347 -0
- package/src/observability/metrics-storage.ts +356 -0
- package/src/observability/telemetry.ts +658 -0
- package/src/slash-commands/cfn-claude-sync.js +533 -0
- package/src/slash-commands/index.js +5 -0
- package/src/slash-commands/metrics-summary-class.js +74 -0
- package/src/slash-commands/metrics-summary.js +335 -0
- package/src/slash-commands/register-all-commands.js +12 -0
|
@@ -13,6 +13,7 @@ import { createSwarmTools } from './swarm-tools.js';
|
|
|
13
13
|
import { createRuvSwarmTools, isRuvSwarmAvailable, initializeRuvSwarmIntegration } from './ruv-swarm-tools.js';
|
|
14
14
|
import { platform, arch } from 'node:os';
|
|
15
15
|
import { performance } from 'node:perf_hooks';
|
|
16
|
+
import { incrementMetric, recordTiming } from '../observability/metrics-counter.js';
|
|
16
17
|
/**
|
|
17
18
|
* MCP server implementation
|
|
18
19
|
*/ export class MCPServer {
|
|
@@ -209,6 +210,12 @@ import { performance } from 'node:perf_hooks';
|
|
|
209
210
|
}
|
|
210
211
|
}
|
|
211
212
|
async handleRequest(request) {
|
|
213
|
+
const startTime = Date.now();
|
|
214
|
+
// Track incoming request
|
|
215
|
+
incrementMetric('api.request.received', 1, {
|
|
216
|
+
endpoint: request.method,
|
|
217
|
+
clientId: this.currentSession?.id || 'unknown'
|
|
218
|
+
});
|
|
212
219
|
this.logger.debug('Handling MCP request', {
|
|
213
220
|
id: request.id,
|
|
214
221
|
method: request.method
|
|
@@ -257,13 +264,25 @@ import { performance } from 'node:perf_hooks';
|
|
|
257
264
|
id: request.id,
|
|
258
265
|
result
|
|
259
266
|
};
|
|
260
|
-
// Record success
|
|
267
|
+
// Record success metrics
|
|
268
|
+
recordTiming('api.request.duration', Date.now() - startTime, {
|
|
269
|
+
endpoint: request.method,
|
|
270
|
+
status: 'success'
|
|
271
|
+
});
|
|
261
272
|
if (requestMetrics) {
|
|
262
273
|
this.loadBalancer?.recordRequestEnd(requestMetrics, response);
|
|
263
274
|
}
|
|
264
275
|
return response;
|
|
265
276
|
} catch (error) {
|
|
266
|
-
// Record failure
|
|
277
|
+
// Record failure metrics
|
|
278
|
+
recordTiming('api.request.duration', Date.now() - startTime, {
|
|
279
|
+
endpoint: request.method,
|
|
280
|
+
status: 'error'
|
|
281
|
+
});
|
|
282
|
+
incrementMetric('api.error.count', 1, {
|
|
283
|
+
errorType: error instanceof Error ? error.name : 'Unknown',
|
|
284
|
+
endpoint: request.method
|
|
285
|
+
});
|
|
267
286
|
if (requestMetrics) {
|
|
268
287
|
this.loadBalancer?.recordRequestEnd(requestMetrics, undefined, error);
|
|
269
288
|
}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/ import { EventEmitter } from 'events';
|
|
5
5
|
import { ClaudeAPIError, ClaudeInternalServerError, ClaudeServiceUnavailableError, ClaudeRateLimitError, ClaudeTimeoutError, ClaudeNetworkError, ClaudeAuthenticationError, ClaudeValidationError, getUserFriendlyError } from './claude-api-errors.js';
|
|
6
6
|
import { circuitBreaker } from '../utils/helpers.js';
|
|
7
|
+
import { incrementMetric, recordTiming } from '../observability/metrics-counter.js';
|
|
7
8
|
export class ClaudeAPIClient extends EventEmitter {
|
|
8
9
|
config;
|
|
9
10
|
logger;
|
|
@@ -154,6 +155,16 @@ export class ClaudeAPIClient extends EventEmitter {
|
|
|
154
155
|
/**
|
|
155
156
|
* Send a non-streaming request
|
|
156
157
|
*/ async sendRequest(request) {
|
|
158
|
+
const startTime = Date.now();
|
|
159
|
+
const model = request.model || 'unknown';
|
|
160
|
+
// Detect provider from apiUrl (z.ai vs anthropic)
|
|
161
|
+
const provider = this.config.apiUrl?.includes('z.ai') ? 'z.ai' : 'anthropic';
|
|
162
|
+
// Track API request
|
|
163
|
+
incrementMetric('claude.api.request', 1, {
|
|
164
|
+
model,
|
|
165
|
+
provider,
|
|
166
|
+
stream: 'false'
|
|
167
|
+
});
|
|
157
168
|
let lastError;
|
|
158
169
|
for(let attempt = 0; attempt < (this.config.retryAttempts || 3); attempt++){
|
|
159
170
|
try {
|
|
@@ -183,6 +194,24 @@ export class ClaudeAPIClient extends EventEmitter {
|
|
|
183
194
|
throw this.createAPIError(response.status, errorData);
|
|
184
195
|
}
|
|
185
196
|
const data = await response.json();
|
|
197
|
+
// Track successful response timing
|
|
198
|
+
recordTiming('claude.api.duration', Date.now() - startTime, {
|
|
199
|
+
model,
|
|
200
|
+
status: 'success',
|
|
201
|
+
stream: 'false'
|
|
202
|
+
});
|
|
203
|
+
// Track token usage
|
|
204
|
+
if (data.usage) {
|
|
205
|
+
incrementMetric('claude.tokens.input', data.usage.input_tokens, {
|
|
206
|
+
model
|
|
207
|
+
});
|
|
208
|
+
incrementMetric('claude.tokens.output', data.usage.output_tokens, {
|
|
209
|
+
model
|
|
210
|
+
});
|
|
211
|
+
incrementMetric('claude.tokens.total', data.usage.input_tokens + data.usage.output_tokens, {
|
|
212
|
+
model
|
|
213
|
+
});
|
|
214
|
+
}
|
|
186
215
|
this.logger.info('Claude API response received', {
|
|
187
216
|
model: data.model,
|
|
188
217
|
inputTokens: data.usage.input_tokens,
|
|
@@ -193,8 +222,20 @@ export class ClaudeAPIClient extends EventEmitter {
|
|
|
193
222
|
return data;
|
|
194
223
|
} catch (error) {
|
|
195
224
|
lastError = this.transformError(error);
|
|
225
|
+
// Track error
|
|
226
|
+
incrementMetric('claude.api.error', 1, {
|
|
227
|
+
model,
|
|
228
|
+
errorType: lastError.code || lastError.constructor.name || 'Unknown',
|
|
229
|
+
statusCode: lastError.statusCode?.toString() || 'unknown',
|
|
230
|
+
retryable: lastError.retryable ? 'true' : 'false'
|
|
231
|
+
});
|
|
196
232
|
// Don't retry non-retryable errors
|
|
197
233
|
if (!lastError.retryable) {
|
|
234
|
+
recordTiming('claude.api.duration', Date.now() - startTime, {
|
|
235
|
+
model,
|
|
236
|
+
status: 'error',
|
|
237
|
+
stream: 'false'
|
|
238
|
+
});
|
|
198
239
|
this.handleError(lastError);
|
|
199
240
|
throw lastError;
|
|
200
241
|
}
|
|
@@ -209,12 +250,30 @@ export class ClaudeAPIClient extends EventEmitter {
|
|
|
209
250
|
}
|
|
210
251
|
}
|
|
211
252
|
}
|
|
253
|
+
// Track final error timing after all retries exhausted
|
|
254
|
+
recordTiming('claude.api.duration', Date.now() - startTime, {
|
|
255
|
+
model,
|
|
256
|
+
status: 'error',
|
|
257
|
+
stream: 'false'
|
|
258
|
+
});
|
|
212
259
|
this.handleError(lastError);
|
|
213
260
|
throw lastError;
|
|
214
261
|
}
|
|
215
262
|
/**
|
|
216
263
|
* Send a streaming request
|
|
217
264
|
*/ async *streamRequest(request) {
|
|
265
|
+
const startTime = Date.now();
|
|
266
|
+
const model = request.model || 'unknown';
|
|
267
|
+
let totalInputTokens = 0;
|
|
268
|
+
let totalOutputTokens = 0;
|
|
269
|
+
// Detect provider from apiUrl (z.ai vs anthropic)
|
|
270
|
+
const provider = this.config.apiUrl?.includes('z.ai') ? 'z.ai' : 'anthropic';
|
|
271
|
+
// Track API request
|
|
272
|
+
incrementMetric('claude.api.request', 1, {
|
|
273
|
+
model,
|
|
274
|
+
provider,
|
|
275
|
+
stream: 'true'
|
|
276
|
+
});
|
|
218
277
|
const controller = new AbortController();
|
|
219
278
|
const timeout = setTimeout(()=>controller.abort(), (this.config.timeout || 30000) * 2); // Double timeout for streaming
|
|
220
279
|
try {
|
|
@@ -241,10 +300,35 @@ export class ClaudeAPIClient extends EventEmitter {
|
|
|
241
300
|
message: errorText
|
|
242
301
|
};
|
|
243
302
|
}
|
|
244
|
-
|
|
303
|
+
const apiError = this.createAPIError(response.status, errorData);
|
|
304
|
+
// Track error
|
|
305
|
+
incrementMetric('claude.api.error', 1, {
|
|
306
|
+
model,
|
|
307
|
+
errorType: apiError.code || apiError.constructor.name || 'Unknown',
|
|
308
|
+
statusCode: apiError.statusCode?.toString() || 'unknown',
|
|
309
|
+
retryable: apiError.retryable ? 'true' : 'false'
|
|
310
|
+
});
|
|
311
|
+
recordTiming('claude.api.duration', Date.now() - startTime, {
|
|
312
|
+
model,
|
|
313
|
+
status: 'error',
|
|
314
|
+
stream: 'true'
|
|
315
|
+
});
|
|
316
|
+
throw apiError;
|
|
245
317
|
}
|
|
246
318
|
if (!response.body) {
|
|
247
|
-
|
|
319
|
+
const bodyError = new ClaudeAPIError('Response body is null');
|
|
320
|
+
incrementMetric('claude.api.error', 1, {
|
|
321
|
+
model,
|
|
322
|
+
errorType: 'ResponseBodyNull',
|
|
323
|
+
statusCode: 'unknown',
|
|
324
|
+
retryable: 'false'
|
|
325
|
+
});
|
|
326
|
+
recordTiming('claude.api.duration', Date.now() - startTime, {
|
|
327
|
+
model,
|
|
328
|
+
status: 'error',
|
|
329
|
+
stream: 'true'
|
|
330
|
+
});
|
|
331
|
+
throw bodyError;
|
|
248
332
|
}
|
|
249
333
|
const reader = response.body.getReader();
|
|
250
334
|
const decoder = new TextDecoder();
|
|
@@ -263,6 +347,13 @@ export class ClaudeAPIClient extends EventEmitter {
|
|
|
263
347
|
if (data === '[DONE]') continue;
|
|
264
348
|
try {
|
|
265
349
|
const event = JSON.parse(data);
|
|
350
|
+
// Track token usage from stream events
|
|
351
|
+
if (event.type === 'message_start' && event.message?.usage) {
|
|
352
|
+
totalInputTokens = event.message.usage.input_tokens || 0;
|
|
353
|
+
}
|
|
354
|
+
if (event.type === 'message_delta' && event.usage) {
|
|
355
|
+
totalOutputTokens += event.usage.output_tokens || 0;
|
|
356
|
+
}
|
|
266
357
|
this.emit('stream_event', event);
|
|
267
358
|
yield event;
|
|
268
359
|
} catch (e) {
|
|
@@ -274,11 +365,55 @@ export class ClaudeAPIClient extends EventEmitter {
|
|
|
274
365
|
}
|
|
275
366
|
}
|
|
276
367
|
}
|
|
368
|
+
// Track successful completion
|
|
369
|
+
recordTiming('claude.api.duration', Date.now() - startTime, {
|
|
370
|
+
model,
|
|
371
|
+
status: 'success',
|
|
372
|
+
stream: 'true'
|
|
373
|
+
});
|
|
374
|
+
// Track token usage
|
|
375
|
+
if (totalInputTokens > 0 || totalOutputTokens > 0) {
|
|
376
|
+
incrementMetric('claude.tokens.input', totalInputTokens, {
|
|
377
|
+
model
|
|
378
|
+
});
|
|
379
|
+
incrementMetric('claude.tokens.output', totalOutputTokens, {
|
|
380
|
+
model
|
|
381
|
+
});
|
|
382
|
+
incrementMetric('claude.tokens.total', totalInputTokens + totalOutputTokens, {
|
|
383
|
+
model
|
|
384
|
+
});
|
|
385
|
+
}
|
|
277
386
|
} catch (error) {
|
|
278
387
|
clearTimeout(timeout);
|
|
279
388
|
// Handle abort/timeout
|
|
280
389
|
if (error instanceof Error && error.name === 'AbortError') {
|
|
281
|
-
|
|
390
|
+
const timeoutError = new ClaudeTimeoutError('Request timed out', this.config.timeout || 60000);
|
|
391
|
+
incrementMetric('claude.api.error', 1, {
|
|
392
|
+
model,
|
|
393
|
+
errorType: 'Timeout',
|
|
394
|
+
statusCode: 'timeout',
|
|
395
|
+
retryable: 'true'
|
|
396
|
+
});
|
|
397
|
+
recordTiming('claude.api.duration', Date.now() - startTime, {
|
|
398
|
+
model,
|
|
399
|
+
status: 'error',
|
|
400
|
+
stream: 'true'
|
|
401
|
+
});
|
|
402
|
+
throw timeoutError;
|
|
403
|
+
}
|
|
404
|
+
// Track error if not already tracked
|
|
405
|
+
if (!(error instanceof ClaudeAPIError)) {
|
|
406
|
+
incrementMetric('claude.api.error', 1, {
|
|
407
|
+
model,
|
|
408
|
+
errorType: error instanceof Error ? error.constructor.name : 'Unknown',
|
|
409
|
+
statusCode: 'unknown',
|
|
410
|
+
retryable: 'false'
|
|
411
|
+
});
|
|
412
|
+
recordTiming('claude.api.duration', Date.now() - startTime, {
|
|
413
|
+
model,
|
|
414
|
+
status: 'error',
|
|
415
|
+
stream: 'true'
|
|
416
|
+
});
|
|
282
417
|
}
|
|
283
418
|
throw error;
|
|
284
419
|
} finally{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/api/claude-client.ts"],"names":["EventEmitter","ClaudeAPIError","ClaudeInternalServerError","ClaudeServiceUnavailableError","ClaudeRateLimitError","ClaudeTimeoutError","ClaudeNetworkError","ClaudeAuthenticationError","ClaudeValidationError","getUserFriendlyError","circuitBreaker","ClaudeAPIClient","config","logger","configManager","defaultModel","defaultTemperature","defaultMaxTokens","lastHealthCheck","healthCheckTimer","loadConfiguration","threshold","circuitBreakerThreshold","timeout","circuitBreakerTimeout","resetTimeout","circuitBreakerResetTimeout","enableHealthCheck","startHealthCheck","overrides","apiKey","apiUrl","model","temperature","maxTokens","topP","topK","undefined","systemPrompt","retryAttempts","retryDelay","healthCheckInterval","retryJitter","process","env","ANTHROPIC_API_KEY","CLAUDE_API_URL","CLAUDE_MODEL","CLAUDE_TEMPERATURE","parseFloat","CLAUDE_MAX_TOKENS","parseInt","claudeConfig","get","Object","assign","validateConfiguration","updateConfig","updates","info","getConfig","sendMessage","messages","options","request","system","max_tokens","top_p","top_k","stream","debug","messageCount","length","streamRequest","sendRequest","lastError","attempt","controller","AbortController","setTimeout","abort","response","fetch","method","headers","body","JSON","stringify","signal","clearTimeout","ok","errorText","text","errorData","parse","message","createAPIError","status","data","json","inputTokens","usage","input_tokens","outputTokens","output_tokens","stopReason","stop_reason","emit","error","transformError","retryable","handleError","warn","statusCode","delay","calculateRetryDelay","reader","getReader","decoder","TextDecoder","buffer","done","value","read","decode","lines","split","pop","line","startsWith","slice","event","e","Error","name","complete","prompt","role","content","streamComplete","type","delta","getAvailableModels","getModelInfo","modelInfo","contextWindow","description","ms","Promise","resolve","performHealthCheck","setInterval","startTime","Date","now","latency","healthy","timestamp","getHealthStatus","retryAfter","retry_after","includes","String","baseDelay","maxDelay","Math","min","pow","jitter","random","floor","errorInfo","title","code","details","level","suggestions","userFriendly","destroy","clearInterval","removeAllListeners"],"mappings":"AAAA;;;CAGC,GAED,SAASA,YAAY,QAAQ,SAAS;AAItC,SACEC,cAAc,EACdC,yBAAyB,EACzBC,6BAA6B,EAC7BC,oBAAoB,EACpBC,kBAAkB,EAClBC,kBAAkB,EAClBC,yBAAyB,EACzBC,qBAAqB,EAErBC,oBAAoB,QACf,yBAAyB;AAChC,SAASC,cAAc,QAAwB,sBAAsB;AAmGrE,OAAO,MAAMC,wBAAwBX;IAC3BY,OAAwB;IACxBC,OAAgB;IAChBC,cAA6B;IAC7BC,eAA4B,2BAA2B;IACvDC,qBAA6B,IAAI;IACjCC,mBAA2B,KAAK;IAChCP,eAA+B;IAC/BQ,gBAAoC;IACpCC,iBAAkC;IAE1C,YAAYN,MAAe,EAAEC,aAA4B,EAAEF,MAAiC,CAAE;QAC5F,KAAK;QACL,IAAI,CAACC,MAAM,GAAGA;QACd,IAAI,CAACC,aAAa,GAAGA;QAErB,8DAA8D;QAC9D,IAAI,CAACF,MAAM,GAAG,IAAI,CAACQ,iBAAiB,CAACR;QAErC,iDAAiD;QACjD,IAAI,CAACF,cAAc,GAAGA,eAAe,cAAc;YACjDW,WAAW,IAAI,CAACT,MAAM,CAACU,uBAAuB,IAAI;YAClDC,SAAS,IAAI,CAACX,MAAM,CAACY,qBAAqB,IAAI;YAC9CC,cAAc,IAAI,CAACb,MAAM,CAACc,0BAA0B,IAAI;QAC1D;QAEA,gCAAgC;QAChC,IAAI,IAAI,CAACd,MAAM,CAACe,iBAAiB,EAAE;YACjC,IAAI,CAACC,gBAAgB;QACvB;IACF;IAEA;;GAEC,GACD,AAAQR,kBAAkBS,SAAoC,EAAmB;QAC/E,sBAAsB;QACtB,MAAMjB,SAA0B;YAC9BkB,QAAQ;YACRC,QAAQ;YACRC,OAAO,IAAI,CAACjB,YAAY;YACxBkB,aAAa,IAAI,CAACjB,kBAAkB;YACpCkB,WAAW,IAAI,CAACjB,gBAAgB;YAChCkB,MAAM;YACNC,MAAMC;YACNC,cAAcD;YACdd,SAAS;YACTgB,eAAe;YACfC,YAAY;YACZ,mCAAmC;YACnCb,mBAAmB;YACnBc,qBAAqB;YACrBnB,yBAAyB;YACzBE,uBAAuB;YACvBE,4BAA4B;YAC5BgB,aAAa;QACf;QAEA,kCAAkC;QAClC,IAAIC,QAAQC,GAAG,CAACC,iBAAiB,EAAE;YACjCjC,OAAOkB,MAAM,GAAGa,QAAQC,GAAG,CAACC,iBAAiB;QAC/C;QACA,IAAIF,QAAQC,GAAG,CAACE,cAAc,EAAE;YAC9BlC,OAAOmB,MAAM,GAAGY,QAAQC,GAAG,CAACE,cAAc;QAC5C;QACA,IAAIH,QAAQC,GAAG,CAACG,YAAY,EAAE;YAC5BnC,OAAOoB,KAAK,GAAGW,QAAQC,GAAG,CAACG,YAAY;QACzC;QACA,IAAIJ,QAAQC,GAAG,CAACI,kBAAkB,EAAE;YAClCpC,OAAOqB,WAAW,GAAGgB,WAAWN,QAAQC,GAAG,CAACI,kBAAkB;QAChE;QACA,IAAIL,QAAQC,GAAG,CAACM,iBAAiB,EAAE;YACjCtC,OAAOsB,SAAS,GAAGiB,SAASR,QAAQC,GAAG,CAACM,iBAAiB,EAAE;QAC7D;QAEA,wCAAwC;QACxC,MAAME,eAAe,IAAI,CAACtC,aAAa,CAACuC,GAAG,CAAC;QAC5C,IAAID,cAAc;YAChBE,OAAOC,MAAM,CAAC3C,QAAQwC;QACxB;QAEA,kBAAkB;QAClB,IAAIvB,WAAW;YACbyB,OAAOC,MAAM,CAAC3C,QAAQiB;QACxB;QAEA,yBAAyB;QACzB,IAAI,CAAC2B,qBAAqB,CAAC5C;QAE3B,OAAOA;IACT;IAEA;;GAEC,GACD,AAAQ4C,sBAAsB5C,MAAuB,EAAQ;QAC3D,IAAI,CAACA,OAAOkB,MAAM,EAAE;YAClB,MAAM,IAAIvB,0BACR;QAEJ;QAEA,IAAIK,OAAOqB,WAAW,KAAKI,WAAW;YACpC,IAAIzB,OAAOqB,WAAW,GAAG,KAAKrB,OAAOqB,WAAW,GAAG,GAAG;gBACpD,MAAM,IAAIzB,sBAAsB;YAClC;QACF;QAEA,IAAII,OAAOuB,IAAI,KAAKE,WAAW;YAC7B,IAAIzB,OAAOuB,IAAI,GAAG,KAAKvB,OAAOuB,IAAI,GAAG,GAAG;gBACtC,MAAM,IAAI3B,sBAAsB;YAClC;QACF;QAEA,IAAII,OAAOsB,SAAS,KAAKG,aAAczB,CAAAA,OAAOsB,SAAS,GAAG,KAAKtB,OAAOsB,SAAS,GAAG,MAAK,GAAI;YACzF,MAAM,IAAI1B,sBAAsB;QAClC;IACF;IAEA;;GAEC,GACDiD,aAAaC,OAAiC,EAAQ;QACpD,IAAI,CAAC9C,MAAM,GAAG;YAAE,GAAG,IAAI,CAACA,MAAM;YAAE,GAAG8C,OAAO;QAAC;QAC3C,IAAI,CAACF,qBAAqB,CAAC,IAAI,CAAC5C,MAAM;QACtC,IAAI,CAACC,MAAM,CAAC8C,IAAI,CAAC,oCAAoC;YACnD3B,OAAO,IAAI,CAACpB,MAAM,CAACoB,KAAK;YACxBC,aAAa,IAAI,CAACrB,MAAM,CAACqB,WAAW;YACpCC,WAAW,IAAI,CAACtB,MAAM,CAACsB,SAAS;QAClC;IACF;IAEA;;GAEC,GACD0B,YAA6B;QAC3B,OAAO;YAAE,GAAG,IAAI,CAAChD,MAAM;QAAC;IAC1B;IAEA;;GAEC,GACD,MAAMiD,YACJC,QAAyB,EACzBC,OAMC,EAC2D;QAC5D,MAAMC,UAAyB;YAC7BhC,OAAO+B,SAAS/B,SAAS,IAAI,CAACpB,MAAM,CAACoB,KAAK,IAAI;YAC9C8B;YACAG,QAAQF,SAASzB,gBAAgB,IAAI,CAAC1B,MAAM,CAAC0B,YAAY;YACzD4B,YAAYH,SAAS7B,aAAa,IAAI,CAACtB,MAAM,CAACsB,SAAS,IAAI;YAC3DD,aAAa8B,SAAS9B,eAAe,IAAI,CAACrB,MAAM,CAACqB,WAAW;YAC5DkC,OAAO,IAAI,CAACvD,MAAM,CAACuB,IAAI;YACvBiC,OAAO,IAAI,CAACxD,MAAM,CAACwB,IAAI;YACvBiC,QAAQN,SAASM,UAAU;QAC7B;QAEA,IAAI,CAACxD,MAAM,CAACyD,KAAK,CAAC,8BAA8B;YAC9CtC,OAAOgC,QAAQhC,KAAK;YACpBC,aAAa+B,QAAQ/B,WAAW;YAChCC,WAAW8B,QAAQE,UAAU;YAC7BK,cAAcT,SAASU,MAAM;YAC7BH,QAAQL,QAAQK,MAAM;QACxB;QAEA,IAAIL,QAAQK,MAAM,EAAE;YAClB,OAAO,IAAI,CAACI,aAAa,CAACT;QAC5B,OAAO;YACL,OAAO,IAAI,CAACU,WAAW,CAACV;QAC1B;IACF;IAEA;;GAEC,GACD,MAAcU,YAAYV,OAAsB,EAA2B;QACzE,IAAIW;QAEJ,IAAK,IAAIC,UAAU,GAAGA,UAAW,CAAA,IAAI,CAAChE,MAAM,CAAC2B,aAAa,IAAI,CAAA,GAAIqC,UAAW;YAC3E,IAAI;gBACF,MAAMC,aAAa,IAAIC;gBACvB,MAAMvD,UAAUwD,WAAW,IAAMF,WAAWG,KAAK,IAAI,IAAI,CAACpE,MAAM,CAACW,OAAO,IAAI;gBAE5E,MAAM0D,WAAW,MAAMC,MACrB,IAAI,CAACtE,MAAM,CAACmB,MAAM,IAAI,yCACtB;oBACEoD,QAAQ;oBACRC,SAAS;wBACP,gBAAgB;wBAChB,qBAAqB;wBACrB,aAAa,IAAI,CAACxE,MAAM,CAACkB,MAAM;oBACjC;oBACAuD,MAAMC,KAAKC,SAAS,CAACvB;oBACrBwB,QAAQX,WAAWW,MAAM;gBAC3B;gBAGFC,aAAalE;gBAEb,IAAI,CAAC0D,SAASS,EAAE,EAAE;oBAChB,MAAMC,YAAY,MAAMV,SAASW,IAAI;oBACrC,IAAIC;oBAEJ,IAAI;wBACFA,YAAYP,KAAKQ,KAAK,CAACH;oBACzB,EAAE,OAAM;wBACNE,YAAY;4BAAEE,SAASJ;wBAAU;oBACnC;oBAEA,MAAM,IAAI,CAACK,cAAc,CAACf,SAASgB,MAAM,EAAEJ;gBAC7C;gBAEA,MAAMK,OAAQ,MAAMjB,SAASkB,IAAI;gBAEjC,IAAI,CAACtF,MAAM,CAAC8C,IAAI,CAAC,gCAAgC;oBAC/C3B,OAAOkE,KAAKlE,KAAK;oBACjBoE,aAAaF,KAAKG,KAAK,CAACC,YAAY;oBACpCC,cAAcL,KAAKG,KAAK,CAACG,aAAa;oBACtCC,YAAYP,KAAKQ,WAAW;gBAC9B;gBAEA,IAAI,CAACC,IAAI,CAAC,YAAYT;gBACtB,OAAOA;YACT,EAAE,OAAOU,OAAO;gBACdjC,YAAY,IAAI,CAACkC,cAAc,CAACD;gBAEhC,mCAAmC;gBACnC,IAAI,CAACjC,UAAUmC,SAAS,EAAE;oBACxB,IAAI,CAACC,WAAW,CAACpC;oBACjB,MAAMA;gBACR;gBAEA,IAAI,CAAC9D,MAAM,CAACmG,IAAI,CACd,CAAC,mCAAmC,EAAEpC,UAAU,EAAE,CAAC,EAAE,IAAI,CAAChE,MAAM,CAAC2B,aAAa,CAAC,CAAC,CAAC,EACjF;oBACEqE,OAAOjC,UAAUoB,OAAO;oBACxBkB,YAAYtC,UAAUsC,UAAU;oBAChCH,WAAWnC,UAAUmC,SAAS;gBAChC;gBAGF,IAAIlC,UAAU,AAAC,CAAA,IAAI,CAAChE,MAAM,CAAC2B,aAAa,IAAI,CAAA,IAAK,GAAG;oBAClD,MAAM2E,QAAQ,IAAI,CAACC,mBAAmB,CAACvC,SAASD;oBAChD,MAAM,IAAI,CAACuC,KAAK,CAACA;gBACnB;YACF;QACF;QAEA,IAAI,CAACH,WAAW,CAACpC;QACjB,MAAMA;IACR;IAEA;;GAEC,GACD,OAAeF,cAAcT,OAAsB,EAAoC;QACrF,MAAMa,aAAa,IAAIC;QACvB,MAAMvD,UAAUwD,WAAW,IAAMF,WAAWG,KAAK,IAAI,AAAC,CAAA,IAAI,CAACpE,MAAM,CAACW,OAAO,IAAI,KAAI,IAAK,IAAI,+BAA+B;QAEzH,IAAI;YACF,MAAM0D,WAAW,MAAMC,MAAM,IAAI,CAACtE,MAAM,CAACmB,MAAM,IAAI,yCAAyC;gBAC1FoD,QAAQ;gBACRC,SAAS;oBACP,gBAAgB;oBAChB,qBAAqB;oBACrB,aAAa,IAAI,CAACxE,MAAM,CAACkB,MAAM;gBACjC;gBACAuD,MAAMC,KAAKC,SAAS,CAAC;oBAAE,GAAGvB,OAAO;oBAAEK,QAAQ;gBAAK;gBAChDmB,QAAQX,WAAWW,MAAM;YAC3B;YAEA,IAAI,CAACP,SAASS,EAAE,EAAE;gBAChB,MAAMC,YAAY,MAAMV,SAASW,IAAI;gBACrC,IAAIC;gBAEJ,IAAI;oBACFA,YAAYP,KAAKQ,KAAK,CAACH;gBACzB,EAAE,OAAM;oBACNE,YAAY;wBAAEE,SAASJ;oBAAU;gBACnC;gBAEA,MAAM,IAAI,CAACK,cAAc,CAACf,SAASgB,MAAM,EAAEJ;YAC7C;YAEA,IAAI,CAACZ,SAASI,IAAI,EAAE;gBAClB,MAAM,IAAIpF,eAAe;YAC3B;YACA,MAAMmH,SAASnC,SAASI,IAAI,CAACgC,SAAS;YACtC,MAAMC,UAAU,IAAIC;YACpB,IAAIC,SAAS;YAEb,MAAO,KAAM;gBACX,MAAM,EAAEC,IAAI,EAAEC,KAAK,EAAE,GAAG,MAAMN,OAAOO,IAAI;gBACzC,IAAIF,MAAM;gBAEVD,UAAUF,QAAQM,MAAM,CAACF,OAAO;oBAAErD,QAAQ;gBAAK;gBAC/C,MAAMwD,QAAQL,OAAOM,KAAK,CAAC;gBAC3BN,SAASK,MAAME,GAAG,MAAM;gBAExB,KAAK,MAAMC,QAAQH,MAAO;oBACxB,IAAIG,KAAKC,UAAU,CAAC,WAAW;wBAC7B,MAAM/B,OAAO8B,KAAKE,KAAK,CAAC;wBACxB,IAAIhC,SAAS,UAAU;wBAEvB,IAAI;4BACF,MAAMiC,QAAQ7C,KAAKQ,KAAK,CAACI;4BACzB,IAAI,CAACS,IAAI,CAAC,gBAAgBwB;4BAC1B,MAAMA;wBACR,EAAE,OAAOC,GAAG;4BACV,IAAI,CAACvH,MAAM,CAACmG,IAAI,CAAC,gCAAgC;gCAAEd;gCAAMU,OAAOwB;4BAAE;wBACpE;oBACF;gBACF;YACF;QACF,EAAE,OAAOxB,OAAO;YACdnB,aAAalE;YAEb,uBAAuB;YACvB,IAAIqF,iBAAiByB,SAASzB,MAAM0B,IAAI,KAAK,cAAc;gBACzD,MAAM,IAAIjI,mBAAmB,qBAAqB,IAAI,CAACO,MAAM,CAACW,OAAO,IAAI;YAC3E;YAEA,MAAMqF;QACR,SAAU;YACRnB,aAAalE;QACf;IACF;IAEA;;GAEC,GACD,MAAMgH,SACJC,MAAc,EACdzE,OAKC,EACgB;QACjB,MAAMD,WAA4B;YAAC;gBAAE2E,MAAM;gBAAQC,SAASF;YAAO;SAAE;QACrE,MAAMvD,WAAY,MAAM,IAAI,CAACpB,WAAW,CAACC,UAAUC;QACnD,OAAOkB,SAASyD,OAAO,CAAC,EAAE,CAAC9C,IAAI;IACjC;IAEA;;GAEC,GACD,OAAO+C,eACLH,MAAc,EACdzE,OAKC,EACsB;QACvB,MAAMD,WAA4B;YAAC;gBAAE2E,MAAM;gBAAQC,SAASF;YAAO;SAAE;QACrE,MAAMnE,SAAU,MAAM,IAAI,CAACR,WAAW,CAACC,UAAU;YAC/C,GAAGC,OAAO;YACVM,QAAQ;QACV;QAEA,WAAW,MAAM8D,SAAS9D,OAAQ;YAChC,IAAI8D,MAAMS,IAAI,KAAK,yBAAyBT,MAAMU,KAAK,EAAEjD,MAAM;gBAC7D,MAAMuC,MAAMU,KAAK,CAACjD,IAAI;YACxB;QACF;IACF;IAEA;;GAEC,GACDkD,qBAAoC;QAClC,OAAO;YACL;YACA;YACA;YACA;YACA;YACA;SACD;IACH;IAEA;;GAEC,GACDC,aAAa/G,KAAkB,EAI7B;QACA,MAAMgH,YAGF;YACF,0BAA0B;gBACxBV,MAAM;gBACNW,eAAe;gBACfC,aAAa;YACf;YACA,4BAA4B;gBAC1BZ,MAAM;gBACNW,eAAe;gBACfC,aAAa;YACf;YACA,2BAA2B;gBACzBZ,MAAM;gBACNW,eAAe;gBACfC,aAAa;YACf;YACA,cAAc;gBACZZ,MAAM;gBACNW,eAAe;gBACfC,aAAa;YACf;YACA,cAAc;gBACZZ,MAAM;gBACNW,eAAe;gBACfC,aAAa;YACf;YACA,sBAAsB;gBACpBZ,MAAM;gBACNW,eAAe;gBACfC,aAAa;YACf;QACF;QAEA,OACEF,SAAS,CAAChH,MAAM,IAAI;YAClBsG,MAAMtG;YACNiH,eAAe;YACfC,aAAa;QACf;IAEJ;IAEA;;GAEC,GACD,AAAQhC,MAAMiC,EAAU,EAAiB;QACvC,OAAO,IAAIC,QAAQ,CAACC,UAAYtE,WAAWsE,SAASF;IACtD;IAEA;;GAEC,GACD,AAAQvH,mBAAyB;QAC/B,IAAI,CAAC0H,kBAAkB,IAAI,gBAAgB;QAE3C,IAAI,CAACnI,gBAAgB,GAAGoI,YACtB,IAAM,IAAI,CAACD,kBAAkB,IAC7B,IAAI,CAAC1I,MAAM,CAAC6B,mBAAmB,IAAI;IAEvC;IAEA;;GAEC,GACD,MAAM6G,qBAAiD;QACrD,MAAME,YAAYC,KAAKC,GAAG;QAE1B,IAAI;YACF,MAAM7E,aAAa,IAAIC;YACvB,MAAMvD,UAAUwD,WAAW,IAAMF,WAAWG,KAAK,IAAI,QAAQ,oBAAoB;YAEjF,MAAMC,WAAW,MAAMC,MAAM,IAAI,CAACtE,MAAM,CAACmB,MAAM,IAAI,IAAI;gBACrDoD,QAAQ;gBACRC,SAAS;oBACP,gBAAgB;oBAChB,qBAAqB;oBACrB,aAAa,IAAI,CAACxE,MAAM,CAACkB,MAAM;gBACjC;gBACAuD,MAAMC,KAAKC,SAAS,CAAC;oBACnBvD,OAAO,IAAI,CAACpB,MAAM,CAACoB,KAAK;oBACxB8B,UAAU;wBAAC;4BAAE2E,MAAM;4BAAQC,SAAS;wBAAK;qBAAE;oBAC3CxE,YAAY;gBACd;gBACAsB,QAAQX,WAAWW,MAAM;YAC3B;YAEAC,aAAalE;YAEb,MAAMoI,UAAUF,KAAKC,GAAG,KAAKF;YAC7B,MAAMI,UAAU3E,SAASS,EAAE,IAAIT,SAASgB,MAAM,KAAK,KAAK,gCAAgC;YAExF,IAAI,CAAC/E,eAAe,GAAG;gBACrB0I;gBACAD;gBACA/C,OAAOgD,UAAUvH,YAAY,CAAC,QAAQ,EAAE4C,SAASgB,MAAM,EAAE;gBACzD4D,WAAW,IAAIJ;YACjB;YAEA,IAAI,CAAC5I,MAAM,CAACyD,KAAK,CAAC,qCAAqC,IAAI,CAACpD,eAAe;YAC3E,IAAI,CAACyF,IAAI,CAAC,gBAAgB,IAAI,CAACzF,eAAe;YAE9C,OAAO,IAAI,CAACA,eAAe;QAC7B,EAAE,OAAO0F,OAAO;YACd,MAAM+C,UAAUF,KAAKC,GAAG,KAAKF;YAE7B,IAAI,CAACtI,eAAe,GAAG;gBACrB0I,SAAS;gBACTD;gBACA/C,OAAOA,iBAAiByB,QAAQzB,MAAMb,OAAO,GAAG;gBAChD8D,WAAW,IAAIJ;YACjB;YAEA,IAAI,CAAC5I,MAAM,CAACmG,IAAI,CAAC,kCAAkC,IAAI,CAAC9F,eAAe;YACvE,IAAI,CAACyF,IAAI,CAAC,gBAAgB,IAAI,CAACzF,eAAe;YAE9C,OAAO,IAAI,CAACA,eAAe;QAC7B;IACF;IAEA;;GAEC,GACD4I,kBAAiD;QAC/C,OAAO,IAAI,CAAC5I,eAAe;IAC7B;IAEA;;GAEC,GACD,AAAQ8E,eAAeiB,UAAkB,EAAEpB,SAAc,EAAkB;QACzE,MAAME,UAAUF,UAAUe,KAAK,EAAEb,WAAWF,UAAUE,OAAO,IAAI;QAEjE,OAAQkB;YACN,KAAK;gBACH,OAAO,IAAIzG,sBAAsBuF,SAASF;YAC5C,KAAK;YACL,KAAK;gBACH,OAAO,IAAItF,0BAA0BwF,SAASF;YAChD,KAAK;gBACH,MAAMkE,aAAalE,UAAUe,KAAK,EAAEoD;gBACpC,OAAO,IAAI5J,qBAAqB2F,SAASgE,YAAYlE;YACvD,KAAK;gBACH,OAAO,IAAI3F,0BAA0B6F,SAASF;YAChD,KAAK;gBACH,OAAO,IAAI1F,8BAA8B4F,SAASF;YACpD;gBACE,OAAO,IAAI5F,eAAe8F,SAASkB,YAAYA,cAAc,KAAKpB;QACtE;IACF;IAEA;;GAEC,GACD,AAAQgB,eAAeD,KAAc,EAAkB;QACrD,IAAIA,iBAAiB3G,gBAAgB;YACnC,OAAO2G;QACT;QAEA,IAAIA,iBAAiByB,OAAO;YAC1B,iBAAiB;YACjB,IAAIzB,MAAMb,OAAO,CAACkE,QAAQ,CAAC,mBAAmBrD,MAAMb,OAAO,CAACkE,QAAQ,CAAC,iBAAiB;gBACpF,OAAO,IAAI3J,mBAAmBsG,MAAMb,OAAO;YAC7C;YAEA,iBAAiB;YACjB,IAAIa,MAAM0B,IAAI,KAAK,gBAAgB1B,MAAMb,OAAO,CAACkE,QAAQ,CAAC,YAAY;gBACpE,OAAO,IAAI5J,mBAAmBuG,MAAMb,OAAO,EAAE,IAAI,CAACnF,MAAM,CAACW,OAAO,IAAI;YACtE;QACF;QAEA,OAAO,IAAItB,eACT2G,iBAAiByB,QAAQzB,MAAMb,OAAO,GAAGmE,OAAOtD,QAChDvE,WACA;IAEJ;IAEA;;GAEC,GACD,AAAQ8E,oBAAoBvC,OAAe,EAAEgC,KAAqB,EAAU;QAC1E,wDAAwD;QACxD,IAAIA,iBAAiBxG,wBAAwBwG,MAAMmD,UAAU,EAAE;YAC7D,OAAOnD,MAAMmD,UAAU,GAAG,MAAM,0BAA0B;QAC5D;QAEA,MAAMI,YAAY,IAAI,CAACvJ,MAAM,CAAC4B,UAAU,IAAI;QAC5C,MAAM4H,WAAW,OAAO,iBAAiB;QAEzC,yDAAyD;QACzD,IAAIlD,QAAQmD,KAAKC,GAAG,CAACH,YAAYE,KAAKE,GAAG,CAAC,GAAG3F,UAAUwF;QAEvD,wCAAwC;QACxC,IAAI,IAAI,CAACxJ,MAAM,CAAC8B,WAAW,EAAE;YAC3B,MAAM8H,SAASH,KAAKI,MAAM,KAAK,MAAMvD,OAAO,mBAAmB;YAC/DA,QAAQA,QAAQsD;QAClB;QAEA,OAAOH,KAAKK,KAAK,CAACxD;IACpB;IAEA;;GAEC,GACD,AAAQH,YAAYH,KAAqB,EAAQ;QAC/C,MAAM+D,YAAYlK,qBAAqBmG;QAEvC,IAAI,CAAC/F,MAAM,CAAC+F,KAAK,CAAC,GAAG+D,UAAUC,KAAK,CAAC,EAAE,EAAED,UAAU5E,OAAO,EAAE,EAAE;YAC5Da,OAAOA,MAAMb,OAAO;YACpB8E,MAAMjE,MAAMiE,IAAI;YAChB5D,YAAYL,MAAMK,UAAU;YAC5BH,WAAWF,MAAME,SAAS;YAC1BgE,SAASlE,MAAMkE,OAAO;QACxB;QAEA,gCAAgC;QAChC,IAAI,IAAI,CAACjK,MAAM,CAACkK,KAAK,KAAK,WAAWJ,UAAUK,WAAW,CAACxG,MAAM,GAAG,GAAG;YACrE,IAAI,CAAC3D,MAAM,CAACyD,KAAK,CAAC,qCAAqCqG,UAAUK,WAAW;QAC9E;QAEA,IAAI,CAACrE,IAAI,CAAC,SAAS;YACjBC;YACAqE,cAAcN;QAChB;IACF;IAEA;;GAEC,GACDO,UAAgB;QACd,IAAI,IAAI,CAAC/J,gBAAgB,EAAE;YACzBgK,cAAc,IAAI,CAAChK,gBAAgB;YACnC,IAAI,CAACA,gBAAgB,GAAGkB;QAC1B;QACA,IAAI,CAAC+I,kBAAkB;IACzB;AACF"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/api/claude-client.ts"],"names":["EventEmitter","ClaudeAPIError","ClaudeInternalServerError","ClaudeServiceUnavailableError","ClaudeRateLimitError","ClaudeTimeoutError","ClaudeNetworkError","ClaudeAuthenticationError","ClaudeValidationError","getUserFriendlyError","circuitBreaker","incrementMetric","recordTiming","ClaudeAPIClient","config","logger","configManager","defaultModel","defaultTemperature","defaultMaxTokens","lastHealthCheck","healthCheckTimer","loadConfiguration","threshold","circuitBreakerThreshold","timeout","circuitBreakerTimeout","resetTimeout","circuitBreakerResetTimeout","enableHealthCheck","startHealthCheck","overrides","apiKey","apiUrl","model","temperature","maxTokens","topP","topK","undefined","systemPrompt","retryAttempts","retryDelay","healthCheckInterval","retryJitter","process","env","ANTHROPIC_API_KEY","CLAUDE_API_URL","CLAUDE_MODEL","CLAUDE_TEMPERATURE","parseFloat","CLAUDE_MAX_TOKENS","parseInt","claudeConfig","get","Object","assign","validateConfiguration","updateConfig","updates","info","getConfig","sendMessage","messages","options","request","system","max_tokens","top_p","top_k","stream","debug","messageCount","length","streamRequest","sendRequest","startTime","Date","now","provider","includes","lastError","attempt","controller","AbortController","setTimeout","abort","response","fetch","method","headers","body","JSON","stringify","signal","clearTimeout","ok","errorText","text","errorData","parse","message","createAPIError","status","data","json","usage","input_tokens","output_tokens","inputTokens","outputTokens","stopReason","stop_reason","emit","error","transformError","errorType","code","name","statusCode","toString","retryable","handleError","warn","delay","calculateRetryDelay","totalInputTokens","totalOutputTokens","apiError","bodyError","reader","getReader","decoder","TextDecoder","buffer","done","value","read","decode","lines","split","pop","line","startsWith","slice","event","type","e","Error","timeoutError","complete","prompt","role","content","streamComplete","delta","getAvailableModels","getModelInfo","modelInfo","contextWindow","description","ms","Promise","resolve","performHealthCheck","setInterval","latency","healthy","timestamp","getHealthStatus","retryAfter","retry_after","String","baseDelay","maxDelay","Math","min","pow","jitter","random","floor","errorInfo","title","details","level","suggestions","userFriendly","destroy","clearInterval","removeAllListeners"],"mappings":"AAAA;;;CAGC,GAED,SAASA,YAAY,QAAQ,SAAS;AAItC,SACEC,cAAc,EACdC,yBAAyB,EACzBC,6BAA6B,EAC7BC,oBAAoB,EACpBC,kBAAkB,EAClBC,kBAAkB,EAClBC,yBAAyB,EACzBC,qBAAqB,EAErBC,oBAAoB,QACf,yBAAyB;AAChC,SAASC,cAAc,QAAwB,sBAAsB;AACrE,SAASC,eAAe,EAAEC,YAAY,QAAQ,sCAAsC;AAmGpF,OAAO,MAAMC,wBAAwBb;IAC3Bc,OAAwB;IACxBC,OAAgB;IAChBC,cAA6B;IAC7BC,eAA4B,2BAA2B;IACvDC,qBAA6B,IAAI;IACjCC,mBAA2B,KAAK;IAChCT,eAA+B;IAC/BU,gBAAoC;IACpCC,iBAAkC;IAE1C,YAAYN,MAAe,EAAEC,aAA4B,EAAEF,MAAiC,CAAE;QAC5F,KAAK;QACL,IAAI,CAACC,MAAM,GAAGA;QACd,IAAI,CAACC,aAAa,GAAGA;QAErB,8DAA8D;QAC9D,IAAI,CAACF,MAAM,GAAG,IAAI,CAACQ,iBAAiB,CAACR;QAErC,iDAAiD;QACjD,IAAI,CAACJ,cAAc,GAAGA,eAAe,cAAc;YACjDa,WAAW,IAAI,CAACT,MAAM,CAACU,uBAAuB,IAAI;YAClDC,SAAS,IAAI,CAACX,MAAM,CAACY,qBAAqB,IAAI;YAC9CC,cAAc,IAAI,CAACb,MAAM,CAACc,0BAA0B,IAAI;QAC1D;QAEA,gCAAgC;QAChC,IAAI,IAAI,CAACd,MAAM,CAACe,iBAAiB,EAAE;YACjC,IAAI,CAACC,gBAAgB;QACvB;IACF;IAEA;;GAEC,GACD,AAAQR,kBAAkBS,SAAoC,EAAmB;QAC/E,sBAAsB;QACtB,MAAMjB,SAA0B;YAC9BkB,QAAQ;YACRC,QAAQ;YACRC,OAAO,IAAI,CAACjB,YAAY;YACxBkB,aAAa,IAAI,CAACjB,kBAAkB;YACpCkB,WAAW,IAAI,CAACjB,gBAAgB;YAChCkB,MAAM;YACNC,MAAMC;YACNC,cAAcD;YACdd,SAAS;YACTgB,eAAe;YACfC,YAAY;YACZ,mCAAmC;YACnCb,mBAAmB;YACnBc,qBAAqB;YACrBnB,yBAAyB;YACzBE,uBAAuB;YACvBE,4BAA4B;YAC5BgB,aAAa;QACf;QAEA,kCAAkC;QAClC,IAAIC,QAAQC,GAAG,CAACC,iBAAiB,EAAE;YACjCjC,OAAOkB,MAAM,GAAGa,QAAQC,GAAG,CAACC,iBAAiB;QAC/C;QACA,IAAIF,QAAQC,GAAG,CAACE,cAAc,EAAE;YAC9BlC,OAAOmB,MAAM,GAAGY,QAAQC,GAAG,CAACE,cAAc;QAC5C;QACA,IAAIH,QAAQC,GAAG,CAACG,YAAY,EAAE;YAC5BnC,OAAOoB,KAAK,GAAGW,QAAQC,GAAG,CAACG,YAAY;QACzC;QACA,IAAIJ,QAAQC,GAAG,CAACI,kBAAkB,EAAE;YAClCpC,OAAOqB,WAAW,GAAGgB,WAAWN,QAAQC,GAAG,CAACI,kBAAkB;QAChE;QACA,IAAIL,QAAQC,GAAG,CAACM,iBAAiB,EAAE;YACjCtC,OAAOsB,SAAS,GAAGiB,SAASR,QAAQC,GAAG,CAACM,iBAAiB,EAAE;QAC7D;QAEA,wCAAwC;QACxC,MAAME,eAAe,IAAI,CAACtC,aAAa,CAACuC,GAAG,CAAC;QAC5C,IAAID,cAAc;YAChBE,OAAOC,MAAM,CAAC3C,QAAQwC;QACxB;QAEA,kBAAkB;QAClB,IAAIvB,WAAW;YACbyB,OAAOC,MAAM,CAAC3C,QAAQiB;QACxB;QAEA,yBAAyB;QACzB,IAAI,CAAC2B,qBAAqB,CAAC5C;QAE3B,OAAOA;IACT;IAEA;;GAEC,GACD,AAAQ4C,sBAAsB5C,MAAuB,EAAQ;QAC3D,IAAI,CAACA,OAAOkB,MAAM,EAAE;YAClB,MAAM,IAAIzB,0BACR;QAEJ;QAEA,IAAIO,OAAOqB,WAAW,KAAKI,WAAW;YACpC,IAAIzB,OAAOqB,WAAW,GAAG,KAAKrB,OAAOqB,WAAW,GAAG,GAAG;gBACpD,MAAM,IAAI3B,sBAAsB;YAClC;QACF;QAEA,IAAIM,OAAOuB,IAAI,KAAKE,WAAW;YAC7B,IAAIzB,OAAOuB,IAAI,GAAG,KAAKvB,OAAOuB,IAAI,GAAG,GAAG;gBACtC,MAAM,IAAI7B,sBAAsB;YAClC;QACF;QAEA,IAAIM,OAAOsB,SAAS,KAAKG,aAAczB,CAAAA,OAAOsB,SAAS,GAAG,KAAKtB,OAAOsB,SAAS,GAAG,MAAK,GAAI;YACzF,MAAM,IAAI5B,sBAAsB;QAClC;IACF;IAEA;;GAEC,GACDmD,aAAaC,OAAiC,EAAQ;QACpD,IAAI,CAAC9C,MAAM,GAAG;YAAE,GAAG,IAAI,CAACA,MAAM;YAAE,GAAG8C,OAAO;QAAC;QAC3C,IAAI,CAACF,qBAAqB,CAAC,IAAI,CAAC5C,MAAM;QACtC,IAAI,CAACC,MAAM,CAAC8C,IAAI,CAAC,oCAAoC;YACnD3B,OAAO,IAAI,CAACpB,MAAM,CAACoB,KAAK;YACxBC,aAAa,IAAI,CAACrB,MAAM,CAACqB,WAAW;YACpCC,WAAW,IAAI,CAACtB,MAAM,CAACsB,SAAS;QAClC;IACF;IAEA;;GAEC,GACD0B,YAA6B;QAC3B,OAAO;YAAE,GAAG,IAAI,CAAChD,MAAM;QAAC;IAC1B;IAEA;;GAEC,GACD,MAAMiD,YACJC,QAAyB,EACzBC,OAMC,EAC2D;QAC5D,MAAMC,UAAyB;YAC7BhC,OAAO+B,SAAS/B,SAAS,IAAI,CAACpB,MAAM,CAACoB,KAAK,IAAI;YAC9C8B;YACAG,QAAQF,SAASzB,gBAAgB,IAAI,CAAC1B,MAAM,CAAC0B,YAAY;YACzD4B,YAAYH,SAAS7B,aAAa,IAAI,CAACtB,MAAM,CAACsB,SAAS,IAAI;YAC3DD,aAAa8B,SAAS9B,eAAe,IAAI,CAACrB,MAAM,CAACqB,WAAW;YAC5DkC,OAAO,IAAI,CAACvD,MAAM,CAACuB,IAAI;YACvBiC,OAAO,IAAI,CAACxD,MAAM,CAACwB,IAAI;YACvBiC,QAAQN,SAASM,UAAU;QAC7B;QAEA,IAAI,CAACxD,MAAM,CAACyD,KAAK,CAAC,8BAA8B;YAC9CtC,OAAOgC,QAAQhC,KAAK;YACpBC,aAAa+B,QAAQ/B,WAAW;YAChCC,WAAW8B,QAAQE,UAAU;YAC7BK,cAAcT,SAASU,MAAM;YAC7BH,QAAQL,QAAQK,MAAM;QACxB;QAEA,IAAIL,QAAQK,MAAM,EAAE;YAClB,OAAO,IAAI,CAACI,aAAa,CAACT;QAC5B,OAAO;YACL,OAAO,IAAI,CAACU,WAAW,CAACV;QAC1B;IACF;IAEA;;GAEC,GACD,MAAcU,YAAYV,OAAsB,EAA2B;QACzE,MAAMW,YAAYC,KAAKC,GAAG;QAC1B,MAAM7C,QAAQgC,QAAQhC,KAAK,IAAI;QAE/B,kDAAkD;QAClD,MAAM8C,WAAW,IAAI,CAAClE,MAAM,CAACmB,MAAM,EAAEgD,SAAS,UAAU,SAAS;QAEjE,oBAAoB;QACpBtE,gBAAgB,sBAAsB,GAAG;YACvCuB;YACA8C;YACAT,QAAQ;QACV;QAEA,IAAIW;QAEJ,IAAK,IAAIC,UAAU,GAAGA,UAAW,CAAA,IAAI,CAACrE,MAAM,CAAC2B,aAAa,IAAI,CAAA,GAAI0C,UAAW;YAC3E,IAAI;gBACF,MAAMC,aAAa,IAAIC;gBACvB,MAAM5D,UAAU6D,WAAW,IAAMF,WAAWG,KAAK,IAAI,IAAI,CAACzE,MAAM,CAACW,OAAO,IAAI;gBAE5E,MAAM+D,WAAW,MAAMC,MACrB,IAAI,CAAC3E,MAAM,CAACmB,MAAM,IAAI,yCACtB;oBACEyD,QAAQ;oBACRC,SAAS;wBACP,gBAAgB;wBAChB,qBAAqB;wBACrB,aAAa,IAAI,CAAC7E,MAAM,CAACkB,MAAM;oBACjC;oBACA4D,MAAMC,KAAKC,SAAS,CAAC5B;oBACrB6B,QAAQX,WAAWW,MAAM;gBAC3B;gBAGFC,aAAavE;gBAEb,IAAI,CAAC+D,SAASS,EAAE,EAAE;oBAChB,MAAMC,YAAY,MAAMV,SAASW,IAAI;oBACrC,IAAIC;oBAEJ,IAAI;wBACFA,YAAYP,KAAKQ,KAAK,CAACH;oBACzB,EAAE,OAAM;wBACNE,YAAY;4BAAEE,SAASJ;wBAAU;oBACnC;oBAEA,MAAM,IAAI,CAACK,cAAc,CAACf,SAASgB,MAAM,EAAEJ;gBAC7C;gBAEA,MAAMK,OAAQ,MAAMjB,SAASkB,IAAI;gBAEjC,mCAAmC;gBACnC9F,aAAa,uBAAuBkE,KAAKC,GAAG,KAAKF,WAAW;oBAC1D3C;oBACAsE,QAAQ;oBACRjC,QAAQ;gBACV;gBAEA,oBAAoB;gBACpB,IAAIkC,KAAKE,KAAK,EAAE;oBACdhG,gBAAgB,uBAAuB8F,KAAKE,KAAK,CAACC,YAAY,EAAE;wBAC9D1E;oBACF;oBACAvB,gBAAgB,wBAAwB8F,KAAKE,KAAK,CAACE,aAAa,EAAE;wBAChE3E;oBACF;oBACAvB,gBAAgB,uBAAuB8F,KAAKE,KAAK,CAACC,YAAY,GAAGH,KAAKE,KAAK,CAACE,aAAa,EAAE;wBACzF3E;oBACF;gBACF;gBAEA,IAAI,CAACnB,MAAM,CAAC8C,IAAI,CAAC,gCAAgC;oBAC/C3B,OAAOuE,KAAKvE,KAAK;oBACjB4E,aAAaL,KAAKE,KAAK,CAACC,YAAY;oBACpCG,cAAcN,KAAKE,KAAK,CAACE,aAAa;oBACtCG,YAAYP,KAAKQ,WAAW;gBAC9B;gBAEA,IAAI,CAACC,IAAI,CAAC,YAAYT;gBACtB,OAAOA;YACT,EAAE,OAAOU,OAAO;gBACdjC,YAAY,IAAI,CAACkC,cAAc,CAACD;gBAEhC,cAAc;gBACdxG,gBAAgB,oBAAoB,GAAG;oBACrCuB;oBACAmF,WAAWnC,UAAUoC,IAAI,IAAIpC,UAAU,WAAW,CAACqC,IAAI,IAAI;oBAC3DC,YAAYtC,UAAUsC,UAAU,EAAEC,cAAc;oBAChDC,WAAWxC,UAAUwC,SAAS,GAAG,SAAS;gBAC5C;gBAEA,mCAAmC;gBACnC,IAAI,CAACxC,UAAUwC,SAAS,EAAE;oBACxB9G,aAAa,uBAAuBkE,KAAKC,GAAG,KAAKF,WAAW;wBAC1D3C;wBACAsE,QAAQ;wBACRjC,QAAQ;oBACV;oBACA,IAAI,CAACoD,WAAW,CAACzC;oBACjB,MAAMA;gBACR;gBAEA,IAAI,CAACnE,MAAM,CAAC6G,IAAI,CACd,CAAC,mCAAmC,EAAEzC,UAAU,EAAE,CAAC,EAAE,IAAI,CAACrE,MAAM,CAAC2B,aAAa,CAAC,CAAC,CAAC,EACjF;oBACE0E,OAAOjC,UAAUoB,OAAO;oBACxBkB,YAAYtC,UAAUsC,UAAU;oBAChCE,WAAWxC,UAAUwC,SAAS;gBAChC;gBAGF,IAAIvC,UAAU,AAAC,CAAA,IAAI,CAACrE,MAAM,CAAC2B,aAAa,IAAI,CAAA,IAAK,GAAG;oBAClD,MAAMoF,QAAQ,IAAI,CAACC,mBAAmB,CAAC3C,SAASD;oBAChD,MAAM,IAAI,CAAC2C,KAAK,CAACA;gBACnB;YACF;QACF;QAEA,uDAAuD;QACvDjH,aAAa,uBAAuBkE,KAAKC,GAAG,KAAKF,WAAW;YAC1D3C;YACAsE,QAAQ;YACRjC,QAAQ;QACV;QAEA,IAAI,CAACoD,WAAW,CAACzC;QACjB,MAAMA;IACR;IAEA;;GAEC,GACD,OAAeP,cAAcT,OAAsB,EAAoC;QACrF,MAAMW,YAAYC,KAAKC,GAAG;QAC1B,MAAM7C,QAAQgC,QAAQhC,KAAK,IAAI;QAC/B,IAAI6F,mBAAmB;QACvB,IAAIC,oBAAoB;QAExB,kDAAkD;QAClD,MAAMhD,WAAW,IAAI,CAAClE,MAAM,CAACmB,MAAM,EAAEgD,SAAS,UAAU,SAAS;QAEjE,oBAAoB;QACpBtE,gBAAgB,sBAAsB,GAAG;YACvCuB;YACA8C;YACAT,QAAQ;QACV;QAEA,MAAMa,aAAa,IAAIC;QACvB,MAAM5D,UAAU6D,WAAW,IAAMF,WAAWG,KAAK,IAAI,AAAC,CAAA,IAAI,CAACzE,MAAM,CAACW,OAAO,IAAI,KAAI,IAAK,IAAI,+BAA+B;QAEzH,IAAI;YACF,MAAM+D,WAAW,MAAMC,MAAM,IAAI,CAAC3E,MAAM,CAACmB,MAAM,IAAI,yCAAyC;gBAC1FyD,QAAQ;gBACRC,SAAS;oBACP,gBAAgB;oBAChB,qBAAqB;oBACrB,aAAa,IAAI,CAAC7E,MAAM,CAACkB,MAAM;gBACjC;gBACA4D,MAAMC,KAAKC,SAAS,CAAC;oBAAE,GAAG5B,OAAO;oBAAEK,QAAQ;gBAAK;gBAChDwB,QAAQX,WAAWW,MAAM;YAC3B;YAEA,IAAI,CAACP,SAASS,EAAE,EAAE;gBAChB,MAAMC,YAAY,MAAMV,SAASW,IAAI;gBACrC,IAAIC;gBAEJ,IAAI;oBACFA,YAAYP,KAAKQ,KAAK,CAACH;gBACzB,EAAE,OAAM;oBACNE,YAAY;wBAAEE,SAASJ;oBAAU;gBACnC;gBAEA,MAAM+B,WAAW,IAAI,CAAC1B,cAAc,CAACf,SAASgB,MAAM,EAAEJ;gBAEtD,cAAc;gBACdzF,gBAAgB,oBAAoB,GAAG;oBACrCuB;oBACAmF,WAAWY,SAASX,IAAI,IAAIW,SAAS,WAAW,CAACV,IAAI,IAAI;oBACzDC,YAAYS,SAAST,UAAU,EAAEC,cAAc;oBAC/CC,WAAWO,SAASP,SAAS,GAAG,SAAS;gBAC3C;gBAEA9G,aAAa,uBAAuBkE,KAAKC,GAAG,KAAKF,WAAW;oBAC1D3C;oBACAsE,QAAQ;oBACRjC,QAAQ;gBACV;gBAEA,MAAM0D;YACR;YAEA,IAAI,CAACzC,SAASI,IAAI,EAAE;gBAClB,MAAMsC,YAAY,IAAIjI,eAAe;gBAErCU,gBAAgB,oBAAoB,GAAG;oBACrCuB;oBACAmF,WAAW;oBACXG,YAAY;oBACZE,WAAW;gBACb;gBAEA9G,aAAa,uBAAuBkE,KAAKC,GAAG,KAAKF,WAAW;oBAC1D3C;oBACAsE,QAAQ;oBACRjC,QAAQ;gBACV;gBAEA,MAAM2D;YACR;YAEA,MAAMC,SAAS3C,SAASI,IAAI,CAACwC,SAAS;YACtC,MAAMC,UAAU,IAAIC;YACpB,IAAIC,SAAS;YAEb,MAAO,KAAM;gBACX,MAAM,EAAEC,IAAI,EAAEC,KAAK,EAAE,GAAG,MAAMN,OAAOO,IAAI;gBACzC,IAAIF,MAAM;gBAEVD,UAAUF,QAAQM,MAAM,CAACF,OAAO;oBAAElE,QAAQ;gBAAK;gBAC/C,MAAMqE,QAAQL,OAAOM,KAAK,CAAC;gBAC3BN,SAASK,MAAME,GAAG,MAAM;gBAExB,KAAK,MAAMC,QAAQH,MAAO;oBACxB,IAAIG,KAAKC,UAAU,CAAC,WAAW;wBAC7B,MAAMvC,OAAOsC,KAAKE,KAAK,CAAC;wBACxB,IAAIxC,SAAS,UAAU;wBAEvB,IAAI;4BACF,MAAMyC,QAAQrD,KAAKQ,KAAK,CAACI;4BAEzB,uCAAuC;4BACvC,IAAIyC,MAAMC,IAAI,KAAK,mBAAmBD,MAAM5C,OAAO,EAAEK,OAAO;gCAC1DoB,mBAAmBmB,MAAM5C,OAAO,CAACK,KAAK,CAACC,YAAY,IAAI;4BACzD;4BACA,IAAIsC,MAAMC,IAAI,KAAK,mBAAmBD,MAAMvC,KAAK,EAAE;gCACjDqB,qBAAqBkB,MAAMvC,KAAK,CAACE,aAAa,IAAI;4BACpD;4BAEA,IAAI,CAACK,IAAI,CAAC,gBAAgBgC;4BAC1B,MAAMA;wBACR,EAAE,OAAOE,GAAG;4BACV,IAAI,CAACrI,MAAM,CAAC6G,IAAI,CAAC,gCAAgC;gCAAEnB;gCAAMU,OAAOiC;4BAAE;wBACpE;oBACF;gBACF;YACF;YAEA,8BAA8B;YAC9BxI,aAAa,uBAAuBkE,KAAKC,GAAG,KAAKF,WAAW;gBAC1D3C;gBACAsE,QAAQ;gBACRjC,QAAQ;YACV;YAEA,oBAAoB;YACpB,IAAIwD,mBAAmB,KAAKC,oBAAoB,GAAG;gBACjDrH,gBAAgB,uBAAuBoH,kBAAkB;oBAAE7F;gBAAM;gBACjEvB,gBAAgB,wBAAwBqH,mBAAmB;oBAAE9F;gBAAM;gBACnEvB,gBAAgB,uBAAuBoH,mBAAmBC,mBAAmB;oBAAE9F;gBAAM;YACvF;QACF,EAAE,OAAOiF,OAAO;YACdnB,aAAavE;YAEb,uBAAuB;YACvB,IAAI0F,iBAAiBkC,SAASlC,MAAMI,IAAI,KAAK,cAAc;gBACzD,MAAM+B,eAAe,IAAIjJ,mBAAmB,qBAAqB,IAAI,CAACS,MAAM,CAACW,OAAO,IAAI;gBAExFd,gBAAgB,oBAAoB,GAAG;oBACrCuB;oBACAmF,WAAW;oBACXG,YAAY;oBACZE,WAAW;gBACb;gBAEA9G,aAAa,uBAAuBkE,KAAKC,GAAG,KAAKF,WAAW;oBAC1D3C;oBACAsE,QAAQ;oBACRjC,QAAQ;gBACV;gBAEA,MAAM+E;YACR;YAEA,qCAAqC;YACrC,IAAI,CAAEnC,CAAAA,iBAAiBlH,cAAa,GAAI;gBACtCU,gBAAgB,oBAAoB,GAAG;oBACrCuB;oBACAmF,WAAWF,iBAAiBkC,QAAQlC,MAAM,WAAW,CAACI,IAAI,GAAG;oBAC7DC,YAAY;oBACZE,WAAW;gBACb;gBAEA9G,aAAa,uBAAuBkE,KAAKC,GAAG,KAAKF,WAAW;oBAC1D3C;oBACAsE,QAAQ;oBACRjC,QAAQ;gBACV;YACF;YAEA,MAAM4C;QACR,SAAU;YACRnB,aAAavE;QACf;IACF;IAEA;;GAEC,GACD,MAAM8H,SACJC,MAAc,EACdvF,OAKC,EACgB;QACjB,MAAMD,WAA4B;YAAC;gBAAEyF,MAAM;gBAAQC,SAASF;YAAO;SAAE;QACrE,MAAMhE,WAAY,MAAM,IAAI,CAACzB,WAAW,CAACC,UAAUC;QACnD,OAAOuB,SAASkE,OAAO,CAAC,EAAE,CAACvD,IAAI;IACjC;IAEA;;GAEC,GACD,OAAOwD,eACLH,MAAc,EACdvF,OAKC,EACsB;QACvB,MAAMD,WAA4B;YAAC;gBAAEyF,MAAM;gBAAQC,SAASF;YAAO;SAAE;QACrE,MAAMjF,SAAU,MAAM,IAAI,CAACR,WAAW,CAACC,UAAU;YAC/C,GAAGC,OAAO;YACVM,QAAQ;QACV;QAEA,WAAW,MAAM2E,SAAS3E,OAAQ;YAChC,IAAI2E,MAAMC,IAAI,KAAK,yBAAyBD,MAAMU,KAAK,EAAEzD,MAAM;gBAC7D,MAAM+C,MAAMU,KAAK,CAACzD,IAAI;YACxB;QACF;IACF;IAEA;;GAEC,GACD0D,qBAAoC;QAClC,OAAO;YACL;YACA;YACA;YACA;YACA;YACA;SACD;IACH;IAEA;;GAEC,GACDC,aAAa5H,KAAkB,EAI7B;QACA,MAAM6H,YAGF;YACF,0BAA0B;gBACxBxC,MAAM;gBACNyC,eAAe;gBACfC,aAAa;YACf;YACA,4BAA4B;gBAC1B1C,MAAM;gBACNyC,eAAe;gBACfC,aAAa;YACf;YACA,2BAA2B;gBACzB1C,MAAM;gBACNyC,eAAe;gBACfC,aAAa;YACf;YACA,cAAc;gBACZ1C,MAAM;gBACNyC,eAAe;gBACfC,aAAa;YACf;YACA,cAAc;gBACZ1C,MAAM;gBACNyC,eAAe;gBACfC,aAAa;YACf;YACA,sBAAsB;gBACpB1C,MAAM;gBACNyC,eAAe;gBACfC,aAAa;YACf;QACF;QAEA,OACEF,SAAS,CAAC7H,MAAM,IAAI;YAClBqF,MAAMrF;YACN8H,eAAe;YACfC,aAAa;QACf;IAEJ;IAEA;;GAEC,GACD,AAAQpC,MAAMqC,EAAU,EAAiB;QACvC,OAAO,IAAIC,QAAQ,CAACC,UAAY9E,WAAW8E,SAASF;IACtD;IAEA;;GAEC,GACD,AAAQpI,mBAAyB;QAC/B,IAAI,CAACuI,kBAAkB,IAAI,gBAAgB;QAE3C,IAAI,CAAChJ,gBAAgB,GAAGiJ,YACtB,IAAM,IAAI,CAACD,kBAAkB,IAC7B,IAAI,CAACvJ,MAAM,CAAC6B,mBAAmB,IAAI;IAEvC;IAEA;;GAEC,GACD,MAAM0H,qBAAiD;QACrD,MAAMxF,YAAYC,KAAKC,GAAG;QAE1B,IAAI;YACF,MAAMK,aAAa,IAAIC;YACvB,MAAM5D,UAAU6D,WAAW,IAAMF,WAAWG,KAAK,IAAI,QAAQ,oBAAoB;YAEjF,MAAMC,WAAW,MAAMC,MAAM,IAAI,CAAC3E,MAAM,CAACmB,MAAM,IAAI,IAAI;gBACrDyD,QAAQ;gBACRC,SAAS;oBACP,gBAAgB;oBAChB,qBAAqB;oBACrB,aAAa,IAAI,CAAC7E,MAAM,CAACkB,MAAM;gBACjC;gBACA4D,MAAMC,KAAKC,SAAS,CAAC;oBACnB5D,OAAO,IAAI,CAACpB,MAAM,CAACoB,KAAK;oBACxB8B,UAAU;wBAAC;4BAAEyF,MAAM;4BAAQC,SAAS;wBAAK;qBAAE;oBAC3CtF,YAAY;gBACd;gBACA2B,QAAQX,WAAWW,MAAM;YAC3B;YAEAC,aAAavE;YAEb,MAAM8I,UAAUzF,KAAKC,GAAG,KAAKF;YAC7B,MAAM2F,UAAUhF,SAASS,EAAE,IAAIT,SAASgB,MAAM,KAAK,KAAK,gCAAgC;YAExF,IAAI,CAACpF,eAAe,GAAG;gBACrBoJ;gBACAD;gBACApD,OAAOqD,UAAUjI,YAAY,CAAC,QAAQ,EAAEiD,SAASgB,MAAM,EAAE;gBACzDiE,WAAW,IAAI3F;YACjB;YAEA,IAAI,CAAC/D,MAAM,CAACyD,KAAK,CAAC,qCAAqC,IAAI,CAACpD,eAAe;YAC3E,IAAI,CAAC8F,IAAI,CAAC,gBAAgB,IAAI,CAAC9F,eAAe;YAE9C,OAAO,IAAI,CAACA,eAAe;QAC7B,EAAE,OAAO+F,OAAO;YACd,MAAMoD,UAAUzF,KAAKC,GAAG,KAAKF;YAE7B,IAAI,CAACzD,eAAe,GAAG;gBACrBoJ,SAAS;gBACTD;gBACApD,OAAOA,iBAAiBkC,QAAQlC,MAAMb,OAAO,GAAG;gBAChDmE,WAAW,IAAI3F;YACjB;YAEA,IAAI,CAAC/D,MAAM,CAAC6G,IAAI,CAAC,kCAAkC,IAAI,CAACxG,eAAe;YACvE,IAAI,CAAC8F,IAAI,CAAC,gBAAgB,IAAI,CAAC9F,eAAe;YAE9C,OAAO,IAAI,CAACA,eAAe;QAC7B;IACF;IAEA;;GAEC,GACDsJ,kBAAiD;QAC/C,OAAO,IAAI,CAACtJ,eAAe;IAC7B;IAEA;;GAEC,GACD,AAAQmF,eAAeiB,UAAkB,EAAEpB,SAAc,EAAkB;QACzE,MAAME,UAAUF,UAAUe,KAAK,EAAEb,WAAWF,UAAUE,OAAO,IAAI;QAEjE,OAAQkB;YACN,KAAK;gBACH,OAAO,IAAIhH,sBAAsB8F,SAASF;YAC5C,KAAK;YACL,KAAK;gBACH,OAAO,IAAI7F,0BAA0B+F,SAASF;YAChD,KAAK;gBACH,MAAMuE,aAAavE,UAAUe,KAAK,EAAEyD;gBACpC,OAAO,IAAIxK,qBAAqBkG,SAASqE,YAAYvE;YACvD,KAAK;gBACH,OAAO,IAAIlG,0BAA0BoG,SAASF;YAChD,KAAK;gBACH,OAAO,IAAIjG,8BAA8BmG,SAASF;YACpD;gBACE,OAAO,IAAInG,eAAeqG,SAASkB,YAAYA,cAAc,KAAKpB;QACtE;IACF;IAEA;;GAEC,GACD,AAAQgB,eAAeD,KAAc,EAAkB;QACrD,IAAIA,iBAAiBlH,gBAAgB;YACnC,OAAOkH;QACT;QAEA,IAAIA,iBAAiBkC,OAAO;YAC1B,iBAAiB;YACjB,IAAIlC,MAAMb,OAAO,CAACrB,QAAQ,CAAC,mBAAmBkC,MAAMb,OAAO,CAACrB,QAAQ,CAAC,iBAAiB;gBACpF,OAAO,IAAI3E,mBAAmB6G,MAAMb,OAAO;YAC7C;YAEA,iBAAiB;YACjB,IAAIa,MAAMI,IAAI,KAAK,gBAAgBJ,MAAMb,OAAO,CAACrB,QAAQ,CAAC,YAAY;gBACpE,OAAO,IAAI5E,mBAAmB8G,MAAMb,OAAO,EAAE,IAAI,CAACxF,MAAM,CAACW,OAAO,IAAI;YACtE;QACF;QAEA,OAAO,IAAIxB,eACTkH,iBAAiBkC,QAAQlC,MAAMb,OAAO,GAAGuE,OAAO1D,QAChD5E,WACA;IAEJ;IAEA;;GAEC,GACD,AAAQuF,oBAAoB3C,OAAe,EAAEgC,KAAqB,EAAU;QAC1E,wDAAwD;QACxD,IAAIA,iBAAiB/G,wBAAwB+G,MAAMwD,UAAU,EAAE;YAC7D,OAAOxD,MAAMwD,UAAU,GAAG,MAAM,0BAA0B;QAC5D;QAEA,MAAMG,YAAY,IAAI,CAAChK,MAAM,CAAC4B,UAAU,IAAI;QAC5C,MAAMqI,WAAW,OAAO,iBAAiB;QAEzC,yDAAyD;QACzD,IAAIlD,QAAQmD,KAAKC,GAAG,CAACH,YAAYE,KAAKE,GAAG,CAAC,GAAG/F,UAAU4F;QAEvD,wCAAwC;QACxC,IAAI,IAAI,CAACjK,MAAM,CAAC8B,WAAW,EAAE;YAC3B,MAAMuI,SAASH,KAAKI,MAAM,KAAK,MAAMvD,OAAO,mBAAmB;YAC/DA,QAAQA,QAAQsD;QAClB;QAEA,OAAOH,KAAKK,KAAK,CAACxD;IACpB;IAEA;;GAEC,GACD,AAAQF,YAAYR,KAAqB,EAAQ;QAC/C,MAAMmE,YAAY7K,qBAAqB0G;QAEvC,IAAI,CAACpG,MAAM,CAACoG,KAAK,CAAC,GAAGmE,UAAUC,KAAK,CAAC,EAAE,EAAED,UAAUhF,OAAO,EAAE,EAAE;YAC5Da,OAAOA,MAAMb,OAAO;YACpBgB,MAAMH,MAAMG,IAAI;YAChBE,YAAYL,MAAMK,UAAU;YAC5BE,WAAWP,MAAMO,SAAS;YAC1B8D,SAASrE,MAAMqE,OAAO;QACxB;QAEA,gCAAgC;QAChC,IAAI,IAAI,CAACzK,MAAM,CAAC0K,KAAK,KAAK,WAAWH,UAAUI,WAAW,CAAChH,MAAM,GAAG,GAAG;YACrE,IAAI,CAAC3D,MAAM,CAACyD,KAAK,CAAC,qCAAqC8G,UAAUI,WAAW;QAC9E;QAEA,IAAI,CAACxE,IAAI,CAAC,SAAS;YACjBC;YACAwE,cAAcL;QAChB;IACF;IAEA;;GAEC,GACDM,UAAgB;QACd,IAAI,IAAI,CAACvK,gBAAgB,EAAE;YACzBwK,cAAc,IAAI,CAACxK,gBAAgB;YACnC,IAAI,CAACA,gBAAgB,GAAGkB;QAC1B;QACA,IAAI,CAACuJ,kBAAkB;IACzB;AACF"}
|
|
@@ -85,7 +85,7 @@ Key deliverables:
|
|
|
85
85
|
selfLoopingPrompt: `
|
|
86
86
|
Phase 1 (State Machine) complete with {consensusScore}% consensus.
|
|
87
87
|
|
|
88
|
-
✅ State transitions operational
|
|
88
|
+
✅ State transitions operational
|
|
89
89
|
✅ SDK auto-checkpoints working
|
|
90
90
|
|
|
91
91
|
🚀 **IMMEDIATELY proceed to Phase 2: Dependency Graph**
|
|
@@ -0,0 +1,247 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scope Control System for CFN Loop Product Owner
|
|
3
|
+
*
|
|
4
|
+
* Provides scope boundary management, cost function calculation,
|
|
5
|
+
* and scope validation for GOAP-based Product Owner decisions.
|
|
6
|
+
*/ export class ScopeControl {
|
|
7
|
+
/**
|
|
8
|
+
* Initialize scope boundaries at project start
|
|
9
|
+
*/ static createScopeBoundaries(config) {
|
|
10
|
+
return {
|
|
11
|
+
primary_goal: config.primaryGoal,
|
|
12
|
+
in_scope: config.inScope,
|
|
13
|
+
out_of_scope: config.outOfScope,
|
|
14
|
+
risk_profile: config.riskProfile,
|
|
15
|
+
decision_authority_config: {
|
|
16
|
+
auto_approve_threshold: config.autoApproveThreshold || 0.90,
|
|
17
|
+
auto_relaunch_max_iteration: config.maxIterations || 10,
|
|
18
|
+
escalation_criteria: config.escalationCriteria || [
|
|
19
|
+
'Breaking changes to public API',
|
|
20
|
+
'Security model changes affecting other systems',
|
|
21
|
+
'Budget impact >$50 in single phase'
|
|
22
|
+
]
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Classify validator concern as in-scope or out-of-scope
|
|
28
|
+
*/ static classifyConcern(concern, scope) {
|
|
29
|
+
const concernLower = concern.concern.toLowerCase();
|
|
30
|
+
const recommendationLower = concern.recommendation.toLowerCase();
|
|
31
|
+
// Check if concern relates to in-scope items
|
|
32
|
+
const inScopeMatch = scope.in_scope.some((item)=>concernLower.includes(item.toLowerCase()) || recommendationLower.includes(item.toLowerCase()));
|
|
33
|
+
// Check if concern relates to out-of-scope items
|
|
34
|
+
const outOfScopeMatch = scope.out_of_scope.some((item)=>concernLower.includes(item.toLowerCase()) || recommendationLower.includes(item.toLowerCase()));
|
|
35
|
+
if (outOfScopeMatch && !inScopeMatch) {
|
|
36
|
+
return {
|
|
37
|
+
concern,
|
|
38
|
+
classification: 'out-of-scope',
|
|
39
|
+
reasoning: `Recommendation involves out-of-scope items: ${scope.out_of_scope.filter((item)=>concernLower.includes(item.toLowerCase()) || recommendationLower.includes(item.toLowerCase())).join(', ')}`,
|
|
40
|
+
cost_penalty: 1000 // Prohibitive cost
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
if (inScopeMatch || concern.severity === 'critical') {
|
|
44
|
+
return {
|
|
45
|
+
concern,
|
|
46
|
+
classification: 'in-scope',
|
|
47
|
+
reasoning: inScopeMatch ? `Relates to in-scope items: ${scope.in_scope.filter((item)=>concernLower.includes(item.toLowerCase()) || recommendationLower.includes(item.toLowerCase())).join(', ')}` : `Critical severity requires attention regardless of explicit scope match`,
|
|
48
|
+
cost_penalty: concern.severity === 'critical' ? 20 : 50
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
// Default: treat as in-scope if unclear (safer approach)
|
|
52
|
+
return {
|
|
53
|
+
concern,
|
|
54
|
+
classification: 'in-scope',
|
|
55
|
+
reasoning: 'No explicit out-of-scope match; defaulting to in-scope for safety',
|
|
56
|
+
cost_penalty: 50
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Calculate GOAP action cost based on scope impact
|
|
61
|
+
*/ static calculateActionCost(action, state) {
|
|
62
|
+
let cost = action.baseComplexity * 10;
|
|
63
|
+
// Scope impact (CRITICAL)
|
|
64
|
+
if (action.scopeImpact === 'expands') {
|
|
65
|
+
cost += 1000; // Prohibitive (effectively blocked)
|
|
66
|
+
}
|
|
67
|
+
if (action.scopeImpact === 'reduces') {
|
|
68
|
+
cost += 500; // Heavily penalized
|
|
69
|
+
}
|
|
70
|
+
// Add penalties from addressed concerns
|
|
71
|
+
if (action.addressesConcerns) {
|
|
72
|
+
action.addressesConcerns.forEach((classification)=>{
|
|
73
|
+
cost += classification.cost_penalty;
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
// Iteration pressure (prefer faster solutions near limits)
|
|
77
|
+
if (state.loop2Iteration >= 8) {
|
|
78
|
+
cost *= 1.5;
|
|
79
|
+
}
|
|
80
|
+
// Blocker severity
|
|
81
|
+
cost += state.criticalBlockers * 20;
|
|
82
|
+
return Math.round(cost);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Generate memory storage payload for scope boundaries
|
|
86
|
+
*/ static generateMemoryPayload(scope) {
|
|
87
|
+
return {
|
|
88
|
+
namespace: 'scope-control',
|
|
89
|
+
key: 'project-boundaries',
|
|
90
|
+
value: JSON.stringify(scope)
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Parse validator concerns from consensus feedback
|
|
95
|
+
*/ static parseValidatorConcerns(validatorFeedback, validatorTypes) {
|
|
96
|
+
return Object.entries(validatorFeedback).map(([validator, feedback])=>{
|
|
97
|
+
// Infer severity from keywords
|
|
98
|
+
const feedbackLower = feedback.toLowerCase();
|
|
99
|
+
let severity = 'medium';
|
|
100
|
+
if (feedbackLower.includes('critical') || feedbackLower.includes('blocker') || feedbackLower.includes('security vulnerability') || feedbackLower.includes('data loss')) {
|
|
101
|
+
severity = 'critical';
|
|
102
|
+
} else if (feedbackLower.includes('important') || feedbackLower.includes('significant') || feedbackLower.includes('must')) {
|
|
103
|
+
severity = 'high';
|
|
104
|
+
} else if (feedbackLower.includes('minor') || feedbackLower.includes('nice to have') || feedbackLower.includes('consider')) {
|
|
105
|
+
severity = 'low';
|
|
106
|
+
}
|
|
107
|
+
return {
|
|
108
|
+
validator,
|
|
109
|
+
concern: feedback,
|
|
110
|
+
recommendation: feedback,
|
|
111
|
+
severity
|
|
112
|
+
};
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Create backlog items for deferred out-of-scope concerns
|
|
117
|
+
*/ static createBacklogItems(outOfScopeConcerns) {
|
|
118
|
+
return outOfScopeConcerns.map((classification)=>({
|
|
119
|
+
title: `${classification.concern.validator}: ${classification.concern.concern.substring(0, 60)}...`,
|
|
120
|
+
description: classification.concern.recommendation,
|
|
121
|
+
source: classification.concern.validator,
|
|
122
|
+
deferred_at: new Date().toISOString(),
|
|
123
|
+
reasoning: classification.reasoning
|
|
124
|
+
}));
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Validate scope boundaries structure
|
|
128
|
+
*/ static validateScopeBoundaries(scope) {
|
|
129
|
+
return typeof scope === 'object' && typeof scope.primary_goal === 'string' && Array.isArray(scope.in_scope) && Array.isArray(scope.out_of_scope) && typeof scope.risk_profile === 'string' && [
|
|
130
|
+
'internal-only-low-risk',
|
|
131
|
+
'public-facing-medium-risk',
|
|
132
|
+
'critical-high-risk'
|
|
133
|
+
].includes(scope.risk_profile) && typeof scope.decision_authority_config === 'object' && typeof scope.decision_authority_config.auto_approve_threshold === 'number' && typeof scope.decision_authority_config.auto_relaunch_max_iteration === 'number' && Array.isArray(scope.decision_authority_config.escalation_criteria);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Example scope boundaries for common scenarios
|
|
137
|
+
*/ static getExampleScopes() {
|
|
138
|
+
return {
|
|
139
|
+
'help-system': ScopeControl.createScopeBoundaries({
|
|
140
|
+
primaryGoal: 'Implement help coordinator system',
|
|
141
|
+
inScope: [
|
|
142
|
+
'help routing via MessageBroker',
|
|
143
|
+
'agent capability matching',
|
|
144
|
+
'waiting pool management',
|
|
145
|
+
'state machine integration (HELPING state)'
|
|
146
|
+
],
|
|
147
|
+
outOfScope: [
|
|
148
|
+
'ML-based help suggestions',
|
|
149
|
+
'External API integrations',
|
|
150
|
+
'Advanced analytics',
|
|
151
|
+
'JWT authentication',
|
|
152
|
+
'OAuth providers'
|
|
153
|
+
],
|
|
154
|
+
riskProfile: 'internal-only-low-risk'
|
|
155
|
+
}),
|
|
156
|
+
'user-auth': ScopeControl.createScopeBoundaries({
|
|
157
|
+
primaryGoal: 'Build user authentication system',
|
|
158
|
+
inScope: [
|
|
159
|
+
'user registration and login',
|
|
160
|
+
'password hashing',
|
|
161
|
+
'session management',
|
|
162
|
+
'basic RBAC'
|
|
163
|
+
],
|
|
164
|
+
outOfScope: [
|
|
165
|
+
'social login',
|
|
166
|
+
'passwordless authentication',
|
|
167
|
+
'advanced MFA',
|
|
168
|
+
'SSO integration'
|
|
169
|
+
],
|
|
170
|
+
riskProfile: 'public-facing-medium-risk',
|
|
171
|
+
escalationCriteria: [
|
|
172
|
+
'Changes to password storage mechanism',
|
|
173
|
+
'Modifications to session token generation',
|
|
174
|
+
'Security model changes'
|
|
175
|
+
]
|
|
176
|
+
}),
|
|
177
|
+
'payment-processing': ScopeControl.createScopeBoundaries({
|
|
178
|
+
primaryGoal: 'Integrate payment processing',
|
|
179
|
+
inScope: [
|
|
180
|
+
'Stripe API integration',
|
|
181
|
+
'payment intent creation',
|
|
182
|
+
'webhook handling',
|
|
183
|
+
'basic refund support'
|
|
184
|
+
],
|
|
185
|
+
outOfScope: [
|
|
186
|
+
'multi-currency support',
|
|
187
|
+
'subscription billing',
|
|
188
|
+
'split payments',
|
|
189
|
+
'cryptocurrency'
|
|
190
|
+
],
|
|
191
|
+
riskProfile: 'critical-high-risk',
|
|
192
|
+
autoApproveThreshold: 0.95,
|
|
193
|
+
escalationCriteria: [
|
|
194
|
+
'Changes to payment data handling',
|
|
195
|
+
'Modifications to webhook security',
|
|
196
|
+
'Budget impact >$100 in single phase',
|
|
197
|
+
'PCI DSS compliance concerns'
|
|
198
|
+
]
|
|
199
|
+
})
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
} /**
|
|
203
|
+
* Example usage in Product Owner agent:
|
|
204
|
+
*
|
|
205
|
+
* // At project start:
|
|
206
|
+
* const scope = ScopeControl.createScopeBoundaries({
|
|
207
|
+
* primaryGoal: "Implement help coordinator system",
|
|
208
|
+
* inScope: ["help routing", "agent matching"],
|
|
209
|
+
* outOfScope: ["ML features", "external APIs"],
|
|
210
|
+
* riskProfile: "internal-only-low-risk"
|
|
211
|
+
* });
|
|
212
|
+
*
|
|
213
|
+
* // Store in memory:
|
|
214
|
+
* const payload = ScopeControl.generateMemoryPayload(scope);
|
|
215
|
+
* await memoryUsage({
|
|
216
|
+
* action: "store",
|
|
217
|
+
* namespace: payload.namespace,
|
|
218
|
+
* key: payload.key,
|
|
219
|
+
* value: payload.value
|
|
220
|
+
* });
|
|
221
|
+
*
|
|
222
|
+
* // In Product Owner decision:
|
|
223
|
+
* const concerns = ScopeControl.parseValidatorConcerns(validatorFeedback);
|
|
224
|
+
* const classifications = concerns.map(c =>
|
|
225
|
+
* ScopeControl.classifyConcern(c, scope)
|
|
226
|
+
* );
|
|
227
|
+
*
|
|
228
|
+
* const inScopeConcerns = classifications.filter(c => c.classification === 'in-scope');
|
|
229
|
+
* const outOfScopeConcerns = classifications.filter(c => c.classification === 'out-of-scope');
|
|
230
|
+
*
|
|
231
|
+
* if (outOfScopeConcerns.length > 0) {
|
|
232
|
+
* const backlogItems = ScopeControl.createBacklogItems(outOfScopeConcerns);
|
|
233
|
+
* // Defer to backlog, approve phase
|
|
234
|
+
* }
|
|
235
|
+
*
|
|
236
|
+
* if (inScopeConcerns.length > 0) {
|
|
237
|
+
* const cost = ScopeControl.calculateActionCost({
|
|
238
|
+
* name: "relaunch_loop3",
|
|
239
|
+
* baseComplexity: 3,
|
|
240
|
+
* scopeImpact: "maintains",
|
|
241
|
+
* addressesConcerns: inScopeConcerns
|
|
242
|
+
* }, state);
|
|
243
|
+
* // PROCEED with Loop 3 relaunch
|
|
244
|
+
* }
|
|
245
|
+
*/
|
|
246
|
+
|
|
247
|
+
//# sourceMappingURL=scope-control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/cfn-loop/scope-control.ts"],"names":["ScopeControl","createScopeBoundaries","config","primary_goal","primaryGoal","in_scope","inScope","out_of_scope","outOfScope","risk_profile","riskProfile","decision_authority_config","auto_approve_threshold","autoApproveThreshold","auto_relaunch_max_iteration","maxIterations","escalation_criteria","escalationCriteria","classifyConcern","concern","scope","concernLower","toLowerCase","recommendationLower","recommendation","inScopeMatch","some","item","includes","outOfScopeMatch","classification","reasoning","filter","join","cost_penalty","severity","calculateActionCost","action","state","cost","baseComplexity","scopeImpact","addressesConcerns","forEach","loop2Iteration","criticalBlockers","Math","round","generateMemoryPayload","namespace","key","value","JSON","stringify","parseValidatorConcerns","validatorFeedback","validatorTypes","Object","entries","map","validator","feedback","feedbackLower","createBacklogItems","outOfScopeConcerns","title","substring","description","source","deferred_at","Date","toISOString","validateScopeBoundaries","Array","isArray","getExampleScopes"],"mappings":"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"}
|