@skaile/workspaces 0.27.0 → 0.28.1
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/CHANGELOG.md +17 -0
- package/dist/{asset-feeds-DGZO27M7.js → asset-feeds-2V7LZIG7.js} +4 -4
- package/dist/{asset-feeds-DGZO27M7.js.map → asset-feeds-2V7LZIG7.js.map} +1 -1
- package/dist/asset-manager/index.js +1 -1
- package/dist/{chunk-MZDXEFXF.js → chunk-BSVLAHHH.js} +14 -6
- package/dist/chunk-BSVLAHHH.js.map +1 -0
- package/dist/{chunk-3ZER5DST.js → chunk-BZ2JU7IP.js} +3 -3
- package/dist/{chunk-3ZER5DST.js.map → chunk-BZ2JU7IP.js.map} +1 -1
- package/dist/{chunk-BUL5H6J7.js → chunk-FBVUGRTU.js} +2 -2
- package/dist/{chunk-BUL5H6J7.js.map → chunk-FBVUGRTU.js.map} +1 -1
- package/dist/{chunk-WRRYESHC.js → chunk-MIH45XPY.js} +99 -65
- package/dist/chunk-MIH45XPY.js.map +1 -0
- package/dist/{chunk-A4ASAIKK.js → chunk-U5L6F5NZ.js} +2 -2
- package/dist/{chunk-A4ASAIKK.js.map → chunk-U5L6F5NZ.js.map} +1 -1
- package/dist/cli/index.js +18 -24
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
- package/dist/{ensure-sources-KQQEUDKM.js → ensure-sources-BNSRO5G7.js} +3 -3
- package/dist/{ensure-sources-KQQEUDKM.js.map → ensure-sources-BNSRO5G7.js.map} +1 -1
- package/dist/factory-assets/connectors/flow/run-flow.js +1 -1
- package/dist/library/index.js +1 -1
- package/dist/library/src/index.d.ts +2 -2
- package/dist/library/src/index.d.ts.map +1 -1
- package/dist/library/src/library.d.ts +20 -20
- package/dist/library/src/library.d.ts.map +1 -1
- package/dist/library/src/local/db.d.ts.map +1 -1
- package/dist/library/src/local/library.d.ts +6 -6
- package/dist/library/src/local/library.d.ts.map +1 -1
- package/dist/library/src/local/local-catalog-source.d.ts +1 -1
- package/dist/library/src/local/schema.d.ts +9 -9
- package/dist/library/src/local/schema.d.ts.map +1 -1
- package/dist/library/src/preset/apply.d.ts +9 -9
- package/dist/library/src/preset/apply.d.ts.map +1 -1
- package/dist/library/src/preset/resolve-item.d.ts +1 -1
- package/dist/library/src/workspace-config.d.ts +11 -8
- package/dist/library/src/workspace-config.d.ts.map +1 -1
- package/dist/{open-library-I7YTADMD.js → open-library-3VJY74LQ.js} +4 -4
- package/dist/{open-library-I7YTADMD.js.map → open-library-3VJY74LQ.js.map} +1 -1
- package/dist/runner/index.js +1 -1
- package/dist/sdk/asset-manager.js +1 -1
- package/dist/sdk/index.js +1 -1
- package/dist/sdk/runner.js +1 -1
- package/dist/tui/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-MZDXEFXF.js.map +0 -1
- package/dist/chunk-WRRYESHC.js.map +0 -1
|
@@ -50,25 +50,25 @@ var InstanceNotFoundError = class extends LibraryError {
|
|
|
50
50
|
this.name = "InstanceNotFoundError";
|
|
51
51
|
}
|
|
52
52
|
};
|
|
53
|
-
var
|
|
53
|
+
var AssignmentNotFoundError = class extends LibraryError {
|
|
54
54
|
constructor(id) {
|
|
55
|
-
super(`
|
|
56
|
-
this.name = "
|
|
55
|
+
super(`Assignment not found: ${id}`, "ASSIGNMENT_NOT_FOUND");
|
|
56
|
+
this.name = "AssignmentNotFoundError";
|
|
57
57
|
}
|
|
58
58
|
};
|
|
59
|
-
var
|
|
59
|
+
var DuplicateAssignmentError = class extends LibraryError {
|
|
60
60
|
constructor(workspaceId, instanceId) {
|
|
61
61
|
super(
|
|
62
|
-
`Workspace "${workspaceId}" already
|
|
63
|
-
"
|
|
62
|
+
`Workspace "${workspaceId}" already has instance "${instanceId}" assigned`,
|
|
63
|
+
"DUPLICATE_ASSIGNMENT"
|
|
64
64
|
);
|
|
65
|
-
this.name = "
|
|
65
|
+
this.name = "DuplicateAssignmentError";
|
|
66
66
|
}
|
|
67
67
|
};
|
|
68
68
|
var InstanceHasConsumersError = class extends LibraryError {
|
|
69
69
|
constructor(instanceId, count) {
|
|
70
70
|
super(
|
|
71
|
-
`Instance "${instanceId}" has ${count} active
|
|
71
|
+
`Instance "${instanceId}" has ${count} active assignment(s). Use { cascade: true } to force delete.`,
|
|
72
72
|
"INSTANCE_HAS_CONSUMERS"
|
|
73
73
|
);
|
|
74
74
|
this.name = "InstanceHasConsumersError";
|
|
@@ -99,7 +99,7 @@ var CatalogConfigSchema = z2.object({
|
|
|
99
99
|
var LibraryConfigSchema = z2.object({
|
|
100
100
|
/** Library storage directory. Default: ~/.skaile/libraries */
|
|
101
101
|
dir: z2.string().optional(),
|
|
102
|
-
/** Default pin policy for new instances/
|
|
102
|
+
/** Default pin policy for new instances/assignments. */
|
|
103
103
|
pin_policy: z2.enum(PIN_POLICIES).optional()
|
|
104
104
|
});
|
|
105
105
|
var SkaileConfigSchema = z2.object({
|
|
@@ -198,9 +198,9 @@ function saveConfig(filePath, config) {
|
|
|
198
198
|
var schema_exports = {};
|
|
199
199
|
__export(schema_exports, {
|
|
200
200
|
assetDefinitions: () => assetDefinitions,
|
|
201
|
+
assignments: () => assignments,
|
|
201
202
|
instances: () => instances,
|
|
202
|
-
libraries: () => libraries
|
|
203
|
-
subscriptions: () => subscriptions
|
|
203
|
+
libraries: () => libraries
|
|
204
204
|
});
|
|
205
205
|
var libraries = sqliteTable("libraries", {
|
|
206
206
|
/** UUID primary key. */
|
|
@@ -256,12 +256,12 @@ var instances = sqliteTable("instances", {
|
|
|
256
256
|
createdBy: text("created_by"),
|
|
257
257
|
sourceCommitSha: text("source_commit_sha")
|
|
258
258
|
});
|
|
259
|
-
var
|
|
259
|
+
var assignments = sqliteTable("assignments", {
|
|
260
260
|
id: text("id").primaryKey(),
|
|
261
261
|
workspaceId: text("workspace_id").notNull(),
|
|
262
262
|
instanceId: text("instance_id").notNull(),
|
|
263
263
|
pinPolicy: text("pin_policy").notNull(),
|
|
264
|
-
|
|
264
|
+
assignedAt: text("assigned_at").notNull()
|
|
265
265
|
});
|
|
266
266
|
var SKAILE_HOME_ENV = "SKAILE_HOME";
|
|
267
267
|
function getSidecarRoot() {
|
|
@@ -417,16 +417,16 @@ CREATE TABLE IF NOT EXISTS instances (
|
|
|
417
417
|
);
|
|
418
418
|
CREATE INDEX IF NOT EXISTS idx_instances_def_ref ON instances(def_ref);
|
|
419
419
|
|
|
420
|
-
CREATE TABLE IF NOT EXISTS
|
|
420
|
+
CREATE TABLE IF NOT EXISTS assignments (
|
|
421
421
|
id TEXT PRIMARY KEY,
|
|
422
422
|
workspace_id TEXT NOT NULL,
|
|
423
423
|
instance_id TEXT NOT NULL REFERENCES instances(id) ON DELETE CASCADE,
|
|
424
424
|
pin_policy TEXT NOT NULL,
|
|
425
|
-
|
|
425
|
+
assigned_at TEXT NOT NULL
|
|
426
426
|
);
|
|
427
|
-
CREATE UNIQUE INDEX IF NOT EXISTS
|
|
428
|
-
ON
|
|
429
|
-
CREATE INDEX IF NOT EXISTS
|
|
427
|
+
CREATE UNIQUE INDEX IF NOT EXISTS idx_assignments_ws_instance
|
|
428
|
+
ON assignments(workspace_id, instance_id);
|
|
429
|
+
CREATE INDEX IF NOT EXISTS idx_assignments_instance_id ON assignments(instance_id);
|
|
430
430
|
`;
|
|
431
431
|
async function legacySourcesPresent(client) {
|
|
432
432
|
const rs = await client.execute(
|
|
@@ -506,6 +506,26 @@ async function runLibrariesMigration(client) {
|
|
|
506
506
|
stmts.push({ sql: `DROP TABLE sources;` });
|
|
507
507
|
await client.batch(stmts);
|
|
508
508
|
}
|
|
509
|
+
async function legacySubscriptionsPresent(client) {
|
|
510
|
+
const rs = await client.execute(
|
|
511
|
+
"SELECT name FROM sqlite_master WHERE type='table' AND name='subscriptions'"
|
|
512
|
+
);
|
|
513
|
+
return rs.rows.length > 0;
|
|
514
|
+
}
|
|
515
|
+
async function assignmentsPresent(client) {
|
|
516
|
+
const rs = await client.execute(
|
|
517
|
+
"SELECT name FROM sqlite_master WHERE type='table' AND name='assignments'"
|
|
518
|
+
);
|
|
519
|
+
return rs.rows.length > 0;
|
|
520
|
+
}
|
|
521
|
+
async function runAssignmentsMigration(client) {
|
|
522
|
+
await client.batch([
|
|
523
|
+
{ sql: "ALTER TABLE subscriptions RENAME TO assignments;" },
|
|
524
|
+
{ sql: "ALTER TABLE assignments RENAME COLUMN subscribed_at TO assigned_at;" },
|
|
525
|
+
{ sql: "DROP INDEX IF EXISTS idx_subs_ws_instance;" },
|
|
526
|
+
{ sql: "DROP INDEX IF EXISTS idx_subs_instance_id;" }
|
|
527
|
+
]);
|
|
528
|
+
}
|
|
509
529
|
function assertNoLegacyLibDb(newDbPath) {
|
|
510
530
|
if (fs11.existsSync(newDbPath)) return;
|
|
511
531
|
const parent = path4.dirname(newDbPath);
|
|
@@ -545,6 +565,9 @@ async function createLibraryDb(dbPath) {
|
|
|
545
565
|
if (await legacySourcesPresent(client) && !await librariesPresent(client)) {
|
|
546
566
|
await runLibrariesMigration(client);
|
|
547
567
|
}
|
|
568
|
+
if (await legacySubscriptionsPresent(client) && !await assignmentsPresent(client)) {
|
|
569
|
+
await runAssignmentsMigration(client);
|
|
570
|
+
}
|
|
548
571
|
await client.executeMultiple(DDL);
|
|
549
572
|
if (await librariesPresent(client)) {
|
|
550
573
|
const storeRows = await client.execute({
|
|
@@ -632,13 +655,13 @@ function rowToInstance(row) {
|
|
|
632
655
|
sourceCommitSha: row.sourceCommitSha ?? void 0
|
|
633
656
|
};
|
|
634
657
|
}
|
|
635
|
-
function
|
|
658
|
+
function rowToAssignment(row) {
|
|
636
659
|
return {
|
|
637
660
|
id: row.id,
|
|
638
661
|
workspaceId: row.workspaceId,
|
|
639
662
|
instanceId: row.instanceId,
|
|
640
663
|
pinPolicy: row.pinPolicy,
|
|
641
|
-
|
|
664
|
+
assignedAt: new Date(row.assignedAt)
|
|
642
665
|
};
|
|
643
666
|
}
|
|
644
667
|
var LocalIndex = class {
|
|
@@ -960,42 +983,42 @@ var LocalIndex = class {
|
|
|
960
983
|
const db = await this.ensureDb();
|
|
961
984
|
const existing = await db.select().from(instances).where(eq(instances.id, id)).get();
|
|
962
985
|
if (!existing) throw new InstanceNotFoundError(id);
|
|
963
|
-
const consumers = await db.select().from(
|
|
986
|
+
const consumers = await db.select().from(assignments).where(eq(assignments.instanceId, id)).all();
|
|
964
987
|
if (consumers.length > 0 && !opts?.cascade) {
|
|
965
988
|
throw new InstanceHasConsumersError(id, consumers.length);
|
|
966
989
|
}
|
|
967
990
|
await db.delete(instances).where(eq(instances.id, id)).run();
|
|
968
991
|
}
|
|
969
|
-
// --
|
|
970
|
-
async
|
|
992
|
+
// -- Assignments ---------------------------------------------------------
|
|
993
|
+
async assign(workspaceId, instanceId, pin) {
|
|
971
994
|
const db = await this.ensureDb();
|
|
972
995
|
const instance = await db.select().from(instances).where(eq(instances.id, instanceId)).get();
|
|
973
996
|
if (!instance) throw new InstanceNotFoundError(instanceId);
|
|
974
|
-
const existing = await db.select().from(
|
|
997
|
+
const existing = await db.select().from(assignments).where(
|
|
975
998
|
and(
|
|
976
|
-
eq(
|
|
977
|
-
eq(
|
|
999
|
+
eq(assignments.workspaceId, workspaceId),
|
|
1000
|
+
eq(assignments.instanceId, instanceId)
|
|
978
1001
|
)
|
|
979
1002
|
).get();
|
|
980
|
-
if (existing) throw new
|
|
1003
|
+
if (existing) throw new DuplicateAssignmentError(workspaceId, instanceId);
|
|
981
1004
|
const id = crypto.randomUUID();
|
|
982
1005
|
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
983
|
-
await db.insert(
|
|
984
|
-
return { id, workspaceId, instanceId, pinPolicy: pin,
|
|
1006
|
+
await db.insert(assignments).values({ id, workspaceId, instanceId, pinPolicy: pin, assignedAt: now }).run();
|
|
1007
|
+
return { id, workspaceId, instanceId, pinPolicy: pin, assignedAt: new Date(now) };
|
|
985
1008
|
}
|
|
986
|
-
async
|
|
1009
|
+
async unassign(assignmentId) {
|
|
987
1010
|
const db = await this.ensureDb();
|
|
988
|
-
const existing = await db.select().from(
|
|
989
|
-
if (!existing) throw new
|
|
990
|
-
await db.delete(
|
|
1011
|
+
const existing = await db.select().from(assignments).where(eq(assignments.id, assignmentId)).get();
|
|
1012
|
+
if (!existing) throw new AssignmentNotFoundError(assignmentId);
|
|
1013
|
+
await db.delete(assignments).where(eq(assignments.id, assignmentId)).run();
|
|
991
1014
|
}
|
|
992
|
-
async
|
|
1015
|
+
async listAssignments(workspaceId) {
|
|
993
1016
|
const db = await this.ensureDb();
|
|
994
|
-
return (await db.select().from(
|
|
1017
|
+
return (await db.select().from(assignments).where(eq(assignments.workspaceId, workspaceId)).all()).map(rowToAssignment);
|
|
995
1018
|
}
|
|
996
1019
|
async getConsumptionGraph(instanceId) {
|
|
997
1020
|
const db = await this.ensureDb();
|
|
998
|
-
return (await db.select().from(
|
|
1021
|
+
return (await db.select().from(assignments).where(eq(assignments.instanceId, instanceId)).all()).map(rowToAssignment);
|
|
999
1022
|
}
|
|
1000
1023
|
};
|
|
1001
1024
|
|
|
@@ -1507,8 +1530,8 @@ var WorkspaceConfigV2Schema = z2.object({
|
|
|
1507
1530
|
library: LibrarySectionSchema.optional(),
|
|
1508
1531
|
presets_applied: z2.array(PresetAppliedSchema).optional()
|
|
1509
1532
|
});
|
|
1510
|
-
var
|
|
1511
|
-
|
|
1533
|
+
var LockAssignmentSchema = z2.object({
|
|
1534
|
+
assignment_id: z2.string().uuid(),
|
|
1512
1535
|
instance_id: z2.string().uuid(),
|
|
1513
1536
|
def_ref: z2.string(),
|
|
1514
1537
|
resolved_version: z2.string(),
|
|
@@ -1527,7 +1550,7 @@ var PresetExpandedSchema = z2.object({
|
|
|
1527
1550
|
var LockFileSchema = z2.object({
|
|
1528
1551
|
version: z2.literal(2),
|
|
1529
1552
|
generated_at: z2.string(),
|
|
1530
|
-
|
|
1553
|
+
assignments: z2.array(LockAssignmentSchema).default([]),
|
|
1531
1554
|
requires_graph: z2.array(RequiresEdgeSchema).default([]),
|
|
1532
1555
|
presets_expanded: z2.array(PresetExpandedSchema).default([])
|
|
1533
1556
|
});
|
|
@@ -1564,6 +1587,17 @@ function loadLockFile(dir) {
|
|
|
1564
1587
|
if (!fs11.existsSync(filePath)) return null;
|
|
1565
1588
|
const content = fs11.readFileSync(filePath, "utf-8");
|
|
1566
1589
|
const raw = parse(content);
|
|
1590
|
+
if (raw !== null && !("assignments" in raw) && "subscriptions" in raw) {
|
|
1591
|
+
const legacySubs = raw["subscriptions"];
|
|
1592
|
+
raw["assignments"] = Array.isArray(legacySubs) ? legacySubs.map((s) => {
|
|
1593
|
+
if (s !== null && typeof s === "object" && "subscription_id" in s && !("assignment_id" in s)) {
|
|
1594
|
+
const { subscription_id, ...rest } = s;
|
|
1595
|
+
return { assignment_id: subscription_id, ...rest };
|
|
1596
|
+
}
|
|
1597
|
+
return s;
|
|
1598
|
+
}) : [];
|
|
1599
|
+
delete raw["subscriptions"];
|
|
1600
|
+
}
|
|
1567
1601
|
return LockFileSchema.parse(raw);
|
|
1568
1602
|
}
|
|
1569
1603
|
function saveLockFile(dir, lock) {
|
|
@@ -1582,7 +1616,7 @@ function createEmptyLockFile() {
|
|
|
1582
1616
|
return {
|
|
1583
1617
|
version: 2,
|
|
1584
1618
|
generated_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
1585
|
-
|
|
1619
|
+
assignments: [],
|
|
1586
1620
|
requires_graph: [],
|
|
1587
1621
|
presets_expanded: []
|
|
1588
1622
|
};
|
|
@@ -3252,9 +3286,9 @@ async function applyPreset(presetRef, manifest, inputs, opts) {
|
|
|
3252
3286
|
const pinPolicy = opts.pinPolicy ?? "minor-track";
|
|
3253
3287
|
const depthError = validateNestingDepth(presetRef, depth);
|
|
3254
3288
|
if (depthError) {
|
|
3255
|
-
return { instances: [],
|
|
3289
|
+
return { instances: [], assignments: [], errors: [depthError] };
|
|
3256
3290
|
}
|
|
3257
|
-
const result = { instances: [],
|
|
3291
|
+
const result = { instances: [], assignments: [], errors: [] };
|
|
3258
3292
|
const itemResults = /* @__PURE__ */ new Map();
|
|
3259
3293
|
for (const item of manifest.items) {
|
|
3260
3294
|
const itemResult = await applyItemImpl(
|
|
@@ -3271,7 +3305,7 @@ async function applyPreset(presetRef, manifest, inputs, opts) {
|
|
|
3271
3305
|
if (item.id && itemResult.instances.length > 0) {
|
|
3272
3306
|
itemResults.set(item.id, itemResult.instances[0]);
|
|
3273
3307
|
}
|
|
3274
|
-
result.
|
|
3308
|
+
result.assignments.push(...itemResult.assignments);
|
|
3275
3309
|
}
|
|
3276
3310
|
return result;
|
|
3277
3311
|
}
|
|
@@ -3280,7 +3314,7 @@ async function applyPresetFromData(presetRef, data, inputs, opts) {
|
|
|
3280
3314
|
if (!parseResult.ok || !parseResult.preset) {
|
|
3281
3315
|
return {
|
|
3282
3316
|
instances: [],
|
|
3283
|
-
|
|
3317
|
+
assignments: [],
|
|
3284
3318
|
errors: parseResult.errors.map((e) => `Parse: ${e}`)
|
|
3285
3319
|
};
|
|
3286
3320
|
}
|
|
@@ -3295,34 +3329,34 @@ async function applyItemImpl(presetRef, item, inputs, opts, depth, pinPolicy, it
|
|
|
3295
3329
|
if (!target) {
|
|
3296
3330
|
return {
|
|
3297
3331
|
instances: [],
|
|
3298
|
-
|
|
3332
|
+
assignments: [],
|
|
3299
3333
|
errors: [
|
|
3300
3334
|
`Cross-item ref "#${resolved.targetId}" not yet resolved (items must be ordered)`
|
|
3301
3335
|
]
|
|
3302
3336
|
};
|
|
3303
3337
|
}
|
|
3304
|
-
return { instances: [target],
|
|
3338
|
+
return { instances: [target], assignments: [], errors: [] };
|
|
3305
3339
|
}
|
|
3306
3340
|
case "library-instance": {
|
|
3307
3341
|
if (!resolved.instance) {
|
|
3308
3342
|
return {
|
|
3309
3343
|
instances: [],
|
|
3310
|
-
|
|
3344
|
+
assignments: [],
|
|
3311
3345
|
errors: [`Library instance "${resolved.instanceId}" not found`]
|
|
3312
3346
|
};
|
|
3313
3347
|
}
|
|
3314
3348
|
try {
|
|
3315
|
-
const
|
|
3316
|
-
return { instances: [resolved.instance],
|
|
3349
|
+
const asgn = await library.assign(opts.workspaceId, resolved.instanceId, pinPolicy);
|
|
3350
|
+
return { instances: [resolved.instance], assignments: [asgn], errors: [] };
|
|
3317
3351
|
} catch {
|
|
3318
|
-
return { instances: [resolved.instance],
|
|
3352
|
+
return { instances: [resolved.instance], assignments: [], errors: [] };
|
|
3319
3353
|
}
|
|
3320
3354
|
}
|
|
3321
3355
|
case "nested-preset": {
|
|
3322
3356
|
if (!opts.loadPreset) {
|
|
3323
3357
|
return {
|
|
3324
3358
|
instances: [],
|
|
3325
|
-
|
|
3359
|
+
assignments: [],
|
|
3326
3360
|
errors: [`Cannot resolve nested preset "${resolved.presetRef}" \u2014 no loader provided`]
|
|
3327
3361
|
};
|
|
3328
3362
|
}
|
|
@@ -3330,13 +3364,13 @@ async function applyItemImpl(presetRef, item, inputs, opts, depth, pinPolicy, it
|
|
|
3330
3364
|
if (!nestedData) {
|
|
3331
3365
|
return {
|
|
3332
3366
|
instances: [],
|
|
3333
|
-
|
|
3367
|
+
assignments: [],
|
|
3334
3368
|
errors: [`Nested preset "${resolved.presetRef}" not found`]
|
|
3335
3369
|
};
|
|
3336
3370
|
}
|
|
3337
3371
|
const parseResult = parsePreset(nestedData);
|
|
3338
3372
|
if (!parseResult.ok || !parseResult.preset) {
|
|
3339
|
-
return { instances: [],
|
|
3373
|
+
return { instances: [], assignments: [], errors: parseResult.errors };
|
|
3340
3374
|
}
|
|
3341
3375
|
const nestedInputs = {
|
|
3342
3376
|
...item.inputs ?? {},
|
|
@@ -3348,7 +3382,7 @@ async function applyItemImpl(presetRef, item, inputs, opts, depth, pinPolicy, it
|
|
|
3348
3382
|
});
|
|
3349
3383
|
return {
|
|
3350
3384
|
instances: nestedResult.instances,
|
|
3351
|
-
|
|
3385
|
+
assignments: nestedResult.assignments,
|
|
3352
3386
|
errors: nestedResult.errors
|
|
3353
3387
|
};
|
|
3354
3388
|
}
|
|
@@ -3361,12 +3395,12 @@ async function applyItemImpl(presetRef, item, inputs, opts, depth, pinPolicy, it
|
|
|
3361
3395
|
const secretPhs = item.placeholders.filter((ph) => isSecretPlaceholder(ph));
|
|
3362
3396
|
const validation = validateAllPlaceholders(nonSecretPhs, itemInputs);
|
|
3363
3397
|
if (!validation.valid) {
|
|
3364
|
-
return { instances: [],
|
|
3398
|
+
return { instances: [], assignments: [], errors: validation.errors };
|
|
3365
3399
|
}
|
|
3366
3400
|
validatedValues = validation.values;
|
|
3367
3401
|
const secretValidation = validateAllPlaceholders(secretPhs, itemInputs);
|
|
3368
3402
|
if (!secretValidation.valid) {
|
|
3369
|
-
return { instances: [],
|
|
3403
|
+
return { instances: [], assignments: [], errors: secretValidation.errors };
|
|
3370
3404
|
}
|
|
3371
3405
|
for (const [key, value] of Object.entries(secretValidation.values)) {
|
|
3372
3406
|
secretValues[key] = String(value);
|
|
@@ -3389,7 +3423,7 @@ async function applyItemImpl(presetRef, item, inputs, opts, depth, pinPolicy, it
|
|
|
3389
3423
|
} catch (err) {
|
|
3390
3424
|
return {
|
|
3391
3425
|
instances: [],
|
|
3392
|
-
|
|
3426
|
+
assignments: [],
|
|
3393
3427
|
errors: [
|
|
3394
3428
|
`Secret storage failed for "${item.ref}": ${err instanceof Error ? err.message : String(err)}`
|
|
3395
3429
|
]
|
|
@@ -3404,17 +3438,17 @@ async function applyItemImpl(presetRef, item, inputs, opts, depth, pinPolicy, it
|
|
|
3404
3438
|
credentialRef: interpolated.credentialRef,
|
|
3405
3439
|
createdBy: opts.createdBy ?? `preset:${presetRef}`
|
|
3406
3440
|
});
|
|
3407
|
-
const
|
|
3441
|
+
const assignments2 = [];
|
|
3408
3442
|
try {
|
|
3409
|
-
const
|
|
3410
|
-
|
|
3443
|
+
const asgn = await library.assign(opts.workspaceId, instance.id, pinPolicy);
|
|
3444
|
+
assignments2.push(asgn);
|
|
3411
3445
|
} catch {
|
|
3412
3446
|
}
|
|
3413
|
-
return { instances: [instance],
|
|
3447
|
+
return { instances: [instance], assignments: assignments2, errors: [] };
|
|
3414
3448
|
} catch (err) {
|
|
3415
3449
|
return {
|
|
3416
3450
|
instances: [],
|
|
3417
|
-
|
|
3451
|
+
assignments: [],
|
|
3418
3452
|
errors: [
|
|
3419
3453
|
`Instance creation failed for "${item.ref}": ${err instanceof Error ? err.message : String(err)}`
|
|
3420
3454
|
]
|
|
@@ -3533,6 +3567,6 @@ function deepEqual(a, b) {
|
|
|
3533
3567
|
return JSON.stringify(a) === JSON.stringify(b);
|
|
3534
3568
|
}
|
|
3535
3569
|
|
|
3536
|
-
export { CatalogCache, CatalogConfigSchema, CatalogHttpError,
|
|
3537
|
-
//# sourceMappingURL=chunk-
|
|
3538
|
-
//# sourceMappingURL=chunk-
|
|
3570
|
+
export { AssignmentNotFoundError, CatalogCache, CatalogConfigSchema, CatalogHttpError, DuplicateAssignmentError, DuplicateLibraryNameError, GitSyncDriver, InstanceHasConsumersError, InstanceNotFoundError, InterpolationError, KNOWN_ASSET_KINDS, KnowledgeManifestSchema, LIBRARY_BACKENDS, LIBRARY_OWNERSHIPS, LIBRARY_STRUCTURES, LOCAL_CATALOG_URL, LibraryConfigSchema, LibraryError, LibraryInstanceRefSchema, LibraryManager, LibrarySectionSchema, LibrarySyncError, LocalCatalogSource, LocalIndex, LocalSyncDriver, LockAssignmentSchema, LockFileSchema, OfflineError, OperationNotPermittedError, PIN_POLICIES, PinPolicySchema, PresetAppliedSchema, PresetExpandedSchema, RemoteCatalogSource, RequiresEdgeSchema, RestCatalogSource, SidecarGit, SkaileConfigSchema, SourceNotFoundError, TarballHashMismatchError, UserLibraryNotFoundError, WorkspaceConfigV2Schema, applyNonStructuralUpgrade, applyPreset, applyPresetFromData, classifyRef, createEmptyLockFile, deriveSlug, detectChanges, detectNestedPresetRefs, detectWorkspaceVersion, evaluateUpgrade, extractLibraryInstanceId, extractReferencedKeys, filterKey, getConfigDefaults, getDefaultValue, getSidecarRoot, getStoreManifestsDir, getStoreRoot, hasInterpolationTokens, interpolate, isLocalCatalogUrl, isSecretPlaceholder, knowledgeKindProvider, listSidecarSlugsOnDisk, loadLockFile, loadWorkspaceV2, migrateSidecarsToStoreIfNeeded, migrateWorkspaceConfig, parsePreset, parsePresetYaml, parseWorkspaceV2, projectConfigPath, queryInstancePickerChoices, resolveAllItems, resolveConfig, resolveIndexPath, resolveItem, resolveLibraryDir, resolvePin, resolveSidecarPaths, saveConfig, saveLockFile, saveWorkspaceV2, sha256Hex, skaileHomeDir, storeSecrets, trpcGetUrl, userConfigPath, validateAllPlaceholders, validateKnowledge, validateNestingDepth, validatePlaceholder, writeManifestIfMissing };
|
|
3571
|
+
//# sourceMappingURL=chunk-MIH45XPY.js.map
|
|
3572
|
+
//# sourceMappingURL=chunk-MIH45XPY.js.map
|