@components-kit/open-workbook 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 (73) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +80 -0
  3. package/assets/backend/dist/addin-rpc-client.d.ts +17 -0
  4. package/assets/backend/dist/addin-rpc-client.d.ts.map +1 -0
  5. package/assets/backend/dist/addin-rpc-client.js +66 -0
  6. package/assets/backend/dist/addin-rpc-client.js.map +1 -0
  7. package/assets/backend/dist/addin-websocket-server.d.ts +13 -0
  8. package/assets/backend/dist/addin-websocket-server.d.ts.map +1 -0
  9. package/assets/backend/dist/addin-websocket-server.js +199 -0
  10. package/assets/backend/dist/addin-websocket-server.js.map +1 -0
  11. package/assets/backend/dist/file-bridge.d.ts +2 -0
  12. package/assets/backend/dist/file-bridge.d.ts.map +1 -0
  13. package/assets/backend/dist/file-bridge.js +15 -0
  14. package/assets/backend/dist/file-bridge.js.map +1 -0
  15. package/assets/backend/dist/index.d.ts +4 -0
  16. package/assets/backend/dist/index.d.ts.map +1 -0
  17. package/assets/backend/dist/index.js +17 -0
  18. package/assets/backend/dist/index.js.map +1 -0
  19. package/assets/backend/dist/native-file-bridge-server.d.ts +28 -0
  20. package/assets/backend/dist/native-file-bridge-server.d.ts.map +1 -0
  21. package/assets/backend/dist/native-file-bridge-server.js +496 -0
  22. package/assets/backend/dist/native-file-bridge-server.js.map +1 -0
  23. package/assets/backend/dist/native-file-bridge.d.ts +20 -0
  24. package/assets/backend/dist/native-file-bridge.d.ts.map +1 -0
  25. package/assets/backend/dist/native-file-bridge.js +140 -0
  26. package/assets/backend/dist/native-file-bridge.js.map +1 -0
  27. package/assets/backend/dist/runtime-service.d.ts +3167 -0
  28. package/assets/backend/dist/runtime-service.d.ts.map +1 -0
  29. package/assets/backend/dist/runtime-service.js +6003 -0
  30. package/assets/backend/dist/runtime-service.js.map +1 -0
  31. package/assets/backend/dist/session-registry.d.ts +20 -0
  32. package/assets/backend/dist/session-registry.d.ts.map +1 -0
  33. package/assets/backend/dist/session-registry.js +53 -0
  34. package/assets/backend/dist/session-registry.js.map +1 -0
  35. package/assets/backend/dist/state-store.d.ts +26 -0
  36. package/assets/backend/dist/state-store.d.ts.map +1 -0
  37. package/assets/backend/dist/state-store.js +44 -0
  38. package/assets/backend/dist/state-store.js.map +1 -0
  39. package/assets/excel-addin/dist/connection.d.ts +26 -0
  40. package/assets/excel-addin/dist/connection.d.ts.map +1 -0
  41. package/assets/excel-addin/dist/connection.js +320 -0
  42. package/assets/excel-addin/dist/connection.js.map +1 -0
  43. package/assets/excel-addin/dist/excel-executor.d.ts +225 -0
  44. package/assets/excel-addin/dist/excel-executor.d.ts.map +1 -0
  45. package/assets/excel-addin/dist/excel-executor.js +2487 -0
  46. package/assets/excel-addin/dist/excel-executor.js.map +1 -0
  47. package/assets/excel-addin/dist/taskpane.d.ts +2 -0
  48. package/assets/excel-addin/dist/taskpane.d.ts.map +1 -0
  49. package/assets/excel-addin/dist/taskpane.js +28 -0
  50. package/assets/excel-addin/dist/taskpane.js.map +1 -0
  51. package/assets/excel-addin/manifest.xml +93 -0
  52. package/assets/excel-addin/public/taskpane.css +47 -0
  53. package/assets/excel-addin/public/taskpane.html +35 -0
  54. package/assets/excel-addin/scripts/dev-server.mjs +128 -0
  55. package/assets/instructions/open-workbook-excel/SKILL.md +52 -0
  56. package/assets/instructions/open-workbook-excel/references/multi-agent.md +43 -0
  57. package/assets/instructions/open-workbook-excel/references/performance.md +41 -0
  58. package/assets/instructions/open-workbook-excel/references/reliability.md +76 -0
  59. package/assets/instructions/open-workbook-excel/references/tool-selection.md +82 -0
  60. package/assets/instructions/open-workbook-excel/references/workflows.md +93 -0
  61. package/assets/mcp-server/dist/catalog.d.ts +5 -0
  62. package/assets/mcp-server/dist/catalog.d.ts.map +1 -0
  63. package/assets/mcp-server/dist/catalog.js +8 -0
  64. package/assets/mcp-server/dist/catalog.js.map +1 -0
  65. package/assets/mcp-server/dist/index.d.ts +3 -0
  66. package/assets/mcp-server/dist/index.d.ts.map +1 -0
  67. package/assets/mcp-server/dist/index.js +3779 -0
  68. package/assets/mcp-server/dist/index.js.map +1 -0
  69. package/dist/index.d.ts +3 -0
  70. package/dist/index.d.ts.map +1 -0
  71. package/dist/index.js +721 -0
  72. package/dist/index.js.map +1 -0
  73. package/package.json +56 -0
@@ -0,0 +1,140 @@
1
+ export class NativeFileBridge {
2
+ url;
3
+ path;
4
+ timeoutMs;
5
+ fetchImpl;
6
+ constructor(options = {}) {
7
+ this.url = options.url ?? process.env.OPEN_WORKBOOK_FILE_BRIDGE_URL;
8
+ this.path = normalizeBridgePath(options.path ?? process.env.OPEN_WORKBOOK_FILE_BRIDGE_PATH ?? "/v1/workbook-file");
9
+ this.timeoutMs = options.timeoutMs ?? Number(process.env.OPEN_WORKBOOK_FILE_BRIDGE_TIMEOUT_MS ?? 30000);
10
+ this.fetchImpl = options.fetchImpl ?? globalThis.fetch;
11
+ }
12
+ getStatus() {
13
+ if (!this.url) {
14
+ return {
15
+ available: false,
16
+ reason: "not_configured"
17
+ };
18
+ }
19
+ return {
20
+ available: true,
21
+ url: this.url,
22
+ path: this.path,
23
+ reason: "configured"
24
+ };
25
+ }
26
+ async probeStatus() {
27
+ const status = this.getStatus();
28
+ if (!this.url || !this.fetchImpl) {
29
+ return {
30
+ ...status,
31
+ reachable: false,
32
+ checkedAt: new Date().toISOString(),
33
+ error: "Native file bridge is not configured."
34
+ };
35
+ }
36
+ const controller = new AbortController();
37
+ const timeout = setTimeout(() => controller.abort(), this.timeoutMs);
38
+ try {
39
+ const response = await this.fetchImpl(this.statusUrl(), {
40
+ method: "GET",
41
+ signal: controller.signal
42
+ });
43
+ const payload = await response.json().catch(() => ({}));
44
+ return {
45
+ ...status,
46
+ reachable: response.ok && payload.ok === true,
47
+ checkedAt: new Date().toISOString(),
48
+ statusCode: response.status,
49
+ ...(payload.bridge !== undefined ? { bridge: payload.bridge } : {}),
50
+ ...(payload.route !== undefined ? { route: payload.route } : {}),
51
+ ...(payload.adapter !== undefined ? { adapter: payload.adapter } : {}),
52
+ ...(payload.error !== undefined ? { error: payload.error } : {})
53
+ };
54
+ }
55
+ catch (error) {
56
+ return {
57
+ ...status,
58
+ reachable: false,
59
+ checkedAt: new Date().toISOString(),
60
+ error: error instanceof Error ? error.message : String(error)
61
+ };
62
+ }
63
+ finally {
64
+ clearTimeout(timeout);
65
+ }
66
+ }
67
+ async request(input) {
68
+ if (!this.url || !this.fetchImpl) {
69
+ return {
70
+ ok: false,
71
+ operation: input.operation,
72
+ workbookId: input.workbookId,
73
+ ...(input.targetPath !== undefined ? { targetPath: input.targetPath } : {}),
74
+ ...(input.backupPath !== undefined ? { backupPath: input.backupPath } : {}),
75
+ ...(input.restoreTargetPath !== undefined ? { restoreTargetPath: input.restoreTargetPath } : {}),
76
+ ...(input.restoreMode !== undefined ? { restoreMode: input.restoreMode } : {}),
77
+ ...(input.sourceBackupId !== undefined ? { sourceBackupId: input.sourceBackupId } : {}),
78
+ error: "Native file bridge is not configured."
79
+ };
80
+ }
81
+ const controller = new AbortController();
82
+ const timeout = setTimeout(() => controller.abort(), this.timeoutMs);
83
+ try {
84
+ const response = await this.fetchImpl(this.operationUrl(), {
85
+ method: "POST",
86
+ headers: { "content-type": "application/json" },
87
+ body: JSON.stringify(input),
88
+ signal: controller.signal
89
+ });
90
+ const payload = await response.json().catch(() => ({}));
91
+ const result = {
92
+ ok: response.ok && payload.ok === true,
93
+ operation: input.operation,
94
+ workbookId: input.workbookId,
95
+ ...(input.targetPath !== undefined ? { targetPath: input.targetPath } : {}),
96
+ ...(input.backupPath !== undefined ? { backupPath: input.backupPath } : {}),
97
+ ...(input.restoreTargetPath !== undefined ? { restoreTargetPath: input.restoreTargetPath } : {}),
98
+ ...(input.restoreMode !== undefined ? { restoreMode: input.restoreMode } : {}),
99
+ ...(input.sourceBackupId !== undefined ? { sourceBackupId: input.sourceBackupId } : {}),
100
+ ...payload
101
+ };
102
+ const error = response.ok ? payload.error : payload.error ?? `Native file bridge returned HTTP ${response.status}.`;
103
+ if (error !== undefined) {
104
+ result.error = error;
105
+ }
106
+ return result;
107
+ }
108
+ catch (error) {
109
+ return {
110
+ ok: false,
111
+ operation: input.operation,
112
+ workbookId: input.workbookId,
113
+ ...(input.targetPath !== undefined ? { targetPath: input.targetPath } : {}),
114
+ ...(input.backupPath !== undefined ? { backupPath: input.backupPath } : {}),
115
+ ...(input.restoreTargetPath !== undefined ? { restoreTargetPath: input.restoreTargetPath } : {}),
116
+ ...(input.restoreMode !== undefined ? { restoreMode: input.restoreMode } : {}),
117
+ ...(input.sourceBackupId !== undefined ? { sourceBackupId: input.sourceBackupId } : {}),
118
+ error: error instanceof Error ? error.message : String(error)
119
+ };
120
+ }
121
+ finally {
122
+ clearTimeout(timeout);
123
+ }
124
+ }
125
+ operationUrl() {
126
+ const base = this.url ?? "";
127
+ return base.endsWith("/") ? `${base.slice(0, -1)}${this.path}` : `${base}${this.path}`;
128
+ }
129
+ statusUrl() {
130
+ const base = this.url ?? "";
131
+ return base.endsWith("/") ? `${base.slice(0, -1)}/status` : `${base}/status`;
132
+ }
133
+ }
134
+ function normalizeBridgePath(path) {
135
+ if (!path) {
136
+ return "/v1/workbook-file";
137
+ }
138
+ return path.startsWith("/") ? path : `/${path}`;
139
+ }
140
+ //# sourceMappingURL=native-file-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-file-bridge.js","sourceRoot":"","sources":["../src/native-file-bridge.ts"],"names":[],"mappings":"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"}