@openwaggle/extension-sdk 0.0.0-bootstrap.0 → 0.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.
Files changed (104) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/LICENSE +21 -0
  3. package/README.md +3 -0
  4. package/dist/agent-loop.d.ts +128 -0
  5. package/dist/agent-loop.js +47 -0
  6. package/dist/broker-validation.d.ts +17 -0
  7. package/dist/broker-validation.js +99 -0
  8. package/dist/broker.d.ts +193 -0
  9. package/dist/broker.js +81 -0
  10. package/dist/constants.d.ts +183 -0
  11. package/dist/constants.js +245 -0
  12. package/dist/context.d.ts +66 -0
  13. package/dist/context.js +49 -0
  14. package/dist/contribution-types.d.ts +21 -0
  15. package/dist/contribution-types.js +1 -0
  16. package/dist/core-types.d.ts +58 -0
  17. package/dist/core-types.js +1 -0
  18. package/dist/docs-validation.d.ts +3 -0
  19. package/dist/docs-validation.js +93 -0
  20. package/dist/docs.d.ts +231 -0
  21. package/dist/docs.js +85 -0
  22. package/dist/index.d.ts +15 -0
  23. package/dist/index.js +10 -0
  24. package/dist/internal-validation.d.ts +4 -0
  25. package/dist/internal-validation.js +24 -0
  26. package/dist/json.d.ts +9 -0
  27. package/dist/json.js +3 -0
  28. package/dist/manifest-contributions.d.ts +380 -0
  29. package/dist/manifest-contributions.js +75 -0
  30. package/dist/manifest-primitives.d.ts +20 -0
  31. package/dist/manifest-primitives.js +118 -0
  32. package/dist/manifest.d.ts +303 -0
  33. package/dist/manifest.js +89 -0
  34. package/dist/openwaggle-sdk.d.ts +2 -0
  35. package/dist/openwaggle-sdk.js +127 -0
  36. package/dist/openwaggle-types.d.ts +111 -0
  37. package/dist/openwaggle-types.js +1 -0
  38. package/dist/openwaggle-validation.d.ts +12 -0
  39. package/dist/openwaggle-validation.js +135 -0
  40. package/dist/registry-types.d.ts +34 -0
  41. package/dist/registry-types.js +1 -0
  42. package/dist/runtime-sdk.d.ts +2 -0
  43. package/dist/runtime-sdk.js +19 -0
  44. package/dist/runtime-types.d.ts +19 -0
  45. package/dist/runtime-types.js +1 -0
  46. package/dist/runtime.d.ts +22 -0
  47. package/dist/runtime.js +22 -0
  48. package/dist/schema.d.ts +13 -0
  49. package/dist/schema.js +25 -0
  50. package/dist/sdk-types.d.ts +92 -0
  51. package/dist/sdk-types.js +1 -0
  52. package/dist/storage-sdk.d.ts +2 -0
  53. package/dist/storage-sdk.js +51 -0
  54. package/dist/storage-types.d.ts +40 -0
  55. package/dist/storage-types.js +1 -0
  56. package/dist/theme-data.d.ts +126 -0
  57. package/dist/theme-data.js +144 -0
  58. package/dist/theme-types.d.ts +61 -0
  59. package/dist/theme-types.js +1 -0
  60. package/dist/theme.d.ts +6 -0
  61. package/dist/theme.js +128 -0
  62. package/dist/types.d.ts +6 -0
  63. package/dist/types.js +1 -0
  64. package/dist/ui-constants.d.ts +24 -0
  65. package/dist/ui-constants.js +22 -0
  66. package/dist/ui-stylesheet.d.ts +8 -0
  67. package/dist/ui-stylesheet.js +223 -0
  68. package/dist/ui.d.ts +6 -0
  69. package/dist/ui.js +16 -0
  70. package/dist-cjs/agent-loop.js +83 -0
  71. package/dist-cjs/broker-validation.js +109 -0
  72. package/dist-cjs/broker.js +120 -0
  73. package/dist-cjs/constants.js +248 -0
  74. package/dist-cjs/context.js +54 -0
  75. package/dist-cjs/contribution-types.js +2 -0
  76. package/dist-cjs/core-types.js +2 -0
  77. package/dist-cjs/docs-validation.js +97 -0
  78. package/dist-cjs/docs.js +121 -0
  79. package/dist-cjs/index.js +56 -0
  80. package/dist-cjs/internal-validation.js +30 -0
  81. package/dist-cjs/json.js +39 -0
  82. package/dist-cjs/manifest-contributions.js +111 -0
  83. package/dist-cjs/manifest-primitives.js +158 -0
  84. package/dist-cjs/manifest.js +140 -0
  85. package/dist-cjs/openwaggle-sdk.js +130 -0
  86. package/dist-cjs/openwaggle-types.js +2 -0
  87. package/dist-cjs/openwaggle-validation.js +148 -0
  88. package/dist-cjs/package.json +3 -0
  89. package/dist-cjs/registry-types.js +2 -0
  90. package/dist-cjs/runtime-sdk.js +22 -0
  91. package/dist-cjs/runtime-types.js +2 -0
  92. package/dist-cjs/runtime.js +61 -0
  93. package/dist-cjs/schema.js +61 -0
  94. package/dist-cjs/sdk-types.js +2 -0
  95. package/dist-cjs/storage-sdk.js +54 -0
  96. package/dist-cjs/storage-types.js +2 -0
  97. package/dist-cjs/theme-data.js +147 -0
  98. package/dist-cjs/theme-types.js +2 -0
  99. package/dist-cjs/theme.js +135 -0
  100. package/dist-cjs/types.js +2 -0
  101. package/dist-cjs/ui-constants.js +25 -0
  102. package/dist-cjs/ui-stylesheet.js +227 -0
  103. package/dist-cjs/ui.js +24 -0
  104. package/package.json +98 -8
@@ -0,0 +1,183 @@
1
+ export declare const OPENWAGGLE_EXTENSION_BROKER: {
2
+ readonly CAPABILITY: {
3
+ readonly HOST_CONTEXT: "openwaggle.host.context";
4
+ readonly STORAGE: "openwaggle.storage";
5
+ readonly STATE: "openwaggle.state";
6
+ readonly ACTIONS: "openwaggle.actions";
7
+ readonly SETTINGS: "openwaggle.settings";
8
+ readonly DOCS: "openwaggle.docs";
9
+ readonly RUNTIME: "openwaggle.runtime";
10
+ };
11
+ readonly CAPABILITIES: readonly ("openwaggle.host.context" | "openwaggle.storage" | "openwaggle.state" | "openwaggle.actions" | "openwaggle.settings" | "openwaggle.docs" | "openwaggle.runtime")[];
12
+ readonly CAPABILITY_METHODS: readonly [{
13
+ readonly capability: "openwaggle.host.context";
14
+ readonly methods: readonly ["get-scope"];
15
+ }, {
16
+ readonly capability: "openwaggle.storage";
17
+ readonly methods: readonly ["get", "set", "delete", "list"];
18
+ }, {
19
+ readonly capability: "openwaggle.state";
20
+ readonly methods: readonly ["get-state", "read-state"];
21
+ }, {
22
+ readonly capability: "openwaggle.actions";
23
+ readonly methods: readonly ["select-project"];
24
+ }, {
25
+ readonly capability: "openwaggle.settings";
26
+ readonly methods: readonly ["get-settings", "update-settings", "get-setting", "update-setting"];
27
+ }, {
28
+ readonly capability: "openwaggle.docs";
29
+ readonly methods: readonly ["discover-docs", "resolve-docs-topic"];
30
+ }, {
31
+ readonly capability: "openwaggle.runtime";
32
+ readonly methods: readonly ["register-contribution", "unregister-contribution"];
33
+ }];
34
+ readonly METHOD: {
35
+ readonly GET_SCOPE: "get-scope";
36
+ readonly GET: "get";
37
+ readonly SET: "set";
38
+ readonly DELETE: "delete";
39
+ readonly LIST: "list";
40
+ readonly GET_STATE: "get-state";
41
+ readonly READ_STATE: "read-state";
42
+ readonly SELECT_PROJECT: "select-project";
43
+ readonly GET_SETTINGS: "get-settings";
44
+ readonly UPDATE_SETTINGS: "update-settings";
45
+ readonly GET_SETTING: "get-setting";
46
+ readonly UPDATE_SETTING: "update-setting";
47
+ readonly DISCOVER_DOCS: "discover-docs";
48
+ readonly RESOLVE_DOCS_TOPIC: "resolve-docs-topic";
49
+ readonly REGISTER_CONTRIBUTION: "register-contribution";
50
+ readonly UNREGISTER_CONTRIBUTION: "unregister-contribution";
51
+ };
52
+ readonly METHODS: readonly ("get-scope" | "get" | "set" | "delete" | "list" | "get-state" | "read-state" | "select-project" | "get-settings" | "update-settings" | "get-setting" | "update-setting" | "discover-docs" | "resolve-docs-topic" | "register-contribution" | "unregister-contribution")[];
53
+ readonly FAILURE_CODE: {
54
+ readonly INVALID_INPUT: "invalid-input";
55
+ readonly INVALID_PAYLOAD: "invalid-payload";
56
+ readonly UNKNOWN_EXTENSION: "unknown-extension";
57
+ readonly DISABLED_EXTENSION: "disabled-extension";
58
+ readonly UNKNOWN_CONTRIBUTION: "unknown-contribution";
59
+ readonly UNDECLARED_CAPABILITY: "undeclared-capability";
60
+ readonly UNDECLARED_METHOD: "undeclared-method";
61
+ readonly UNDECLARED_SCOPE: "undeclared-scope";
62
+ readonly OUT_OF_SCOPE: "out-of-scope";
63
+ readonly UNSUPPORTED_CAPABILITY: "unsupported-capability";
64
+ readonly UNSUPPORTED_METHOD: "unsupported-method";
65
+ readonly TRANSPORT_FAILED: "transport-failed";
66
+ };
67
+ readonly FAILURE_CODES: readonly ("invalid-input" | "invalid-payload" | "unknown-extension" | "disabled-extension" | "unknown-contribution" | "undeclared-capability" | "undeclared-method" | "undeclared-scope" | "out-of-scope" | "unsupported-capability" | "unsupported-method" | "transport-failed")[];
68
+ readonly OUTCOME: {
69
+ readonly SUCCEEDED: "succeeded";
70
+ readonly REJECTED: "rejected";
71
+ };
72
+ readonly OUTCOMES: readonly ("succeeded" | "rejected")[];
73
+ readonly STATE_SELECTOR: {
74
+ readonly CURRENT_PROJECT: "current-project";
75
+ readonly CURRENT_SESSION: "current-session";
76
+ readonly CURRENT_BRANCH: "current-branch";
77
+ readonly RECENT_PROJECTS: "recent-projects";
78
+ readonly MODEL_PREFERENCES: "model-preferences";
79
+ };
80
+ readonly STATE_SELECTORS: readonly ("current-project" | "current-session" | "current-branch" | "recent-projects" | "model-preferences")[];
81
+ readonly SETTING_KEY: {
82
+ readonly MODEL_PREFERENCES: "model-preferences";
83
+ readonly PROJECT_DISPLAY_NAME: "project-display-name";
84
+ };
85
+ readonly SETTING_KEYS: readonly ("model-preferences" | "project-display-name")[];
86
+ };
87
+ export declare const OPENWAGGLE_EXTENSION: {
88
+ readonly MANIFEST_FILE: "openwaggle.extension.json";
89
+ readonly SDK_VERSION: "0.1.0";
90
+ readonly PROJECT_ROOT_SEGMENTS: readonly [".openwaggle", "extensions"];
91
+ readonly GLOBAL_EXTENSIONS_DIR: "extensions";
92
+ readonly SCOPE: {
93
+ readonly GLOBAL_KIND: "global";
94
+ readonly PROJECT_KIND: "project";
95
+ readonly GLOBAL_ID: "global";
96
+ };
97
+ readonly LIMITS: {
98
+ readonly ID_MAX_LENGTH: 96;
99
+ readonly CONTRIBUTION_ID_MAX_LENGTH: 128;
100
+ readonly NAME_MAX_LENGTH: 120;
101
+ readonly DESCRIPTION_MAX_LENGTH: 2000;
102
+ readonly RELATIVE_PATH_MAX_LENGTH: 260;
103
+ readonly NETWORK_ORIGIN_MAX_LENGTH: 300;
104
+ readonly RUNTIME_REQUIREMENT_BINARY_MAX_LENGTH: 120;
105
+ readonly BUILD_COMMAND_MAX_LENGTH: 500;
106
+ readonly BUILD_LOG_MAX_LENGTH: 4000;
107
+ readonly BUILD_COMMAND_TIMEOUT_MS: number;
108
+ };
109
+ readonly PATTERNS: {
110
+ readonly WINDOWS_ABSOLUTE_PATH: RegExp;
111
+ readonly ID: RegExp;
112
+ readonly CONTRIBUTION_ID: RegExp;
113
+ readonly SEMVER_VERSION: RegExp;
114
+ };
115
+ readonly PATH: {
116
+ readonly NUL_CHARACTER: "\0";
117
+ readonly POSIX_SEPARATOR: "/";
118
+ readonly WINDOWS_SEPARATOR: "\\";
119
+ readonly RELATIVE_PARENT_SEGMENT: "..";
120
+ readonly CURRENT_DIRECTORY_SEGMENT: ".";
121
+ };
122
+ readonly RUNTIME_MODULE_PROTOCOL: {
123
+ readonly MODULE_CONTEXT_SEGMENT: "__context__";
124
+ };
125
+ readonly CAPABILITY_SCOPES: readonly ["app", "project", "session", "branch"];
126
+ readonly CONTRIBUTION_FAMILY: {
127
+ readonly COMMANDS: "commands";
128
+ readonly SLASH_COMMANDS: "slashCommands";
129
+ readonly ROUTES: "routes";
130
+ readonly SETTINGS_SECTIONS: "settingsSections";
131
+ readonly SIDE_PANELS: "sidePanels";
132
+ readonly DIALOGS: "dialogs";
133
+ readonly TRANSCRIPT_RENDERERS: "transcriptRenderers";
134
+ readonly TOOL_RENDERERS: "toolRenderers";
135
+ readonly CUSTOM_MESSAGE_RENDERERS: "customMessageRenderers";
136
+ readonly INTERACTION_RENDERERS: "interactionRenderers";
137
+ readonly STATUS_WIDGETS: "statusWidgets";
138
+ };
139
+ readonly CONTRIBUTION_FAMILIES: readonly ["commands", "slashCommands", "routes", "settingsSections", "sidePanels", "dialogs", "transcriptRenderers", "toolRenderers", "customMessageRenderers", "interactionRenderers", "statusWidgets"];
140
+ readonly COMMAND_CONTRIBUTION_FAMILIES: readonly ["commands", "slashCommands"];
141
+ readonly CONTRIBUTION_RUNTIME: {
142
+ readonly FEDERATED_MODULE: "federated-module";
143
+ readonly TRUSTED_RENDERER: "trusted-renderer";
144
+ };
145
+ readonly CONTRIBUTION_RUNTIMES: readonly ("federated-module" | "trusted-renderer")[];
146
+ readonly EXECUTION_PLACEMENT: {
147
+ readonly HOST_RENDERER: "host-renderer";
148
+ readonly FRAME: "frame";
149
+ };
150
+ readonly EXECUTION_PLACEMENTS: readonly ("host-renderer" | "frame")[];
151
+ readonly STORAGE: {
152
+ readonly KIND: {
153
+ readonly STATE: "state";
154
+ readonly CONFIG: "config";
155
+ };
156
+ readonly KINDS: readonly ("state" | "config")[];
157
+ readonly SCOPE: {
158
+ readonly GLOBAL_KIND: "global";
159
+ readonly PROJECT_KIND: "project";
160
+ readonly GLOBAL_ID: "global";
161
+ };
162
+ readonly SCOPE_KINDS: readonly ("global" | "project")[];
163
+ readonly KEY_MAX_LENGTH: 160;
164
+ };
165
+ readonly ENTRY_CONTRIBUTION_FAMILIES: readonly ["routes", "settingsSections", "sidePanels", "dialogs", "transcriptRenderers", "toolRenderers", "customMessageRenderers", "interactionRenderers", "statusWidgets"];
166
+ readonly SLOT_CONTRIBUTION_FAMILIES: readonly ["settingsSections", "sidePanels", "dialogs", "transcriptRenderers", "toolRenderers", "customMessageRenderers", "interactionRenderers", "statusWidgets"];
167
+ readonly INSTALL_SOURCE: {
168
+ readonly PREBUILT: "prebuilt";
169
+ readonly LOCAL_BUILD: "local-build";
170
+ };
171
+ readonly INSTALL_SOURCES: readonly ("prebuilt" | "local-build")[];
172
+ readonly RUNTIME_REQUIREMENT_TYPE: {
173
+ readonly BINARY: "binary";
174
+ readonly COMMAND: "command";
175
+ };
176
+ readonly RUNTIME_REQUIREMENT_TYPES: readonly ("binary" | "command")[];
177
+ readonly NETWORK_ACCESS_MODE: {
178
+ readonly BROKERED: "brokered";
179
+ readonly RESTRICTED: "restricted";
180
+ readonly DIRECT: "direct";
181
+ };
182
+ readonly NETWORK_ACCESS_MODES: readonly ("brokered" | "restricted" | "direct")[];
183
+ };
@@ -0,0 +1,245 @@
1
+ const TEN_MINUTES_MS = 10 * 60 * 1_000;
2
+ const EXTENSION_BROKER_FAILURE_CODE = {
3
+ INVALID_INPUT: 'invalid-input',
4
+ INVALID_PAYLOAD: 'invalid-payload',
5
+ UNKNOWN_EXTENSION: 'unknown-extension',
6
+ DISABLED_EXTENSION: 'disabled-extension',
7
+ UNKNOWN_CONTRIBUTION: 'unknown-contribution',
8
+ UNDECLARED_CAPABILITY: 'undeclared-capability',
9
+ UNDECLARED_METHOD: 'undeclared-method',
10
+ UNDECLARED_SCOPE: 'undeclared-scope',
11
+ OUT_OF_SCOPE: 'out-of-scope',
12
+ UNSUPPORTED_CAPABILITY: 'unsupported-capability',
13
+ UNSUPPORTED_METHOD: 'unsupported-method',
14
+ TRANSPORT_FAILED: 'transport-failed',
15
+ };
16
+ const EXTENSION_BROKER_OUTCOME = {
17
+ SUCCEEDED: 'succeeded',
18
+ REJECTED: 'rejected',
19
+ };
20
+ const EXTENSION_BROKER_CAPABILITY = {
21
+ HOST_CONTEXT: 'openwaggle.host.context',
22
+ STORAGE: 'openwaggle.storage',
23
+ STATE: 'openwaggle.state',
24
+ ACTIONS: 'openwaggle.actions',
25
+ SETTINGS: 'openwaggle.settings',
26
+ DOCS: 'openwaggle.docs',
27
+ RUNTIME: 'openwaggle.runtime',
28
+ };
29
+ const EXTENSION_BROKER_METHOD = {
30
+ GET_SCOPE: 'get-scope',
31
+ GET: 'get',
32
+ SET: 'set',
33
+ DELETE: 'delete',
34
+ LIST: 'list',
35
+ GET_STATE: 'get-state',
36
+ READ_STATE: 'read-state',
37
+ SELECT_PROJECT: 'select-project',
38
+ GET_SETTINGS: 'get-settings',
39
+ UPDATE_SETTINGS: 'update-settings',
40
+ GET_SETTING: 'get-setting',
41
+ UPDATE_SETTING: 'update-setting',
42
+ DISCOVER_DOCS: 'discover-docs',
43
+ RESOLVE_DOCS_TOPIC: 'resolve-docs-topic',
44
+ REGISTER_CONTRIBUTION: 'register-contribution',
45
+ UNREGISTER_CONTRIBUTION: 'unregister-contribution',
46
+ };
47
+ const EXTENSION_BROKER_STATE_SELECTOR = {
48
+ CURRENT_PROJECT: 'current-project',
49
+ CURRENT_SESSION: 'current-session',
50
+ CURRENT_BRANCH: 'current-branch',
51
+ RECENT_PROJECTS: 'recent-projects',
52
+ MODEL_PREFERENCES: 'model-preferences',
53
+ };
54
+ const EXTENSION_BROKER_SETTING_KEY = {
55
+ MODEL_PREFERENCES: 'model-preferences',
56
+ PROJECT_DISPLAY_NAME: 'project-display-name',
57
+ };
58
+ const EXTENSION_BROKER_CAPABILITY_METHODS = [
59
+ {
60
+ capability: EXTENSION_BROKER_CAPABILITY.HOST_CONTEXT,
61
+ methods: [EXTENSION_BROKER_METHOD.GET_SCOPE],
62
+ },
63
+ {
64
+ capability: EXTENSION_BROKER_CAPABILITY.STORAGE,
65
+ methods: [
66
+ EXTENSION_BROKER_METHOD.GET,
67
+ EXTENSION_BROKER_METHOD.SET,
68
+ EXTENSION_BROKER_METHOD.DELETE,
69
+ EXTENSION_BROKER_METHOD.LIST,
70
+ ],
71
+ },
72
+ {
73
+ capability: EXTENSION_BROKER_CAPABILITY.STATE,
74
+ methods: [EXTENSION_BROKER_METHOD.GET_STATE, EXTENSION_BROKER_METHOD.READ_STATE],
75
+ },
76
+ {
77
+ capability: EXTENSION_BROKER_CAPABILITY.ACTIONS,
78
+ methods: [EXTENSION_BROKER_METHOD.SELECT_PROJECT],
79
+ },
80
+ {
81
+ capability: EXTENSION_BROKER_CAPABILITY.SETTINGS,
82
+ methods: [
83
+ EXTENSION_BROKER_METHOD.GET_SETTINGS,
84
+ EXTENSION_BROKER_METHOD.UPDATE_SETTINGS,
85
+ EXTENSION_BROKER_METHOD.GET_SETTING,
86
+ EXTENSION_BROKER_METHOD.UPDATE_SETTING,
87
+ ],
88
+ },
89
+ {
90
+ capability: EXTENSION_BROKER_CAPABILITY.DOCS,
91
+ methods: [EXTENSION_BROKER_METHOD.DISCOVER_DOCS, EXTENSION_BROKER_METHOD.RESOLVE_DOCS_TOPIC],
92
+ },
93
+ {
94
+ capability: EXTENSION_BROKER_CAPABILITY.RUNTIME,
95
+ methods: [
96
+ EXTENSION_BROKER_METHOD.REGISTER_CONTRIBUTION,
97
+ EXTENSION_BROKER_METHOD.UNREGISTER_CONTRIBUTION,
98
+ ],
99
+ },
100
+ ];
101
+ const EXTENSION_CONTRIBUTION_FAMILY = {
102
+ COMMANDS: 'commands',
103
+ SLASH_COMMANDS: 'slashCommands',
104
+ ROUTES: 'routes',
105
+ SETTINGS_SECTIONS: 'settingsSections',
106
+ SIDE_PANELS: 'sidePanels',
107
+ DIALOGS: 'dialogs',
108
+ TRANSCRIPT_RENDERERS: 'transcriptRenderers',
109
+ TOOL_RENDERERS: 'toolRenderers',
110
+ CUSTOM_MESSAGE_RENDERERS: 'customMessageRenderers',
111
+ INTERACTION_RENDERERS: 'interactionRenderers',
112
+ STATUS_WIDGETS: 'statusWidgets',
113
+ };
114
+ const EXTENSION_COMMAND_CONTRIBUTION_FAMILIES = Object.freeze([
115
+ EXTENSION_CONTRIBUTION_FAMILY.COMMANDS,
116
+ EXTENSION_CONTRIBUTION_FAMILY.SLASH_COMMANDS,
117
+ ]);
118
+ const EXTENSION_SLOT_CONTRIBUTION_FAMILIES = Object.freeze([
119
+ EXTENSION_CONTRIBUTION_FAMILY.SETTINGS_SECTIONS,
120
+ EXTENSION_CONTRIBUTION_FAMILY.SIDE_PANELS,
121
+ EXTENSION_CONTRIBUTION_FAMILY.DIALOGS,
122
+ EXTENSION_CONTRIBUTION_FAMILY.TRANSCRIPT_RENDERERS,
123
+ EXTENSION_CONTRIBUTION_FAMILY.TOOL_RENDERERS,
124
+ EXTENSION_CONTRIBUTION_FAMILY.CUSTOM_MESSAGE_RENDERERS,
125
+ EXTENSION_CONTRIBUTION_FAMILY.INTERACTION_RENDERERS,
126
+ EXTENSION_CONTRIBUTION_FAMILY.STATUS_WIDGETS,
127
+ ]);
128
+ const EXTENSION_ENTRY_CONTRIBUTION_FAMILIES = Object.freeze([
129
+ EXTENSION_CONTRIBUTION_FAMILY.ROUTES,
130
+ ...EXTENSION_SLOT_CONTRIBUTION_FAMILIES,
131
+ ]);
132
+ const EXTENSION_CONTRIBUTION_FAMILIES = Object.freeze([
133
+ ...EXTENSION_COMMAND_CONTRIBUTION_FAMILIES,
134
+ ...EXTENSION_ENTRY_CONTRIBUTION_FAMILIES,
135
+ ]);
136
+ const EXTENSION_CONTRIBUTION_RUNTIME = {
137
+ FEDERATED_MODULE: 'federated-module',
138
+ TRUSTED_RENDERER: 'trusted-renderer',
139
+ };
140
+ const EXTENSION_EXECUTION_PLACEMENT = {
141
+ HOST_RENDERER: 'host-renderer',
142
+ FRAME: 'frame',
143
+ };
144
+ const EXTENSION_STORAGE_KIND = {
145
+ STATE: 'state',
146
+ CONFIG: 'config',
147
+ };
148
+ const EXTENSION_STORAGE_SCOPE = {
149
+ GLOBAL_KIND: 'global',
150
+ PROJECT_KIND: 'project',
151
+ GLOBAL_ID: 'global',
152
+ };
153
+ const EXTENSION_INSTALL_SOURCE = {
154
+ PREBUILT: 'prebuilt',
155
+ LOCAL_BUILD: 'local-build',
156
+ };
157
+ const EXTENSION_RUNTIME_REQUIREMENT_TYPE = {
158
+ BINARY: 'binary',
159
+ COMMAND: 'command',
160
+ };
161
+ const EXTENSION_NETWORK_ACCESS_MODE = {
162
+ BROKERED: 'brokered',
163
+ RESTRICTED: 'restricted',
164
+ DIRECT: 'direct',
165
+ };
166
+ export const OPENWAGGLE_EXTENSION_BROKER = {
167
+ CAPABILITY: EXTENSION_BROKER_CAPABILITY,
168
+ CAPABILITIES: Object.freeze(Object.values(EXTENSION_BROKER_CAPABILITY)),
169
+ CAPABILITY_METHODS: EXTENSION_BROKER_CAPABILITY_METHODS,
170
+ METHOD: EXTENSION_BROKER_METHOD,
171
+ METHODS: Object.freeze(Object.values(EXTENSION_BROKER_METHOD)),
172
+ FAILURE_CODE: EXTENSION_BROKER_FAILURE_CODE,
173
+ FAILURE_CODES: Object.freeze(Object.values(EXTENSION_BROKER_FAILURE_CODE)),
174
+ OUTCOME: EXTENSION_BROKER_OUTCOME,
175
+ OUTCOMES: Object.freeze(Object.values(EXTENSION_BROKER_OUTCOME)),
176
+ STATE_SELECTOR: EXTENSION_BROKER_STATE_SELECTOR,
177
+ STATE_SELECTORS: Object.freeze(Object.values(EXTENSION_BROKER_STATE_SELECTOR)),
178
+ SETTING_KEY: EXTENSION_BROKER_SETTING_KEY,
179
+ SETTING_KEYS: Object.freeze(Object.values(EXTENSION_BROKER_SETTING_KEY)),
180
+ };
181
+ export const OPENWAGGLE_EXTENSION = {
182
+ MANIFEST_FILE: 'openwaggle.extension.json',
183
+ SDK_VERSION: '0.1.0',
184
+ PROJECT_ROOT_SEGMENTS: ['.openwaggle', 'extensions'],
185
+ GLOBAL_EXTENSIONS_DIR: 'extensions',
186
+ SCOPE: {
187
+ GLOBAL_KIND: 'global',
188
+ PROJECT_KIND: 'project',
189
+ GLOBAL_ID: 'global',
190
+ },
191
+ LIMITS: {
192
+ ID_MAX_LENGTH: 96,
193
+ CONTRIBUTION_ID_MAX_LENGTH: 128,
194
+ NAME_MAX_LENGTH: 120,
195
+ DESCRIPTION_MAX_LENGTH: 2_000,
196
+ RELATIVE_PATH_MAX_LENGTH: 260,
197
+ NETWORK_ORIGIN_MAX_LENGTH: 300,
198
+ RUNTIME_REQUIREMENT_BINARY_MAX_LENGTH: 120,
199
+ BUILD_COMMAND_MAX_LENGTH: 500,
200
+ BUILD_LOG_MAX_LENGTH: 4_000,
201
+ BUILD_COMMAND_TIMEOUT_MS: TEN_MINUTES_MS,
202
+ },
203
+ PATTERNS: {
204
+ WINDOWS_ABSOLUTE_PATH: /^[A-Za-z]:[\\/]/,
205
+ ID: /^[a-z0-9][a-z0-9._-]*$/,
206
+ CONTRIBUTION_ID: /^[a-z0-9][a-z0-9._/-]*$/,
207
+ SEMVER_VERSION: /^(0|[1-9]\d*)\.(0|[1-9]\d*)\.(0|[1-9]\d*)(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/,
208
+ },
209
+ PATH: {
210
+ NUL_CHARACTER: '\0',
211
+ POSIX_SEPARATOR: '/',
212
+ WINDOWS_SEPARATOR: '\\',
213
+ RELATIVE_PARENT_SEGMENT: '..',
214
+ CURRENT_DIRECTORY_SEGMENT: '.',
215
+ },
216
+ RUNTIME_MODULE_PROTOCOL: {
217
+ MODULE_CONTEXT_SEGMENT: '__context__',
218
+ },
219
+ CAPABILITY_SCOPES: ['app', 'project', 'session', 'branch'],
220
+ CONTRIBUTION_FAMILY: EXTENSION_CONTRIBUTION_FAMILY,
221
+ CONTRIBUTION_FAMILIES: EXTENSION_CONTRIBUTION_FAMILIES,
222
+ COMMAND_CONTRIBUTION_FAMILIES: EXTENSION_COMMAND_CONTRIBUTION_FAMILIES,
223
+ CONTRIBUTION_RUNTIME: EXTENSION_CONTRIBUTION_RUNTIME,
224
+ CONTRIBUTION_RUNTIMES: Object.freeze(Object.values(EXTENSION_CONTRIBUTION_RUNTIME)),
225
+ EXECUTION_PLACEMENT: EXTENSION_EXECUTION_PLACEMENT,
226
+ EXECUTION_PLACEMENTS: Object.freeze(Object.values(EXTENSION_EXECUTION_PLACEMENT)),
227
+ STORAGE: {
228
+ KIND: EXTENSION_STORAGE_KIND,
229
+ KINDS: Object.freeze(Object.values(EXTENSION_STORAGE_KIND)),
230
+ SCOPE: EXTENSION_STORAGE_SCOPE,
231
+ SCOPE_KINDS: Object.freeze([
232
+ EXTENSION_STORAGE_SCOPE.GLOBAL_KIND,
233
+ EXTENSION_STORAGE_SCOPE.PROJECT_KIND,
234
+ ]),
235
+ KEY_MAX_LENGTH: 160,
236
+ },
237
+ ENTRY_CONTRIBUTION_FAMILIES: EXTENSION_ENTRY_CONTRIBUTION_FAMILIES,
238
+ SLOT_CONTRIBUTION_FAMILIES: EXTENSION_SLOT_CONTRIBUTION_FAMILIES,
239
+ INSTALL_SOURCE: EXTENSION_INSTALL_SOURCE,
240
+ INSTALL_SOURCES: Object.freeze(Object.values(EXTENSION_INSTALL_SOURCE)),
241
+ RUNTIME_REQUIREMENT_TYPE: EXTENSION_RUNTIME_REQUIREMENT_TYPE,
242
+ RUNTIME_REQUIREMENT_TYPES: Object.freeze(Object.values(EXTENSION_RUNTIME_REQUIREMENT_TYPE)),
243
+ NETWORK_ACCESS_MODE: EXTENSION_NETWORK_ACCESS_MODE,
244
+ NETWORK_ACCESS_MODES: Object.freeze(Object.values(EXTENSION_NETWORK_ACCESS_MODE)),
245
+ };
@@ -0,0 +1,66 @@
1
+ import type { ExtensionBrokerSdk } from './broker.js';
2
+ import type { JsonValue } from './json.js';
3
+ import { createOpenWaggleExtensionTheme, extensionThemeCssVariableEntries, type OpenWaggleExtensionTheme } from './theme.js';
4
+ import type { ExtensionContributionRegistryEntry } from './types.js';
5
+ import { createOpenWaggleExtensionUiStylesheet, OPENWAGGLE_EXTENSION_UI_ATTRIBUTES, OPENWAGGLE_EXTENSION_UI_CLASS_NAMES, openWaggleExtensionClassName } from './ui.js';
6
+ export interface OpenWaggleExtensionSurfaceContext {
7
+ readonly extension: {
8
+ readonly id: string;
9
+ readonly name: string;
10
+ readonly version: string;
11
+ };
12
+ readonly contribution: {
13
+ readonly id: string;
14
+ readonly title: string;
15
+ readonly family: string;
16
+ };
17
+ readonly surface: {
18
+ readonly family: string;
19
+ readonly execution: string;
20
+ readonly payload?: JsonValue;
21
+ };
22
+ readonly packagePath: string;
23
+ readonly projectPaths: readonly string[];
24
+ readonly theme: OpenWaggleExtensionTheme;
25
+ }
26
+ export interface OpenWaggleExtensionSurfaceSdk {
27
+ readonly sendAction: (actionId: string, payload?: JsonValue) => Promise<void>;
28
+ readonly respondInteraction: (value: JsonValue | null) => Promise<void>;
29
+ }
30
+ export type OpenWaggleExtensionSdk = ExtensionBrokerSdk & {
31
+ readonly surface: OpenWaggleExtensionSurfaceSdk;
32
+ };
33
+ export interface OpenWaggleExtensionSharedModules {
34
+ readonly sdk: {
35
+ readonly openWaggleVersion: string;
36
+ };
37
+ readonly theme: {
38
+ readonly current: OpenWaggleExtensionTheme;
39
+ readonly createTheme: typeof createOpenWaggleExtensionTheme;
40
+ readonly cssVariableEntries: typeof extensionThemeCssVariableEntries;
41
+ };
42
+ readonly ui: {
43
+ readonly classNames: typeof OPENWAGGLE_EXTENSION_UI_CLASS_NAMES;
44
+ readonly attributes: typeof OPENWAGGLE_EXTENSION_UI_ATTRIBUTES;
45
+ readonly className: typeof openWaggleExtensionClassName;
46
+ readonly createStylesheet: typeof createOpenWaggleExtensionUiStylesheet;
47
+ };
48
+ }
49
+ export interface OpenWaggleExtensionMountContext extends OpenWaggleExtensionSurfaceContext {
50
+ readonly root: HTMLElement;
51
+ readonly sdk: OpenWaggleExtensionSdk;
52
+ readonly modules: OpenWaggleExtensionSharedModules;
53
+ }
54
+ export type OpenWaggleExtensionMountCleanup = () => void;
55
+ export type OpenWaggleExtensionMountResult = undefined | OpenWaggleExtensionMountCleanup;
56
+ export interface OpenWaggleFederatedModule {
57
+ readonly mount: (context: OpenWaggleExtensionMountContext) => OpenWaggleExtensionMountResult | Promise<OpenWaggleExtensionMountResult>;
58
+ }
59
+ export interface CreateOpenWaggleExtensionSurfaceContextInput {
60
+ readonly entry: ExtensionContributionRegistryEntry;
61
+ readonly surfacePayload?: JsonValue;
62
+ readonly theme?: OpenWaggleExtensionTheme;
63
+ }
64
+ export declare function createNoopExtensionSurfaceSdk(): OpenWaggleExtensionSurfaceSdk;
65
+ export declare function createOpenWaggleExtensionSharedModules(theme?: OpenWaggleExtensionTheme): OpenWaggleExtensionSharedModules;
66
+ export declare function createOpenWaggleExtensionSurfaceContext(input: CreateOpenWaggleExtensionSurfaceContextInput): OpenWaggleExtensionSurfaceContext;
@@ -0,0 +1,49 @@
1
+ import { OPENWAGGLE_EXTENSION } from './constants.js';
2
+ import { createOpenWaggleExtensionTheme, extensionThemeCssVariableEntries, } from './theme.js';
3
+ import { createOpenWaggleExtensionUiStylesheet, OPENWAGGLE_EXTENSION_UI_ATTRIBUTES, OPENWAGGLE_EXTENSION_UI_CLASS_NAMES, openWaggleExtensionClassName, } from './ui.js';
4
+ export function createNoopExtensionSurfaceSdk() {
5
+ return {
6
+ sendAction: async () => undefined,
7
+ respondInteraction: async () => undefined,
8
+ };
9
+ }
10
+ export function createOpenWaggleExtensionSharedModules(theme = createOpenWaggleExtensionTheme()) {
11
+ return {
12
+ sdk: {
13
+ openWaggleVersion: OPENWAGGLE_EXTENSION.SDK_VERSION,
14
+ },
15
+ theme: {
16
+ current: theme,
17
+ createTheme: createOpenWaggleExtensionTheme,
18
+ cssVariableEntries: extensionThemeCssVariableEntries,
19
+ },
20
+ ui: {
21
+ classNames: OPENWAGGLE_EXTENSION_UI_CLASS_NAMES,
22
+ attributes: OPENWAGGLE_EXTENSION_UI_ATTRIBUTES,
23
+ className: openWaggleExtensionClassName,
24
+ createStylesheet: createOpenWaggleExtensionUiStylesheet,
25
+ },
26
+ };
27
+ }
28
+ export function createOpenWaggleExtensionSurfaceContext(input) {
29
+ return {
30
+ extension: {
31
+ id: input.entry.extensionId,
32
+ name: input.entry.extensionName,
33
+ version: input.entry.extensionVersion,
34
+ },
35
+ contribution: {
36
+ id: input.entry.contributionId,
37
+ title: input.entry.title,
38
+ family: input.entry.family,
39
+ },
40
+ surface: {
41
+ family: input.entry.family,
42
+ execution: input.entry.execution ?? '',
43
+ ...(input.surfacePayload !== undefined ? { payload: input.surfacePayload } : {}),
44
+ },
45
+ packagePath: input.entry.packagePath,
46
+ projectPaths: input.entry.projectPaths,
47
+ theme: input.theme ?? createOpenWaggleExtensionTheme(),
48
+ };
49
+ }
@@ -0,0 +1,21 @@
1
+ import type { OPENWAGGLE_EXTENSION } from './constants.js';
2
+ import type { ExtensionContributionRegistration as ManifestContributionRegistration, ExtensionContributionUnregistration as ManifestContributionUnregistration } from './manifest.js';
3
+ type ConstantValue<TObject> = TObject[keyof TObject];
4
+ export type ExtensionCapabilityScope = (typeof OPENWAGGLE_EXTENSION.CAPABILITY_SCOPES)[number];
5
+ export type ExtensionContributionFamily = ConstantValue<typeof OPENWAGGLE_EXTENSION.CONTRIBUTION_FAMILY>;
6
+ export type ExtensionContributionRuntime = ConstantValue<typeof OPENWAGGLE_EXTENSION.CONTRIBUTION_RUNTIME>;
7
+ export type ExtensionExecutionPlacement = ConstantValue<typeof OPENWAGGLE_EXTENSION.EXECUTION_PLACEMENT>;
8
+ export type ExtensionInstallSource = ConstantValue<typeof OPENWAGGLE_EXTENSION.INSTALL_SOURCE>;
9
+ export type ExtensionNetworkAccessMode = ConstantValue<typeof OPENWAGGLE_EXTENSION.NETWORK_ACCESS_MODE>;
10
+ export interface ExtensionContributionTargetView {
11
+ readonly projectPaths?: readonly string[];
12
+ readonly sessionIds?: readonly string[];
13
+ }
14
+ export interface ExtensionContributionMatchView {
15
+ readonly toolNames?: readonly string[];
16
+ readonly customMessageNames?: readonly string[];
17
+ readonly interactionKinds?: readonly string[];
18
+ }
19
+ export type ExtensionRuntimeRegisterContributionPayload = ManifestContributionRegistration;
20
+ export type ExtensionRuntimeUnregisterContributionPayload = ManifestContributionUnregistration;
21
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,58 @@
1
+ import type { OPENWAGGLE_EXTENSION_BROKER } from './constants.js';
2
+ type ConstantValue<TObject> = TObject[keyof TObject];
3
+ export type ExtensionBrokerCapability = ConstantValue<typeof OPENWAGGLE_EXTENSION_BROKER.CAPABILITY>;
4
+ export type ExtensionBrokerMethod = ConstantValue<typeof OPENWAGGLE_EXTENSION_BROKER.METHOD>;
5
+ export type ExtensionInvokeFailureCode = ConstantValue<typeof OPENWAGGLE_EXTENSION_BROKER.FAILURE_CODE>;
6
+ export type ExtensionInvokeOutcome = ConstantValue<typeof OPENWAGGLE_EXTENSION_BROKER.OUTCOME>;
7
+ export type ExtensionStateSelector = ConstantValue<typeof OPENWAGGLE_EXTENSION_BROKER.STATE_SELECTOR>;
8
+ export type ExtensionSettingsKey = ConstantValue<typeof OPENWAGGLE_EXTENSION_BROKER.SETTING_KEY>;
9
+ export type ExtensionInvokeScope = {
10
+ readonly kind: 'app';
11
+ } | {
12
+ readonly kind: 'project';
13
+ readonly projectPath: string;
14
+ } | {
15
+ readonly kind: 'session';
16
+ readonly projectPath: string;
17
+ readonly sessionId: string;
18
+ } | {
19
+ readonly kind: 'branch';
20
+ readonly projectPath: string;
21
+ readonly sessionId: string;
22
+ readonly branchId: string;
23
+ };
24
+ export interface ExtensionCapabilityAuditEntry {
25
+ readonly extensionId: string;
26
+ readonly contributionId: string;
27
+ readonly capability: string;
28
+ readonly method: string;
29
+ readonly scope: ExtensionInvokeScope;
30
+ readonly outcome: ExtensionInvokeOutcome;
31
+ readonly timestamp: number;
32
+ readonly failureCode?: ExtensionInvokeFailureCode;
33
+ }
34
+ export interface ExtensionInvokeInput {
35
+ readonly extensionId: string;
36
+ readonly contributionId: string;
37
+ readonly capability: string;
38
+ readonly method: string;
39
+ readonly scope: ExtensionInvokeScope;
40
+ readonly payload?: unknown;
41
+ }
42
+ export interface ExtensionInvokeError {
43
+ readonly code: ExtensionInvokeFailureCode;
44
+ readonly message: string;
45
+ readonly issues?: readonly string[];
46
+ }
47
+ export interface ExtensionInvokeSuccess<TValue = unknown> {
48
+ readonly ok: true;
49
+ readonly value: TValue;
50
+ readonly audit: ExtensionCapabilityAuditEntry;
51
+ }
52
+ export interface ExtensionInvokeFailure {
53
+ readonly ok: false;
54
+ readonly error: ExtensionInvokeError;
55
+ readonly audit?: ExtensionCapabilityAuditEntry;
56
+ }
57
+ export type ExtensionInvokeResult<TValue = unknown> = ExtensionInvokeSuccess<TValue> | ExtensionInvokeFailure;
58
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,3 @@
1
+ import type { ExtensionDocsDiscoverResult, ExtensionDocsResolveTopicResult } from './types.js';
2
+ export declare function isDocsDiscoverResult(value: unknown): value is ExtensionDocsDiscoverResult;
3
+ export declare function isDocsResolveTopicResult(value: unknown): value is ExtensionDocsResolveTopicResult;