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
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* - Maximum: 80,000 tokens (supports large code generation tasks)
|
|
8
8
|
*/ import { BaseProvider } from "./base-provider.js";
|
|
9
9
|
import { LLMProviderError } from "./types.js";
|
|
10
|
+
import { incrementMetric, recordTiming } from "../observability/metrics-counter.js";
|
|
10
11
|
export class ZaiProvider extends BaseProvider {
|
|
11
12
|
name = "zai";
|
|
12
13
|
capabilities = {
|
|
@@ -67,7 +68,14 @@ export class ZaiProvider extends BaseProvider {
|
|
|
67
68
|
});
|
|
68
69
|
}
|
|
69
70
|
async doComplete(request) {
|
|
71
|
+
const startTime = Date.now();
|
|
70
72
|
const model = request.model || this.config.model;
|
|
73
|
+
// Track API request
|
|
74
|
+
incrementMetric('claude.api.request', 1, {
|
|
75
|
+
model,
|
|
76
|
+
provider: 'z.ai',
|
|
77
|
+
stream: 'false'
|
|
78
|
+
});
|
|
71
79
|
// Build request payload
|
|
72
80
|
const payload = {
|
|
73
81
|
model,
|
|
@@ -79,34 +87,75 @@ export class ZaiProvider extends BaseProvider {
|
|
|
79
87
|
max_tokens: Math.max(201, request.maxTokens ?? this.config.maxTokens ?? 8192),
|
|
80
88
|
stream: false
|
|
81
89
|
};
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
90
|
+
try {
|
|
91
|
+
// Call Z.ai API
|
|
92
|
+
const response = await this.callZaiAPI("/chat/completions", payload);
|
|
93
|
+
// Track success duration
|
|
94
|
+
recordTiming('claude.api.duration', Date.now() - startTime, {
|
|
95
|
+
model,
|
|
96
|
+
status: 'success',
|
|
97
|
+
stream: 'false'
|
|
98
|
+
});
|
|
99
|
+
// Track token usage
|
|
100
|
+
incrementMetric('claude.tokens.input', response.usage.prompt_tokens, {
|
|
101
|
+
model
|
|
102
|
+
});
|
|
103
|
+
incrementMetric('claude.tokens.output', response.usage.completion_tokens, {
|
|
104
|
+
model
|
|
105
|
+
});
|
|
106
|
+
incrementMetric('claude.tokens.total', response.usage.total_tokens, {
|
|
107
|
+
model
|
|
108
|
+
});
|
|
109
|
+
// Calculate cost
|
|
110
|
+
const pricing = this.capabilities.pricing[model];
|
|
111
|
+
const promptCost = response.usage.prompt_tokens / 1000 * pricing.promptCostPer1k;
|
|
112
|
+
const completionCost = response.usage.completion_tokens / 1000 * pricing.completionCostPer1k;
|
|
113
|
+
// Convert to unified response format
|
|
114
|
+
return {
|
|
115
|
+
id: response.id,
|
|
116
|
+
model,
|
|
117
|
+
provider: "zai",
|
|
118
|
+
content: response.choices[0].message.content,
|
|
119
|
+
usage: {
|
|
120
|
+
promptTokens: response.usage.prompt_tokens,
|
|
121
|
+
completionTokens: response.usage.completion_tokens,
|
|
122
|
+
totalTokens: response.usage.total_tokens
|
|
123
|
+
},
|
|
124
|
+
cost: {
|
|
125
|
+
promptCost,
|
|
126
|
+
completionCost,
|
|
127
|
+
totalCost: promptCost + completionCost,
|
|
128
|
+
currency: "USD"
|
|
129
|
+
},
|
|
130
|
+
finishReason: response.choices[0].finish_reason === "stop" ? "stop" : "length"
|
|
131
|
+
};
|
|
132
|
+
} catch (error) {
|
|
133
|
+
// Track error duration and metrics
|
|
134
|
+
recordTiming('claude.api.duration', Date.now() - startTime, {
|
|
135
|
+
model,
|
|
136
|
+
status: 'error',
|
|
137
|
+
stream: 'false'
|
|
138
|
+
});
|
|
139
|
+
incrementMetric('claude.api.error', 1, {
|
|
140
|
+
model,
|
|
141
|
+
errorType: error instanceof Error ? error.name : 'Unknown',
|
|
142
|
+
statusCode: 'unknown',
|
|
143
|
+
retryable: 'false'
|
|
144
|
+
});
|
|
145
|
+
throw error;
|
|
146
|
+
}
|
|
107
147
|
}
|
|
108
148
|
async *doStreamComplete(request) {
|
|
149
|
+
const startTime = Date.now();
|
|
109
150
|
const model = request.model || this.config.model;
|
|
151
|
+
let totalInputTokens = 0;
|
|
152
|
+
let totalOutputTokens = 0;
|
|
153
|
+
// Track API request
|
|
154
|
+
incrementMetric('claude.api.request', 1, {
|
|
155
|
+
model,
|
|
156
|
+
provider: 'z.ai',
|
|
157
|
+
stream: 'true'
|
|
158
|
+
});
|
|
110
159
|
// Build request payload
|
|
111
160
|
const payload = {
|
|
112
161
|
model,
|
|
@@ -118,84 +167,134 @@ export class ZaiProvider extends BaseProvider {
|
|
|
118
167
|
max_tokens: Math.max(201, request.maxTokens ?? this.config.maxTokens ?? 8192),
|
|
119
168
|
stream: true
|
|
120
169
|
};
|
|
121
|
-
// Call Z.ai streaming API
|
|
122
|
-
const response = await fetch(`${this.baseURL}/chat/completions`, {
|
|
123
|
-
method: "POST",
|
|
124
|
-
headers: {
|
|
125
|
-
"Content-Type": "application/json",
|
|
126
|
-
Authorization: `Bearer ${this.apiKey}`
|
|
127
|
-
},
|
|
128
|
-
body: JSON.stringify(payload)
|
|
129
|
-
});
|
|
130
|
-
if (!response.ok) {
|
|
131
|
-
throw new LLMProviderError(`Z.ai API error: ${response.status} ${response.statusText}`, "API_ERROR", "zai", undefined, response.status >= 500);
|
|
132
|
-
}
|
|
133
|
-
if (!response.body) {
|
|
134
|
-
throw new LLMProviderError("No response body from Z.ai API", "NO_RESPONSE_BODY", "zai");
|
|
135
|
-
}
|
|
136
|
-
// Process SSE stream
|
|
137
|
-
const reader = response.body.getReader();
|
|
138
|
-
const decoder = new TextDecoder();
|
|
139
|
-
let buffer = "";
|
|
140
|
-
let totalTokens = 0;
|
|
141
170
|
try {
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
171
|
+
// Call Z.ai streaming API
|
|
172
|
+
const response = await fetch(`${this.baseURL}/chat/completions`, {
|
|
173
|
+
method: "POST",
|
|
174
|
+
headers: {
|
|
175
|
+
"Content-Type": "application/json",
|
|
176
|
+
Authorization: `Bearer ${this.apiKey}`
|
|
177
|
+
},
|
|
178
|
+
body: JSON.stringify(payload)
|
|
179
|
+
});
|
|
180
|
+
if (!response.ok) {
|
|
181
|
+
throw new LLMProviderError(`Z.ai API error: ${response.status} ${response.statusText}`, "API_ERROR", "zai", undefined, response.status >= 500);
|
|
182
|
+
}
|
|
183
|
+
if (!response.body) {
|
|
184
|
+
throw new LLMProviderError("No response body from Z.ai API", "NO_RESPONSE_BODY", "zai");
|
|
185
|
+
}
|
|
186
|
+
// Process SSE stream
|
|
187
|
+
const reader = response.body.getReader();
|
|
188
|
+
const decoder = new TextDecoder();
|
|
189
|
+
let buffer = "";
|
|
190
|
+
let totalTokens = 0;
|
|
191
|
+
try {
|
|
192
|
+
while(true){
|
|
193
|
+
const { done, value } = await reader.read();
|
|
194
|
+
if (done) break;
|
|
195
|
+
buffer += decoder.decode(value, {
|
|
196
|
+
stream: true
|
|
197
|
+
});
|
|
198
|
+
const lines = buffer.split("\n");
|
|
199
|
+
buffer = lines.pop() || "";
|
|
200
|
+
for (const line of lines){
|
|
201
|
+
if (!line.trim() || line.startsWith(":")) continue;
|
|
202
|
+
if (line.startsWith("data: ")) {
|
|
203
|
+
const data = line.slice(6);
|
|
204
|
+
if (data === "[DONE]") continue;
|
|
205
|
+
try {
|
|
206
|
+
const event = JSON.parse(data);
|
|
207
|
+
if (event.choices?.[0]?.delta?.content) {
|
|
208
|
+
yield {
|
|
209
|
+
type: "content",
|
|
210
|
+
delta: {
|
|
211
|
+
content: event.choices[0].delta.content
|
|
212
|
+
}
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
if (event.usage) {
|
|
216
|
+
totalTokens = event.usage.total_tokens;
|
|
217
|
+
totalInputTokens = event.usage.prompt_tokens || 0;
|
|
218
|
+
totalOutputTokens = event.usage.completion_tokens || 0;
|
|
219
|
+
}
|
|
220
|
+
} catch (parseError) {
|
|
221
|
+
this.logger.warn("Failed to parse SSE event", {
|
|
222
|
+
line,
|
|
223
|
+
error: parseError
|
|
224
|
+
});
|
|
167
225
|
}
|
|
168
|
-
} catch (parseError) {
|
|
169
|
-
this.logger.warn("Failed to parse SSE event", {
|
|
170
|
-
line,
|
|
171
|
-
error: parseError
|
|
172
|
-
});
|
|
173
226
|
}
|
|
174
227
|
}
|
|
175
228
|
}
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
229
|
+
// Emit final usage statistics
|
|
230
|
+
const pricing = this.capabilities.pricing[model];
|
|
231
|
+
const promptTokens = totalInputTokens || this.estimateTokens(JSON.stringify(request.messages));
|
|
232
|
+
const completionTokens = totalOutputTokens || totalTokens - promptTokens;
|
|
233
|
+
const promptCost = promptTokens / 1000 * pricing.promptCostPer1k;
|
|
234
|
+
const completionCost = completionTokens / 1000 * pricing.completionCostPer1k;
|
|
235
|
+
// Track success duration
|
|
236
|
+
recordTiming('claude.api.duration', Date.now() - startTime, {
|
|
237
|
+
model,
|
|
238
|
+
status: 'success',
|
|
239
|
+
stream: 'true'
|
|
240
|
+
});
|
|
241
|
+
// Track token usage
|
|
242
|
+
if (totalInputTokens > 0 || totalOutputTokens > 0) {
|
|
243
|
+
incrementMetric('claude.tokens.input', totalInputTokens, {
|
|
244
|
+
model
|
|
245
|
+
});
|
|
246
|
+
incrementMetric('claude.tokens.output', totalOutputTokens, {
|
|
247
|
+
model
|
|
248
|
+
});
|
|
249
|
+
incrementMetric('claude.tokens.total', totalInputTokens + totalOutputTokens, {
|
|
250
|
+
model
|
|
251
|
+
});
|
|
195
252
|
}
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
253
|
+
yield {
|
|
254
|
+
type: "done",
|
|
255
|
+
usage: {
|
|
256
|
+
promptTokens,
|
|
257
|
+
completionTokens,
|
|
258
|
+
totalTokens
|
|
259
|
+
},
|
|
260
|
+
cost: {
|
|
261
|
+
promptCost,
|
|
262
|
+
completionCost,
|
|
263
|
+
totalCost: promptCost + completionCost,
|
|
264
|
+
currency: "USD"
|
|
265
|
+
}
|
|
266
|
+
};
|
|
267
|
+
} catch (error) {
|
|
268
|
+
// Track error duration and metrics
|
|
269
|
+
recordTiming('claude.api.duration', Date.now() - startTime, {
|
|
270
|
+
model,
|
|
271
|
+
status: 'error',
|
|
272
|
+
stream: 'true'
|
|
273
|
+
});
|
|
274
|
+
incrementMetric('claude.api.error', 1, {
|
|
275
|
+
model,
|
|
276
|
+
errorType: error instanceof Error ? error.name : 'Unknown',
|
|
277
|
+
statusCode: 'unknown',
|
|
278
|
+
retryable: 'false'
|
|
279
|
+
});
|
|
280
|
+
throw error;
|
|
281
|
+
} finally{
|
|
282
|
+
reader.releaseLock();
|
|
283
|
+
}
|
|
284
|
+
} catch (error) {
|
|
285
|
+
// Track error duration and metrics
|
|
286
|
+
recordTiming('claude.api.duration', Date.now() - startTime, {
|
|
287
|
+
model,
|
|
288
|
+
status: 'error',
|
|
289
|
+
stream: 'true'
|
|
290
|
+
});
|
|
291
|
+
incrementMetric('claude.api.error', 1, {
|
|
292
|
+
model,
|
|
293
|
+
errorType: error instanceof Error ? error.name : 'Unknown',
|
|
294
|
+
statusCode: 'unknown',
|
|
295
|
+
retryable: 'false'
|
|
296
|
+
});
|
|
297
|
+
throw error;
|
|
199
298
|
}
|
|
200
299
|
}
|
|
201
300
|
async listModels() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/providers/zai-provider.ts"],"names":["BaseProvider","LLMProviderError","ZaiProvider","name","capabilities","supportedModels","maxContextLength","maxOutputTokens","supportsStreaming","supportsFunctionCalling","supportsSystemMessages","supportsVision","supportsAudio","supportsTools","supportsFineTuning","supportsEmbeddings","supportsLogprobs","supportsBatching","pricing","promptCostPer1k","completionCostPer1k","currency","apiKey","baseURL","doInitialize","config","Error","logger","info","model","doComplete","request","payload","messages","filter","msg","role","map","content","temperature","max_tokens","Math","max","maxTokens","
|
|
1
|
+
{"version":3,"sources":["../../../../src/providers/zai-provider.ts"],"names":["BaseProvider","LLMProviderError","incrementMetric","recordTiming","ZaiProvider","name","capabilities","supportedModels","maxContextLength","maxOutputTokens","supportsStreaming","supportsFunctionCalling","supportsSystemMessages","supportsVision","supportsAudio","supportsTools","supportsFineTuning","supportsEmbeddings","supportsLogprobs","supportsBatching","pricing","promptCostPer1k","completionCostPer1k","currency","apiKey","baseURL","doInitialize","config","Error","logger","info","model","doComplete","request","startTime","Date","now","provider","stream","payload","messages","filter","msg","role","map","content","temperature","max_tokens","Math","max","maxTokens","response","callZaiAPI","status","usage","prompt_tokens","completion_tokens","total_tokens","promptCost","completionCost","id","choices","message","promptTokens","completionTokens","totalTokens","cost","totalCost","finishReason","finish_reason","error","errorType","statusCode","retryable","doStreamComplete","totalInputTokens","totalOutputTokens","fetch","method","headers","Authorization","body","JSON","stringify","ok","statusText","undefined","reader","getReader","decoder","TextDecoder","buffer","done","value","read","decode","lines","split","pop","line","trim","startsWith","data","slice","event","parse","delta","type","parseError","warn","estimateTokens","releaseLock","listModels","getModelInfo","modelNames","modelDescriptions","description","contextLength","supportedFeatures","doHealthCheck","healthy","timestamp","details","endpoint","url","errorBody","text","errorMessage","errorJson","json","String","destroy"],"mappings":"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"}
|