devchain-cli 0.19.1 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/drizzle/0069_fluffy_exodus.sql +2 -0
- package/dist/drizzle/0070_lyrical_tombstone.sql +1 -0
- package/dist/drizzle/0071_special_avengers.sql +22 -0
- package/dist/drizzle/meta/0069_snapshot.json +5767 -0
- package/dist/drizzle/meta/0070_snapshot.json +5774 -0
- package/dist/drizzle/meta/0071_snapshot.json +5931 -0
- package/dist/drizzle/meta/_journal.json +22 -1
- package/dist/node_modules/@devchain/shared/e2ee/base64.js +1 -1
- package/dist/node_modules/@devchain/shared/e2ee/base64.js.map +1 -1
- package/dist/node_modules/@devchain/shared/host-resolver.d.ts.map +1 -1
- package/dist/node_modules/@devchain/shared/host-resolver.js.map +1 -1
- package/dist/node_modules/@devchain/shared/schemas/claude-launch-settings.d.ts.map +1 -1
- package/dist/node_modules/@devchain/shared/schemas/claude-launch-settings.js +23 -0
- package/dist/node_modules/@devchain/shared/schemas/claude-launch-settings.js.map +1 -1
- package/dist/node_modules/@devchain/shared/schemas/export-schema.d.ts +363 -6
- package/dist/node_modules/@devchain/shared/schemas/export-schema.d.ts.map +1 -1
- package/dist/node_modules/@devchain/shared/schemas/export-schema.js +11 -1
- package/dist/node_modules/@devchain/shared/schemas/export-schema.js.map +1 -1
- package/dist/node_modules/@devchain/shared/tsconfig.tsbuildinfo +1 -1
- package/dist/server/common/config/container-scope.d.ts +4 -0
- package/dist/server/common/config/container-scope.js +11 -0
- package/dist/server/common/config/container-scope.js.map +1 -0
- package/dist/server/modules/agent-message-delivery/adapters/legacy-delivery-formatter.adapter.js +12 -0
- package/dist/server/modules/agent-message-delivery/adapters/legacy-delivery-formatter.adapter.js.map +1 -1
- package/dist/server/modules/agent-message-delivery/agent-message-delivery.service.d.ts +1 -0
- package/dist/server/modules/agent-message-delivery/agent-message-delivery.service.js +18 -4
- package/dist/server/modules/agent-message-delivery/agent-message-delivery.service.js.map +1 -1
- package/dist/server/modules/agent-message-delivery/dtos/delivery.types.d.ts +16 -3
- package/dist/server/modules/agents/controllers/agents.controller.d.ts +1 -0
- package/dist/server/modules/agents/controllers/agents.controller.js +3 -0
- package/dist/server/modules/agents/controllers/agents.controller.js.map +1 -1
- package/dist/server/modules/epics/services/epics.service.d.ts +2 -0
- package/dist/server/modules/epics/services/epics.service.js +17 -3
- package/dist/server/modules/epics/services/epics.service.js.map +1 -1
- package/dist/server/modules/events/catalog/agent.message.sent.d.ts +89 -0
- package/dist/server/modules/events/catalog/agent.message.sent.js +16 -0
- package/dist/server/modules/events/catalog/agent.message.sent.js.map +1 -1
- package/dist/server/modules/events/catalog/broadcast-registry.js +1 -0
- package/dist/server/modules/events/catalog/broadcast-registry.js.map +1 -1
- package/dist/server/modules/events/catalog/index.d.ts +97 -6
- package/dist/server/modules/events/catalog/index.js +9 -1
- package/dist/server/modules/events/catalog/index.js.map +1 -1
- package/dist/server/modules/events/catalog/review.created.d.ts +4 -4
- package/dist/server/modules/events/catalog/session.recommendation.d.ts +2 -2
- package/dist/server/modules/events/services/event-log.service.d.ts +3 -3
- package/dist/server/modules/events/services/event-log.service.js +58 -26
- package/dist/server/modules/events/services/event-log.service.js.map +1 -1
- package/dist/server/modules/events/services/events.service.d.ts +1 -1
- package/dist/server/modules/events/services/events.service.js +5 -0
- package/dist/server/modules/events/services/events.service.js.map +1 -1
- package/dist/server/modules/mcp/dtos/mcp.dto.d.ts +45 -0
- package/dist/server/modules/mcp/dtos/mcp.dto.js +29 -2
- package/dist/server/modules/mcp/dtos/mcp.dto.js.map +1 -1
- package/dist/server/modules/mcp/mcp-full.module.js +2 -0
- package/dist/server/modules/mcp/mcp-full.module.js.map +1 -1
- package/dist/server/modules/mcp/services/handlers/chat-context.d.ts +2 -0
- package/dist/server/modules/mcp/services/handlers/chat-tools.js +10 -0
- package/dist/server/modules/mcp/services/handlers/chat-tools.js.map +1 -1
- package/dist/server/modules/mcp/services/handlers/epic-tools.js +7 -3
- package/dist/server/modules/mcp/services/handlers/epic-tools.js.map +1 -1
- package/dist/server/modules/mcp/services/handlers/project-context.d.ts +6 -0
- package/dist/server/modules/mcp/services/handlers/project-context.js +3 -0
- package/dist/server/modules/mcp/services/handlers/project-context.js.map +1 -0
- package/dist/server/modules/mcp/services/handlers/project-tools.d.ts +3 -0
- package/dist/server/modules/mcp/services/handlers/project-tools.js +32 -0
- package/dist/server/modules/mcp/services/handlers/project-tools.js.map +1 -0
- package/dist/server/modules/mcp/services/mappers/dto-mappers.js +1 -0
- package/dist/server/modules/mcp/services/mappers/dto-mappers.js.map +1 -1
- package/dist/server/modules/mcp/services/mcp.service.d.ts +4 -1
- package/dist/server/modules/mcp/services/mcp.service.js +46 -29
- package/dist/server/modules/mcp/services/mcp.service.js.map +1 -1
- package/dist/server/modules/mcp/tool-descriptors/chat.metadata.js +6 -1
- package/dist/server/modules/mcp/tool-descriptors/chat.metadata.js.map +1 -1
- package/dist/server/modules/mcp/tool-descriptors/index.js +4 -0
- package/dist/server/modules/mcp/tool-descriptors/index.js.map +1 -1
- package/dist/server/modules/mcp/tool-descriptors/project.bindings.d.ts +2 -0
- package/dist/server/modules/mcp/tool-descriptors/project.bindings.js +8 -0
- package/dist/server/modules/mcp/tool-descriptors/project.bindings.js.map +1 -0
- package/dist/server/modules/mcp/tool-descriptors/project.metadata.d.ts +2 -0
- package/dist/server/modules/mcp/tool-descriptors/project.metadata.js +37 -0
- package/dist/server/modules/mcp/tool-descriptors/project.metadata.js.map +1 -0
- package/dist/server/modules/orchestrator/worktrees/services/worktrees.service.js +0 -2
- package/dist/server/modules/orchestrator/worktrees/services/worktrees.service.js.map +1 -1
- package/dist/server/modules/profiles/dto.d.ts +4 -4
- package/dist/server/modules/project-communication/dtos/project-communication.types.d.ts +44 -0
- package/dist/server/modules/project-communication/dtos/project-communication.types.js +3 -0
- package/dist/server/modules/project-communication/dtos/project-communication.types.js.map +1 -0
- package/dist/server/modules/project-communication/project-communication.module.d.ts +2 -0
- package/dist/server/modules/project-communication/project-communication.module.js +24 -0
- package/dist/server/modules/project-communication/project-communication.module.js.map +1 -0
- package/dist/server/modules/project-communication/project-communication.service.d.ts +16 -0
- package/dist/server/modules/project-communication/project-communication.service.js +224 -0
- package/dist/server/modules/project-communication/project-communication.service.js.map +1 -0
- package/dist/server/modules/projects/controllers/projects.controller.d.ts +2 -1
- package/dist/server/modules/projects/controllers/projects.controller.js +3 -10
- package/dist/server/modules/projects/controllers/projects.controller.js.map +1 -1
- package/dist/server/modules/projects/helpers/project-export.d.ts +1 -0
- package/dist/server/modules/projects/services/projects.service.d.ts +1 -0
- package/dist/server/modules/projects/template-codec/codecs/agents.codec.d.ts +2 -0
- package/dist/server/modules/projects/template-codec/codecs/agents.codec.js +2 -0
- package/dist/server/modules/projects/template-codec/codecs/agents.codec.js.map +1 -1
- package/dist/server/modules/providers/adapters/capabilities/index.d.ts +2 -2
- package/dist/server/modules/providers/adapters/capabilities/index.js +2 -1
- package/dist/server/modules/providers/adapters/capabilities/index.js.map +1 -1
- package/dist/server/modules/providers/adapters/capabilities/provider-plugin.capability.d.ts +6 -0
- package/dist/server/modules/providers/adapters/capabilities/provider-plugin.capability.js +3 -0
- package/dist/server/modules/providers/adapters/capabilities/provider-plugin.capability.js.map +1 -0
- package/dist/server/modules/providers/adapters/capabilities/type-guards.d.ts +3 -0
- package/dist/server/modules/providers/adapters/capabilities/type-guards.js +6 -0
- package/dist/server/modules/providers/adapters/capabilities/type-guards.js.map +1 -1
- package/dist/server/modules/providers/adapters/claude.adapter.d.ts +6 -2
- package/dist/server/modules/providers/adapters/claude.adapter.js +53 -0
- package/dist/server/modules/providers/adapters/claude.adapter.js.map +1 -1
- package/dist/server/modules/providers/adapters/codex.adapter.d.ts +7 -2
- package/dist/server/modules/providers/adapters/codex.adapter.js +46 -0
- package/dist/server/modules/providers/adapters/codex.adapter.js.map +1 -1
- package/dist/server/modules/providers/adapters/plugin-catalog.utils.d.ts +15 -0
- package/dist/server/modules/providers/adapters/plugin-catalog.utils.js +62 -0
- package/dist/server/modules/providers/adapters/plugin-catalog.utils.js.map +1 -0
- package/dist/server/modules/providers/controllers/provider-plugin-policy.controller.d.ts +18 -0
- package/dist/server/modules/providers/controllers/provider-plugin-policy.controller.js +149 -0
- package/dist/server/modules/providers/controllers/provider-plugin-policy.controller.js.map +1 -0
- package/dist/server/modules/providers/controllers/provider-plugins.controller.d.ts +8 -0
- package/dist/server/modules/providers/controllers/provider-plugins.controller.js +78 -0
- package/dist/server/modules/providers/controllers/provider-plugins.controller.js.map +1 -0
- package/dist/server/modules/providers/dtos/provider-plugin.dto.d.ts +28 -0
- package/dist/server/modules/providers/dtos/provider-plugin.dto.js +3 -0
- package/dist/server/modules/providers/dtos/provider-plugin.dto.js.map +1 -0
- package/dist/server/modules/providers/providers.module.js +15 -1
- package/dist/server/modules/providers/providers.module.js.map +1 -1
- package/dist/server/modules/providers/services/provider-plugin-policy.service.d.ts +20 -0
- package/dist/server/modules/providers/services/provider-plugin-policy.service.js +146 -0
- package/dist/server/modules/providers/services/provider-plugin-policy.service.js.map +1 -0
- package/dist/server/modules/providers/services/provider-plugins.service.d.ts +21 -0
- package/dist/server/modules/providers/services/provider-plugins.service.js +169 -0
- package/dist/server/modules/providers/services/provider-plugins.service.js.map +1 -0
- package/dist/server/modules/registry/controllers/templates.controller.d.ts +2 -1
- package/dist/server/modules/reviews/dtos/review.dto.d.ts +2 -2
- package/dist/server/modules/runtime-context-capture/claude-launch-settings-materializer.service.d.ts +9 -1
- package/dist/server/modules/runtime-context-capture/claude-launch-settings-materializer.service.js +102 -16
- package/dist/server/modules/runtime-context-capture/claude-launch-settings-materializer.service.js.map +1 -1
- package/dist/server/modules/runtime-context-capture/codex-plugin-profile-materializer.service.d.ts +53 -0
- package/dist/server/modules/runtime-context-capture/codex-plugin-profile-materializer.service.js +842 -0
- package/dist/server/modules/runtime-context-capture/codex-plugin-profile-materializer.service.js.map +1 -0
- package/dist/server/modules/runtime-context-capture/index.d.ts +2 -1
- package/dist/server/modules/runtime-context-capture/index.js +5 -1
- package/dist/server/modules/runtime-context-capture/index.js.map +1 -1
- package/dist/server/modules/runtime-context-capture/runtime-context-capture.module.js +11 -2
- package/dist/server/modules/runtime-context-capture/runtime-context-capture.module.js.map +1 -1
- package/dist/server/modules/scheduled-epics/dtos/scheduled-epic.dto.d.ts +1 -1
- package/dist/server/modules/session-reader/data/pricing.json +31 -18
- package/dist/server/modules/sessions/services/delivery-failure-disclosure.d.ts +12 -0
- package/dist/server/modules/sessions/services/delivery-failure-disclosure.js +25 -0
- package/dist/server/modules/sessions/services/delivery-failure-disclosure.js.map +1 -0
- package/dist/server/modules/sessions/services/delivery-failure-notifier.service.js +7 -3
- package/dist/server/modules/sessions/services/delivery-failure-notifier.service.js.map +1 -1
- package/dist/server/modules/sessions/services/message-enqueue.service.d.ts +2 -1
- package/dist/server/modules/sessions/services/message-enqueue.service.js +1 -0
- package/dist/server/modules/sessions/services/message-enqueue.service.js.map +1 -1
- package/dist/server/modules/sessions/services/message-pool.types.d.ts +4 -1
- package/dist/server/modules/sessions/services/session-runtime/__test-utils__/pipeline-harness.d.ts +18 -0
- package/dist/server/modules/sessions/services/session-runtime/__test-utils__/pipeline-harness.js +24 -2
- package/dist/server/modules/sessions/services/session-runtime/__test-utils__/pipeline-harness.js.map +1 -1
- package/dist/server/modules/sessions/services/session-runtime/session-launch-pipeline.service.d.ts +5 -1
- package/dist/server/modules/sessions/services/session-runtime/session-launch-pipeline.service.js +67 -7
- package/dist/server/modules/sessions/services/session-runtime/session-launch-pipeline.service.js.map +1 -1
- package/dist/server/modules/sessions/services/session-runtime/session-restore-pipeline.service.d.ts +5 -1
- package/dist/server/modules/sessions/services/session-runtime/session-restore-pipeline.service.js +65 -5
- package/dist/server/modules/sessions/services/session-runtime/session-restore-pipeline.service.js.map +1 -1
- package/dist/server/modules/sessions/services/sessions-message-pool.service.d.ts +2 -1
- package/dist/server/modules/sessions/services/sessions-message-pool.service.js +63 -28
- package/dist/server/modules/sessions/services/sessions-message-pool.service.js.map +1 -1
- package/dist/server/modules/sessions/services/sessions.service.d.ts +4 -1
- package/dist/server/modules/sessions/services/sessions.service.js +19 -2
- package/dist/server/modules/sessions/services/sessions.service.js.map +1 -1
- package/dist/server/modules/sessions/utils/profile-options.d.ts +1 -0
- package/dist/server/modules/sessions/utils/profile-options.js +7 -0
- package/dist/server/modules/sessions/utils/profile-options.js.map +1 -1
- package/dist/server/modules/storage/db/schema.d.ts +255 -0
- package/dist/server/modules/storage/db/schema.js +34 -3
- package/dist/server/modules/storage/db/schema.js.map +1 -1
- package/dist/server/modules/storage/interfaces/storage.interface.d.ts +15 -2
- package/dist/server/modules/storage/interfaces/storage.interface.js.map +1 -1
- package/dist/server/modules/storage/local/delegates/agent.delegate.d.ts +1 -0
- package/dist/server/modules/storage/local/delegates/agent.delegate.js +43 -1
- package/dist/server/modules/storage/local/delegates/agent.delegate.js.map +1 -1
- package/dist/server/modules/storage/local/delegates/epic.delegate.js +6 -0
- package/dist/server/modules/storage/local/delegates/epic.delegate.js.map +1 -1
- package/dist/server/modules/storage/local/delegates/project.delegate.d.ts +1 -0
- package/dist/server/modules/storage/local/delegates/project.delegate.js +21 -0
- package/dist/server/modules/storage/local/delegates/project.delegate.js.map +1 -1
- package/dist/server/modules/storage/local/delegates/provider-plugin-policy.delegate.d.ts +13 -0
- package/dist/server/modules/storage/local/delegates/provider-plugin-policy.delegate.js +90 -0
- package/dist/server/modules/storage/local/delegates/provider-plugin-policy.delegate.js.map +1 -0
- package/dist/server/modules/storage/local/local-storage.service.d.ts +12 -1
- package/dist/server/modules/storage/local/local-storage.service.js +33 -0
- package/dist/server/modules/storage/local/local-storage.service.js.map +1 -1
- package/dist/server/modules/storage/models/domain.models.d.ts +19 -3
- package/dist/server/modules/subscribers/actions/send-message.action.js +47 -12
- package/dist/server/modules/subscribers/actions/send-message.action.js.map +1 -1
- package/dist/server/modules/subscribers/dtos/subscriber.dto.d.ts +4 -4
- package/dist/server/modules/terminal/services/terminal-registry-rehydrator.service.js +8 -5
- package/dist/server/modules/terminal/services/terminal-registry-rehydrator.service.js.map +1 -1
- package/dist/server/modules/watchers/dtos/watcher.dto.d.ts +2 -2
- package/dist/server/tsconfig.tsbuildinfo +1 -1
- package/dist/server/ui/assets/{ReviewDetailPage-yOe1a_fn.js → ReviewDetailPage-Cf5ED0R0.js} +1 -1
- package/dist/server/ui/assets/{ReviewsPage-Bib-IgPo.js → ReviewsPage-BfP9P3QO.js} +1 -1
- package/dist/server/ui/assets/index-B5ZC_DQU.css +32 -0
- package/dist/server/ui/assets/{index-B2TO-QTO.js → index-DptgqA22.js} +241 -241
- package/dist/server/ui/assets/{useReviewSubscription-BmU3yczR.js → useReviewSubscription-QJSfZ3FX.js} +1 -1
- package/dist/server/ui/index.html +2 -2
- package/package.json +9 -2
- package/dist/server/ui/assets/index-DowJ3ZtQ.css +0 -32
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
type JsonRecord = Record<string, unknown>;
|
|
2
|
+
export interface ProviderPluginCatalogPayload {
|
|
3
|
+
installed: JsonRecord[];
|
|
4
|
+
available: JsonRecord[];
|
|
5
|
+
}
|
|
6
|
+
export declare function parseProviderPluginCatalogPayload(stdout: string, providerName: string): ProviderPluginCatalogPayload;
|
|
7
|
+
export declare function requireString(record: JsonRecord, key: string, context: string): string;
|
|
8
|
+
export declare function optionalString(record: JsonRecord, key: string): string | null;
|
|
9
|
+
export declare function optionalBoolean(record: JsonRecord, key: string): boolean;
|
|
10
|
+
export declare function optionalNumber(record: JsonRecord, key: string): number | null;
|
|
11
|
+
export declare function parseQualifiedPluginId(pluginId: string): {
|
|
12
|
+
name: string;
|
|
13
|
+
marketplaceName: string | null;
|
|
14
|
+
};
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseProviderPluginCatalogPayload = parseProviderPluginCatalogPayload;
|
|
4
|
+
exports.requireString = requireString;
|
|
5
|
+
exports.optionalString = optionalString;
|
|
6
|
+
exports.optionalBoolean = optionalBoolean;
|
|
7
|
+
exports.optionalNumber = optionalNumber;
|
|
8
|
+
exports.parseQualifiedPluginId = parseQualifiedPluginId;
|
|
9
|
+
function parseProviderPluginCatalogPayload(stdout, providerName) {
|
|
10
|
+
let value;
|
|
11
|
+
try {
|
|
12
|
+
value = JSON.parse(stdout);
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
throw new Error(`${providerName} plugin catalog returned invalid JSON`);
|
|
16
|
+
}
|
|
17
|
+
if (!isRecord(value) || !Array.isArray(value.installed) || !Array.isArray(value.available)) {
|
|
18
|
+
throw new Error(`${providerName} plugin catalog returned an invalid payload`);
|
|
19
|
+
}
|
|
20
|
+
return {
|
|
21
|
+
installed: value.installed.map((entry, index) => requireRecord(entry, `${providerName} installed plugin ${index}`)),
|
|
22
|
+
available: value.available.map((entry, index) => requireRecord(entry, `${providerName} available plugin ${index}`)),
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function requireString(record, key, context) {
|
|
26
|
+
const value = record[key];
|
|
27
|
+
if (typeof value !== 'string' || value.length === 0) {
|
|
28
|
+
throw new Error(`${context} is missing ${key}`);
|
|
29
|
+
}
|
|
30
|
+
return value;
|
|
31
|
+
}
|
|
32
|
+
function optionalString(record, key) {
|
|
33
|
+
const value = record[key];
|
|
34
|
+
return typeof value === 'string' && value.length > 0 ? value : null;
|
|
35
|
+
}
|
|
36
|
+
function optionalBoolean(record, key) {
|
|
37
|
+
return record[key] === true;
|
|
38
|
+
}
|
|
39
|
+
function optionalNumber(record, key) {
|
|
40
|
+
const value = record[key];
|
|
41
|
+
return typeof value === 'number' && Number.isFinite(value) ? value : null;
|
|
42
|
+
}
|
|
43
|
+
function parseQualifiedPluginId(pluginId) {
|
|
44
|
+
const separator = pluginId.lastIndexOf('@');
|
|
45
|
+
if (separator <= 0 || separator === pluginId.length - 1) {
|
|
46
|
+
return { name: pluginId, marketplaceName: null };
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
name: pluginId.slice(0, separator),
|
|
50
|
+
marketplaceName: pluginId.slice(separator + 1),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
function isRecord(value) {
|
|
54
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
55
|
+
}
|
|
56
|
+
function requireRecord(value, context) {
|
|
57
|
+
if (!isRecord(value)) {
|
|
58
|
+
throw new Error(`${context} must be an object`);
|
|
59
|
+
}
|
|
60
|
+
return value;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=plugin-catalog.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-catalog.utils.js","sourceRoot":"","sources":["../../../../src/modules/providers/adapters/plugin-catalog.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type StorageService } from '../../storage/interfaces/storage.interface';
|
|
2
|
+
import { ProviderPluginPolicyService } from '../services/provider-plugin-policy.service';
|
|
3
|
+
export declare class ProviderPluginPolicyController {
|
|
4
|
+
private readonly policy;
|
|
5
|
+
private readonly storage;
|
|
6
|
+
constructor(policy: ProviderPluginPolicyService, storage: StorageService);
|
|
7
|
+
list(query: unknown): Promise<{
|
|
8
|
+
items: import("../services/provider-plugin-policy.service").EffectiveProviderPluginPolicy[];
|
|
9
|
+
}>;
|
|
10
|
+
setDefault(body: unknown): Promise<import("../services/provider-plugin-policy.service").EffectiveProviderPluginPolicy>;
|
|
11
|
+
resetDefault(query: unknown): Promise<{
|
|
12
|
+
deleted: boolean;
|
|
13
|
+
}>;
|
|
14
|
+
setProject(body: unknown): Promise<import("../services/provider-plugin-policy.service").EffectiveProviderPluginPolicy>;
|
|
15
|
+
resetProject(query: unknown): Promise<{
|
|
16
|
+
deleted: boolean;
|
|
17
|
+
}>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.ProviderPluginPolicyController = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const zod_1 = require("zod");
|
|
18
|
+
const logger_1 = require("../../../common/logging/logger");
|
|
19
|
+
const storage_interface_1 = require("../../storage/interfaces/storage.interface");
|
|
20
|
+
const provider_plugin_policy_service_1 = require("../services/provider-plugin-policy.service");
|
|
21
|
+
const logger = (0, logger_1.createLogger)('ProviderPluginPolicyController');
|
|
22
|
+
const ASCII_CONTROL_PATTERN = /[\u0000-\u001f\u007f]/;
|
|
23
|
+
const PolicyQuerySchema = zod_1.z
|
|
24
|
+
.object({
|
|
25
|
+
projectId: zod_1.z.string().trim().min(1).max(100),
|
|
26
|
+
providerId: zod_1.z.string().trim().min(1).max(100).optional(),
|
|
27
|
+
})
|
|
28
|
+
.strict();
|
|
29
|
+
const ProviderPluginKeyQuerySchema = zod_1.z
|
|
30
|
+
.object({
|
|
31
|
+
providerId: zod_1.z.string().trim().min(1).max(100),
|
|
32
|
+
pluginId: zod_1.z
|
|
33
|
+
.string()
|
|
34
|
+
.trim()
|
|
35
|
+
.min(1)
|
|
36
|
+
.max(512)
|
|
37
|
+
.refine((value) => !ASCII_CONTROL_PATTERN.test(value), {
|
|
38
|
+
message: 'pluginId must not contain ASCII control characters',
|
|
39
|
+
}),
|
|
40
|
+
})
|
|
41
|
+
.strict();
|
|
42
|
+
const ProjectProviderPluginKeyQuerySchema = ProviderPluginKeyQuerySchema.extend({
|
|
43
|
+
projectId: zod_1.z.string().trim().min(1).max(100),
|
|
44
|
+
}).strict();
|
|
45
|
+
const PolicyBodySchema = zod_1.z
|
|
46
|
+
.object({
|
|
47
|
+
projectId: zod_1.z.string().trim().min(1).max(100).optional(),
|
|
48
|
+
providerId: zod_1.z.string().trim().min(1).max(100),
|
|
49
|
+
pluginId: zod_1.z
|
|
50
|
+
.string()
|
|
51
|
+
.trim()
|
|
52
|
+
.min(1)
|
|
53
|
+
.max(512)
|
|
54
|
+
.refine((value) => !ASCII_CONTROL_PATTERN.test(value), {
|
|
55
|
+
message: 'pluginId must not contain ASCII control characters',
|
|
56
|
+
}),
|
|
57
|
+
enabled: zod_1.z.boolean(),
|
|
58
|
+
})
|
|
59
|
+
.strict();
|
|
60
|
+
let ProviderPluginPolicyController = class ProviderPluginPolicyController {
|
|
61
|
+
policy;
|
|
62
|
+
storage;
|
|
63
|
+
constructor(policy, storage) {
|
|
64
|
+
this.policy = policy;
|
|
65
|
+
this.storage = storage;
|
|
66
|
+
}
|
|
67
|
+
async list(query) {
|
|
68
|
+
const parsed = PolicyQuerySchema.parse(query);
|
|
69
|
+
logger.info({ projectId: parsed.projectId, providerId: parsed.providerId }, 'GET plugin policy');
|
|
70
|
+
await this.storage.getProject(parsed.projectId);
|
|
71
|
+
if (parsed.providerId) {
|
|
72
|
+
await this.storage.getProvider(parsed.providerId);
|
|
73
|
+
return { items: await this.policy.listConfigured(parsed.projectId, parsed.providerId) };
|
|
74
|
+
}
|
|
75
|
+
const providers = await this.storage.listProviders({ limit: 1_000, offset: 0 });
|
|
76
|
+
const items = await Promise.all(providers.items.map((provider) => this.policy.listConfigured(parsed.projectId, provider.id)));
|
|
77
|
+
return { items: items.flat() };
|
|
78
|
+
}
|
|
79
|
+
async setDefault(body) {
|
|
80
|
+
logger.info('PUT default plugin policy');
|
|
81
|
+
const parsed = PolicyBodySchema.omit({ projectId: true }).parse(body);
|
|
82
|
+
await this.storage.getProvider(parsed.providerId);
|
|
83
|
+
return this.policy.setDefault(parsed.providerId, parsed.pluginId, parsed.enabled);
|
|
84
|
+
}
|
|
85
|
+
async resetDefault(query) {
|
|
86
|
+
logger.info('DELETE default plugin policy');
|
|
87
|
+
const parsed = ProviderPluginKeyQuerySchema.parse(query);
|
|
88
|
+
await this.storage.getProvider(parsed.providerId);
|
|
89
|
+
const deleted = await this.policy.resetDefault(parsed.providerId, parsed.pluginId);
|
|
90
|
+
return { deleted };
|
|
91
|
+
}
|
|
92
|
+
async setProject(body) {
|
|
93
|
+
logger.info('PUT project plugin policy');
|
|
94
|
+
const parsed = PolicyBodySchema.required({ projectId: true }).parse(body);
|
|
95
|
+
await this.storage.getProject(parsed.projectId);
|
|
96
|
+
await this.storage.getProvider(parsed.providerId);
|
|
97
|
+
return this.policy.setProjectOverride(parsed.projectId, parsed.providerId, parsed.pluginId, parsed.enabled);
|
|
98
|
+
}
|
|
99
|
+
async resetProject(query) {
|
|
100
|
+
logger.info('DELETE project plugin policy');
|
|
101
|
+
const parsed = ProjectProviderPluginKeyQuerySchema.parse(query);
|
|
102
|
+
await this.storage.getProject(parsed.projectId);
|
|
103
|
+
await this.storage.getProvider(parsed.providerId);
|
|
104
|
+
const deleted = await this.policy.resetProjectOverride(parsed.projectId, parsed.providerId, parsed.pluginId);
|
|
105
|
+
return { deleted };
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
exports.ProviderPluginPolicyController = ProviderPluginPolicyController;
|
|
109
|
+
__decorate([
|
|
110
|
+
(0, common_1.Get)(),
|
|
111
|
+
__param(0, (0, common_1.Query)()),
|
|
112
|
+
__metadata("design:type", Function),
|
|
113
|
+
__metadata("design:paramtypes", [Object]),
|
|
114
|
+
__metadata("design:returntype", Promise)
|
|
115
|
+
], ProviderPluginPolicyController.prototype, "list", null);
|
|
116
|
+
__decorate([
|
|
117
|
+
(0, common_1.Put)('default'),
|
|
118
|
+
__param(0, (0, common_1.Body)()),
|
|
119
|
+
__metadata("design:type", Function),
|
|
120
|
+
__metadata("design:paramtypes", [Object]),
|
|
121
|
+
__metadata("design:returntype", Promise)
|
|
122
|
+
], ProviderPluginPolicyController.prototype, "setDefault", null);
|
|
123
|
+
__decorate([
|
|
124
|
+
(0, common_1.Delete)('default'),
|
|
125
|
+
__param(0, (0, common_1.Query)()),
|
|
126
|
+
__metadata("design:type", Function),
|
|
127
|
+
__metadata("design:paramtypes", [Object]),
|
|
128
|
+
__metadata("design:returntype", Promise)
|
|
129
|
+
], ProviderPluginPolicyController.prototype, "resetDefault", null);
|
|
130
|
+
__decorate([
|
|
131
|
+
(0, common_1.Put)('project'),
|
|
132
|
+
__param(0, (0, common_1.Body)()),
|
|
133
|
+
__metadata("design:type", Function),
|
|
134
|
+
__metadata("design:paramtypes", [Object]),
|
|
135
|
+
__metadata("design:returntype", Promise)
|
|
136
|
+
], ProviderPluginPolicyController.prototype, "setProject", null);
|
|
137
|
+
__decorate([
|
|
138
|
+
(0, common_1.Delete)('project'),
|
|
139
|
+
__param(0, (0, common_1.Query)()),
|
|
140
|
+
__metadata("design:type", Function),
|
|
141
|
+
__metadata("design:paramtypes", [Object]),
|
|
142
|
+
__metadata("design:returntype", Promise)
|
|
143
|
+
], ProviderPluginPolicyController.prototype, "resetProject", null);
|
|
144
|
+
exports.ProviderPluginPolicyController = ProviderPluginPolicyController = __decorate([
|
|
145
|
+
(0, common_1.Controller)('api/provider-plugins/policy'),
|
|
146
|
+
__param(1, (0, common_1.Inject)(storage_interface_1.STORAGE_SERVICE)),
|
|
147
|
+
__metadata("design:paramtypes", [provider_plugin_policy_service_1.ProviderPluginPolicyService, Object])
|
|
148
|
+
], ProviderPluginPolicyController);
|
|
149
|
+
//# sourceMappingURL=provider-plugin-policy.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-plugin-policy.controller.js","sourceRoot":"","sources":["../../../../src/modules/providers/controllers/provider-plugin-policy.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ProviderPluginsService } from '../services/provider-plugins.service';
|
|
2
|
+
export declare class ProviderPluginsController {
|
|
3
|
+
private readonly providerPlugins;
|
|
4
|
+
constructor(providerPlugins: ProviderPluginsService);
|
|
5
|
+
listCatalog(): Promise<import("../dtos/provider-plugin.dto").ProviderPluginCatalogDto>;
|
|
6
|
+
refreshCatalog(): Promise<import("../dtos/provider-plugin.dto").ProviderPluginCatalogDto>;
|
|
7
|
+
install(body: unknown): Promise<import("../dtos/provider-plugin.dto").ProviderPluginInstallDto>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.ProviderPluginsController = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const zod_1 = require("zod");
|
|
18
|
+
const logger_1 = require("../../../common/logging/logger");
|
|
19
|
+
const provider_plugins_service_1 = require("../services/provider-plugins.service");
|
|
20
|
+
const logger = (0, logger_1.createLogger)('ProviderPluginsController');
|
|
21
|
+
const ASCII_CONTROL_PATTERN = /[\u0000-\u001f\u007f]/;
|
|
22
|
+
const InstallProviderPluginSchema = zod_1.z
|
|
23
|
+
.object({
|
|
24
|
+
providerId: zod_1.z.string().trim().min(1).max(100),
|
|
25
|
+
pluginId: zod_1.z
|
|
26
|
+
.string()
|
|
27
|
+
.trim()
|
|
28
|
+
.min(1)
|
|
29
|
+
.max(512)
|
|
30
|
+
.refine((value) => !ASCII_CONTROL_PATTERN.test(value), {
|
|
31
|
+
message: 'pluginId must not contain ASCII control characters',
|
|
32
|
+
}),
|
|
33
|
+
})
|
|
34
|
+
.strict();
|
|
35
|
+
let ProviderPluginsController = class ProviderPluginsController {
|
|
36
|
+
providerPlugins;
|
|
37
|
+
constructor(providerPlugins) {
|
|
38
|
+
this.providerPlugins = providerPlugins;
|
|
39
|
+
}
|
|
40
|
+
listCatalog() {
|
|
41
|
+
logger.info('GET /api/provider-plugins');
|
|
42
|
+
return this.providerPlugins.listCatalog();
|
|
43
|
+
}
|
|
44
|
+
refreshCatalog() {
|
|
45
|
+
logger.info('POST /api/provider-plugins/refresh');
|
|
46
|
+
return this.providerPlugins.refreshCatalog();
|
|
47
|
+
}
|
|
48
|
+
install(body) {
|
|
49
|
+
logger.info('POST /api/provider-plugins/install');
|
|
50
|
+
const request = InstallProviderPluginSchema.parse(body);
|
|
51
|
+
return this.providerPlugins.install(request.providerId, request.pluginId);
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
exports.ProviderPluginsController = ProviderPluginsController;
|
|
55
|
+
__decorate([
|
|
56
|
+
(0, common_1.Get)(),
|
|
57
|
+
__metadata("design:type", Function),
|
|
58
|
+
__metadata("design:paramtypes", []),
|
|
59
|
+
__metadata("design:returntype", void 0)
|
|
60
|
+
], ProviderPluginsController.prototype, "listCatalog", null);
|
|
61
|
+
__decorate([
|
|
62
|
+
(0, common_1.Post)('refresh'),
|
|
63
|
+
__metadata("design:type", Function),
|
|
64
|
+
__metadata("design:paramtypes", []),
|
|
65
|
+
__metadata("design:returntype", void 0)
|
|
66
|
+
], ProviderPluginsController.prototype, "refreshCatalog", null);
|
|
67
|
+
__decorate([
|
|
68
|
+
(0, common_1.Post)('install'),
|
|
69
|
+
__param(0, (0, common_1.Body)()),
|
|
70
|
+
__metadata("design:type", Function),
|
|
71
|
+
__metadata("design:paramtypes", [Object]),
|
|
72
|
+
__metadata("design:returntype", void 0)
|
|
73
|
+
], ProviderPluginsController.prototype, "install", null);
|
|
74
|
+
exports.ProviderPluginsController = ProviderPluginsController = __decorate([
|
|
75
|
+
(0, common_1.Controller)('api/provider-plugins'),
|
|
76
|
+
__metadata("design:paramtypes", [provider_plugins_service_1.ProviderPluginsService])
|
|
77
|
+
], ProviderPluginsController);
|
|
78
|
+
//# sourceMappingURL=provider-plugins.controller.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-plugins.controller.js","sourceRoot":"","sources":["../../../../src/modules/providers/controllers/provider-plugins.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA6D;AAC7D,6BAAwB;AACxB,2DAA8D;AAC9D,mFAA8E;AAE9E,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,2BAA2B,CAAC,CAAC;AACzD,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAEtD,MAAM,2BAA2B,GAAG,OAAC;KAClC,MAAM,CAAC;IACN,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAC7C,QAAQ,EAAE,OAAC;SACR,MAAM,EAAE;SACR,IAAI,EAAE;SACN,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;QACrD,OAAO,EAAE,oDAAoD;KAC9D,CAAC;CACL,CAAC;KACD,MAAM,EAAE,CAAC;AAGL,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IACP;IAA7B,YAA6B,eAAuC;QAAvC,oBAAe,GAAf,eAAe,CAAwB;IAAG,CAAC;IAGxE,WAAW;QACT,MAAM,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;QACzC,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;IAC5C,CAAC;IAGD,cAAc;QACZ,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAClD,OAAO,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,CAAC;IAC/C,CAAC;IAGD,OAAO,CAAS,IAAa;QAC3B,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,2BAA2B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5E,CAAC;CACF,CAAA;AArBY,8DAAyB;AAIpC;IADC,IAAA,YAAG,GAAE;;;;4DAIL;AAGD;IADC,IAAA,aAAI,EAAC,SAAS,CAAC;;;;+DAIf;AAGD;IADC,IAAA,aAAI,EAAC,SAAS,CAAC;IACP,WAAA,IAAA,aAAI,GAAE,CAAA;;;;wDAId;oCApBU,yBAAyB;IADrC,IAAA,mBAAU,EAAC,sBAAsB,CAAC;qCAEa,iDAAsB;GADzD,yBAAyB,CAqBrC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export interface ProviderPluginCatalogEntry {
|
|
2
|
+
pluginId: string;
|
|
3
|
+
name: string;
|
|
4
|
+
description: string | null;
|
|
5
|
+
marketplaceName: string | null;
|
|
6
|
+
version: string | null;
|
|
7
|
+
installed: boolean;
|
|
8
|
+
available: boolean;
|
|
9
|
+
providerEnabled: boolean;
|
|
10
|
+
installationScopes: string[];
|
|
11
|
+
installCount: number | null;
|
|
12
|
+
installPolicy: string | null;
|
|
13
|
+
authPolicy: string | null;
|
|
14
|
+
}
|
|
15
|
+
export interface ProviderPluginDto extends ProviderPluginCatalogEntry {
|
|
16
|
+
providerId: string;
|
|
17
|
+
providerName: string;
|
|
18
|
+
}
|
|
19
|
+
export interface ProviderPluginCatalogDto {
|
|
20
|
+
items: ProviderPluginDto[];
|
|
21
|
+
total: number;
|
|
22
|
+
}
|
|
23
|
+
export interface ProviderPluginInstallDto {
|
|
24
|
+
success: true;
|
|
25
|
+
providerId: string;
|
|
26
|
+
providerName: string;
|
|
27
|
+
pluginId: string;
|
|
28
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-plugin.dto.js","sourceRoot":"","sources":["../../../../src/modules/providers/dtos/provider-plugin.dto.ts"],"names":[],"mappings":""}
|
|
@@ -11,6 +11,8 @@ const common_1 = require("@nestjs/common");
|
|
|
11
11
|
const providers_controller_1 = require("./controllers/providers.controller");
|
|
12
12
|
const provider_models_controller_1 = require("./controllers/provider-models.controller");
|
|
13
13
|
const provider_efforts_controller_1 = require("./controllers/provider-efforts.controller");
|
|
14
|
+
const provider_plugins_controller_1 = require("./controllers/provider-plugins.controller");
|
|
15
|
+
const provider_plugin_policy_controller_1 = require("./controllers/provider-plugin-policy.controller");
|
|
14
16
|
const storage_module_1 = require("../storage/storage.module");
|
|
15
17
|
const adapters_1 = require("./adapters");
|
|
16
18
|
const provider_state_manager_service_1 = require("./services/provider-state-manager.service");
|
|
@@ -23,6 +25,8 @@ const settings_module_1 = require("../settings/settings.module");
|
|
|
23
25
|
const registry_module_1 = require("../registry/registry.module");
|
|
24
26
|
const process_executor_module_1 = require("../terminal/services/process-executor/process-executor.module");
|
|
25
27
|
const provider_effort_seeding_module_1 = require("./services/provider-effort-seeding.module");
|
|
28
|
+
const provider_plugin_policy_service_1 = require("./services/provider-plugin-policy.service");
|
|
29
|
+
const provider_plugins_service_1 = require("./services/provider-plugins.service");
|
|
26
30
|
let ProvidersModule = class ProvidersModule {
|
|
27
31
|
};
|
|
28
32
|
exports.ProvidersModule = ProvidersModule;
|
|
@@ -36,7 +40,13 @@ exports.ProvidersModule = ProvidersModule = __decorate([
|
|
|
36
40
|
process_executor_module_1.ProcessExecutorModule,
|
|
37
41
|
provider_effort_seeding_module_1.ProviderEffortSeedingModule,
|
|
38
42
|
],
|
|
39
|
-
controllers: [
|
|
43
|
+
controllers: [
|
|
44
|
+
providers_controller_1.ProvidersController,
|
|
45
|
+
provider_models_controller_1.ProviderModelsController,
|
|
46
|
+
provider_efforts_controller_1.ProviderEffortsController,
|
|
47
|
+
provider_plugins_controller_1.ProviderPluginsController,
|
|
48
|
+
provider_plugin_policy_controller_1.ProviderPluginPolicyController,
|
|
49
|
+
],
|
|
40
50
|
providers: [
|
|
41
51
|
provider_state_manager_service_1.ProviderStateManager,
|
|
42
52
|
provider_project_sync_service_1.ProviderProjectSyncService,
|
|
@@ -47,6 +57,8 @@ exports.ProvidersModule = ProvidersModule = __decorate([
|
|
|
47
57
|
mcp_registration_1.AntigravityMcpRegistrationAdapter,
|
|
48
58
|
mcp_provider_registration_service_1.McpProviderRegistrationService,
|
|
49
59
|
provider_mcp_ensure_service_1.ProviderMcpEnsureService,
|
|
60
|
+
provider_plugin_policy_service_1.ProviderPluginPolicyService,
|
|
61
|
+
provider_plugins_service_1.ProviderPluginsService,
|
|
50
62
|
],
|
|
51
63
|
exports: [
|
|
52
64
|
provider_project_sync_service_1.ProviderProjectSyncService,
|
|
@@ -54,6 +66,8 @@ exports.ProvidersModule = ProvidersModule = __decorate([
|
|
|
54
66
|
mcp_provider_registration_service_1.McpProviderRegistrationService,
|
|
55
67
|
mcp_registration_1.McpRegistrationPort,
|
|
56
68
|
provider_mcp_ensure_service_1.ProviderMcpEnsureService,
|
|
69
|
+
provider_plugin_policy_service_1.ProviderPluginPolicyService,
|
|
70
|
+
provider_plugins_service_1.ProviderPluginsService,
|
|
57
71
|
],
|
|
58
72
|
})
|
|
59
73
|
], ProvidersModule);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers.module.js","sourceRoot":"","sources":["../../../src/modules/providers/providers.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,6EAAyE;AACzE,yFAAoF;AACpF,2FAAsF;AACtF,8DAA0D;AAC1D,yCAAoD;AACpD,8FAAiF;AACjF,4FAAsF;AACtF,sFAAiF;AACjF,oGAA8F;AAC9F,wFAAkF;AAClF,kEAKqC;AACrC,iEAA6D;AAC7D,iEAA6D;AAC7D,2GAAsG;AACtG,8FAAwF;
|
|
1
|
+
{"version":3,"file":"providers.module.js","sourceRoot":"","sources":["../../../src/modules/providers/providers.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,6EAAyE;AACzE,yFAAoF;AACpF,2FAAsF;AACtF,2FAAsF;AACtF,uGAAiG;AACjG,8DAA0D;AAC1D,yCAAoD;AACpD,8FAAiF;AACjF,4FAAsF;AACtF,sFAAiF;AACjF,oGAA8F;AAC9F,wFAAkF;AAClF,kEAKqC;AACrC,iEAA6D;AAC7D,iEAA6D;AAC7D,2GAAsG;AACtG,8FAAwF;AACxF,8FAAwF;AACxF,kFAA6E;AAyCtE,IAAM,eAAe,GAArB,MAAM,eAAe;CAAG,CAAA;AAAlB,0CAAe;0BAAf,eAAe;IAvC3B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,8BAAa;YACb,iCAAsB;YACtB,gCAAc;YACd,gCAAc;YACd,+CAAqB;YACrB,4DAA2B;SAC5B;QACD,WAAW,EAAE;YACX,0CAAmB;YACnB,qDAAwB;YACxB,uDAAyB;YACzB,uDAAyB;YACzB,kEAA8B;SAC/B;QACD,SAAS,EAAE;YACT,qDAAoB;YACpB,0DAA0B;YAC1B,qDAAwB;YACxB,sCAAmB;YACnB,4CAAyB;YACzB,mDAAgC;YAChC,oDAAiC;YACjC,kEAA8B;YAC9B,sDAAwB;YACxB,4DAA2B;YAC3B,iDAAsB;SACvB;QACD,OAAO,EAAE;YACP,0DAA0B;YAC1B,qDAAwB;YACxB,kEAA8B;YAC9B,sCAAmB;YACnB,sDAAwB;YACxB,4DAA2B;YAC3B,iDAAsB;SACvB;KACF,CAAC;GACW,eAAe,CAAG"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { type StorageService } from '../../storage/interfaces/storage.interface';
|
|
2
|
+
export type ProviderPluginPolicySource = 'project' | 'default';
|
|
3
|
+
export interface EffectiveProviderPluginPolicy {
|
|
4
|
+
providerId: string;
|
|
5
|
+
pluginId: string;
|
|
6
|
+
enabled: boolean;
|
|
7
|
+
source: ProviderPluginPolicySource;
|
|
8
|
+
}
|
|
9
|
+
export declare class ProviderPluginPolicyService {
|
|
10
|
+
private readonly storage;
|
|
11
|
+
constructor(storage: StorageService);
|
|
12
|
+
setDefault(providerId: string, pluginId: string, enabled: boolean): Promise<EffectiveProviderPluginPolicy>;
|
|
13
|
+
resetDefault(providerId: string, pluginId: string): Promise<boolean>;
|
|
14
|
+
setProjectOverride(projectId: string, providerId: string, pluginId: string, enabled: boolean): Promise<EffectiveProviderPluginPolicy>;
|
|
15
|
+
resetProjectOverride(projectId: string, providerId: string, pluginId: string): Promise<boolean>;
|
|
16
|
+
resolve(projectId: string, providerId: string, pluginId: string): Promise<EffectiveProviderPluginPolicy | null>;
|
|
17
|
+
resolveAll(projectId: string, providerId: string): Promise<EffectiveProviderPluginPolicy[]>;
|
|
18
|
+
listConfigured(projectId: string, providerId: string): Promise<EffectiveProviderPluginPolicy[]>;
|
|
19
|
+
private normalizePluginId;
|
|
20
|
+
}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.ProviderPluginPolicyService = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const error_types_1 = require("../../../common/errors/error-types");
|
|
18
|
+
const storage_interface_1 = require("../../storage/interfaces/storage.interface");
|
|
19
|
+
const MAX_PLUGIN_ID_LENGTH = 512;
|
|
20
|
+
const ASCII_CONTROL_PATTERN = /[\u0000-\u001f\u007f]/;
|
|
21
|
+
let ProviderPluginPolicyService = class ProviderPluginPolicyService {
|
|
22
|
+
storage;
|
|
23
|
+
constructor(storage) {
|
|
24
|
+
this.storage = storage;
|
|
25
|
+
}
|
|
26
|
+
async setDefault(providerId, pluginId, enabled) {
|
|
27
|
+
const normalizedPluginId = this.normalizePluginId(pluginId);
|
|
28
|
+
const row = await this.storage.upsertProviderPluginDefault({
|
|
29
|
+
providerId,
|
|
30
|
+
pluginId: normalizedPluginId,
|
|
31
|
+
enabled,
|
|
32
|
+
});
|
|
33
|
+
return {
|
|
34
|
+
providerId: row.providerId,
|
|
35
|
+
pluginId: row.pluginId,
|
|
36
|
+
enabled: row.enabled,
|
|
37
|
+
source: 'default',
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
async resetDefault(providerId, pluginId) {
|
|
41
|
+
return this.storage.deleteProviderPluginDefault(providerId, this.normalizePluginId(pluginId));
|
|
42
|
+
}
|
|
43
|
+
async setProjectOverride(projectId, providerId, pluginId, enabled) {
|
|
44
|
+
const normalizedPluginId = this.normalizePluginId(pluginId);
|
|
45
|
+
const row = await this.storage.upsertProjectProviderPluginOverride({
|
|
46
|
+
projectId,
|
|
47
|
+
providerId,
|
|
48
|
+
pluginId: normalizedPluginId,
|
|
49
|
+
enabled,
|
|
50
|
+
});
|
|
51
|
+
return {
|
|
52
|
+
providerId: row.providerId,
|
|
53
|
+
pluginId: row.pluginId,
|
|
54
|
+
enabled: row.enabled,
|
|
55
|
+
source: 'project',
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
async resetProjectOverride(projectId, providerId, pluginId) {
|
|
59
|
+
return this.storage.deleteProjectProviderPluginOverride(projectId, providerId, this.normalizePluginId(pluginId));
|
|
60
|
+
}
|
|
61
|
+
async resolve(projectId, providerId, pluginId) {
|
|
62
|
+
const normalizedPluginId = this.normalizePluginId(pluginId);
|
|
63
|
+
const projectOverride = await this.storage.getProjectProviderPluginOverride(projectId, providerId, normalizedPluginId);
|
|
64
|
+
if (projectOverride) {
|
|
65
|
+
return {
|
|
66
|
+
providerId,
|
|
67
|
+
pluginId: projectOverride.pluginId,
|
|
68
|
+
enabled: projectOverride.enabled,
|
|
69
|
+
source: 'project',
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
const providerDefault = await this.storage.getProviderPluginDefault(providerId, normalizedPluginId);
|
|
73
|
+
return providerDefault
|
|
74
|
+
? {
|
|
75
|
+
providerId,
|
|
76
|
+
pluginId: providerDefault.pluginId,
|
|
77
|
+
enabled: providerDefault.enabled,
|
|
78
|
+
source: 'default',
|
|
79
|
+
}
|
|
80
|
+
: null;
|
|
81
|
+
}
|
|
82
|
+
async resolveAll(projectId, providerId) {
|
|
83
|
+
const [defaults, overrides] = await Promise.all([
|
|
84
|
+
this.storage.listProviderPluginDefaults(providerId),
|
|
85
|
+
this.storage.listProjectProviderPluginOverrides(projectId, providerId),
|
|
86
|
+
]);
|
|
87
|
+
const effectiveByPluginId = new Map();
|
|
88
|
+
for (const row of defaults) {
|
|
89
|
+
effectiveByPluginId.set(row.pluginId, {
|
|
90
|
+
providerId,
|
|
91
|
+
pluginId: row.pluginId,
|
|
92
|
+
enabled: row.enabled,
|
|
93
|
+
source: 'default',
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
for (const row of overrides) {
|
|
97
|
+
effectiveByPluginId.set(row.pluginId, {
|
|
98
|
+
providerId,
|
|
99
|
+
pluginId: row.pluginId,
|
|
100
|
+
enabled: row.enabled,
|
|
101
|
+
source: 'project',
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
return [...effectiveByPluginId.values()].sort((left, right) => left.pluginId.localeCompare(right.pluginId));
|
|
105
|
+
}
|
|
106
|
+
async listConfigured(projectId, providerId) {
|
|
107
|
+
const [defaults, overrides] = await Promise.all([
|
|
108
|
+
this.storage.listProviderPluginDefaults(providerId),
|
|
109
|
+
this.storage.listProjectProviderPluginOverrides(projectId, providerId),
|
|
110
|
+
]);
|
|
111
|
+
return [
|
|
112
|
+
...defaults.map((row) => ({
|
|
113
|
+
providerId,
|
|
114
|
+
pluginId: row.pluginId,
|
|
115
|
+
enabled: row.enabled,
|
|
116
|
+
source: 'default',
|
|
117
|
+
})),
|
|
118
|
+
...overrides.map((row) => ({
|
|
119
|
+
providerId,
|
|
120
|
+
pluginId: row.pluginId,
|
|
121
|
+
enabled: row.enabled,
|
|
122
|
+
source: 'project',
|
|
123
|
+
})),
|
|
124
|
+
].sort((left, right) => left.pluginId.localeCompare(right.pluginId) || left.source.localeCompare(right.source));
|
|
125
|
+
}
|
|
126
|
+
normalizePluginId(pluginId) {
|
|
127
|
+
if (typeof pluginId !== 'string') {
|
|
128
|
+
throw new error_types_1.ValidationError('Plugin ID must contain 1 to 512 characters and no ASCII control characters.', { field: 'pluginId' });
|
|
129
|
+
}
|
|
130
|
+
const normalized = pluginId.trim();
|
|
131
|
+
const characterCount = Array.from(normalized).length;
|
|
132
|
+
if (characterCount === 0 ||
|
|
133
|
+
characterCount > MAX_PLUGIN_ID_LENGTH ||
|
|
134
|
+
ASCII_CONTROL_PATTERN.test(normalized)) {
|
|
135
|
+
throw new error_types_1.ValidationError('Plugin ID must contain 1 to 512 characters and no ASCII control characters.', { field: 'pluginId' });
|
|
136
|
+
}
|
|
137
|
+
return normalized;
|
|
138
|
+
}
|
|
139
|
+
};
|
|
140
|
+
exports.ProviderPluginPolicyService = ProviderPluginPolicyService;
|
|
141
|
+
exports.ProviderPluginPolicyService = ProviderPluginPolicyService = __decorate([
|
|
142
|
+
(0, common_1.Injectable)(),
|
|
143
|
+
__param(0, (0, common_1.Inject)(storage_interface_1.STORAGE_SERVICE)),
|
|
144
|
+
__metadata("design:paramtypes", [Object])
|
|
145
|
+
], ProviderPluginPolicyService);
|
|
146
|
+
//# sourceMappingURL=provider-plugin-policy.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-plugin-policy.service.js","sourceRoot":"","sources":["../../../../src/modules/providers/services/provider-plugin-policy.service.ts"],"names":[],"mappings":"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"}
|