@zyntax/extension-sdk 1.0.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.
Files changed (61) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +175 -0
  3. package/dist/agent/capabilities.d.ts +29 -0
  4. package/dist/agent/capabilities.d.ts.map +1 -0
  5. package/dist/agent/capabilities.js +18 -0
  6. package/dist/agent/capabilities.js.map +1 -0
  7. package/dist/agent/contributions.d.ts +32 -0
  8. package/dist/agent/contributions.d.ts.map +1 -0
  9. package/dist/agent/contributions.js +2 -0
  10. package/dist/agent/contributions.js.map +1 -0
  11. package/dist/agent/protocol.d.ts +211 -0
  12. package/dist/agent/protocol.d.ts.map +1 -0
  13. package/dist/agent/protocol.js +2 -0
  14. package/dist/agent/protocol.js.map +1 -0
  15. package/dist/capabilities.d.ts +17 -0
  16. package/dist/capabilities.js +17 -0
  17. package/dist/contract.d.ts +624 -0
  18. package/dist/contract.d.ts.map +1 -0
  19. package/dist/contract.js +27 -0
  20. package/dist/contract.js.map +1 -0
  21. package/dist/contracts/json.d.ts +6 -0
  22. package/dist/contracts/json.d.ts.map +1 -0
  23. package/dist/contracts/json.js +2 -0
  24. package/dist/contracts/json.js.map +1 -0
  25. package/dist/contracts/manifest.d.ts +557 -0
  26. package/dist/contracts/manifest.d.ts.map +1 -0
  27. package/dist/contracts/manifest.js +4 -0
  28. package/dist/contracts/manifest.js.map +1 -0
  29. package/dist/contracts/persistentServices.d.ts +53 -0
  30. package/dist/contracts/persistentServices.d.ts.map +1 -0
  31. package/dist/contracts/persistentServices.js +2 -0
  32. package/dist/contracts/persistentServices.js.map +1 -0
  33. package/dist/contracts/providerMethods.d.ts +3 -0
  34. package/dist/contracts/providerMethods.d.ts.map +1 -0
  35. package/dist/contracts/providerMethods.js +2 -0
  36. package/dist/contracts/providerMethods.js.map +1 -0
  37. package/dist/contracts/terminalPackages.d.ts +42 -0
  38. package/dist/contracts/terminalPackages.d.ts.map +1 -0
  39. package/dist/contracts/terminalPackages.js +2 -0
  40. package/dist/contracts/terminalPackages.js.map +1 -0
  41. package/dist/contracts/workbench.d.ts +219 -0
  42. package/dist/contracts/workbench.d.ts.map +1 -0
  43. package/dist/contracts/workbench.js +2 -0
  44. package/dist/contracts/workbench.js.map +1 -0
  45. package/dist/extensionFirst.d.ts +463 -0
  46. package/dist/extensionFirst.d.ts.map +1 -0
  47. package/dist/extensionFirst.js +2 -0
  48. package/dist/extensionFirst.js.map +1 -0
  49. package/dist/index.d.ts +51 -0
  50. package/dist/index.d.ts.map +1 -0
  51. package/dist/index.js +132 -0
  52. package/dist/index.js.map +1 -0
  53. package/dist/managedToolProtocol.d.ts +25 -0
  54. package/dist/managedToolProtocol.d.ts.map +1 -0
  55. package/dist/managedToolProtocol.js +4 -0
  56. package/dist/managedToolProtocol.js.map +1 -0
  57. package/dist/manifestConstants.d.ts +150 -0
  58. package/dist/manifestConstants.js +174 -0
  59. package/dist/providerMethods.d.ts +50 -0
  60. package/dist/providerMethods.js +45 -0
  61. package/package.json +62 -0
package/dist/index.js ADDED
@@ -0,0 +1,132 @@
1
+ import { EXTENSION_API_VERSION } from "./contracts/manifest.js";
2
+ export * from "./contract.js";
3
+ export * from "./managedToolProtocol.js";
4
+ export { EXTENSION_API_VERSION };
5
+ export function throwIfCancellationRequested(cancellation) {
6
+ cancellation.throwIfCancellationRequested();
7
+ }
8
+ /** Compile-time authoring helper; canonical validation remains host-owned. */
9
+ export function defineExtensionManifest(manifest) {
10
+ return manifest;
11
+ }
12
+ /**
13
+ * Defines the exact exports registered inside the isolated provider runtime.
14
+ * The returned shape is consumed by extension tooling when it emits a
15
+ * self-contained `providers/*.js` module.
16
+ */
17
+ export function defineProviderModule(exports) {
18
+ return Object.freeze({
19
+ ...exports,
20
+ extensionApiVersion: EXTENSION_API_VERSION,
21
+ });
22
+ }
23
+ export function defineCompletionProvider(factory) {
24
+ return factory;
25
+ }
26
+ export function defineStructuralRegionProvider(factory) {
27
+ return factory;
28
+ }
29
+ export function defineVirtualDocumentProvider(factory) {
30
+ return factory;
31
+ }
32
+ export function defineDocumentFormatterProvider(factory) {
33
+ return factory;
34
+ }
35
+ export function defineRangeFormatterProvider(factory) {
36
+ return factory;
37
+ }
38
+ export function defineDiagnosticsProvider(factory) {
39
+ return factory;
40
+ }
41
+ export function defineCodeActionProvider(factory) {
42
+ return factory;
43
+ }
44
+ export function defineCommandProvider(factory) {
45
+ return factory;
46
+ }
47
+ export function defineFixAllProvider(factory) {
48
+ return factory;
49
+ }
50
+ export function defineDebugConfigurationProvider(factory) {
51
+ return factory;
52
+ }
53
+ /** Creates a host-resolved path reference for a debugger configuration. */
54
+ export function debugDocumentPath(documentUri) {
55
+ if (typeof documentUri !== "string" || !documentUri.trim()) {
56
+ throw new TypeError("Debug document URI must not be empty");
57
+ }
58
+ return Object.freeze({ $documentPath: documentUri });
59
+ }
60
+ /** Declares one project-confined path which Zyntax asks the user to review. */
61
+ export function debugProjectPath(id, label, kind) {
62
+ if (typeof id !== "string" || !/^[A-Za-z][A-Za-z0-9._-]{0,95}$/u.test(id)) {
63
+ throw new TypeError("Debug project path id is invalid");
64
+ }
65
+ if (typeof label !== "string" || !label || label.trim() !== label) {
66
+ throw new TypeError("Debug project path label must be a non-empty trimmed string");
67
+ }
68
+ if (kind !== "file" && kind !== "executable") {
69
+ throw new TypeError("Debug project path kind must be file or executable");
70
+ }
71
+ return Object.freeze({
72
+ $projectPath: Object.freeze({ id, label, kind }),
73
+ });
74
+ }
75
+ export function defineDebugAdapterDescriptorProvider(factory) {
76
+ return factory;
77
+ }
78
+ export function defineNotebookSerializerProvider(factory) {
79
+ return factory;
80
+ }
81
+ export function defineNotebookKernelProvider(factory) {
82
+ return factory;
83
+ }
84
+ export function defineFileSearchProvider(factory) {
85
+ return factory;
86
+ }
87
+ export function defineTextSearchProvider(factory) {
88
+ return factory;
89
+ }
90
+ export function defineQuickOpenProvider(factory) {
91
+ return factory;
92
+ }
93
+ export function defineInlineCompletionProvider(factory) {
94
+ return factory;
95
+ }
96
+ export function defineAssistedEditProvider(factory) {
97
+ return factory;
98
+ }
99
+ export function defineAICodeActionProvider(factory) {
100
+ return factory;
101
+ }
102
+ export function defineDecorationProvider(factory) {
103
+ return factory;
104
+ }
105
+ export function defineDocumentColorProvider(factory) {
106
+ return factory;
107
+ }
108
+ export function defineHoverProvider(factory) {
109
+ return factory;
110
+ }
111
+ export function definePreviewProvider(factory) {
112
+ return factory;
113
+ }
114
+ export function defineTaskProvider(factory) {
115
+ return factory;
116
+ }
117
+ export function defineTerminalProfileProvider(factory) {
118
+ return factory;
119
+ }
120
+ export function defineScmProvider(factory) {
121
+ return factory;
122
+ }
123
+ export function defineProjectTemplateProvider(factory) {
124
+ return factory;
125
+ }
126
+ export function defineAgentHarness(factory) {
127
+ return factory;
128
+ }
129
+ export function defineAIProvider(factory) {
130
+ return factory;
131
+ }
132
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { ExtensionJsonObject, ExtensionJsonValue } from "./contracts/json.js";
2
+ /** Canonical JSON-RPC envelope used by one-shot managed tool invocations. */
3
+ export declare const EXTENSION_MANAGED_TOOL_JSON_RPC_VERSION: "2.0";
4
+ export declare const EXTENSION_MANAGED_TOOL_INVOCATION_METHOD: "zyntax/toolInvocation";
5
+ export interface ExtensionManagedToolInvocationRequest {
6
+ readonly jsonrpc: typeof EXTENSION_MANAGED_TOOL_JSON_RPC_VERSION;
7
+ readonly id: string;
8
+ readonly method: typeof EXTENSION_MANAGED_TOOL_INVOCATION_METHOD;
9
+ readonly params: ExtensionJsonObject;
10
+ }
11
+ export interface ExtensionManagedToolInvocationSuccess {
12
+ readonly jsonrpc: typeof EXTENSION_MANAGED_TOOL_JSON_RPC_VERSION;
13
+ readonly id: string;
14
+ readonly result: ExtensionJsonValue;
15
+ }
16
+ export interface ExtensionManagedToolInvocationFailure {
17
+ readonly jsonrpc: typeof EXTENSION_MANAGED_TOOL_JSON_RPC_VERSION;
18
+ readonly id: string;
19
+ readonly error: {
20
+ readonly code: number;
21
+ readonly message: string;
22
+ };
23
+ }
24
+ export type ExtensionManagedToolInvocationResponse = ExtensionManagedToolInvocationSuccess | ExtensionManagedToolInvocationFailure;
25
+ //# sourceMappingURL=managedToolProtocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managedToolProtocol.d.ts","sourceRoot":"","sources":["../src/managedToolProtocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,qBAAqB,CAAC;AAE7B,6EAA6E;AAC7E,eAAO,MAAM,uCAAuC,EAAG,KAAc,CAAC;AACtE,eAAO,MAAM,wCAAwC,EACnD,uBAAgC,CAAC;AAEnC,MAAM,WAAW,qCAAqC;IACpD,QAAQ,CAAC,OAAO,EAAE,OAAO,uCAAuC,CAAC;IACjE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,OAAO,wCAAwC,CAAC;IACjE,QAAQ,CAAC,MAAM,EAAE,mBAAmB,CAAC;CACtC;AAED,MAAM,WAAW,qCAAqC;IACpD,QAAQ,CAAC,OAAO,EAAE,OAAO,uCAAuC,CAAC;IACjE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;CACrC;AAED,MAAM,WAAW,qCAAqC;IACpD,QAAQ,CAAC,OAAO,EAAE,OAAO,uCAAuC,CAAC;IACjE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH;AAED,MAAM,MAAM,sCAAsC,GAC9C,qCAAqC,GACrC,qCAAqC,CAAC"}
@@ -0,0 +1,4 @@
1
+ /** Canonical JSON-RPC envelope used by one-shot managed tool invocations. */
2
+ export const EXTENSION_MANAGED_TOOL_JSON_RPC_VERSION = "2.0";
3
+ export const EXTENSION_MANAGED_TOOL_INVOCATION_METHOD = "zyntax/toolInvocation";
4
+ //# sourceMappingURL=managedToolProtocol.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managedToolProtocol.js","sourceRoot":"","sources":["../src/managedToolProtocol.ts"],"names":[],"mappings":"AAKA,6EAA6E;AAC7E,MAAM,CAAC,MAAM,uCAAuC,GAAG,KAAc,CAAC;AACtE,MAAM,CAAC,MAAM,wCAAwC,GACnD,uBAAgC,CAAC"}
@@ -0,0 +1,150 @@
1
+ export declare const EXTENSION_PERMISSIONS: readonly [
2
+ "authentication",
3
+ "commands.execute",
4
+ "diagnostics.publish",
5
+ "extension.execute",
6
+ "network",
7
+ "notifications",
8
+ "services.manage",
9
+ "storage",
10
+ "terminal",
11
+ "terminal.packages",
12
+ "tools.execute",
13
+ "workspace.read",
14
+ "workspace.write",
15
+ ];
16
+
17
+ export declare const EXTENSION_TERMINAL_PACKAGE_REPOSITORIES: readonly [
18
+ "zyntax",
19
+ "termux-main",
20
+ ];
21
+ export declare const EXTENSION_DEVELOPMENT_STACK_MAX_CONTRIBUTIONS: 8;
22
+ export declare const EXTENSION_DEVELOPMENT_STACK_MAX_REQUIREMENTS: 32;
23
+ export declare const EXTENSION_DEVELOPMENT_STACK_MAX_LABEL_LENGTH: 120;
24
+ export declare const EXTENSION_DEVELOPMENT_STACK_MAX_DESCRIPTION_LENGTH: 512;
25
+ export declare const EXTENSION_TERMINAL_PACKAGE_MAX_SYMBOL_LENGTH: 96;
26
+ export declare const EXTENSION_TERMINAL_PACKAGE_MAX_REQUEST_BYTES: number;
27
+ export declare const EXTENSION_TERMINAL_PACKAGE_MAX_RESULT_BYTES: number;
28
+
29
+ export declare const EXTENSION_EXECUTION_MAX_ARGUMENTS: 32;
30
+ export declare const EXTENSION_EXECUTION_MAX_ARGUMENT_LENGTH: 512;
31
+ export declare const EXTENSION_EXECUTION_MAX_NODE_MODULES: 16;
32
+ export declare const EXTENSION_LSP_POSITION_CAPABILITIES: readonly [
33
+ "completion",
34
+ "hover",
35
+ "signatureHelp",
36
+ "definition",
37
+ "implementation",
38
+ "typeDefinition",
39
+ "references",
40
+ "rename",
41
+ "codeActions",
42
+ "typeHierarchy",
43
+ "documentHighlights",
44
+ ];
45
+ export declare const EXTENSION_LSP_DOCUMENT_CAPABILITIES: readonly [
46
+ "diagnostics",
47
+ "semanticTokens",
48
+ "workspaceSymbols",
49
+ "documentSymbols",
50
+ "foldingRanges",
51
+ "documentFormatting",
52
+ ];
53
+ export declare const EXTENSION_LSP_EXCLUSIVE_CAPABILITIES: readonly [
54
+ "rename",
55
+ "typeHierarchy",
56
+ "semanticTokens",
57
+ "documentFormatting",
58
+ ];
59
+ export declare const EXTENSION_LSP_STANDARD_CLIENT_REQUESTS: readonly [
60
+ "window/showDocument",
61
+ "window/showMessageRequest",
62
+ "workspace/applyEdit",
63
+ ];
64
+ export declare function isExtensionExecutionArgument(value: unknown): value is string;
65
+
66
+ export declare const EXTENSION_PROVIDER_KINDS: readonly [
67
+ "completion",
68
+ "structuralRegions",
69
+ "virtualDocuments",
70
+ "documentParser",
71
+ "documentFormatting",
72
+ "rangeFormatting",
73
+ "diagnostics",
74
+ "codeActions",
75
+ "fixAll",
76
+ "debugConfiguration",
77
+ "debugAdapter",
78
+ "notebookType",
79
+ "notebookKernel",
80
+ "command",
81
+ "agent",
82
+ "aiProvider",
83
+ "fileSearch",
84
+ "textSearch",
85
+ "quickOpen",
86
+ "inlineCompletion",
87
+ "assistedEdit",
88
+ "aiCodeAction",
89
+ "decoration",
90
+ "documentColor",
91
+ "hover",
92
+ "preview",
93
+ "task",
94
+ "terminalProfile",
95
+ "scm",
96
+ "projectTemplate",
97
+ ];
98
+
99
+ export declare const EXTENSION_ACTIVATION_PROVIDER_KINDS: readonly Exclude<
100
+ (typeof EXTENSION_PROVIDER_KINDS)[number],
101
+ "command" | "agent" | "documentParser"
102
+ >[];
103
+
104
+ export declare const EXTENSION_SEARCH_PROVIDER_KINDS: readonly [
105
+ "fileSearch",
106
+ "textSearch",
107
+ "quickOpen",
108
+ ];
109
+
110
+ export declare const EXTENSION_CONTRIBUTION_FIELDS: readonly [
111
+ "languages",
112
+ "grammars",
113
+ "languageServers",
114
+ "persistentServices",
115
+ "developmentStacks",
116
+ "formatters",
117
+ "rangeFormatters",
118
+ "documentFormattingProviders",
119
+ "rangeFormattingProviders",
120
+ "diagnosticsProviders",
121
+ "debuggers",
122
+ "notebookTypes",
123
+ "notebookKernels",
124
+ "searchProviders",
125
+ "inlineCompletionProviders",
126
+ "assistedEditProviders",
127
+ "aiCodeActionProviders",
128
+ "decorationProviders",
129
+ "documentColorProviders",
130
+ "hoverProviders",
131
+ "previewProviders",
132
+ "taskProviders",
133
+ "terminalProfileProviders",
134
+ "scmProviders",
135
+ "projectTemplateProviders",
136
+ "commands",
137
+ "settings",
138
+ "authenticationProviders",
139
+ "workbench",
140
+ "agents",
141
+ "aiProviders",
142
+ "snippets",
143
+ "completionProviders",
144
+ "structuralRegions",
145
+ "virtualDocuments",
146
+ "themes",
147
+ "iconThemes",
148
+ "keymaps",
149
+ "typescriptCompanions",
150
+ ];
@@ -0,0 +1,174 @@
1
+ /** Canonical permission names accepted by every extension manifest layer. */
2
+ export const EXTENSION_PERMISSIONS = Object.freeze([
3
+ "authentication",
4
+ "commands.execute",
5
+ "diagnostics.publish",
6
+ "extension.execute",
7
+ "network",
8
+ "notifications",
9
+ "services.manage",
10
+ "storage",
11
+ "terminal",
12
+ "terminal.packages",
13
+ "tools.execute",
14
+ "workspace.read",
15
+ "workspace.write",
16
+ ]);
17
+
18
+ /** Fixed public identities for host-configured signed terminal-package repositories. */
19
+ export const EXTENSION_TERMINAL_PACKAGE_REPOSITORIES = Object.freeze([
20
+ "zyntax",
21
+ "termux-main",
22
+ ]);
23
+
24
+ /** Canonical bounds for declarative development stacks and their public API. */
25
+ export const EXTENSION_DEVELOPMENT_STACK_MAX_CONTRIBUTIONS = 8;
26
+ export const EXTENSION_DEVELOPMENT_STACK_MAX_REQUIREMENTS = 32;
27
+ export const EXTENSION_DEVELOPMENT_STACK_MAX_LABEL_LENGTH = 120;
28
+ export const EXTENSION_DEVELOPMENT_STACK_MAX_DESCRIPTION_LENGTH = 512;
29
+ export const EXTENSION_TERMINAL_PACKAGE_MAX_SYMBOL_LENGTH = 96;
30
+ export const EXTENSION_TERMINAL_PACKAGE_MAX_REQUEST_BYTES = 8 * 1024;
31
+ export const EXTENSION_TERMINAL_PACKAGE_MAX_RESULT_BYTES = 16 * 1024;
32
+
33
+ /** Canonical bounds for literal managed-tool and task process arguments. */
34
+ export const EXTENSION_EXECUTION_MAX_ARGUMENTS = 32;
35
+ export const EXTENSION_EXECUTION_MAX_ARGUMENT_LENGTH = 512;
36
+ export const EXTENSION_EXECUTION_MAX_NODE_MODULES = 16;
37
+
38
+ /** Canonical standard-LSP routes accepted in language-server capability matrices. */
39
+ export const EXTENSION_LSP_POSITION_CAPABILITIES = Object.freeze([
40
+ "completion",
41
+ "hover",
42
+ "signatureHelp",
43
+ "definition",
44
+ "implementation",
45
+ "typeDefinition",
46
+ "references",
47
+ "rename",
48
+ "codeActions",
49
+ "typeHierarchy",
50
+ "documentHighlights",
51
+ ]);
52
+
53
+ export const EXTENSION_LSP_DOCUMENT_CAPABILITIES = Object.freeze([
54
+ "diagnostics",
55
+ "semanticTokens",
56
+ "workspaceSymbols",
57
+ "documentSymbols",
58
+ "foldingRanges",
59
+ "documentFormatting",
60
+ ]);
61
+
62
+ export const EXTENSION_LSP_EXCLUSIVE_CAPABILITIES = Object.freeze([
63
+ "rename",
64
+ "typeHierarchy",
65
+ "semanticTokens",
66
+ "documentFormatting",
67
+ ]);
68
+
69
+ /** Standard server-to-client LSP requests that require explicit host authority. */
70
+ export const EXTENSION_LSP_STANDARD_CLIENT_REQUESTS = Object.freeze([
71
+ "window/showDocument",
72
+ "window/showMessageRequest",
73
+ "workspace/applyEdit",
74
+ ]);
75
+
76
+ /** Matches Java's Character.isISOControl contract used by the native authority. */
77
+ const EXTENSION_EXECUTION_ARGUMENT_CONTROL = /[\u0000-\u001f\u007f-\u009f]/u;
78
+
79
+ export function isExtensionExecutionArgument(value) {
80
+ return typeof value === "string"
81
+ && value.length <= EXTENSION_EXECUTION_MAX_ARGUMENT_LENGTH
82
+ && !EXTENSION_EXECUTION_ARGUMENT_CONTROL.test(value);
83
+ }
84
+
85
+ /** Canonical executable provider kinds. */
86
+ export const EXTENSION_PROVIDER_KINDS = Object.freeze([
87
+ "completion",
88
+ "structuralRegions",
89
+ "virtualDocuments",
90
+ "documentParser",
91
+ "documentFormatting",
92
+ "rangeFormatting",
93
+ "diagnostics",
94
+ "codeActions",
95
+ "fixAll",
96
+ "debugConfiguration",
97
+ "debugAdapter",
98
+ "notebookType",
99
+ "notebookKernel",
100
+ "command",
101
+ "agent",
102
+ "aiProvider",
103
+ "fileSearch",
104
+ "textSearch",
105
+ "quickOpen",
106
+ "inlineCompletion",
107
+ "assistedEdit",
108
+ "aiCodeAction",
109
+ "decoration",
110
+ "documentColor",
111
+ "hover",
112
+ "preview",
113
+ "task",
114
+ "terminalProfile",
115
+ "scm",
116
+ "projectTemplate",
117
+ ]);
118
+
119
+ /** Commands and agent harnesses use dedicated activation events. */
120
+ export const EXTENSION_ACTIVATION_PROVIDER_KINDS = Object.freeze(
121
+ EXTENSION_PROVIDER_KINDS.filter(
122
+ (kind) => kind !== "command" && kind !== "agent" && kind !== "documentParser",
123
+ ),
124
+ );
125
+
126
+ /** Canonical search-provider kinds. */
127
+ export const EXTENSION_SEARCH_PROVIDER_KINDS = Object.freeze([
128
+ "fileSearch",
129
+ "textSearch",
130
+ "quickOpen",
131
+ ]);
132
+
133
+ /** Exact top-level fields allowed inside `manifest.contributes`. */
134
+ export const EXTENSION_CONTRIBUTION_FIELDS = Object.freeze([
135
+ "languages",
136
+ "grammars",
137
+ "languageServers",
138
+ "persistentServices",
139
+ "developmentStacks",
140
+ "formatters",
141
+ "rangeFormatters",
142
+ "documentFormattingProviders",
143
+ "rangeFormattingProviders",
144
+ "diagnosticsProviders",
145
+ "debuggers",
146
+ "notebookTypes",
147
+ "notebookKernels",
148
+ "searchProviders",
149
+ "inlineCompletionProviders",
150
+ "assistedEditProviders",
151
+ "aiCodeActionProviders",
152
+ "decorationProviders",
153
+ "documentColorProviders",
154
+ "hoverProviders",
155
+ "previewProviders",
156
+ "taskProviders",
157
+ "terminalProfileProviders",
158
+ "scmProviders",
159
+ "projectTemplateProviders",
160
+ "commands",
161
+ "settings",
162
+ "authenticationProviders",
163
+ "workbench",
164
+ "agents",
165
+ "aiProviders",
166
+ "snippets",
167
+ "completionProviders",
168
+ "structuralRegions",
169
+ "virtualDocuments",
170
+ "themes",
171
+ "iconThemes",
172
+ "keymaps",
173
+ "typescriptCompanions",
174
+ ]);
@@ -0,0 +1,50 @@
1
+ import type { ExtensionProviderKind } from "./contracts/manifest.js";
2
+
3
+ export const EXTENSION_PROVIDER_METHODS: Readonly<{
4
+ readonly completion: readonly ["provideCompletions"];
5
+ readonly structuralRegions: readonly ["provideRegions"];
6
+ readonly virtualDocuments: readonly ["provideVirtualDocuments"];
7
+ readonly documentParser: readonly ["parseDocument"];
8
+ readonly documentFormatting: readonly ["provideDocumentFormatting"];
9
+ readonly rangeFormatting: readonly ["provideRangeFormatting"];
10
+ readonly diagnostics: readonly ["provideDiagnostics"];
11
+ readonly codeActions: readonly ["provideCodeActions"];
12
+ readonly fixAll: readonly ["provideFixAll"];
13
+ readonly debugConfiguration: readonly [
14
+ "provideDebugConfigurations",
15
+ "resolveDebugConfiguration",
16
+ ];
17
+ readonly debugAdapter: readonly ["provideDebugAdapterDescriptor"];
18
+ readonly notebookType: readonly ["deserializeNotebook", "serializeNotebook"];
19
+ readonly notebookKernel: readonly ["provideNotebookKernelDescriptor"];
20
+ readonly command: readonly ["executeCommand"];
21
+ readonly agent: readonly ["activate"];
22
+ readonly aiProvider: readonly ["listModels", "stream", "cancel"];
23
+ readonly fileSearch: readonly ["provideFileSearchResults"];
24
+ readonly textSearch: readonly ["provideTextSearchResults"];
25
+ readonly quickOpen: readonly ["provideQuickOpenResults"];
26
+ readonly inlineCompletion: readonly ["provideInlineCompletions"];
27
+ readonly assistedEdit: readonly ["provideAssistedEdits", "streamAssistedEdits"];
28
+ readonly aiCodeAction: readonly ["provideAICodeActions"];
29
+ readonly decoration: readonly ["provideDecorations"];
30
+ readonly documentColor: readonly [
31
+ "provideDocumentColors",
32
+ "provideColorPresentations",
33
+ ];
34
+ readonly hover: readonly ["provideHover"];
35
+ readonly preview: readonly ["providePreview"];
36
+ readonly task: readonly ["provideTasks", "resolveTask"];
37
+ readonly terminalProfile: readonly [
38
+ "provideTerminalProfiles",
39
+ "resolveTerminalProfile",
40
+ ];
41
+ readonly scm: readonly ["provideSourceControlState"];
42
+ readonly projectTemplate: readonly [
43
+ "provideProjectTemplates",
44
+ "resolveProjectTemplate",
45
+ ];
46
+ }>;
47
+
48
+ export type ExtensionProviderMethod<
49
+ TKind extends ExtensionProviderKind = ExtensionProviderKind,
50
+ > = (typeof EXTENSION_PROVIDER_METHODS)[TKind][number];
@@ -0,0 +1,45 @@
1
+ /** Required public provider methods, keyed by the canonical capability kind. */
2
+ export const EXTENSION_PROVIDER_METHODS = Object.freeze({
3
+ completion: Object.freeze(["provideCompletions"]),
4
+ structuralRegions: Object.freeze(["provideRegions"]),
5
+ virtualDocuments: Object.freeze(["provideVirtualDocuments"]),
6
+ documentParser: Object.freeze(["parseDocument"]),
7
+ documentFormatting: Object.freeze(["provideDocumentFormatting"]),
8
+ rangeFormatting: Object.freeze(["provideRangeFormatting"]),
9
+ diagnostics: Object.freeze(["provideDiagnostics"]),
10
+ codeActions: Object.freeze(["provideCodeActions"]),
11
+ fixAll: Object.freeze(["provideFixAll"]),
12
+ debugConfiguration: Object.freeze([
13
+ "provideDebugConfigurations",
14
+ "resolveDebugConfiguration",
15
+ ]),
16
+ debugAdapter: Object.freeze(["provideDebugAdapterDescriptor"]),
17
+ notebookType: Object.freeze(["deserializeNotebook", "serializeNotebook"]),
18
+ notebookKernel: Object.freeze(["provideNotebookKernelDescriptor"]),
19
+ command: Object.freeze(["executeCommand"]),
20
+ agent: Object.freeze(["activate"]),
21
+ aiProvider: Object.freeze(["listModels", "stream", "cancel"]),
22
+ fileSearch: Object.freeze(["provideFileSearchResults"]),
23
+ textSearch: Object.freeze(["provideTextSearchResults"]),
24
+ quickOpen: Object.freeze(["provideQuickOpenResults"]),
25
+ inlineCompletion: Object.freeze(["provideInlineCompletions"]),
26
+ assistedEdit: Object.freeze(["provideAssistedEdits", "streamAssistedEdits"]),
27
+ aiCodeAction: Object.freeze(["provideAICodeActions"]),
28
+ decoration: Object.freeze(["provideDecorations"]),
29
+ documentColor: Object.freeze([
30
+ "provideDocumentColors",
31
+ "provideColorPresentations",
32
+ ]),
33
+ hover: Object.freeze(["provideHover"]),
34
+ preview: Object.freeze(["providePreview"]),
35
+ task: Object.freeze(["provideTasks", "resolveTask"]),
36
+ terminalProfile: Object.freeze([
37
+ "provideTerminalProfiles",
38
+ "resolveTerminalProfile",
39
+ ]),
40
+ scm: Object.freeze(["provideSourceControlState"]),
41
+ projectTemplate: Object.freeze([
42
+ "provideProjectTemplates",
43
+ "resolveProjectTemplate",
44
+ ]),
45
+ });
package/package.json ADDED
@@ -0,0 +1,62 @@
1
+ {
2
+ "name": "@zyntax/extension-sdk",
3
+ "version": "1.0.0",
4
+ "description": "Canonical public contracts and authoring helpers for Zyntax extensions.",
5
+ "author": "amitkhare",
6
+ "type": "module",
7
+ "license": "MIT",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/amitkhare/zyntax-app.git",
11
+ "directory": "packages/extension-sdk"
12
+ },
13
+ "homepage": "https://github.com/amitkhare/zyntax-app/tree/main/packages/extension-sdk#readme",
14
+ "bugs": {
15
+ "url": "https://github.com/amitkhare/zyntax-app/issues"
16
+ },
17
+ "keywords": [
18
+ "zyntax",
19
+ "extension",
20
+ "sdk"
21
+ ],
22
+ "sideEffects": false,
23
+ "main": "./dist/index.js",
24
+ "types": "./dist/index.d.ts",
25
+ "publishConfig": {
26
+ "access": "public",
27
+ "registry": "https://registry.npmjs.org/"
28
+ },
29
+ "files": [
30
+ "dist",
31
+ "LICENSE",
32
+ "README.md"
33
+ ],
34
+ "exports": {
35
+ ".": {
36
+ "types": "./dist/index.d.ts",
37
+ "import": "./dist/index.js"
38
+ },
39
+ "./provider-methods": {
40
+ "types": "./dist/providerMethods.d.ts",
41
+ "import": "./dist/providerMethods.js"
42
+ },
43
+ "./manifest-constants": {
44
+ "types": "./dist/manifestConstants.d.ts",
45
+ "import": "./dist/manifestConstants.js"
46
+ },
47
+ "./capabilities": {
48
+ "types": "./dist/capabilities.d.ts",
49
+ "import": "./dist/capabilities.js"
50
+ }
51
+ },
52
+ "scripts": {
53
+ "build": "node ./scripts/build.mjs",
54
+ "prepare": "npm run build",
55
+ "typecheck": "tsc --noEmit -p ./tsconfig.json",
56
+ "test": "vitest run --config ./vitest.config.ts"
57
+ },
58
+ "devDependencies": {
59
+ "typescript": "5.9.3",
60
+ "vitest": "4.1.10"
61
+ }
62
+ }