@codemieai/code 0.15.2 → 0.15.4
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/dist/agents/core/AgentCLI.d.ts.map +1 -1
- package/dist/agents/core/AgentCLI.js +9 -0
- package/dist/agents/core/AgentCLI.js.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.js +34 -9
- package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
- package/dist/agents/plugins/claude/claude.models.d.ts +58 -0
- package/dist/agents/plugins/claude/claude.models.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.models.js +196 -10
- package/dist/agents/plugins/claude/claude.models.js.map +1 -1
- package/dist/agents/plugins/claude/claude.plugin.d.ts +1 -1
- package/dist/agents/plugins/claude/claude.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.plugin.js +149 -47
- package/dist/agents/plugins/claude/claude.plugin.js.map +1 -1
- package/dist/agents/plugins/claude/claude.session.d.ts +17 -1
- package/dist/agents/plugins/claude/claude.session.d.ts.map +1 -1
- package/dist/agents/plugins/claude/claude.session.js +4 -0
- package/dist/agents/plugins/claude/claude.session.js.map +1 -1
- package/dist/agents/plugins/claude/plugin/statusline.bundle.mjs +729 -0
- package/dist/agents/plugins/claude/statusline-installer.d.ts +1 -1
- package/dist/agents/plugins/claude/statusline-installer.d.ts.map +1 -1
- package/dist/agents/plugins/claude/statusline-installer.js +41 -3
- package/dist/agents/plugins/claude/statusline-installer.js.map +1 -1
- package/dist/agents/plugins/codex/codex-models.d.ts.map +1 -1
- package/dist/agents/plugins/codex/codex-models.js +109 -8
- package/dist/agents/plugins/codex/codex-models.js.map +1 -1
- package/dist/agents/plugins/codex/codex.correlation.d.ts +39 -0
- package/dist/agents/plugins/codex/codex.correlation.d.ts.map +1 -0
- package/dist/agents/plugins/codex/codex.correlation.js +150 -0
- package/dist/agents/plugins/codex/codex.correlation.js.map +1 -0
- package/dist/agents/plugins/codex/codex.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/codex/codex.plugin.js +8 -40
- package/dist/agents/plugins/codex/codex.plugin.js.map +1 -1
- package/dist/agents/plugins/kimi/kimi.env-model.d.ts +27 -0
- package/dist/agents/plugins/kimi/kimi.env-model.d.ts.map +1 -0
- package/dist/agents/plugins/kimi/kimi.env-model.js +52 -0
- package/dist/agents/plugins/kimi/kimi.env-model.js.map +1 -0
- package/dist/agents/plugins/kimi/kimi.session.d.ts +6 -0
- package/dist/agents/plugins/kimi/kimi.session.d.ts.map +1 -1
- package/dist/agents/plugins/kimi/kimi.session.js +24 -2
- package/dist/agents/plugins/kimi/kimi.session.js.map +1 -1
- package/dist/agents/plugins/opencode/opencode-dynamic-models.d.ts.map +1 -1
- package/dist/agents/plugins/opencode/opencode-dynamic-models.js +4 -5
- package/dist/agents/plugins/opencode/opencode-dynamic-models.js.map +1 -1
- package/dist/agents/plugins/pi/pi.models.d.ts.map +1 -1
- package/dist/agents/plugins/pi/pi.models.js +3 -3
- package/dist/agents/plugins/pi/pi.models.js.map +1 -1
- package/dist/bin/proxy-daemon.js +8 -1
- package/dist/bin/proxy-daemon.js.map +1 -1
- package/dist/cli/commands/analytics/cost/cost-enricher.d.ts +19 -2
- package/dist/cli/commands/analytics/cost/cost-enricher.d.ts.map +1 -1
- package/dist/cli/commands/analytics/cost/cost-enricher.js +171 -14
- package/dist/cli/commands/analytics/cost/cost-enricher.js.map +1 -1
- package/dist/cli/commands/analytics/cost/local-models.d.ts +15 -0
- package/dist/cli/commands/analytics/cost/local-models.d.ts.map +1 -0
- package/dist/cli/commands/analytics/cost/local-models.js +21 -0
- package/dist/cli/commands/analytics/cost/local-models.js.map +1 -0
- package/dist/cli/commands/analytics/cost/types.d.ts +60 -0
- package/dist/cli/commands/analytics/cost/types.d.ts.map +1 -1
- package/dist/cli/commands/analytics/cost/types.js.map +1 -1
- package/dist/cli/commands/analytics/cost/usage-readers.d.ts +25 -2
- package/dist/cli/commands/analytics/cost/usage-readers.d.ts.map +1 -1
- package/dist/cli/commands/analytics/cost/usage-readers.js +61 -3
- package/dist/cli/commands/analytics/cost/usage-readers.js.map +1 -1
- package/dist/cli/commands/analytics/formatter.d.ts +11 -0
- package/dist/cli/commands/analytics/formatter.d.ts.map +1 -1
- package/dist/cli/commands/analytics/formatter.js +28 -0
- package/dist/cli/commands/analytics/formatter.js.map +1 -1
- package/dist/cli/commands/analytics/index.d.ts.map +1 -1
- package/dist/cli/commands/analytics/index.js +70 -73
- package/dist/cli/commands/analytics/index.js.map +1 -1
- package/dist/cli/commands/analytics/otel-loader.d.ts.map +1 -1
- package/dist/cli/commands/analytics/otel-loader.js +60 -14
- package/dist/cli/commands/analytics/otel-loader.js.map +1 -1
- package/dist/cli/commands/analytics/otel-pricing.d.ts +38 -0
- package/dist/cli/commands/analytics/otel-pricing.d.ts.map +1 -0
- package/dist/cli/commands/analytics/otel-pricing.js +33 -0
- package/dist/cli/commands/analytics/otel-pricing.js.map +1 -0
- package/dist/cli/commands/analytics/report/client/app.js +279 -18
- package/dist/cli/commands/analytics/report/output-target.d.ts +22 -0
- package/dist/cli/commands/analytics/report/output-target.d.ts.map +1 -0
- package/dist/cli/commands/analytics/report/output-target.js +56 -0
- package/dist/cli/commands/analytics/report/output-target.js.map +1 -0
- package/dist/cli/commands/analytics/report/payload-builder.d.ts.map +1 -1
- package/dist/cli/commands/analytics/report/payload-builder.js +6 -0
- package/dist/cli/commands/analytics/report/payload-builder.js.map +1 -1
- package/dist/cli/commands/analytics/report/report-generator.d.ts +1 -1
- package/dist/cli/commands/analytics/report/report-generator.js +1 -1
- package/dist/cli/commands/analytics/report/session-report.d.ts +1 -3
- package/dist/cli/commands/analytics/report/session-report.d.ts.map +1 -1
- package/dist/cli/commands/analytics/report/session-report.js +1 -3
- package/dist/cli/commands/analytics/report/session-report.js.map +1 -1
- package/dist/cli/commands/analytics/report/template.html +6 -6
- package/dist/cli/commands/analytics/report/types.d.ts +17 -1
- package/dist/cli/commands/analytics/report/types.d.ts.map +1 -1
- package/dist/cli/commands/analytics/sources/sessions-source.d.ts.map +1 -1
- package/dist/cli/commands/analytics/sources/sessions-source.js +9 -11
- package/dist/cli/commands/analytics/sources/sessions-source.js.map +1 -1
- package/dist/cli/commands/analytics/sources/types.d.ts +0 -2
- package/dist/cli/commands/analytics/sources/types.d.ts.map +1 -1
- package/dist/cli/commands/analytics/types.d.ts +8 -8
- package/dist/cli/commands/analytics/types.d.ts.map +1 -1
- package/dist/cli/commands/assistants/constants.d.ts +4 -0
- package/dist/cli/commands/assistants/constants.d.ts.map +1 -1
- package/dist/cli/commands/assistants/constants.js +4 -0
- package/dist/cli/commands/assistants/constants.js.map +1 -1
- package/dist/cli/commands/assistants/setup/data.d.ts +1 -0
- package/dist/cli/commands/assistants/setup/data.d.ts.map +1 -1
- package/dist/cli/commands/assistants/setup/data.js +55 -10
- package/dist/cli/commands/assistants/setup/data.js.map +1 -1
- package/dist/cli/commands/assistants/setup/helpers.d.ts +1 -1
- package/dist/cli/commands/assistants/setup/helpers.d.ts.map +1 -1
- package/dist/cli/commands/assistants/setup/helpers.js +2 -5
- package/dist/cli/commands/assistants/setup/helpers.js.map +1 -1
- package/dist/cli/commands/assistants/setup/index.d.ts +12 -0
- package/dist/cli/commands/assistants/setup/index.d.ts.map +1 -1
- package/dist/cli/commands/assistants/setup/index.js +148 -20
- package/dist/cli/commands/assistants/setup/index.js.map +1 -1
- package/dist/cli/commands/models.d.ts.map +1 -1
- package/dist/cli/commands/models.js +16 -3
- package/dist/cli/commands/models.js.map +1 -1
- package/dist/cli/commands/profile/display.d.ts +5 -1
- package/dist/cli/commands/profile/display.d.ts.map +1 -1
- package/dist/cli/commands/profile/display.js +5 -1
- package/dist/cli/commands/profile/display.js.map +1 -1
- package/dist/cli/commands/profile/index.d.ts.map +1 -1
- package/dist/cli/commands/profile/index.js +7 -4
- package/dist/cli/commands/profile/index.js.map +1 -1
- package/dist/cli/commands/proxy/connect-orchestrator.d.ts.map +1 -1
- package/dist/cli/commands/proxy/connect-orchestrator.js +3 -4
- package/dist/cli/commands/proxy/connect-orchestrator.js.map +1 -1
- package/dist/cli/commands/proxy/connectors/desktop.d.ts +2 -3
- package/dist/cli/commands/proxy/connectors/desktop.d.ts.map +1 -1
- package/dist/cli/commands/proxy/connectors/desktop.js +9 -25
- package/dist/cli/commands/proxy/connectors/desktop.js.map +1 -1
- package/dist/cli/commands/proxy/connectors/model-name-resolver.d.ts +19 -0
- package/dist/cli/commands/proxy/connectors/model-name-resolver.d.ts.map +1 -0
- package/dist/cli/commands/proxy/connectors/model-name-resolver.js +126 -0
- package/dist/cli/commands/proxy/connectors/model-name-resolver.js.map +1 -0
- package/dist/cli/commands/proxy/connectors/tenant-catalog.d.ts +23 -0
- package/dist/cli/commands/proxy/connectors/tenant-catalog.d.ts.map +1 -0
- package/dist/cli/commands/proxy/connectors/tenant-catalog.js +136 -0
- package/dist/cli/commands/proxy/connectors/tenant-catalog.js.map +1 -0
- package/dist/cli/commands/proxy/connectors/vscode-claude-code.d.ts.map +1 -1
- package/dist/cli/commands/proxy/connectors/vscode-claude-code.js +49 -19
- package/dist/cli/commands/proxy/connectors/vscode-claude-code.js.map +1 -1
- package/dist/cli/commands/proxy/connectors/vscode-models.d.ts +21 -3
- package/dist/cli/commands/proxy/connectors/vscode-models.d.ts.map +1 -1
- package/dist/cli/commands/proxy/connectors/vscode-models.js +86 -28
- package/dist/cli/commands/proxy/connectors/vscode-models.js.map +1 -1
- package/dist/cli/commands/proxy/connectors/vscode.d.ts +3 -2
- package/dist/cli/commands/proxy/connectors/vscode.d.ts.map +1 -1
- package/dist/cli/commands/proxy/connectors/vscode.js +67 -39
- package/dist/cli/commands/proxy/connectors/vscode.js.map +1 -1
- package/dist/cli/commands/shared/headless.d.ts +69 -0
- package/dist/cli/commands/shared/headless.d.ts.map +1 -0
- package/dist/cli/commands/shared/headless.js +83 -0
- package/dist/cli/commands/shared/headless.js.map +1 -0
- package/dist/cli/commands/shared/helpers.d.ts +21 -0
- package/dist/cli/commands/shared/helpers.d.ts.map +1 -1
- package/dist/cli/commands/shared/helpers.js +73 -1
- package/dist/cli/commands/shared/helpers.js.map +1 -1
- package/dist/cli/commands/shared/identifier-resolution.d.ts +23 -0
- package/dist/cli/commands/shared/identifier-resolution.d.ts.map +1 -0
- package/dist/cli/commands/shared/identifier-resolution.js +55 -0
- package/dist/cli/commands/shared/identifier-resolution.js.map +1 -0
- package/dist/cli/commands/skills/setup/data.d.ts +3 -2
- package/dist/cli/commands/skills/setup/data.d.ts.map +1 -1
- package/dist/cli/commands/skills/setup/data.js +75 -13
- package/dist/cli/commands/skills/setup/data.js.map +1 -1
- package/dist/cli/commands/skills/setup/helpers.d.ts +1 -1
- package/dist/cli/commands/skills/setup/helpers.d.ts.map +1 -1
- package/dist/cli/commands/skills/setup/helpers.js +2 -5
- package/dist/cli/commands/skills/setup/helpers.js.map +1 -1
- package/dist/cli/commands/skills/setup/index.d.ts +17 -1
- package/dist/cli/commands/skills/setup/index.d.ts.map +1 -1
- package/dist/cli/commands/skills/setup/index.js +190 -19
- package/dist/cli/commands/skills/setup/index.js.map +1 -1
- package/dist/providers/core/codemie-auth-helpers.d.ts.map +1 -1
- package/dist/providers/core/codemie-auth-helpers.js +6 -1
- package/dist/providers/core/codemie-auth-helpers.js.map +1 -1
- package/dist/providers/core/default-agent-hooks.d.ts.map +1 -1
- package/dist/providers/core/default-agent-hooks.js +9 -0
- package/dist/providers/core/default-agent-hooks.js.map +1 -1
- package/dist/providers/plugins/bedrock/bedrock.template.d.ts.map +1 -1
- package/dist/providers/plugins/bedrock/bedrock.template.js +5 -31
- package/dist/providers/plugins/bedrock/bedrock.template.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.d.ts +44 -0
- package/dist/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.d.ts.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.js +106 -0
- package/dist/providers/plugins/sso/proxy/plugins/background-request-normalizer.plugin.js.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/claude-model-resolver.d.ts +41 -0
- package/dist/providers/plugins/sso/proxy/plugins/claude-model-resolver.d.ts.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/claude-model-resolver.js +115 -0
- package/dist/providers/plugins/sso/proxy/plugins/claude-model-resolver.js.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.js +101 -7
- package/dist/providers/plugins/sso/proxy/plugins/claude-request-normalizer.plugin.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.d.ts +4 -0
- package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.js +28 -3
- package/dist/providers/plugins/sso/proxy/plugins/header-injection.plugin.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/index.d.ts +3 -1
- package/dist/providers/plugins/sso/proxy/plugins/index.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/index.js +5 -1
- package/dist/providers/plugins/sso/proxy/plugins/index.js.map +1 -1
- package/dist/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.d.ts +67 -0
- package/dist/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.d.ts.map +1 -0
- package/dist/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.js +203 -0
- package/dist/providers/plugins/sso/proxy/plugins/routing-header-injector.plugin.js.map +1 -0
- package/dist/providers/plugins/sso/proxy/proxy-types.d.ts +5 -0
- package/dist/providers/plugins/sso/proxy/proxy-types.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/sso.proxy.d.ts.map +1 -1
- package/dist/providers/plugins/sso/proxy/sso.proxy.js +1 -0
- package/dist/providers/plugins/sso/proxy/sso.proxy.js.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.d.ts.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.js +11 -2
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-aggregator.js.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.d.ts.map +1 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.js +2 -1
- package/dist/providers/plugins/sso/session/processors/metrics/metrics-sync-processor.js.map +1 -1
- package/dist/providers/plugins/sso/sso.http-client.d.ts +95 -0
- package/dist/providers/plugins/sso/sso.http-client.d.ts.map +1 -1
- package/dist/providers/plugins/sso/sso.http-client.js +79 -0
- package/dist/providers/plugins/sso/sso.http-client.js.map +1 -1
- package/dist/providers/plugins/sso/sso.models.d.ts +7 -0
- package/dist/providers/plugins/sso/sso.models.d.ts.map +1 -1
- package/dist/providers/plugins/sso/sso.models.js +22 -14
- package/dist/providers/plugins/sso/sso.models.js.map +1 -1
- package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.d.ts +1 -0
- package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.d.ts.map +1 -1
- package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.js +30 -6
- package/dist/telemetry/clients/claude-desktop/claude-desktop.discovery.js.map +1 -1
- package/dist/telemetry/clients/claude-desktop/claude-desktop.parser.d.ts.map +1 -1
- package/dist/telemetry/clients/claude-desktop/claude-desktop.parser.js +33 -3
- package/dist/telemetry/clients/claude-desktop/claude-desktop.parser.js.map +1 -1
- package/dist/telemetry/runtime/DesktopRepositoryResolver.d.ts +58 -0
- package/dist/telemetry/runtime/DesktopRepositoryResolver.d.ts.map +1 -0
- package/dist/telemetry/runtime/DesktopRepositoryResolver.js +370 -0
- package/dist/telemetry/runtime/DesktopRepositoryResolver.js.map +1 -0
- package/dist/telemetry/runtime/DesktopTelemetryRuntime.d.ts +1 -0
- package/dist/telemetry/runtime/DesktopTelemetryRuntime.d.ts.map +1 -1
- package/dist/telemetry/runtime/DesktopTelemetryRuntime.js +89 -6
- package/dist/telemetry/runtime/DesktopTelemetryRuntime.js.map +1 -1
- package/dist/telemetry/runtime/types.d.ts +2 -0
- package/dist/telemetry/runtime/types.d.ts.map +1 -1
- package/dist/utils/auth.d.ts +13 -2
- package/dist/utils/auth.d.ts.map +1 -1
- package/dist/utils/auth.js +7 -3
- package/dist/utils/auth.js.map +1 -1
- package/dist/utils/bedrock-pricing.mjs +111 -0
- package/dist/utils/cli-updater.d.ts.map +1 -1
- package/dist/utils/cli-updater.js +32 -7
- package/dist/utils/cli-updater.js.map +1 -1
- package/dist/utils/config.d.ts +21 -0
- package/dist/utils/config.d.ts.map +1 -1
- package/dist/utils/config.js +69 -7
- package/dist/utils/config.js.map +1 -1
- package/dist/utils/credential-crypto.d.ts +51 -0
- package/dist/utils/credential-crypto.d.ts.map +1 -0
- package/dist/utils/credential-crypto.js +96 -0
- package/dist/utils/credential-crypto.js.map +1 -0
- package/dist/utils/errors.d.ts +14 -0
- package/dist/utils/errors.d.ts.map +1 -1
- package/dist/utils/errors.js +25 -0
- package/dist/utils/errors.js.map +1 -1
- package/dist/utils/model-normalizer.d.ts +6 -0
- package/dist/utils/model-normalizer.d.ts.map +1 -1
- package/dist/utils/model-normalizer.js +37 -19
- package/dist/utils/model-normalizer.js.map +1 -1
- package/dist/utils/paths.d.ts +2 -2
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +11 -9
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/price-resolution.d.ts +42 -0
- package/dist/utils/price-resolution.d.ts.map +1 -0
- package/dist/utils/price-resolution.js +112 -0
- package/dist/utils/price-resolution.js.map +1 -0
- package/dist/utils/pricing.d.ts +65 -6
- package/dist/utils/pricing.d.ts.map +1 -1
- package/dist/utils/pricing.js +91 -117
- package/dist/utils/pricing.js.map +1 -1
- package/dist/utils/pricing.json +201 -20
- package/dist/utils/processes.d.ts +12 -0
- package/dist/utils/processes.d.ts.map +1 -1
- package/dist/utils/processes.js +15 -0
- package/dist/utils/processes.js.map +1 -1
- package/dist/utils/routing-headers.mjs +104 -0
- package/dist/utils/security.d.ts +0 -32
- package/dist/utils/security.d.ts.map +1 -1
- package/dist/utils/security.js +20 -102
- package/dist/utils/security.js.map +1 -1
- package/package.json +5 -2
- package/scripts/bundle-statusline.mjs +37 -0
- package/scripts/copy-plugins.js +19 -2
- package/src/utils/tips.json +9 -9
- package/dist/agents/plugins/claude/plugin/__tests__/statusline.test.ts +0 -323
- package/dist/agents/plugins/claude/plugin/statusline.mjs +0 -282
- package/dist/cli/commands/analytics/exporter.d.ts +0 -20
- package/dist/cli/commands/analytics/exporter.d.ts.map +0 -1
- package/dist/cli/commands/analytics/exporter.js +0 -91
- package/dist/cli/commands/analytics/exporter.js.map +0 -1
|
@@ -3,7 +3,8 @@ import { mkdir, readFile, rename, stat, unlink, writeFile } from 'node:fs/promis
|
|
|
3
3
|
import { homedir } from 'node:os';
|
|
4
4
|
import { dirname, join } from 'node:path';
|
|
5
5
|
import { ConfigurationError } from '../../../../utils/errors.js';
|
|
6
|
-
import {
|
|
6
|
+
import { fetchTenantModelDescriptors } from './tenant-catalog.js';
|
|
7
|
+
import { buildDefaultVsCodeCapability, findVsCodeCapabilityEntry, } from './vscode-models.js';
|
|
7
8
|
const SECRET_REFERENCE_PATTERN = /^\$\{input:chat\.lm\.secret\.[^}]+\}$/;
|
|
8
9
|
function isRecord(value) {
|
|
9
10
|
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
@@ -49,39 +50,65 @@ function getApiPath(apiType) {
|
|
|
49
50
|
return '/v1/messages';
|
|
50
51
|
return '/v1/chat/completions';
|
|
51
52
|
}
|
|
52
|
-
function
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
53
|
+
function buildManagedModel(entry, tenantId, name, proxyUrl) {
|
|
54
|
+
const model = {
|
|
55
|
+
id: tenantId,
|
|
56
|
+
name,
|
|
57
|
+
url: new URL(getApiPath(entry.apiType), proxyUrl).toString(),
|
|
58
|
+
apiType: entry.apiType,
|
|
59
|
+
toolCalling: entry.toolCalling ?? true,
|
|
60
|
+
vision: entry.vision,
|
|
61
|
+
streaming: true,
|
|
62
|
+
thinking: entry.thinking,
|
|
63
|
+
maxInputTokens: entry.maxInputTokens,
|
|
64
|
+
maxOutputTokens: entry.maxOutputTokens,
|
|
65
|
+
};
|
|
66
|
+
if (entry.adaptiveThinking)
|
|
67
|
+
model.adaptiveThinking = true;
|
|
68
|
+
if (entry.zeroDataRetentionEnabled !== undefined) {
|
|
69
|
+
model.zeroDataRetentionEnabled = entry.zeroDataRetentionEnabled;
|
|
70
|
+
}
|
|
71
|
+
if (entry.modelOptions)
|
|
72
|
+
model.modelOptions = entry.modelOptions;
|
|
73
|
+
if (entry.requestHeaders)
|
|
74
|
+
model.requestHeaders = entry.requestHeaders;
|
|
75
|
+
if (entry.supportsReasoningEffort) {
|
|
76
|
+
model.supportsReasoningEffort = entry.supportsReasoningEffort;
|
|
77
|
+
}
|
|
78
|
+
if (entry.reasoningEffortFormat) {
|
|
79
|
+
model.reasoningEffortFormat = entry.reasoningEffortFormat;
|
|
80
|
+
}
|
|
81
|
+
return model;
|
|
82
|
+
}
|
|
83
|
+
const GITHUB_COPILOT_DEPLOYMENT_PATTERN = /^github-copilot-/i;
|
|
84
|
+
/**
|
|
85
|
+
* Fetch the tenant's live model catalog and write one VS Code model per
|
|
86
|
+
* enabled deployment, in catalog order. The capability table only enriches a
|
|
87
|
+
* model whose family it knows ({@link findVsCodeCapabilityEntry}); any other
|
|
88
|
+
* model gets conservative defaults ({@link buildDefaultVsCodeCapability}).
|
|
89
|
+
* The list is rebuilt from the live catalog on every call — never narrowed to
|
|
90
|
+
* the profile model, reordered, or marked with a default.
|
|
91
|
+
*
|
|
92
|
+
* `github-copilot-*` deployments stay excluded (kept product-owner decision).
|
|
93
|
+
* Throws when no enabled model remains, mirroring `desktop.ts`'s zero-match throw.
|
|
94
|
+
*/
|
|
95
|
+
async function resolveManagedModels(proxyUrl, gatewayKey) {
|
|
96
|
+
const descriptors = await fetchTenantModelDescriptors(proxyUrl, gatewayKey);
|
|
97
|
+
const models = [];
|
|
98
|
+
for (const descriptor of descriptors) {
|
|
99
|
+
if (GITHUB_COPILOT_DEPLOYMENT_PATTERN.test(descriptor.id))
|
|
100
|
+
continue;
|
|
101
|
+
const known = findVsCodeCapabilityEntry(descriptor.id);
|
|
102
|
+
const entry = known ?? buildDefaultVsCodeCapability(descriptor);
|
|
103
|
+
const name = known ? descriptor.id : (descriptor.label?.trim() || descriptor.id);
|
|
104
|
+
models.push(buildManagedModel(entry, descriptor.id, name, proxyUrl));
|
|
105
|
+
}
|
|
106
|
+
if (models.length === 0) {
|
|
107
|
+
throw new ConfigurationError('Local proxy discovered no enabled tenant models to offer in VS Code Copilot.');
|
|
108
|
+
}
|
|
109
|
+
return models;
|
|
83
110
|
}
|
|
84
|
-
function mergeManagedProviders(providers,
|
|
111
|
+
function mergeManagedProviders(providers, models) {
|
|
85
112
|
const existingProvider = Object.assign({}, ...providers);
|
|
86
113
|
const existingSettings = Object.assign({}, ...providers.map(provider => isRecord(provider.settings) ? provider.settings : {}));
|
|
87
114
|
const existingSecretReference = providers
|
|
@@ -92,7 +119,7 @@ function mergeManagedProviders(providers, proxyUrl) {
|
|
|
92
119
|
name: 'CodeMie',
|
|
93
120
|
vendor: 'customendpoint',
|
|
94
121
|
apiType: 'chat-completions',
|
|
95
|
-
models
|
|
122
|
+
models,
|
|
96
123
|
};
|
|
97
124
|
// VS Code owns effort selections. Preserve them instead of racing with the editor.
|
|
98
125
|
if (Object.keys(existingSettings).length > 0)
|
|
@@ -155,18 +182,19 @@ export async function writeAtomically(configPath, content) {
|
|
|
155
182
|
throw error;
|
|
156
183
|
}
|
|
157
184
|
}
|
|
158
|
-
export async function writeVsCodeLanguageModelsConfig(proxyUrl, insiders = false) {
|
|
159
|
-
return writeVsCodeLanguageModelsConfigAtPath(getVsCodeLanguageModelsPath(insiders), proxyUrl);
|
|
185
|
+
export async function writeVsCodeLanguageModelsConfig(proxyUrl, gatewayKey, insiders = false) {
|
|
186
|
+
return writeVsCodeLanguageModelsConfigAtPath(getVsCodeLanguageModelsPath(insiders), proxyUrl, gatewayKey);
|
|
160
187
|
}
|
|
161
|
-
export async function writeVsCodeLanguageModelsConfigAtPath(configPath, proxyUrl) {
|
|
188
|
+
export async function writeVsCodeLanguageModelsConfigAtPath(configPath, proxyUrl, gatewayKey) {
|
|
162
189
|
const providers = await readProviders(configPath);
|
|
190
|
+
const models = await resolveManagedModels(proxyUrl, gatewayKey);
|
|
163
191
|
const managedProviderIndexes = providers
|
|
164
192
|
.map((provider, index) => isManagedProvider(provider) ? index : -1)
|
|
165
193
|
.filter(index => index >= 0);
|
|
166
194
|
const managedProviders = managedProviderIndexes
|
|
167
195
|
.map(index => providers[index])
|
|
168
196
|
.filter(isManagedProvider);
|
|
169
|
-
const { provider: managedProvider, requiresSecretConfiguration } = mergeManagedProviders(managedProviders,
|
|
197
|
+
const { provider: managedProvider, requiresSecretConfiguration } = mergeManagedProviders(managedProviders, models);
|
|
170
198
|
const firstManagedProviderIndex = managedProviderIndexes[0] ?? providers.length;
|
|
171
199
|
const managedProviderIndexSet = new Set(managedProviderIndexes);
|
|
172
200
|
const reconciledProviders = providers.flatMap((provider, index) => {
|
|
@@ -185,6 +213,6 @@ export async function writeVsCodeLanguageModelsConfigAtPath(configPath, proxyUrl
|
|
|
185
213
|
throw new ConfigurationError(`Failed to update VS Code language model configuration at ${configPath}: ` +
|
|
186
214
|
`${error instanceof Error ? error.message : String(error)}`);
|
|
187
215
|
}
|
|
188
|
-
return { configPath, requiresSecretConfiguration };
|
|
216
|
+
return { configPath, requiresSecretConfiguration, modelCount: models.length };
|
|
189
217
|
}
|
|
190
218
|
//# sourceMappingURL=vscode.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vscode.js","sourceRoot":"","sources":["../../../../../src/cli/commands/proxy/connectors/vscode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"vscode.js","sourceRoot":"","sources":["../../../../../src/cli/commands/proxy/connectors/vscode.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Headless-mode detection and flag validation shared by `codemie setup assistants`
|
|
3
|
+
* and `codemie setup skills`.
|
|
4
|
+
*/
|
|
5
|
+
import { StorageScope } from '../../../env/types.js';
|
|
6
|
+
import { type AgentSetupTarget, type TargetAgent } from '../../../cli/commands/shared/agent-targets.js';
|
|
7
|
+
export interface HeadlessFlags {
|
|
8
|
+
yes?: boolean;
|
|
9
|
+
assistant?: string;
|
|
10
|
+
skill?: string;
|
|
11
|
+
/**
|
|
12
|
+
* Accepted so callers can hand over their whole options object, but deliberately
|
|
13
|
+
* not part of the headless decision — see `isHeadlessMode`.
|
|
14
|
+
*/
|
|
15
|
+
scope?: string;
|
|
16
|
+
agent?: string;
|
|
17
|
+
mode?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Determines whether a command should run in non-interactive (headless) mode:
|
|
21
|
+
* true when stdin is not a TTY, or when a flag that only makes sense
|
|
22
|
+
* non-interactively is present — the item-selection flags (`--assistant` /
|
|
23
|
+
* `--skill`) or `-y/--yes`.
|
|
24
|
+
*
|
|
25
|
+
* `--agent`, `--scope` and `--mode` must NOT select headless mode. `--agent`
|
|
26
|
+
* shipped long before headless mode as a wizard preselector, so treating it as a
|
|
27
|
+
* headless trigger would break `codemie setup assistants --agent claude` at a
|
|
28
|
+
* TTY; `--scope` and `--mode` are preselectors on the same surface.
|
|
29
|
+
*/
|
|
30
|
+
export declare function isHeadlessMode(flags: HeadlessFlags, isTty: boolean): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Returns the given flag value, or throws a ConfigurationError naming the flag when missing.
|
|
33
|
+
*/
|
|
34
|
+
export declare function requireFlag(value: string | undefined, flagName: string): string;
|
|
35
|
+
/**
|
|
36
|
+
* Parses a scope flag value into a StorageScope, throwing a ConfigurationError for
|
|
37
|
+
* any other value.
|
|
38
|
+
*/
|
|
39
|
+
export declare function parseScopeFlag(value: string): StorageScope;
|
|
40
|
+
/**
|
|
41
|
+
* Splits a comma-separated flag value into trimmed, de-duplicated, non-empty entries.
|
|
42
|
+
* Throws a ConfigurationError when no non-empty values remain.
|
|
43
|
+
*/
|
|
44
|
+
export declare function parseListFlag(value: string): string[];
|
|
45
|
+
/**
|
|
46
|
+
* Resolves the headless agent target from `--agent`, falling back to the agent
|
|
47
|
+
* hosting the command (`codemie-<agent> setup ...` wires its adapter name in as
|
|
48
|
+
* `hostAgent`), which determines the target just as unambiguously as the flag.
|
|
49
|
+
* Throws a ConfigurationError naming `--agent` only when neither is available,
|
|
50
|
+
* so the generic `codemie setup` surface still requires an explicit target.
|
|
51
|
+
* Agent targets are never auto-detected on this path.
|
|
52
|
+
*/
|
|
53
|
+
export declare function resolveHeadlessAgentTarget(value: string | undefined, hostAgent?: TargetAgent): AgentSetupTarget;
|
|
54
|
+
export interface RegisteredPartition<T> {
|
|
55
|
+
/** Already-registered records the request names, which will be re-registered. */
|
|
56
|
+
inScope: T[];
|
|
57
|
+
/** Already-registered records the request does not name, which must survive untouched. */
|
|
58
|
+
untouched: T[];
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Splits already-registered records against the requested ids. Headless
|
|
62
|
+
* registration is purely additive, so the "currently registered" set handed to
|
|
63
|
+
* the change calculation must be narrowed to the overlap with the request —
|
|
64
|
+
* anything outside it would otherwise be derived as a removal.
|
|
65
|
+
*/
|
|
66
|
+
export declare function partitionRegisteredByRequest<T extends {
|
|
67
|
+
id: string;
|
|
68
|
+
}>(registered: T[], selectedIds: string[]): RegisteredPartition<T>;
|
|
69
|
+
//# sourceMappingURL=headless.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headless.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/shared/headless.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EACjB,MAAM,wCAAwC,CAAC;AAEhD,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAM5E;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM/E;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAY1D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAQrD;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,SAAS,CAAC,EAAE,WAAW,GACtB,gBAAgB,CAElB;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC;IACpC,iFAAiF;IACjF,OAAO,EAAE,CAAC,EAAE,CAAC;IACb,0FAA0F;IAC1F,SAAS,EAAE,CAAC,EAAE,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,CAAC,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EACnE,UAAU,EAAE,CAAC,EAAE,EACf,WAAW,EAAE,MAAM,EAAE,GACpB,mBAAmB,CAAC,CAAC,CAAC,CAOxB"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Headless-mode detection and flag validation shared by `codemie setup assistants`
|
|
3
|
+
* and `codemie setup skills`.
|
|
4
|
+
*/
|
|
5
|
+
import { ConfigurationError } from '../../../utils/errors.js';
|
|
6
|
+
import { StorageScope } from '../../../env/types.js';
|
|
7
|
+
import { parseAgentSetupTarget, } from '../../../cli/commands/shared/agent-targets.js';
|
|
8
|
+
/**
|
|
9
|
+
* Determines whether a command should run in non-interactive (headless) mode:
|
|
10
|
+
* true when stdin is not a TTY, or when a flag that only makes sense
|
|
11
|
+
* non-interactively is present — the item-selection flags (`--assistant` /
|
|
12
|
+
* `--skill`) or `-y/--yes`.
|
|
13
|
+
*
|
|
14
|
+
* `--agent`, `--scope` and `--mode` must NOT select headless mode. `--agent`
|
|
15
|
+
* shipped long before headless mode as a wizard preselector, so treating it as a
|
|
16
|
+
* headless trigger would break `codemie setup assistants --agent claude` at a
|
|
17
|
+
* TTY; `--scope` and `--mode` are preselectors on the same surface.
|
|
18
|
+
*/
|
|
19
|
+
export function isHeadlessMode(flags, isTty) {
|
|
20
|
+
if (!isTty) {
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
return Boolean(flags.yes || flags.assistant || flags.skill);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Returns the given flag value, or throws a ConfigurationError naming the flag when missing.
|
|
27
|
+
*/
|
|
28
|
+
export function requireFlag(value, flagName) {
|
|
29
|
+
if (!value) {
|
|
30
|
+
throw new ConfigurationError(`Missing required flag: ${flagName}`);
|
|
31
|
+
}
|
|
32
|
+
return value;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Parses a scope flag value into a StorageScope, throwing a ConfigurationError for
|
|
36
|
+
* any other value.
|
|
37
|
+
*/
|
|
38
|
+
export function parseScopeFlag(value) {
|
|
39
|
+
const normalized = value.trim().toLowerCase();
|
|
40
|
+
if (normalized === StorageScope.GLOBAL) {
|
|
41
|
+
return StorageScope.GLOBAL;
|
|
42
|
+
}
|
|
43
|
+
if (normalized === StorageScope.LOCAL) {
|
|
44
|
+
return StorageScope.LOCAL;
|
|
45
|
+
}
|
|
46
|
+
throw new ConfigurationError(`Invalid scope: "${value}". Expected "global" or "local".`);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Splits a comma-separated flag value into trimmed, de-duplicated, non-empty entries.
|
|
50
|
+
* Throws a ConfigurationError when no non-empty values remain.
|
|
51
|
+
*/
|
|
52
|
+
export function parseListFlag(value) {
|
|
53
|
+
const items = Array.from(new Set(value.split(',').map((item) => item.trim()).filter((item) => item.length > 0)));
|
|
54
|
+
if (items.length === 0) {
|
|
55
|
+
throw new ConfigurationError(`Expected a comma-separated list of values, got: "${value}"`);
|
|
56
|
+
}
|
|
57
|
+
return items;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Resolves the headless agent target from `--agent`, falling back to the agent
|
|
61
|
+
* hosting the command (`codemie-<agent> setup ...` wires its adapter name in as
|
|
62
|
+
* `hostAgent`), which determines the target just as unambiguously as the flag.
|
|
63
|
+
* Throws a ConfigurationError naming `--agent` only when neither is available,
|
|
64
|
+
* so the generic `codemie setup` surface still requires an explicit target.
|
|
65
|
+
* Agent targets are never auto-detected on this path.
|
|
66
|
+
*/
|
|
67
|
+
export function resolveHeadlessAgentTarget(value, hostAgent) {
|
|
68
|
+
return parseAgentSetupTarget(requireFlag(value ?? hostAgent, '--agent'));
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Splits already-registered records against the requested ids. Headless
|
|
72
|
+
* registration is purely additive, so the "currently registered" set handed to
|
|
73
|
+
* the change calculation must be narrowed to the overlap with the request —
|
|
74
|
+
* anything outside it would otherwise be derived as a removal.
|
|
75
|
+
*/
|
|
76
|
+
export function partitionRegisteredByRequest(registered, selectedIds) {
|
|
77
|
+
const selected = new Set(selectedIds);
|
|
78
|
+
return {
|
|
79
|
+
inScope: registered.filter((item) => selected.has(item.id)),
|
|
80
|
+
untouched: registered.filter((item) => !selected.has(item.id)),
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=headless.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"headless.js","sourceRoot":"","sources":["../../../../src/cli/commands/shared/headless.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EACL,qBAAqB,GAGtB,MAAM,wCAAwC,CAAC;AAehD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAAC,KAAoB,EAAE,KAAc;IACjE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAyB,EAAE,QAAgB;IACrE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,kBAAkB,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAE9C,IAAI,UAAU,KAAK,YAAY,CAAC,MAAM,EAAE,CAAC;QACvC,OAAO,YAAY,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,IAAI,UAAU,KAAK,YAAY,CAAC,KAAK,EAAE,CAAC;QACtC,OAAO,YAAY,CAAC,KAAK,CAAC;IAC5B,CAAC;IAED,MAAM,IAAI,kBAAkB,CAAC,mBAAmB,KAAK,kCAAkC,CAAC,CAAC;AAC3F,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEjH,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,kBAAkB,CAAC,oDAAoD,KAAK,GAAG,CAAC,CAAC;IAC7F,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAAyB,EACzB,SAAuB;IAEvB,OAAO,qBAAqB,CAAC,WAAW,CAAC,KAAK,IAAI,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;AAC3E,CAAC;AASD;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAC1C,UAAe,EACf,WAAqB;IAErB,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;IAEtC,OAAO;QACL,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC3D,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAC/D,CAAC;AACJ,CAAC"}
|
|
@@ -1,4 +1,25 @@
|
|
|
1
1
|
export declare function executeWithSpinner<T>(spinnerMessage: string, operation: () => Promise<T>, successMessage: string, errorMessage: string, onError?: (error: unknown) => void): Promise<T | null>;
|
|
2
|
+
/**
|
|
3
|
+
* Runs `operation` behind a spinner and **rethrows** the original error after
|
|
4
|
+
* invoking `onError`, in deliberate contrast to `executeWithSpinner`, which
|
|
5
|
+
* swallows the failure and returns `null` (a `null` a caller easily reads as
|
|
6
|
+
* "skip this one" and reports as success). Use this variant wherever a failed
|
|
7
|
+
* write must abort the run.
|
|
8
|
+
*/
|
|
9
|
+
export declare function executeWithSpinnerStrict<T>(spinnerMessage: string, operation: () => Promise<T>, successMessage: string, errorMessage: string, onError?: (error: unknown) => void): Promise<T>;
|
|
10
|
+
/**
|
|
11
|
+
* Writes items sequentially and stops at the first failure, so a caller never
|
|
12
|
+
* reports success for items that were never written. There is no rollback:
|
|
13
|
+
* items already written before the failure stay written on disk.
|
|
14
|
+
*/
|
|
15
|
+
export declare function registerAllOrAbort<TItem, TResult>(items: TItem[], nameOf: (item: TItem) => string, writeOne: (item: TItem) => Promise<TResult>): Promise<TResult[]>;
|
|
16
|
+
/**
|
|
17
|
+
* Records the items a batch already wrote before it aborted, so the saved config
|
|
18
|
+
* never claims less than what exists on disk (an artifact with no config entry can
|
|
19
|
+
* neither be listed nor unregistered). A failure to save is logged and swallowed:
|
|
20
|
+
* it must never mask the registration error the caller is about to rethrow.
|
|
21
|
+
*/
|
|
22
|
+
export declare function persistPartialWrites<T>(written: T[], untouched: T[], save: (items: T[]) => Promise<void>): Promise<void>;
|
|
2
23
|
export declare function determineChanges<TItem extends {
|
|
3
24
|
id: string;
|
|
4
25
|
}, TRegistered extends {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/shared/helpers.ts"],"names":[],"mappings":"AAKA,wBAAsB,kBAAkB,CAAC,CAAC,EACxC,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GACjC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAyBnB;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAC5B,WAAW,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAElC,WAAW,EAAE,MAAM,EAAE,EACrB,QAAQ,EAAE,KAAK,EAAE,EACjB,eAAe,EAAE,WAAW,EAAE,GAC7B;IAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAAC,YAAY,EAAE,WAAW,EAAE,CAAA;CAAE,CAQtD;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAM3C;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,SAAU,GAAG,KAAK,CAKvE"}
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/shared/helpers.ts"],"names":[],"mappings":"AAKA,wBAAsB,kBAAkB,CAAC,CAAC,EACxC,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GACjC,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAyBnB;AAED;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAAC,CAAC,EAC9C,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GACjC,OAAO,CAAC,CAAC,CAAC,CAyBZ;AAED;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EACrD,KAAK,EAAE,KAAK,EAAE,EACd,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,EAC/B,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,GAC1C,OAAO,CAAC,OAAO,EAAE,CAAC,CAepB;AAED;;;;;GAKG;AACH,wBAAsB,oBAAoB,CAAC,CAAC,EAC1C,OAAO,EAAE,CAAC,EAAE,EACZ,SAAS,EAAE,CAAC,EAAE,EACd,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAClC,OAAO,CAAC,IAAI,CAAC,CAUf;AAED,wBAAgB,gBAAgB,CAC9B,KAAK,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAC5B,WAAW,SAAS;IAAE,EAAE,EAAE,MAAM,CAAA;CAAE,EAElC,WAAW,EAAE,MAAM,EAAE,EACrB,QAAQ,EAAE,KAAK,EAAE,EACjB,eAAe,EAAE,WAAW,EAAE,GAC7B;IAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAAC,YAAY,EAAE,WAAW,EAAE,CAAA;CAAE,CAQtD;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAM3C;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,SAAU,GAAG,KAAK,CAKvE"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import chalk from 'chalk';
|
|
2
2
|
import ora from 'ora';
|
|
3
3
|
import { logger } from '../../../utils/logger.js';
|
|
4
|
-
import { createErrorContext, formatErrorForUser } from '../../../utils/errors.js';
|
|
4
|
+
import { createErrorContext, formatErrorForUser, PartialRegistrationError } from '../../../utils/errors.js';
|
|
5
5
|
export async function executeWithSpinner(spinnerMessage, operation, successMessage, errorMessage, onError) {
|
|
6
6
|
const isVerbose = process.env.CODEMIE_DEBUG === 'true';
|
|
7
7
|
const spinner = ora(spinnerMessage).start();
|
|
@@ -30,6 +30,78 @@ export async function executeWithSpinner(spinnerMessage, operation, successMessa
|
|
|
30
30
|
return null;
|
|
31
31
|
}
|
|
32
32
|
}
|
|
33
|
+
/**
|
|
34
|
+
* Runs `operation` behind a spinner and **rethrows** the original error after
|
|
35
|
+
* invoking `onError`, in deliberate contrast to `executeWithSpinner`, which
|
|
36
|
+
* swallows the failure and returns `null` (a `null` a caller easily reads as
|
|
37
|
+
* "skip this one" and reports as success). Use this variant wherever a failed
|
|
38
|
+
* write must abort the run.
|
|
39
|
+
*/
|
|
40
|
+
export async function executeWithSpinnerStrict(spinnerMessage, operation, successMessage, errorMessage, onError) {
|
|
41
|
+
const isVerbose = process.env.CODEMIE_DEBUG === 'true';
|
|
42
|
+
const spinner = ora(spinnerMessage).start();
|
|
43
|
+
try {
|
|
44
|
+
const result = await operation();
|
|
45
|
+
if (isVerbose) {
|
|
46
|
+
spinner.succeed(chalk.green(successMessage));
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
spinner.clear();
|
|
50
|
+
spinner.stop();
|
|
51
|
+
}
|
|
52
|
+
return result;
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
if (isVerbose) {
|
|
56
|
+
spinner.fail(chalk.red(errorMessage));
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
spinner.clear();
|
|
60
|
+
spinner.stop();
|
|
61
|
+
}
|
|
62
|
+
if (onError) {
|
|
63
|
+
onError(error);
|
|
64
|
+
}
|
|
65
|
+
throw error;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Writes items sequentially and stops at the first failure, so a caller never
|
|
70
|
+
* reports success for items that were never written. There is no rollback:
|
|
71
|
+
* items already written before the failure stay written on disk.
|
|
72
|
+
*/
|
|
73
|
+
export async function registerAllOrAbort(items, nameOf, writeOne) {
|
|
74
|
+
const results = [];
|
|
75
|
+
const written = [];
|
|
76
|
+
for (const item of items) {
|
|
77
|
+
try {
|
|
78
|
+
const result = await writeOne(item);
|
|
79
|
+
results.push(result);
|
|
80
|
+
written.push(nameOf(item));
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
throw new PartialRegistrationError(written, error);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return results;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Records the items a batch already wrote before it aborted, so the saved config
|
|
90
|
+
* never claims less than what exists on disk (an artifact with no config entry can
|
|
91
|
+
* neither be listed nor unregistered). A failure to save is logged and swallowed:
|
|
92
|
+
* it must never mask the registration error the caller is about to rethrow.
|
|
93
|
+
*/
|
|
94
|
+
export async function persistPartialWrites(written, untouched, save) {
|
|
95
|
+
if (written.length === 0) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
try {
|
|
99
|
+
await save([...untouched, ...written]);
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
logger.error('Failed to record partially written registrations', { error });
|
|
103
|
+
}
|
|
104
|
+
}
|
|
33
105
|
export function determineChanges(selectedIds, allItems, registeredItems) {
|
|
34
106
|
const selectedSet = new Set(selectedIds);
|
|
35
107
|
const registeredIds = new Set(registeredItems.map(item => item.id));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../src/cli/commands/shared/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../../src/cli/commands/shared/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure identifier resolution shared by `codemie setup assistants` and `codemie setup skills`.
|
|
3
|
+
*
|
|
4
|
+
* Resolves user-supplied identifiers (id, slug, or exact name) against a catalog,
|
|
5
|
+
* failing loudly instead of guessing when an identifier is unknown or ambiguous.
|
|
6
|
+
*/
|
|
7
|
+
export interface ResolvableItem {
|
|
8
|
+
id: string;
|
|
9
|
+
name: string;
|
|
10
|
+
slug?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Resolves each requested identifier against the catalog, matching case-insensitively
|
|
14
|
+
* by id, then slug, then exact name. Results are ordered like `identifiers`.
|
|
15
|
+
*
|
|
16
|
+
* Throws `RegistrationItemNotFoundError` when an identifier matches nothing, and
|
|
17
|
+
* `AmbiguousIdentifierError` — listing every candidate rather than picking one —
|
|
18
|
+
* whenever an identifier matches multiple catalog entries, whether they collide on
|
|
19
|
+
* id, slug or name. Since matching is case-insensitive throughout, entries whose
|
|
20
|
+
* keys differ only in case collide too.
|
|
21
|
+
*/
|
|
22
|
+
export declare function resolveIdentifiers<T extends ResolvableItem>(kind: 'assistant' | 'skill', identifiers: string[], catalog: T[]): T[];
|
|
23
|
+
//# sourceMappingURL=identifier-resolution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identifier-resolution.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/shared/identifier-resolution.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAYD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,cAAc,EACzD,IAAI,EAAE,WAAW,GAAG,OAAO,EAC3B,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,EAAE,CAAC,EAAE,GACX,CAAC,EAAE,CAoCL"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure identifier resolution shared by `codemie setup assistants` and `codemie setup skills`.
|
|
3
|
+
*
|
|
4
|
+
* Resolves user-supplied identifiers (id, slug, or exact name) against a catalog,
|
|
5
|
+
* failing loudly instead of guessing when an identifier is unknown or ambiguous.
|
|
6
|
+
*/
|
|
7
|
+
import { RegistrationItemNotFoundError, AmbiguousIdentifierError } from '../../../utils/errors.js';
|
|
8
|
+
function bucket(map, key, item) {
|
|
9
|
+
const existing = map.get(key);
|
|
10
|
+
if (existing) {
|
|
11
|
+
existing.push(item);
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
map.set(key, [item]);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Resolves each requested identifier against the catalog, matching case-insensitively
|
|
19
|
+
* by id, then slug, then exact name. Results are ordered like `identifiers`.
|
|
20
|
+
*
|
|
21
|
+
* Throws `RegistrationItemNotFoundError` when an identifier matches nothing, and
|
|
22
|
+
* `AmbiguousIdentifierError` — listing every candidate rather than picking one —
|
|
23
|
+
* whenever an identifier matches multiple catalog entries, whether they collide on
|
|
24
|
+
* id, slug or name. Since matching is case-insensitive throughout, entries whose
|
|
25
|
+
* keys differ only in case collide too.
|
|
26
|
+
*/
|
|
27
|
+
export function resolveIdentifiers(kind, identifiers, catalog) {
|
|
28
|
+
const byId = new Map();
|
|
29
|
+
const bySlug = new Map();
|
|
30
|
+
const byName = new Map();
|
|
31
|
+
for (const item of catalog) {
|
|
32
|
+
bucket(byId, item.id.toLowerCase(), item);
|
|
33
|
+
if (item.slug) {
|
|
34
|
+
bucket(bySlug, item.slug.toLowerCase(), item);
|
|
35
|
+
}
|
|
36
|
+
bucket(byName, item.name.toLowerCase(), item);
|
|
37
|
+
}
|
|
38
|
+
return identifiers.map((identifier) => {
|
|
39
|
+
const key = identifier.toLowerCase();
|
|
40
|
+
if (!key) {
|
|
41
|
+
throw new RegistrationItemNotFoundError(kind, identifier);
|
|
42
|
+
}
|
|
43
|
+
for (const candidates of [byId.get(key), bySlug.get(key), byName.get(key)]) {
|
|
44
|
+
if (!candidates) {
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
if (candidates.length > 1) {
|
|
48
|
+
throw new AmbiguousIdentifierError(kind, identifier, candidates);
|
|
49
|
+
}
|
|
50
|
+
return candidates[0];
|
|
51
|
+
}
|
|
52
|
+
throw new RegistrationItemNotFoundError(kind, identifier);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=identifier-resolution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identifier-resolution.js","sourceRoot":"","sources":["../../../../src/cli/commands/shared/identifier-resolution.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,6BAA6B,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAQ5F,SAAS,MAAM,CAAI,GAAqB,EAAE,GAAW,EAAE,IAAO;IAC5D,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAE9B,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,kBAAkB,CAChC,IAA2B,EAC3B,WAAqB,EACrB,OAAY;IAEZ,MAAM,IAAI,GAAG,IAAI,GAAG,EAAe,CAAC;IACpC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAe,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAe,CAAC;IAEtC,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;QAE1C,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;QACpC,MAAM,GAAG,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;QAErC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,6BAA6B,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC5D,CAAC;QAED,KAAK,MAAM,UAAU,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YAC3E,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,SAAS;YACX,CAAC;YAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,wBAAwB,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;YACnE,CAAC;YAED,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;QAED,MAAM,IAAI,6BAA6B,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Handles all data fetching for skills setup
|
|
5
5
|
*/
|
|
6
|
-
import type
|
|
6
|
+
import { type SkillListItem, type SkillDetail, type CodeMieClient } from 'codemie-sdk';
|
|
7
7
|
import type { CodemieSkill } from '../../../../env/types.js';
|
|
8
8
|
export interface FetchSkillsParams {
|
|
9
9
|
scope: 'registered' | 'project' | 'marketplace';
|
|
@@ -18,7 +18,8 @@ export interface FetchSkillsResult {
|
|
|
18
18
|
export interface SkillDataFetcher {
|
|
19
19
|
fetchSkills: (params: FetchSkillsParams) => Promise<FetchSkillsResult>;
|
|
20
20
|
fetchSkillById: (id: string) => Promise<SkillDetail>;
|
|
21
|
-
fetchSkillsByIds: (ids: string[], registeredSkills: CodemieSkill[]) => Promise<
|
|
21
|
+
fetchSkillsByIds: (ids: string[], registeredSkills: CodemieSkill[]) => Promise<SkillDetail[]>;
|
|
22
|
+
fetchAllVisibleSkills: () => Promise<SkillListItem[]>;
|
|
22
23
|
}
|
|
23
24
|
export interface SkillDataFetcherConfig {
|
|
24
25
|
client: CodeMieClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/skills/setup/data.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/skills/setup/data.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAiB,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAEtG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AA+CnD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,YAAY,GAAG,SAAS,GAAG,aAAa,CAAC;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACvE,cAAc,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IACrD,gBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,gBAAgB,EAAE,YAAY,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9F,qBAAqB,EAAE,MAAM,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,aAAa,CAAC;IACtB,gBAAgB,EAAE,YAAY,EAAE,CAAC;CAClC;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,sBAAsB,GAAG,gBAAgB,CA6IvF"}
|