@peers-app/peers-sdk 0.16.5 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/contracts/__tests__/builder.test.d.ts +1 -0
- package/dist/contracts/__tests__/builder.test.js +426 -0
- package/dist/contracts/__tests__/extract.test.d.ts +1 -0
- package/dist/contracts/__tests__/extract.test.js +145 -0
- package/dist/contracts/__tests__/integration.test.d.ts +1 -0
- package/dist/contracts/__tests__/integration.test.js +348 -0
- package/dist/contracts/__tests__/registry.test.d.ts +1 -0
- package/dist/contracts/__tests__/registry.test.js +324 -0
- package/dist/contracts/__tests__/validate.test.d.ts +1 -0
- package/dist/contracts/__tests__/validate.test.js +699 -0
- package/dist/contracts/builder.d.ts +102 -0
- package/dist/contracts/builder.js +216 -0
- package/dist/contracts/contract-providers.table.d.ts +40 -0
- package/dist/contracts/contract-providers.table.js +41 -0
- package/dist/contracts/contracts.table.d.ts +44 -0
- package/dist/contracts/contracts.table.js +44 -0
- package/dist/contracts/extract.d.ts +46 -0
- package/dist/contracts/extract.js +51 -0
- package/dist/contracts/index.d.ts +9 -0
- package/dist/contracts/index.js +31 -0
- package/dist/contracts/persistent-registry.d.ts +32 -0
- package/dist/contracts/persistent-registry.js +138 -0
- package/dist/contracts/registry.d.ts +58 -0
- package/dist/contracts/registry.js +155 -0
- package/dist/contracts/types.d.ts +108 -0
- package/dist/contracts/types.js +10 -0
- package/dist/contracts/validate.d.ts +24 -0
- package/dist/contracts/validate.js +274 -0
- package/dist/data/assistants.d.ts +5 -0
- package/dist/data/assistants.js +1 -0
- package/dist/data/package-versions.d.ts +2 -2
- package/dist/data/persistent-vars.d.ts +3 -0
- package/dist/data/persistent-vars.js +3 -0
- package/dist/data/tools.d.ts +5 -2
- package/dist/data/tools.js +1 -1
- package/dist/data/workflows.d.ts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/package-loader/contract-package-loader.d.ts +23 -0
- package/dist/package-loader/contract-package-loader.js +65 -0
- package/dist/package-loader/index.d.ts +1 -0
- package/dist/package-loader/index.js +1 -0
- package/dist/package-loader/package-loader.d.ts +11 -0
- package/dist/package-loader/package-loader.js +59 -8
- package/dist/rpc-types.d.ts +7 -0
- package/dist/rpc-types.js +4 -0
- package/dist/types/workflow.d.ts +3 -0
- package/dist/types/workflow.js +1 -0
- package/package.json +1 -1
|
@@ -7,15 +7,22 @@ const package_versions_1 = require("../data/package-versions");
|
|
|
7
7
|
const packages_1 = require("../data/packages");
|
|
8
8
|
const tools_1 = require("../data/tools");
|
|
9
9
|
const tools_2 = require("../tools");
|
|
10
|
+
const contract_package_loader_1 = require("./contract-package-loader");
|
|
10
11
|
class PackageLoader {
|
|
11
12
|
dataContext;
|
|
12
13
|
static PeersSDK;
|
|
13
14
|
static Zod;
|
|
14
15
|
packageInstances = {};
|
|
16
|
+
/** Packages that were installed via the contract-based path (tools/assistants/tables already saved with packageId). */
|
|
17
|
+
contractInstalledPackages = new Set();
|
|
15
18
|
require = undefined;
|
|
16
19
|
constructor(dataContext) {
|
|
17
20
|
this.dataContext = dataContext;
|
|
18
21
|
}
|
|
22
|
+
/** Returns true if a package was installed via the contract-based definePackage() path. */
|
|
23
|
+
isContractInstalled(packageId) {
|
|
24
|
+
return this.contractInstalledPackages.has(packageId);
|
|
25
|
+
}
|
|
19
26
|
async loadAllPackages(opts) {
|
|
20
27
|
const packages = await (0, packages_1.Packages)(this.dataContext).list();
|
|
21
28
|
await Promise.all(packages.filter((pkg) => !pkg.disabled).map((pkg) => this.loadPackage(pkg, opts)));
|
|
@@ -91,6 +98,36 @@ class PackageLoader {
|
|
|
91
98
|
return;
|
|
92
99
|
}
|
|
93
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Post-correction: if the package definition carries version/versionTag,
|
|
103
|
+
* update the active IPackageVersion record to match. This fixes cases where
|
|
104
|
+
* the PV record was created with stale or placeholder values (e.g. "0.0.1")
|
|
105
|
+
* before the bundle was evaluated.
|
|
106
|
+
*/
|
|
107
|
+
correctPackageVersion(pkg, def) {
|
|
108
|
+
if (!pkg.activePackageVersionId)
|
|
109
|
+
return;
|
|
110
|
+
if (!def.version && !def.versionTag)
|
|
111
|
+
return;
|
|
112
|
+
const pvTable = (0, package_versions_1.PackageVersions)(this.dataContext);
|
|
113
|
+
pvTable.get(pkg.activePackageVersionId).then((pv) => {
|
|
114
|
+
if (!pv)
|
|
115
|
+
return;
|
|
116
|
+
let needsUpdate = false;
|
|
117
|
+
const updated = { ...pv };
|
|
118
|
+
if (def.version && pv.version !== def.version) {
|
|
119
|
+
updated.version = def.version;
|
|
120
|
+
needsUpdate = true;
|
|
121
|
+
}
|
|
122
|
+
if (def.versionTag && pv.versionTag !== def.versionTag) {
|
|
123
|
+
updated.versionTag = def.versionTag;
|
|
124
|
+
needsUpdate = true;
|
|
125
|
+
}
|
|
126
|
+
if (needsUpdate) {
|
|
127
|
+
pvTable.save(updated);
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
}
|
|
94
131
|
_evaluateBundle(pkg, bundleCode) {
|
|
95
132
|
// Node.js built-in modules that do not exist in React Native (and would cause
|
|
96
133
|
// a fatal native error if passed through to RN's require). We block them here
|
|
@@ -156,18 +193,32 @@ class PackageLoader {
|
|
|
156
193
|
const bundleFunction = new Function("module", "exports", "require", bundleCode);
|
|
157
194
|
bundleFunction(module, moduleExports, customRequire);
|
|
158
195
|
const bundleExports = module.exports;
|
|
196
|
+
// Check for contract-based package definition (new path)
|
|
197
|
+
const packageDefinition = (0, contract_package_loader_1.extractPackageDefinition)(bundleExports);
|
|
198
|
+
if (packageDefinition) {
|
|
199
|
+
if (packageDefinition.packageId !== pkg.packageId) {
|
|
200
|
+
console.warn(`[PackageLoader] packageId mismatch: definition has "${packageDefinition.packageId}" but DB record has "${pkg.packageId}"`);
|
|
201
|
+
}
|
|
202
|
+
(0, contract_package_loader_1.installContractPackage)(this.dataContext, packageDefinition);
|
|
203
|
+
this.contractInstalledPackages.add(packageDefinition.packageId);
|
|
204
|
+
this.correctPackageVersion(pkg, packageDefinition);
|
|
205
|
+
}
|
|
206
|
+
// Legacy path: extract IPeersPackage for backward compat
|
|
159
207
|
const packageInstance = bundleExports?.exports || bundleExports?.package || bundleExports?.default || bundleExports;
|
|
160
208
|
this.packageInstances[pkg.packageId] = packageInstance;
|
|
161
209
|
if (packageInstance && typeof packageInstance === "object") {
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
210
|
+
// Skip legacy tool/table registration if the contract path already handled it
|
|
211
|
+
if (!packageDefinition) {
|
|
212
|
+
packageInstance.toolInstances?.forEach((toolInstance) => {
|
|
213
|
+
(0, tools_2.registerTool)(toolInstance);
|
|
214
|
+
(0, tools_1.Tools)(this.dataContext).save(toolInstance.tool);
|
|
215
|
+
});
|
|
216
|
+
packageInstance.tableDefinitions?.forEach((tableDefinition) => {
|
|
217
|
+
this.dataContext.tableContainer.registerTableDefinition(tableDefinition, {
|
|
218
|
+
overwrite: true,
|
|
219
|
+
});
|
|
169
220
|
});
|
|
170
|
-
}
|
|
221
|
+
}
|
|
171
222
|
return packageInstance;
|
|
172
223
|
}
|
|
173
224
|
return;
|
package/dist/rpc-types.d.ts
CHANGED
|
@@ -61,6 +61,13 @@ export declare const rpcServerCalls: {
|
|
|
61
61
|
/** Clear change tracking and rebuild from current rows for the default data context (same as Data Explorer). */
|
|
62
62
|
resetChangeTracking: () => Promise<void>;
|
|
63
63
|
deleteLocalDatabase: () => Promise<void>;
|
|
64
|
+
/** Returns info about the pre-migration data directory, or `null` if already cleaned up. */
|
|
65
|
+
getOldDataDirInfo: () => Promise<{
|
|
66
|
+
path: string;
|
|
67
|
+
sizeMB: number;
|
|
68
|
+
} | null>;
|
|
69
|
+
/** Deletes the pre-migration data directory after the user confirms. */
|
|
70
|
+
cleanupOldDataDir: () => Promise<void>;
|
|
64
71
|
importGroupShare: (groupShareJson: string) => Promise<string>;
|
|
65
72
|
registerWithPeersServices: () => Promise<string>;
|
|
66
73
|
appQuit: () => Promise<void>;
|
package/dist/rpc-types.js
CHANGED
|
@@ -34,6 +34,10 @@ exports.rpcServerCalls = {
|
|
|
34
34
|
/** Clear change tracking and rebuild from current rows for the default data context (same as Data Explorer). */
|
|
35
35
|
resetChangeTracking: rpcStub("resetChangeTracking"),
|
|
36
36
|
deleteLocalDatabase: rpcStub("deleteLocalDatabase"),
|
|
37
|
+
/** Returns info about the pre-migration data directory, or `null` if already cleaned up. */
|
|
38
|
+
getOldDataDirInfo: rpcStub("getOldDataDirInfo"),
|
|
39
|
+
/** Deletes the pre-migration data directory after the user confirms. */
|
|
40
|
+
cleanupOldDataDir: rpcStub("cleanupOldDataDir"),
|
|
37
41
|
importGroupShare: rpcStub("importGroupShare"),
|
|
38
42
|
registerWithPeersServices: rpcStub("registerWithPeersServices"),
|
|
39
43
|
// App lifecycle commands (for CLI control)
|
package/dist/types/workflow.d.ts
CHANGED
|
@@ -40,6 +40,7 @@ export declare const workflowSchema: z.ZodObject<{
|
|
|
40
40
|
createdBy: z.ZodEffects<z.ZodString, string, string>;
|
|
41
41
|
createdAt: z.ZodDefault<z.ZodDate>;
|
|
42
42
|
updatedAt: z.ZodDefault<z.ZodDate>;
|
|
43
|
+
packageId: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
|
|
43
44
|
}, "strip", z.ZodTypeAny, {
|
|
44
45
|
name: string;
|
|
45
46
|
description: string;
|
|
@@ -54,12 +55,14 @@ export declare const workflowSchema: z.ZodObject<{
|
|
|
54
55
|
subWorkflowId?: string | undefined;
|
|
55
56
|
}[];
|
|
56
57
|
updatedAt: Date;
|
|
58
|
+
packageId?: string | undefined;
|
|
57
59
|
}, {
|
|
58
60
|
name: string;
|
|
59
61
|
description: string;
|
|
60
62
|
createdBy: string;
|
|
61
63
|
workflowId: string;
|
|
62
64
|
defaultAssistantId: string;
|
|
65
|
+
packageId?: string | undefined;
|
|
63
66
|
createdAt?: Date | undefined;
|
|
64
67
|
instructions?: {
|
|
65
68
|
markdown?: string | undefined;
|
package/dist/types/workflow.js
CHANGED