@withpica/mcp-server 2.1.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/README.md +305 -0
- package/dist/config.d.ts +34 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +33 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/pica-sdk.d.ts +1162 -0
- package/dist/pica-sdk.d.ts.map +1 -0
- package/dist/pica-sdk.js +1371 -0
- package/dist/pica-sdk.js.map +1 -0
- package/dist/prompts/index.d.ts +78 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +513 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/resources/index.d.ts +64 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +310 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/resources/llms-primer.d.ts +2 -0
- package/dist/resources/llms-primer.d.ts.map +1 -0
- package/dist/resources/llms-primer.js +67 -0
- package/dist/resources/llms-primer.js.map +1 -0
- package/dist/server.d.ts +27 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +140 -0
- package/dist/server.js.map +1 -0
- package/dist/tools/agreement-types.d.ts +37 -0
- package/dist/tools/agreement-types.d.ts.map +1 -0
- package/dist/tools/agreement-types.js +579 -0
- package/dist/tools/agreement-types.js.map +1 -0
- package/dist/tools/agreements.d.ts +21 -0
- package/dist/tools/agreements.d.ts.map +1 -0
- package/dist/tools/agreements.js +328 -0
- package/dist/tools/agreements.js.map +1 -0
- package/dist/tools/analytics.d.ts +20 -0
- package/dist/tools/analytics.d.ts.map +1 -0
- package/dist/tools/analytics.js +126 -0
- package/dist/tools/analytics.js.map +1 -0
- package/dist/tools/assets.d.ts +23 -0
- package/dist/tools/assets.d.ts.map +1 -0
- package/dist/tools/assets.js +220 -0
- package/dist/tools/assets.js.map +1 -0
- package/dist/tools/audio-files.d.ts +21 -0
- package/dist/tools/audio-files.d.ts.map +1 -0
- package/dist/tools/audio-files.js +358 -0
- package/dist/tools/audio-files.js.map +1 -0
- package/dist/tools/bulk.d.ts +16 -0
- package/dist/tools/bulk.d.ts.map +1 -0
- package/dist/tools/bulk.js +82 -0
- package/dist/tools/bulk.js.map +1 -0
- package/dist/tools/calendar.d.ts +15 -0
- package/dist/tools/calendar.d.ts.map +1 -0
- package/dist/tools/calendar.js +69 -0
- package/dist/tools/calendar.js.map +1 -0
- package/dist/tools/collaborators.d.ts +17 -0
- package/dist/tools/collaborators.d.ts.map +1 -0
- package/dist/tools/collaborators.js +133 -0
- package/dist/tools/collaborators.js.map +1 -0
- package/dist/tools/comparisons.d.ts +22 -0
- package/dist/tools/comparisons.d.ts.map +1 -0
- package/dist/tools/comparisons.js +86 -0
- package/dist/tools/comparisons.js.map +1 -0
- package/dist/tools/credits.d.ts +17 -0
- package/dist/tools/credits.d.ts.map +1 -0
- package/dist/tools/credits.js +136 -0
- package/dist/tools/credits.js.map +1 -0
- package/dist/tools/dashboard.d.ts +20 -0
- package/dist/tools/dashboard.d.ts.map +1 -0
- package/dist/tools/dashboard.js +156 -0
- package/dist/tools/dashboard.js.map +1 -0
- package/dist/tools/directory.d.ts +15 -0
- package/dist/tools/directory.d.ts.map +1 -0
- package/dist/tools/directory.js +108 -0
- package/dist/tools/directory.js.map +1 -0
- package/dist/tools/disputes.d.ts +18 -0
- package/dist/tools/disputes.d.ts.map +1 -0
- package/dist/tools/disputes.js +66 -0
- package/dist/tools/disputes.js.map +1 -0
- package/dist/tools/documents.d.ts +15 -0
- package/dist/tools/documents.d.ts.map +1 -0
- package/dist/tools/documents.js +38 -0
- package/dist/tools/documents.js.map +1 -0
- package/dist/tools/duplicates.d.ts +16 -0
- package/dist/tools/duplicates.d.ts.map +1 -0
- package/dist/tools/duplicates.js +72 -0
- package/dist/tools/duplicates.js.map +1 -0
- package/dist/tools/enrichment.d.ts +23 -0
- package/dist/tools/enrichment.d.ts.map +1 -0
- package/dist/tools/enrichment.js +207 -0
- package/dist/tools/enrichment.js.map +1 -0
- package/dist/tools/exports.d.ts +19 -0
- package/dist/tools/exports.d.ts.map +1 -0
- package/dist/tools/exports.js +155 -0
- package/dist/tools/exports.js.map +1 -0
- package/dist/tools/health.d.ts +17 -0
- package/dist/tools/health.d.ts.map +1 -0
- package/dist/tools/health.js +69 -0
- package/dist/tools/health.js.map +1 -0
- package/dist/tools/import-documents.d.ts +21 -0
- package/dist/tools/import-documents.d.ts.map +1 -0
- package/dist/tools/import-documents.js +191 -0
- package/dist/tools/import-documents.js.map +1 -0
- package/dist/tools/import.d.ts +29 -0
- package/dist/tools/import.d.ts.map +1 -0
- package/dist/tools/import.js +404 -0
- package/dist/tools/import.js.map +1 -0
- package/dist/tools/index.d.ts +48 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +394 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/integrations.d.ts +15 -0
- package/dist/tools/integrations.d.ts.map +1 -0
- package/dist/tools/integrations.js +102 -0
- package/dist/tools/integrations.js.map +1 -0
- package/dist/tools/licensing.d.ts +40 -0
- package/dist/tools/licensing.d.ts.map +1 -0
- package/dist/tools/licensing.js +436 -0
- package/dist/tools/licensing.js.map +1 -0
- package/dist/tools/memory.d.ts +21 -0
- package/dist/tools/memory.d.ts.map +1 -0
- package/dist/tools/memory.js +121 -0
- package/dist/tools/memory.js.map +1 -0
- package/dist/tools/multimedia.d.ts +19 -0
- package/dist/tools/multimedia.d.ts.map +1 -0
- package/dist/tools/multimedia.js +293 -0
- package/dist/tools/multimedia.js.map +1 -0
- package/dist/tools/notes.d.ts +21 -0
- package/dist/tools/notes.d.ts.map +1 -0
- package/dist/tools/notes.js +126 -0
- package/dist/tools/notes.js.map +1 -0
- package/dist/tools/notifications.d.ts +17 -0
- package/dist/tools/notifications.d.ts.map +1 -0
- package/dist/tools/notifications.js +117 -0
- package/dist/tools/notifications.js.map +1 -0
- package/dist/tools/people.d.ts +53 -0
- package/dist/tools/people.d.ts.map +1 -0
- package/dist/tools/people.js +534 -0
- package/dist/tools/people.js.map +1 -0
- package/dist/tools/pica-score.d.ts +15 -0
- package/dist/tools/pica-score.d.ts.map +1 -0
- package/dist/tools/pica-score.js +30 -0
- package/dist/tools/pica-score.js.map +1 -0
- package/dist/tools/projects.d.ts +19 -0
- package/dist/tools/projects.d.ts.map +1 -0
- package/dist/tools/projects.js +142 -0
- package/dist/tools/projects.js.map +1 -0
- package/dist/tools/purchases.d.ts +15 -0
- package/dist/tools/purchases.d.ts.map +1 -0
- package/dist/tools/purchases.js +65 -0
- package/dist/tools/purchases.js.map +1 -0
- package/dist/tools/recordings.d.ts +41 -0
- package/dist/tools/recordings.d.ts.map +1 -0
- package/dist/tools/recordings.js +293 -0
- package/dist/tools/recordings.js.map +1 -0
- package/dist/tools/registration.d.ts +16 -0
- package/dist/tools/registration.d.ts.map +1 -0
- package/dist/tools/registration.js +52 -0
- package/dist/tools/registration.js.map +1 -0
- package/dist/tools/releases.d.ts +18 -0
- package/dist/tools/releases.d.ts.map +1 -0
- package/dist/tools/releases.js +138 -0
- package/dist/tools/releases.js.map +1 -0
- package/dist/tools/royalties.d.ts +23 -0
- package/dist/tools/royalties.d.ts.map +1 -0
- package/dist/tools/royalties.js +263 -0
- package/dist/tools/royalties.js.map +1 -0
- package/dist/tools/search.d.ts +30 -0
- package/dist/tools/search.d.ts.map +1 -0
- package/dist/tools/search.js +117 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/send.d.ts +18 -0
- package/dist/tools/send.d.ts.map +1 -0
- package/dist/tools/send.js +189 -0
- package/dist/tools/send.js.map +1 -0
- package/dist/tools/sessions.d.ts +18 -0
- package/dist/tools/sessions.d.ts.map +1 -0
- package/dist/tools/sessions.js +107 -0
- package/dist/tools/sessions.js.map +1 -0
- package/dist/tools/settings.d.ts +18 -0
- package/dist/tools/settings.d.ts.map +1 -0
- package/dist/tools/settings.js +98 -0
- package/dist/tools/settings.js.map +1 -0
- package/dist/tools/share-links.d.ts +19 -0
- package/dist/tools/share-links.d.ts.map +1 -0
- package/dist/tools/share-links.js +126 -0
- package/dist/tools/share-links.js.map +1 -0
- package/dist/tools/split-sheets.d.ts +24 -0
- package/dist/tools/split-sheets.d.ts.map +1 -0
- package/dist/tools/split-sheets.js +189 -0
- package/dist/tools/split-sheets.js.map +1 -0
- package/dist/tools/team.d.ts +22 -0
- package/dist/tools/team.d.ts.map +1 -0
- package/dist/tools/team.js +139 -0
- package/dist/tools/team.js.map +1 -0
- package/dist/tools/telegram.d.ts +20 -0
- package/dist/tools/telegram.d.ts.map +1 -0
- package/dist/tools/telegram.js +94 -0
- package/dist/tools/telegram.js.map +1 -0
- package/dist/tools/uploads.d.ts +17 -0
- package/dist/tools/uploads.d.ts.map +1 -0
- package/dist/tools/uploads.js +159 -0
- package/dist/tools/uploads.js.map +1 -0
- package/dist/tools/works.d.ts +53 -0
- package/dist/tools/works.d.ts.map +1 -0
- package/dist/tools/works.js +517 -0
- package/dist/tools/works.js.map +1 -0
- package/dist/utils/credit-gate.d.ts +17 -0
- package/dist/utils/credit-gate.d.ts.map +1 -0
- package/dist/utils/credit-gate.js +111 -0
- package/dist/utils/credit-gate.js.map +1 -0
- package/dist/utils/errors.d.ts +29 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +114 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/formatting.d.ts +63 -0
- package/dist/utils/formatting.d.ts.map +1 -0
- package/dist/utils/formatting.js +130 -0
- package/dist/utils/formatting.js.map +1 -0
- package/dist/utils/mpp.d.ts +78 -0
- package/dist/utils/mpp.d.ts.map +1 -0
- package/dist/utils/mpp.js +136 -0
- package/dist/utils/mpp.js.map +1 -0
- package/package.json +44 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Registry for MCP Server
|
|
3
|
+
* Manages all available tools that AI assistants can call
|
|
4
|
+
*/
|
|
5
|
+
import { PicaClient } from "../pica-sdk.js";
|
|
6
|
+
export interface ToolDefinition {
|
|
7
|
+
name: string;
|
|
8
|
+
description: string;
|
|
9
|
+
inputSchema: {
|
|
10
|
+
type: string;
|
|
11
|
+
properties: Record<string, any>;
|
|
12
|
+
required?: string[];
|
|
13
|
+
additionalProperties?: boolean;
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
export interface ToolResult {
|
|
17
|
+
content: Array<{
|
|
18
|
+
type: string;
|
|
19
|
+
text: string;
|
|
20
|
+
}>;
|
|
21
|
+
structuredContent?: Record<string, unknown>;
|
|
22
|
+
isError?: boolean;
|
|
23
|
+
}
|
|
24
|
+
export type ToolExecutor = (args: Record<string, any>) => Promise<any>;
|
|
25
|
+
export declare class ToolRegistry {
|
|
26
|
+
private tools;
|
|
27
|
+
private pica;
|
|
28
|
+
constructor(pica: PicaClient);
|
|
29
|
+
/**
|
|
30
|
+
* Register all available tools
|
|
31
|
+
*/
|
|
32
|
+
private registerAllTools;
|
|
33
|
+
private static readonly DESTRUCTIVE_PATTERNS;
|
|
34
|
+
private static readonly MUTATING_PATTERNS;
|
|
35
|
+
private static readonly SAFE_OVERRIDES;
|
|
36
|
+
private static readonly DESTRUCTIVE_PREFIX;
|
|
37
|
+
private static readonly MUTATING_PREFIX;
|
|
38
|
+
private classifyTool;
|
|
39
|
+
/**
|
|
40
|
+
* List all available tools with write-safety prefixes injected
|
|
41
|
+
*/
|
|
42
|
+
listTools(): ToolDefinition[];
|
|
43
|
+
/**
|
|
44
|
+
* Execute a tool by name
|
|
45
|
+
*/
|
|
46
|
+
executeTool(name: string, args: Record<string, any>): Promise<any>;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AA+C5C,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,oBAAoB,CAAC,EAAE,OAAO,CAAC;KAChC,CAAC;CACH;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,KAAK,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;KACd,CAAC,CAAC;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;AAEvE,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAGX;IACF,OAAO,CAAC,IAAI,CAAa;gBAEb,IAAI,EAAE,UAAU;IAM5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA+QxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAM1C;IAEF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CA4BvC;IAGF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAkBnC;IAEH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CACoK;IAE9M,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAC8G;IAErJ,OAAO,CAAC,YAAY;IAapB;;OAEG;IACH,SAAS,IAAI,cAAc,EAAE;IAoB7B;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;CAgBzE"}
|
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Registry for MCP Server
|
|
3
|
+
* Manages all available tools that AI assistants can call
|
|
4
|
+
*/
|
|
5
|
+
import { WorksTools } from "./works.js";
|
|
6
|
+
import { PeopleTools } from "./people.js";
|
|
7
|
+
import { RecordingsTools } from "./recordings.js";
|
|
8
|
+
import { SearchTools } from "./search.js";
|
|
9
|
+
import { LicensingTools } from "./licensing.js";
|
|
10
|
+
import { CreditsTools } from "./credits.js";
|
|
11
|
+
import { PicaScoreTools } from "./pica-score.js";
|
|
12
|
+
import { AudioFilesTools } from "./audio-files.js";
|
|
13
|
+
import { MultimediaTools } from "./multimedia.js";
|
|
14
|
+
import { AgreementsTools } from "./agreements.js";
|
|
15
|
+
import { MemoryTools } from "./memory.js";
|
|
16
|
+
import { EnrichmentTools } from "./enrichment.js";
|
|
17
|
+
import { RegistrationTools } from "./registration.js";
|
|
18
|
+
import { HealthTools } from "./health.js";
|
|
19
|
+
import { BulkTools } from "./bulk.js";
|
|
20
|
+
import { ExportTools } from "./exports.js";
|
|
21
|
+
import { DuplicatesTools } from "./duplicates.js";
|
|
22
|
+
import { DirectoryTools } from "./directory.js";
|
|
23
|
+
import { CollaboratorsTools } from "./collaborators.js";
|
|
24
|
+
import { ImportDocumentTools } from "./import-documents.js";
|
|
25
|
+
import { UploadTools } from "./uploads.js";
|
|
26
|
+
import { DocumentTools } from "./documents.js";
|
|
27
|
+
import { ImportTools } from "./import.js";
|
|
28
|
+
import { SendTools } from "./send.js";
|
|
29
|
+
import { ComparisonTools } from "./comparisons.js";
|
|
30
|
+
import { AssetsTools } from "./assets.js";
|
|
31
|
+
import { SessionsTools } from "./sessions.js";
|
|
32
|
+
import { AnalyticsTools } from "./analytics.js";
|
|
33
|
+
import { NotificationsTools } from "./notifications.js";
|
|
34
|
+
import { NotesTools } from "./notes.js";
|
|
35
|
+
import { TeamTools } from "./team.js";
|
|
36
|
+
import { ProjectsTools } from "./projects.js";
|
|
37
|
+
import { ReleasesTools } from "./releases.js";
|
|
38
|
+
import { CalendarTools } from "./calendar.js";
|
|
39
|
+
import { SplitSheetsTools } from "./split-sheets.js";
|
|
40
|
+
import { AgreementTypesTools } from "./agreement-types.js";
|
|
41
|
+
import { DashboardTools } from "./dashboard.js";
|
|
42
|
+
import { IntegrationsTools } from "./integrations.js";
|
|
43
|
+
import { SettingsTools } from "./settings.js";
|
|
44
|
+
import { RoyaltiesTools } from "./royalties.js";
|
|
45
|
+
import { ShareLinksTools } from "./share-links.js";
|
|
46
|
+
import { DisputesTools } from "./disputes.js";
|
|
47
|
+
import { PurchasesTools } from "./purchases.js";
|
|
48
|
+
import { TelegramTools } from "./telegram.js";
|
|
49
|
+
import { formatError, ToolExecutionError } from "../utils/errors.js";
|
|
50
|
+
export class ToolRegistry {
|
|
51
|
+
tools;
|
|
52
|
+
pica;
|
|
53
|
+
constructor(pica) {
|
|
54
|
+
this.pica = pica;
|
|
55
|
+
this.tools = new Map();
|
|
56
|
+
this.registerAllTools();
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Register all available tools
|
|
60
|
+
*/
|
|
61
|
+
registerAllTools() {
|
|
62
|
+
// Works tools
|
|
63
|
+
const worksTools = new WorksTools(this.pica);
|
|
64
|
+
worksTools.getTools().forEach((tool) => {
|
|
65
|
+
this.tools.set(tool.definition.name, tool);
|
|
66
|
+
});
|
|
67
|
+
// People tools
|
|
68
|
+
const peopleTools = new PeopleTools(this.pica);
|
|
69
|
+
peopleTools.getTools().forEach((tool) => {
|
|
70
|
+
this.tools.set(tool.definition.name, tool);
|
|
71
|
+
});
|
|
72
|
+
// Recordings tools
|
|
73
|
+
const recordingsTools = new RecordingsTools(this.pica);
|
|
74
|
+
recordingsTools.getTools().forEach((tool) => {
|
|
75
|
+
this.tools.set(tool.definition.name, tool);
|
|
76
|
+
});
|
|
77
|
+
// Search tools
|
|
78
|
+
const searchTools = new SearchTools(this.pica);
|
|
79
|
+
searchTools.getTools().forEach((tool) => {
|
|
80
|
+
this.tools.set(tool.definition.name, tool);
|
|
81
|
+
});
|
|
82
|
+
// Licensing tools
|
|
83
|
+
const licensingTools = new LicensingTools(this.pica);
|
|
84
|
+
licensingTools.getTools().forEach((tool) => {
|
|
85
|
+
this.tools.set(tool.definition.name, tool);
|
|
86
|
+
});
|
|
87
|
+
// Credits tools
|
|
88
|
+
const creditsTools = new CreditsTools(this.pica);
|
|
89
|
+
creditsTools.getTools().forEach((tool) => {
|
|
90
|
+
this.tools.set(tool.definition.name, tool);
|
|
91
|
+
});
|
|
92
|
+
// PICA Score tools
|
|
93
|
+
const picaScoreTools = new PicaScoreTools(this.pica);
|
|
94
|
+
picaScoreTools.getTools().forEach((tool) => {
|
|
95
|
+
this.tools.set(tool.definition.name, tool);
|
|
96
|
+
});
|
|
97
|
+
// Audio Files tools
|
|
98
|
+
const audioFilesTools = new AudioFilesTools(this.pica);
|
|
99
|
+
audioFilesTools.getTools().forEach((tool) => {
|
|
100
|
+
this.tools.set(tool.definition.name, tool);
|
|
101
|
+
});
|
|
102
|
+
// Multimedia tools
|
|
103
|
+
const multimediaTools = new MultimediaTools(this.pica);
|
|
104
|
+
multimediaTools.getTools().forEach((tool) => {
|
|
105
|
+
this.tools.set(tool.definition.name, tool);
|
|
106
|
+
});
|
|
107
|
+
// Agreements tools
|
|
108
|
+
const agreementsTools = new AgreementsTools(this.pica);
|
|
109
|
+
agreementsTools.getTools().forEach((tool) => {
|
|
110
|
+
this.tools.set(tool.definition.name, tool);
|
|
111
|
+
});
|
|
112
|
+
// Memory tools
|
|
113
|
+
const memoryTools = new MemoryTools(this.pica);
|
|
114
|
+
memoryTools.getTools().forEach((tool) => {
|
|
115
|
+
this.tools.set(tool.definition.name, tool);
|
|
116
|
+
});
|
|
117
|
+
// Enrichment tools
|
|
118
|
+
const enrichmentTools = new EnrichmentTools(this.pica);
|
|
119
|
+
enrichmentTools.getTools().forEach((tool) => {
|
|
120
|
+
this.tools.set(tool.definition.name, tool);
|
|
121
|
+
});
|
|
122
|
+
// Registration tools
|
|
123
|
+
const registrationTools = new RegistrationTools(this.pica);
|
|
124
|
+
registrationTools.getTools().forEach((tool) => {
|
|
125
|
+
this.tools.set(tool.definition.name, tool);
|
|
126
|
+
});
|
|
127
|
+
// Health tools
|
|
128
|
+
const healthTools = new HealthTools(this.pica);
|
|
129
|
+
healthTools.getTools().forEach((tool) => {
|
|
130
|
+
this.tools.set(tool.definition.name, tool);
|
|
131
|
+
});
|
|
132
|
+
// Bulk operations tools
|
|
133
|
+
const bulkTools = new BulkTools(this.pica);
|
|
134
|
+
bulkTools.getTools().forEach((tool) => {
|
|
135
|
+
this.tools.set(tool.definition.name, tool);
|
|
136
|
+
});
|
|
137
|
+
// Export tools
|
|
138
|
+
const exportTools = new ExportTools(this.pica);
|
|
139
|
+
exportTools.getTools().forEach((tool) => {
|
|
140
|
+
this.tools.set(tool.definition.name, tool);
|
|
141
|
+
});
|
|
142
|
+
// Duplicates tools
|
|
143
|
+
const duplicatesTools = new DuplicatesTools(this.pica);
|
|
144
|
+
duplicatesTools.getTools().forEach((tool) => {
|
|
145
|
+
this.tools.set(tool.definition.name, tool);
|
|
146
|
+
});
|
|
147
|
+
// Directory tools
|
|
148
|
+
const directoryTools = new DirectoryTools(this.pica);
|
|
149
|
+
directoryTools.getTools().forEach((tool) => {
|
|
150
|
+
this.tools.set(tool.definition.name, tool);
|
|
151
|
+
});
|
|
152
|
+
// Collaborator tools
|
|
153
|
+
const collaboratorsTools = new CollaboratorsTools(this.pica);
|
|
154
|
+
collaboratorsTools.getTools().forEach((tool) => {
|
|
155
|
+
this.tools.set(tool.definition.name, tool);
|
|
156
|
+
});
|
|
157
|
+
// Upload tools (generic file upload — images, videos, documents)
|
|
158
|
+
const uploadTools = new UploadTools(this.pica);
|
|
159
|
+
uploadTools.getTools().forEach((tool) => {
|
|
160
|
+
this.tools.set(tool.definition.name, tool);
|
|
161
|
+
});
|
|
162
|
+
// Document tools (AI analysis)
|
|
163
|
+
const documentTools = new DocumentTools(this.pica);
|
|
164
|
+
documentTools.getTools().forEach((tool) => {
|
|
165
|
+
this.tools.set(tool.definition.name, tool);
|
|
166
|
+
});
|
|
167
|
+
// Bulk import tools (CSV import pipeline)
|
|
168
|
+
const importTools = new ImportTools(this.pica);
|
|
169
|
+
importTools.getTools().forEach((tool) => {
|
|
170
|
+
this.tools.set(tool.definition.name, tool);
|
|
171
|
+
});
|
|
172
|
+
// Comparison tools (ADR-116 Phase 2: enrichment + registration comparison)
|
|
173
|
+
const comparisonTools = new ComparisonTools(this.pica);
|
|
174
|
+
comparisonTools.getTools().forEach((tool) => {
|
|
175
|
+
this.tools.set(tool.definition.name, tool);
|
|
176
|
+
});
|
|
177
|
+
// Send Hub tools (messages, invites, file requests, audio shares)
|
|
178
|
+
const sendTools = new SendTools(this.pica);
|
|
179
|
+
sendTools.getTools().forEach((tool) => {
|
|
180
|
+
this.tools.set(tool.definition.name, tool);
|
|
181
|
+
});
|
|
182
|
+
// Import document tools
|
|
183
|
+
const importDocumentTools = new ImportDocumentTools(this.pica);
|
|
184
|
+
importDocumentTools.getTools().forEach((tool) => {
|
|
185
|
+
this.tools.set(tool.definition.name, tool);
|
|
186
|
+
});
|
|
187
|
+
// Physical assets tools (equipment, instruments, studio gear)
|
|
188
|
+
const assetsTools = new AssetsTools(this.pica);
|
|
189
|
+
assetsTools.getTools().forEach((tool) => {
|
|
190
|
+
this.tools.set(tool.definition.name, tool);
|
|
191
|
+
});
|
|
192
|
+
// Work sessions tools (studio session tracking)
|
|
193
|
+
const sessionsTools = new SessionsTools(this.pica);
|
|
194
|
+
sessionsTools.getTools().forEach((tool) => {
|
|
195
|
+
this.tools.set(tool.definition.name, tool);
|
|
196
|
+
});
|
|
197
|
+
// Analytics tools (carbon, provenance, diligence)
|
|
198
|
+
const analyticsTools = new AnalyticsTools(this.pica);
|
|
199
|
+
analyticsTools.getTools().forEach((tool) => {
|
|
200
|
+
this.tools.set(tool.definition.name, tool);
|
|
201
|
+
});
|
|
202
|
+
// Notifications tools
|
|
203
|
+
const notificationsTools = new NotificationsTools(this.pica);
|
|
204
|
+
notificationsTools.getTools().forEach((tool) => {
|
|
205
|
+
this.tools.set(tool.definition.name, tool);
|
|
206
|
+
});
|
|
207
|
+
// Notes tools (catalog notes on works, people, general observations)
|
|
208
|
+
const notesTools = new NotesTools(this.pica);
|
|
209
|
+
notesTools.getTools().forEach((tool) => {
|
|
210
|
+
this.tools.set(tool.definition.name, tool);
|
|
211
|
+
});
|
|
212
|
+
// Team management tools (invite, list, update, remove members)
|
|
213
|
+
const teamTools = new TeamTools(this.pica);
|
|
214
|
+
teamTools.getTools().forEach((tool) => {
|
|
215
|
+
this.tools.set(tool.definition.name, tool);
|
|
216
|
+
});
|
|
217
|
+
// Projects tools (albums, EPs, compilations — grouping works)
|
|
218
|
+
const projectsTools = new ProjectsTools(this.pica);
|
|
219
|
+
projectsTools.getTools().forEach((tool) => {
|
|
220
|
+
this.tools.set(tool.definition.name, tool);
|
|
221
|
+
});
|
|
222
|
+
// Releases tools (albums, EPs, singles with dates, labels, UPCs)
|
|
223
|
+
const releasesTools = new ReleasesTools(this.pica);
|
|
224
|
+
releasesTools.getTools().forEach((tool) => {
|
|
225
|
+
this.tools.set(tool.definition.name, tool);
|
|
226
|
+
});
|
|
227
|
+
// Calendar tools
|
|
228
|
+
const calendarTools = new CalendarTools(this.pica);
|
|
229
|
+
calendarTools.getTools().forEach((tool) => {
|
|
230
|
+
this.tools.set(tool.definition.name, tool);
|
|
231
|
+
});
|
|
232
|
+
// Split sheets & recording splits tools
|
|
233
|
+
const splitSheetsTools = new SplitSheetsTools(this.pica);
|
|
234
|
+
splitSheetsTools.getTools().forEach((tool) => {
|
|
235
|
+
this.tools.set(tool.definition.name, tool);
|
|
236
|
+
});
|
|
237
|
+
// Agreement types tools (templates, producer agreements, work-for-hire)
|
|
238
|
+
const agreementTypesTools = new AgreementTypesTools(this.pica);
|
|
239
|
+
agreementTypesTools.getTools().forEach((tool) => {
|
|
240
|
+
this.tools.set(tool.definition.name, tool);
|
|
241
|
+
});
|
|
242
|
+
// Dashboard & discovery tools
|
|
243
|
+
const dashboardTools = new DashboardTools(this.pica);
|
|
244
|
+
dashboardTools.getTools().forEach((tool) => {
|
|
245
|
+
this.tools.set(tool.definition.name, tool);
|
|
246
|
+
});
|
|
247
|
+
// Integrations tools (connection status)
|
|
248
|
+
const integrationsTools = new IntegrationsTools(this.pica);
|
|
249
|
+
integrationsTools.getTools().forEach((tool) => {
|
|
250
|
+
this.tools.set(tool.definition.name, tool);
|
|
251
|
+
});
|
|
252
|
+
// Settings tools (credits history, storage, org profile)
|
|
253
|
+
const settingsTools = new SettingsTools(this.pica);
|
|
254
|
+
settingsTools.getTools().forEach((tool) => {
|
|
255
|
+
this.tools.set(tool.definition.name, tool);
|
|
256
|
+
});
|
|
257
|
+
// Royalties & statements tools (ADR-139 Step 2)
|
|
258
|
+
const royaltiesTools = new RoyaltiesTools(this.pica);
|
|
259
|
+
royaltiesTools.getTools().forEach((tool) => {
|
|
260
|
+
this.tools.set(tool.definition.name, tool);
|
|
261
|
+
});
|
|
262
|
+
// Share links tools (ADR-139 Step 3)
|
|
263
|
+
const shareLinksTools = new ShareLinksTools(this.pica);
|
|
264
|
+
shareLinksTools.getTools().forEach((tool) => {
|
|
265
|
+
this.tools.set(tool.definition.name, tool);
|
|
266
|
+
});
|
|
267
|
+
// Disputes tools (ADR-139 Step 3)
|
|
268
|
+
const disputesTools = new DisputesTools(this.pica);
|
|
269
|
+
disputesTools.getTools().forEach((tool) => {
|
|
270
|
+
this.tools.set(tool.definition.name, tool);
|
|
271
|
+
});
|
|
272
|
+
// Purchases tools (credit checkout)
|
|
273
|
+
const purchasesTools = new PurchasesTools(this.pica);
|
|
274
|
+
purchasesTools.getTools().forEach((tool) => {
|
|
275
|
+
this.tools.set(tool.definition.name, tool);
|
|
276
|
+
});
|
|
277
|
+
// Telegram tools (user notification channel)
|
|
278
|
+
const telegramTools = new TelegramTools(this.pica);
|
|
279
|
+
telegramTools.getTools().forEach((tool) => {
|
|
280
|
+
this.tools.set(tool.definition.name, tool);
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
// ── Write-safety classification ──
|
|
284
|
+
// Destructive tools require confirmation before AND summary after.
|
|
285
|
+
// Mutating tools should present what they'll do and confirm after.
|
|
286
|
+
// Safe (read-only) tools need no confirmation.
|
|
287
|
+
static DESTRUCTIVE_PATTERNS = [
|
|
288
|
+
"_delete",
|
|
289
|
+
"_bulk_delete",
|
|
290
|
+
"_merge",
|
|
291
|
+
"_remove",
|
|
292
|
+
"_disconnect",
|
|
293
|
+
];
|
|
294
|
+
static MUTATING_PATTERNS = [
|
|
295
|
+
"_create",
|
|
296
|
+
"_update",
|
|
297
|
+
"_bulk_update",
|
|
298
|
+
"_invite",
|
|
299
|
+
"_link",
|
|
300
|
+
"_send_",
|
|
301
|
+
"_import_",
|
|
302
|
+
"_execute",
|
|
303
|
+
"_ingest",
|
|
304
|
+
"_enrich",
|
|
305
|
+
"_verify",
|
|
306
|
+
"_mark_",
|
|
307
|
+
"_review",
|
|
308
|
+
"_purchase",
|
|
309
|
+
"_submit",
|
|
310
|
+
"_generate",
|
|
311
|
+
"_set_default",
|
|
312
|
+
"_duplicate",
|
|
313
|
+
"_toggle",
|
|
314
|
+
"_save",
|
|
315
|
+
"_upload",
|
|
316
|
+
"_complete",
|
|
317
|
+
"_analyze",
|
|
318
|
+
"_analyse",
|
|
319
|
+
"_identify",
|
|
320
|
+
"_resend",
|
|
321
|
+
"_notify",
|
|
322
|
+
];
|
|
323
|
+
// Read-only tools that match mutating patterns by name but are actually safe
|
|
324
|
+
static SAFE_OVERRIDES = new Set([
|
|
325
|
+
"pica_collaborators_invites_list",
|
|
326
|
+
"pica_completeness_low",
|
|
327
|
+
"pica_enrichment_candidates",
|
|
328
|
+
"pica_enrichment_compare",
|
|
329
|
+
"pica_enrichment_status",
|
|
330
|
+
"pica_find_duplicates",
|
|
331
|
+
"pica_import_analyze",
|
|
332
|
+
"pica_import_validate",
|
|
333
|
+
"pica_import_fields",
|
|
334
|
+
"pica_import_template",
|
|
335
|
+
"pica_import_documents_list",
|
|
336
|
+
"pica_import_documents_get",
|
|
337
|
+
"pica_import_documents_diff",
|
|
338
|
+
"pica_send_list",
|
|
339
|
+
"pica_send_pending",
|
|
340
|
+
"pica_share_links_list",
|
|
341
|
+
"pica_work_completeness",
|
|
342
|
+
]);
|
|
343
|
+
static DESTRUCTIVE_PREFIX = "⚠️ DESTRUCTIVE: Before calling this tool, you MUST describe exactly what will be deleted/merged to the user and get explicit confirmation. After execution, confirm what was done and what was affected. ";
|
|
344
|
+
static MUTATING_PREFIX = "✏️ WRITE OPERATION: Before calling this tool, briefly tell the user what you're about to do. After execution, confirm what was created/changed. ";
|
|
345
|
+
classifyTool(name) {
|
|
346
|
+
if (ToolRegistry.SAFE_OVERRIDES.has(name)) {
|
|
347
|
+
return "safe";
|
|
348
|
+
}
|
|
349
|
+
if (ToolRegistry.DESTRUCTIVE_PATTERNS.some((p) => name.includes(p))) {
|
|
350
|
+
return "destructive";
|
|
351
|
+
}
|
|
352
|
+
if (ToolRegistry.MUTATING_PATTERNS.some((p) => name.includes(p))) {
|
|
353
|
+
return "mutating";
|
|
354
|
+
}
|
|
355
|
+
return "safe";
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* List all available tools with write-safety prefixes injected
|
|
359
|
+
*/
|
|
360
|
+
listTools() {
|
|
361
|
+
return Array.from(this.tools.values()).map((tool) => {
|
|
362
|
+
const classification = this.classifyTool(tool.definition.name);
|
|
363
|
+
if (classification === "safe") {
|
|
364
|
+
return tool.definition;
|
|
365
|
+
}
|
|
366
|
+
const prefix = classification === "destructive"
|
|
367
|
+
? ToolRegistry.DESTRUCTIVE_PREFIX
|
|
368
|
+
: ToolRegistry.MUTATING_PREFIX;
|
|
369
|
+
return {
|
|
370
|
+
...tool.definition,
|
|
371
|
+
description: prefix + tool.definition.description,
|
|
372
|
+
};
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
/**
|
|
376
|
+
* Execute a tool by name
|
|
377
|
+
*/
|
|
378
|
+
async executeTool(name, args) {
|
|
379
|
+
const tool = this.tools.get(name);
|
|
380
|
+
if (!tool) {
|
|
381
|
+
throw new ToolExecutionError(`Tool not found: ${name}`);
|
|
382
|
+
}
|
|
383
|
+
try {
|
|
384
|
+
return await tool.executor(args);
|
|
385
|
+
}
|
|
386
|
+
catch (error) {
|
|
387
|
+
return {
|
|
388
|
+
content: [formatError(error)],
|
|
389
|
+
isError: true,
|
|
390
|
+
};
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
}
|
|
394
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integrations Tools — check connected services and guide users to connect more
|
|
3
|
+
*/
|
|
4
|
+
import { PicaClient } from "../pica-sdk.js";
|
|
5
|
+
import { ToolDefinition, ToolExecutor } from "./index.js";
|
|
6
|
+
export declare class IntegrationsTools {
|
|
7
|
+
private pica;
|
|
8
|
+
constructor(pica: PicaClient);
|
|
9
|
+
getTools(): Array<{
|
|
10
|
+
definition: ToolDefinition;
|
|
11
|
+
executor: ToolExecutor;
|
|
12
|
+
}>;
|
|
13
|
+
private getStatus;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=integrations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integrations.d.ts","sourceRoot":"","sources":["../../src/tools/integrations.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAc,MAAM,YAAY,CAAC;AAGtE,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,IAAI,CAAa;gBAEb,IAAI,EAAE,UAAU;IAI5B,QAAQ,IAAI,KAAK,CAAC;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC;YAmB3D,SAAS;CAoFxB"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integrations Tools — check connected services and guide users to connect more
|
|
3
|
+
*/
|
|
4
|
+
import { formatSuccess } from "../utils/formatting.js";
|
|
5
|
+
export class IntegrationsTools {
|
|
6
|
+
pica;
|
|
7
|
+
constructor(pica) {
|
|
8
|
+
this.pica = pica;
|
|
9
|
+
}
|
|
10
|
+
getTools() {
|
|
11
|
+
return [
|
|
12
|
+
{
|
|
13
|
+
definition: {
|
|
14
|
+
name: "pica_integrations_status",
|
|
15
|
+
description: "Check which services are connected — Google (Gmail + Calendar + Drive), Spotify, " +
|
|
16
|
+
"Telegram, Notion, Airtable, and platform integrations. " +
|
|
17
|
+
"Shows what's connected and what's available to connect.",
|
|
18
|
+
inputSchema: {
|
|
19
|
+
type: "object",
|
|
20
|
+
properties: {},
|
|
21
|
+
},
|
|
22
|
+
},
|
|
23
|
+
executor: this.getStatus.bind(this),
|
|
24
|
+
},
|
|
25
|
+
];
|
|
26
|
+
}
|
|
27
|
+
async getStatus(_args) {
|
|
28
|
+
// Fetch both OAuth connections and platform integrations
|
|
29
|
+
const [oauthResult, platformResult] = await Promise.allSettled([
|
|
30
|
+
this.pica.integrations.oauthConnections(),
|
|
31
|
+
this.pica.integrations.platforms(),
|
|
32
|
+
]);
|
|
33
|
+
const oauthConnections = oauthResult.status === "fulfilled"
|
|
34
|
+
? oauthResult.value?.data || oauthResult.value || []
|
|
35
|
+
: [];
|
|
36
|
+
const platforms = platformResult.status === "fulfilled"
|
|
37
|
+
? platformResult.value?.data?.platforms ||
|
|
38
|
+
platformResult.value?.platforms ||
|
|
39
|
+
[]
|
|
40
|
+
: [];
|
|
41
|
+
const connections = Array.isArray(oauthConnections) ? oauthConnections : [];
|
|
42
|
+
const connectedProviders = connections.map((c) => c.provider?.toLowerCase() || "");
|
|
43
|
+
// Build status summary
|
|
44
|
+
// Google is one OAuth connection that unlocks Calendar, Gmail, and Drive
|
|
45
|
+
const googleConnected = connectedProviders.includes("google");
|
|
46
|
+
const services = [
|
|
47
|
+
{
|
|
48
|
+
name: "Google",
|
|
49
|
+
connected: googleConnected,
|
|
50
|
+
what: "Gmail, Google Calendar, and Google Drive — one connection unlocks all three",
|
|
51
|
+
includes: ["Gmail", "Google Calendar", "Google Drive"],
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
name: "Spotify",
|
|
55
|
+
connected: connectedProviders.includes("spotify"),
|
|
56
|
+
what: "Import and enrich from your Spotify catalog",
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: "Notion",
|
|
60
|
+
connected: connectedProviders.includes("notion"),
|
|
61
|
+
what: "Export catalog data to Notion",
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
name: "Airtable",
|
|
65
|
+
connected: connectedProviders.includes("airtable"),
|
|
66
|
+
what: "Sync catalog to Airtable",
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: "Telegram",
|
|
70
|
+
connected: connectedProviders.includes("telegram"),
|
|
71
|
+
what: "Get notifications and run commands via Telegram",
|
|
72
|
+
},
|
|
73
|
+
];
|
|
74
|
+
const connected = services.filter((s) => s.connected);
|
|
75
|
+
const available = services.filter((s) => !s.connected);
|
|
76
|
+
const summary = [
|
|
77
|
+
`${connected.length} service${connected.length !== 1 ? "s" : ""} connected`,
|
|
78
|
+
connected.length > 0
|
|
79
|
+
? `Connected: ${connected.map((s) => s.name).join(", ")}`
|
|
80
|
+
: null,
|
|
81
|
+
available.length > 0
|
|
82
|
+
? `Available to connect: ${available.map((s) => `${s.name} (${s.what})`).join(", ")}`
|
|
83
|
+
: "All services connected",
|
|
84
|
+
available.length > 0
|
|
85
|
+
? "Connect services at withpica.com/admin/settings — then they're available here via MCP."
|
|
86
|
+
: null,
|
|
87
|
+
]
|
|
88
|
+
.filter(Boolean)
|
|
89
|
+
.join("\n");
|
|
90
|
+
return formatSuccess(summary, {
|
|
91
|
+
services,
|
|
92
|
+
platforms: Array.isArray(platforms) ? platforms : [],
|
|
93
|
+
oauthConnections: connections.map((c) => ({
|
|
94
|
+
provider: c.provider,
|
|
95
|
+
account_name: c.account_name,
|
|
96
|
+
is_active: c.is_active,
|
|
97
|
+
connected_at: c.created_at,
|
|
98
|
+
})),
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=integrations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integrations.js","sourceRoot":"","sources":["../../src/tools/integrations.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Licensing Tools - MCP tools for sync licensing and license enquiries
|
|
3
|
+
*
|
|
4
|
+
* Key differentiator: Search by actual audio characteristics (BPM, key, energy, mood)
|
|
5
|
+
* rather than just keywords, enabling music supervisors to find the perfect track.
|
|
6
|
+
*/
|
|
7
|
+
import { PicaClient } from "../pica-sdk.js";
|
|
8
|
+
import { ToolDefinition, ToolExecutor } from "./index.js";
|
|
9
|
+
export declare class LicensingTools {
|
|
10
|
+
private pica;
|
|
11
|
+
constructor(pica: PicaClient);
|
|
12
|
+
/**
|
|
13
|
+
* Get all licensing tools
|
|
14
|
+
*/
|
|
15
|
+
getTools(): Array<{
|
|
16
|
+
definition: ToolDefinition;
|
|
17
|
+
executor: ToolExecutor;
|
|
18
|
+
}>;
|
|
19
|
+
/**
|
|
20
|
+
* Search for sync-licensable tracks
|
|
21
|
+
*/
|
|
22
|
+
private searchForSync;
|
|
23
|
+
/**
|
|
24
|
+
* Submit a license enquiry
|
|
25
|
+
*/
|
|
26
|
+
private submitLicenseEnquiry;
|
|
27
|
+
/**
|
|
28
|
+
* List license enquiries
|
|
29
|
+
*/
|
|
30
|
+
private listLicenseEnquiries;
|
|
31
|
+
/**
|
|
32
|
+
* Get license enquiry by ID
|
|
33
|
+
*/
|
|
34
|
+
private getLicenseEnquiry;
|
|
35
|
+
/**
|
|
36
|
+
* Update license enquiry status
|
|
37
|
+
*/
|
|
38
|
+
private updateLicenseEnquiryStatus;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=licensing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"licensing.d.ts","sourceRoot":"","sources":["../../src/tools/licensing.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,YAAY,EAAc,MAAM,YAAY,CAAC;AAOtE,qBAAa,cAAc;IACzB,OAAO,CAAC,IAAI,CAAa;gBAEb,IAAI,EAAE,UAAU;IAI5B;;OAEG;IACH,QAAQ,IAAI,KAAK,CAAC;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,QAAQ,EAAE,YAAY,CAAA;KAAE,CAAC;IAgSzE;;OAEG;YACW,aAAa;IA+C3B;;OAEG;YACW,oBAAoB;IA6BlC;;OAEG;YACW,oBAAoB;IA+BlC;;OAEG;YACW,iBAAiB;IAqC/B;;OAEG;YACW,0BAA0B;CAgBzC"}
|