@contentful/experience-design-system-cli 2.32.1-dev-build-661f431.0 → 2.32.1-dev-build-4052dd5.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/package.json +1 -1
- package/dist/src/index.js +246 -136
- package/dist/src/session/core/tokens/build-dtcg-groups.d.ts +12 -0
- package/dist/src/session/core/tokens/build-dtcg-tokens.d.ts +3 -0
- package/dist/src/session/db.d.ts +8 -37
- package/dist/src/session/repositories/shared/with-transaction.d.ts +2 -0
- package/dist/src/session/repositories/tokens/read.d.ts +15 -0
- package/dist/src/session/repositories/tokens/write.d.ts +16 -0
- package/dist/src/session/services/tokens/apply-tool-calls.d.ts +8 -0
- package/dist/src/session/services/tokens/replace-raw-prop-token-paths.d.ts +3 -0
- package/dist/src/session/services/tokens/replace-raw-token-name-paths.d.ts +3 -0
- package/dist/src/session/services/tokens/store-dtcg-tokens.d.ts +3 -0
- package/package.json +6 -6
package/dist/package.json
CHANGED
package/dist/src/index.js
CHANGED
|
@@ -8942,6 +8942,76 @@ var init_session_resolver = __esm({
|
|
|
8942
8942
|
}
|
|
8943
8943
|
});
|
|
8944
8944
|
|
|
8945
|
+
// packages/experience-design-system-cli/src/session/core/tokens/build-dtcg-groups.ts
|
|
8946
|
+
function buildDtcgGroups(groupRows, tokenRows) {
|
|
8947
|
+
return groupRows.map((r) => {
|
|
8948
|
+
const prefix = `${r.path}.`;
|
|
8949
|
+
const tokenIds = tokenRows.filter((t) => t.path.startsWith(prefix) && !t.path.slice(prefix.length).includes(".")).map((t) => t.path);
|
|
8950
|
+
const g = { path: r.path, tokenIds };
|
|
8951
|
+
if (r.description !== null) g.$description = r.description;
|
|
8952
|
+
return g;
|
|
8953
|
+
});
|
|
8954
|
+
}
|
|
8955
|
+
var init_build_dtcg_groups = __esm({
|
|
8956
|
+
"packages/experience-design-system-cli/src/session/core/tokens/build-dtcg-groups.ts"() {
|
|
8957
|
+
"use strict";
|
|
8958
|
+
}
|
|
8959
|
+
});
|
|
8960
|
+
|
|
8961
|
+
// packages/experience-design-system-cli/src/session/core/tokens/build-dtcg-tokens.ts
|
|
8962
|
+
function buildDtcgTokens(tokenRows) {
|
|
8963
|
+
return tokenRows.map((r) => {
|
|
8964
|
+
const t = {
|
|
8965
|
+
path: r.path,
|
|
8966
|
+
$type: r.type,
|
|
8967
|
+
$value: JSON.parse(r.value)
|
|
8968
|
+
};
|
|
8969
|
+
if (r.description !== null) t.$description = r.description;
|
|
8970
|
+
return t;
|
|
8971
|
+
});
|
|
8972
|
+
}
|
|
8973
|
+
var init_build_dtcg_tokens = __esm({
|
|
8974
|
+
"packages/experience-design-system-cli/src/session/core/tokens/build-dtcg-tokens.ts"() {
|
|
8975
|
+
"use strict";
|
|
8976
|
+
}
|
|
8977
|
+
});
|
|
8978
|
+
|
|
8979
|
+
// packages/experience-design-system-cli/src/session/repositories/tokens/read.ts
|
|
8980
|
+
function getDtcgTokensForSession(db, sessionId2) {
|
|
8981
|
+
const groupRows = db.prepare("SELECT path, description FROM raw_token_groups WHERE session_id = ? ORDER BY path").all(sessionId2).map((row) => ({
|
|
8982
|
+
path: String(row.path),
|
|
8983
|
+
description: row.description === null ? null : String(row.description)
|
|
8984
|
+
}));
|
|
8985
|
+
const tokenRows = db.prepare("SELECT path, type, value, description FROM raw_tokens WHERE session_id = ? ORDER BY path").all(sessionId2).map((row) => ({
|
|
8986
|
+
path: String(row.path),
|
|
8987
|
+
type: String(row.type),
|
|
8988
|
+
value: String(row.value),
|
|
8989
|
+
description: row.description === null ? null : String(row.description)
|
|
8990
|
+
}));
|
|
8991
|
+
return {
|
|
8992
|
+
groups: buildDtcgGroups(groupRows, tokenRows),
|
|
8993
|
+
tokens: buildDtcgTokens(tokenRows)
|
|
8994
|
+
};
|
|
8995
|
+
}
|
|
8996
|
+
function getRawTokenNamePaths(db, sessionId2) {
|
|
8997
|
+
const rows = db.prepare("SELECT raw_name, path FROM raw_token_name_paths WHERE session_id = ? ORDER BY raw_name").all(sessionId2);
|
|
8998
|
+
return Object.fromEntries(rows.map((row) => [String(row.raw_name), String(row.path)]));
|
|
8999
|
+
}
|
|
9000
|
+
function getRawTokenNamePathRows(db, sessionId2) {
|
|
9001
|
+
return db.prepare("SELECT raw_name, path, source FROM raw_token_name_paths WHERE session_id = ? ORDER BY raw_name").all(sessionId2).map((row) => ({
|
|
9002
|
+
rawName: String(row.raw_name),
|
|
9003
|
+
path: String(row.path),
|
|
9004
|
+
source: String(row.source)
|
|
9005
|
+
}));
|
|
9006
|
+
}
|
|
9007
|
+
var init_read3 = __esm({
|
|
9008
|
+
"packages/experience-design-system-cli/src/session/repositories/tokens/read.ts"() {
|
|
9009
|
+
"use strict";
|
|
9010
|
+
init_build_dtcg_groups();
|
|
9011
|
+
init_build_dtcg_tokens();
|
|
9012
|
+
}
|
|
9013
|
+
});
|
|
9014
|
+
|
|
8945
9015
|
// packages/experience-design-system-cli/src/session/core/components/hash-component-shape.ts
|
|
8946
9016
|
import { createHash as createHash2 } from "node:crypto";
|
|
8947
9017
|
function hashComponentShape(component) {
|
|
@@ -8978,6 +9048,167 @@ var init_hash_token_content = __esm({
|
|
|
8978
9048
|
}
|
|
8979
9049
|
});
|
|
8980
9050
|
|
|
9051
|
+
// packages/experience-design-system-cli/src/session/repositories/tokens/write.ts
|
|
9052
|
+
function deleteRawTokensForSession(db, sessionId2) {
|
|
9053
|
+
db.prepare("DELETE FROM raw_token_groups WHERE session_id = ?").run(sessionId2);
|
|
9054
|
+
db.prepare("DELETE FROM raw_tokens WHERE session_id = ?").run(sessionId2);
|
|
9055
|
+
}
|
|
9056
|
+
function createRawTokenGroups(db, sessionId2, groups) {
|
|
9057
|
+
const insertGroup = db.prepare(`INSERT INTO raw_token_groups (session_id, path, description) VALUES (?, ?, ?)`);
|
|
9058
|
+
for (const group of groups) {
|
|
9059
|
+
insertGroup.run(sessionId2, group.path, group.$description ?? null);
|
|
9060
|
+
}
|
|
9061
|
+
}
|
|
9062
|
+
function createRawTokens(db, sessionId2, tokens) {
|
|
9063
|
+
const insertToken = db.prepare(
|
|
9064
|
+
`INSERT INTO raw_tokens (session_id, path, type, value, description) VALUES (?, ?, ?, ?, ?)`
|
|
9065
|
+
);
|
|
9066
|
+
for (const token of tokens) {
|
|
9067
|
+
insertToken.run(sessionId2, token.path, token.$type, JSON.stringify(token.$value), token.$description ?? null);
|
|
9068
|
+
}
|
|
9069
|
+
}
|
|
9070
|
+
function upsertRawToken(db, sessionId2, call) {
|
|
9071
|
+
db.prepare(
|
|
9072
|
+
`INSERT INTO raw_tokens (session_id, path, type, value, description) VALUES (?, ?, ?, ?, ?)
|
|
9073
|
+
ON CONFLICT(session_id, path) DO UPDATE SET type = excluded.type, value = excluded.value, description = excluded.description`
|
|
9074
|
+
).run(sessionId2, call.path, call.type, JSON.stringify(call.value), call.description ?? null);
|
|
9075
|
+
}
|
|
9076
|
+
function upsertRawTokenGroup(db, sessionId2, call) {
|
|
9077
|
+
db.prepare(
|
|
9078
|
+
`INSERT INTO raw_token_groups (session_id, path, description) VALUES (?, ?, ?)
|
|
9079
|
+
ON CONFLICT(session_id, path) DO UPDATE SET description = excluded.description`
|
|
9080
|
+
).run(sessionId2, call.path, call.description ?? null);
|
|
9081
|
+
}
|
|
9082
|
+
function updateRawTokenNamePaths(db, sessionId2, tokenNamePaths, source) {
|
|
9083
|
+
const entries = Object.entries(tokenNamePaths);
|
|
9084
|
+
const deletePaths = db.prepare("DELETE FROM raw_token_name_paths WHERE session_id = ? AND source = ?");
|
|
9085
|
+
const insertPath = db.prepare(
|
|
9086
|
+
"INSERT OR IGNORE INTO raw_token_name_paths (session_id, raw_name, path, source) VALUES (?, ?, ?, ?)"
|
|
9087
|
+
);
|
|
9088
|
+
const deleteAutomaticByName = db.prepare(
|
|
9089
|
+
"DELETE FROM raw_token_name_paths WHERE session_id = ? AND raw_name = ? AND source = 'automatic'"
|
|
9090
|
+
);
|
|
9091
|
+
deletePaths.run(sessionId2, source);
|
|
9092
|
+
for (const [rawName, path] of entries) {
|
|
9093
|
+
if (source === "manual") deleteAutomaticByName.run(sessionId2, rawName);
|
|
9094
|
+
insertPath.run(sessionId2, rawName, path, source);
|
|
9095
|
+
}
|
|
9096
|
+
}
|
|
9097
|
+
function updateRawPropTokenPaths(db, sessionId2, componentId, propName, paths, source) {
|
|
9098
|
+
db.prepare(
|
|
9099
|
+
`DELETE FROM raw_prop_token_paths
|
|
9100
|
+
WHERE session_id = ? AND component_id = ? AND prop_name = ?`
|
|
9101
|
+
).run(sessionId2, componentId, propName);
|
|
9102
|
+
const insertPath = db.prepare(
|
|
9103
|
+
`INSERT INTO raw_prop_token_paths (session_id, component_id, prop_name, source, position, path)
|
|
9104
|
+
VALUES (?, ?, ?, ?, ?, ?)`
|
|
9105
|
+
);
|
|
9106
|
+
paths.forEach((path, position) => {
|
|
9107
|
+
insertPath.run(sessionId2, componentId, propName, source, position, path);
|
|
9108
|
+
});
|
|
9109
|
+
}
|
|
9110
|
+
var init_write3 = __esm({
|
|
9111
|
+
"packages/experience-design-system-cli/src/session/repositories/tokens/write.ts"() {
|
|
9112
|
+
"use strict";
|
|
9113
|
+
}
|
|
9114
|
+
});
|
|
9115
|
+
|
|
9116
|
+
// packages/experience-design-system-cli/src/session/repositories/shared/with-transaction.ts
|
|
9117
|
+
function withTransaction(db, fn) {
|
|
9118
|
+
db.exec("BEGIN");
|
|
9119
|
+
try {
|
|
9120
|
+
const result = fn();
|
|
9121
|
+
db.exec("COMMIT");
|
|
9122
|
+
return result;
|
|
9123
|
+
} catch (e) {
|
|
9124
|
+
db.exec("ROLLBACK");
|
|
9125
|
+
throw e;
|
|
9126
|
+
}
|
|
9127
|
+
}
|
|
9128
|
+
var init_with_transaction = __esm({
|
|
9129
|
+
"packages/experience-design-system-cli/src/session/repositories/shared/with-transaction.ts"() {
|
|
9130
|
+
"use strict";
|
|
9131
|
+
}
|
|
9132
|
+
});
|
|
9133
|
+
|
|
9134
|
+
// packages/experience-design-system-cli/src/session/services/tokens/store-dtcg-tokens.ts
|
|
9135
|
+
function storeDtcgTokens(db, sessionId2, groups, tokens) {
|
|
9136
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
9137
|
+
withTransaction(db, () => {
|
|
9138
|
+
deleteRawTokensForSession(db, sessionId2);
|
|
9139
|
+
createRawTokenGroups(db, sessionId2, groups);
|
|
9140
|
+
createRawTokens(db, sessionId2, tokens);
|
|
9141
|
+
updateSessionTimestamp(db, sessionId2, now);
|
|
9142
|
+
});
|
|
9143
|
+
}
|
|
9144
|
+
var init_store_dtcg_tokens = __esm({
|
|
9145
|
+
"packages/experience-design-system-cli/src/session/services/tokens/store-dtcg-tokens.ts"() {
|
|
9146
|
+
"use strict";
|
|
9147
|
+
init_write();
|
|
9148
|
+
init_write3();
|
|
9149
|
+
init_with_transaction();
|
|
9150
|
+
}
|
|
9151
|
+
});
|
|
9152
|
+
|
|
9153
|
+
// packages/experience-design-system-cli/src/session/services/tokens/apply-tool-calls.ts
|
|
9154
|
+
function applyTokenToolCalls(db, sessionId2, calls, incomingWarnings) {
|
|
9155
|
+
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
9156
|
+
const warnings = [...incomingWarnings];
|
|
9157
|
+
let tokens = 0;
|
|
9158
|
+
let groups = 0;
|
|
9159
|
+
withTransaction(db, () => {
|
|
9160
|
+
for (const call of calls) {
|
|
9161
|
+
if (call.tool === "set_token") {
|
|
9162
|
+
upsertRawToken(db, sessionId2, call);
|
|
9163
|
+
tokens++;
|
|
9164
|
+
} else if (call.tool === "set_group") {
|
|
9165
|
+
upsertRawTokenGroup(db, sessionId2, call);
|
|
9166
|
+
groups++;
|
|
9167
|
+
}
|
|
9168
|
+
}
|
|
9169
|
+
updateSessionTimestamp(db, sessionId2, now);
|
|
9170
|
+
});
|
|
9171
|
+
return { tokens, groups, warnings };
|
|
9172
|
+
}
|
|
9173
|
+
var init_apply_tool_calls = __esm({
|
|
9174
|
+
"packages/experience-design-system-cli/src/session/services/tokens/apply-tool-calls.ts"() {
|
|
9175
|
+
"use strict";
|
|
9176
|
+
init_write();
|
|
9177
|
+
init_write3();
|
|
9178
|
+
init_with_transaction();
|
|
9179
|
+
}
|
|
9180
|
+
});
|
|
9181
|
+
|
|
9182
|
+
// packages/experience-design-system-cli/src/session/services/tokens/replace-raw-token-name-paths.ts
|
|
9183
|
+
function replaceRawTokenNamePaths(db, sessionId2, tokenNamePaths, source = "automatic") {
|
|
9184
|
+
withTransaction(db, () => {
|
|
9185
|
+
updateRawTokenNamePaths(db, sessionId2, tokenNamePaths, source);
|
|
9186
|
+
updateSessionTimestamp(db, sessionId2, (/* @__PURE__ */ new Date()).toISOString());
|
|
9187
|
+
});
|
|
9188
|
+
}
|
|
9189
|
+
var init_replace_raw_token_name_paths = __esm({
|
|
9190
|
+
"packages/experience-design-system-cli/src/session/services/tokens/replace-raw-token-name-paths.ts"() {
|
|
9191
|
+
"use strict";
|
|
9192
|
+
init_write3();
|
|
9193
|
+
init_write();
|
|
9194
|
+
init_with_transaction();
|
|
9195
|
+
}
|
|
9196
|
+
});
|
|
9197
|
+
|
|
9198
|
+
// packages/experience-design-system-cli/src/session/services/tokens/replace-raw-prop-token-paths.ts
|
|
9199
|
+
function replaceRawPropTokenPaths(db, sessionId2, componentId, propName, paths, source) {
|
|
9200
|
+
withTransaction(db, () => {
|
|
9201
|
+
updateRawPropTokenPaths(db, sessionId2, componentId, propName, paths, source);
|
|
9202
|
+
});
|
|
9203
|
+
}
|
|
9204
|
+
var init_replace_raw_prop_token_paths = __esm({
|
|
9205
|
+
"packages/experience-design-system-cli/src/session/services/tokens/replace-raw-prop-token-paths.ts"() {
|
|
9206
|
+
"use strict";
|
|
9207
|
+
init_write3();
|
|
9208
|
+
init_with_transaction();
|
|
9209
|
+
}
|
|
9210
|
+
});
|
|
9211
|
+
|
|
8981
9212
|
// packages/experience-design-system-cli/src/session/cache-keys.ts
|
|
8982
9213
|
var cache_keys_exports = {};
|
|
8983
9214
|
__export(cache_keys_exports, {
|
|
@@ -9278,57 +9509,6 @@ function applyDbMigrations(db) {
|
|
|
9278
9509
|
`);
|
|
9279
9510
|
}
|
|
9280
9511
|
}
|
|
9281
|
-
function replaceRawTokenNamePaths(db, sessionId2, tokenNamePaths, source = "automatic") {
|
|
9282
|
-
const entries = Object.entries(tokenNamePaths);
|
|
9283
|
-
const deletePaths = db.prepare("DELETE FROM raw_token_name_paths WHERE session_id = ? AND source = ?");
|
|
9284
|
-
const insertPath = db.prepare(
|
|
9285
|
-
"INSERT OR IGNORE INTO raw_token_name_paths (session_id, raw_name, path, source) VALUES (?, ?, ?, ?)"
|
|
9286
|
-
);
|
|
9287
|
-
const deleteAutomaticByName = db.prepare(
|
|
9288
|
-
"DELETE FROM raw_token_name_paths WHERE session_id = ? AND raw_name = ? AND source = 'automatic'"
|
|
9289
|
-
);
|
|
9290
|
-
db.exec("BEGIN");
|
|
9291
|
-
try {
|
|
9292
|
-
deletePaths.run(sessionId2, source);
|
|
9293
|
-
for (const [rawName, path] of entries) {
|
|
9294
|
-
if (source === "manual") deleteAutomaticByName.run(sessionId2, rawName);
|
|
9295
|
-
insertPath.run(sessionId2, rawName, path, source);
|
|
9296
|
-
}
|
|
9297
|
-
db.prepare("UPDATE sessions SET updated_at = ? WHERE id = ?").run((/* @__PURE__ */ new Date()).toISOString(), sessionId2);
|
|
9298
|
-
db.exec("COMMIT");
|
|
9299
|
-
} catch (e) {
|
|
9300
|
-
db.exec("ROLLBACK");
|
|
9301
|
-
throw e;
|
|
9302
|
-
}
|
|
9303
|
-
}
|
|
9304
|
-
function loadRawTokenNamePaths(db, sessionId2) {
|
|
9305
|
-
const rows = db.prepare("SELECT raw_name, path FROM raw_token_name_paths WHERE session_id = ? ORDER BY raw_name").all(sessionId2);
|
|
9306
|
-
return Object.fromEntries(rows.map((row) => [row.raw_name, row.path]));
|
|
9307
|
-
}
|
|
9308
|
-
function loadRawTokenNamePathRows(db, sessionId2) {
|
|
9309
|
-
return db.prepare("SELECT raw_name, path, source FROM raw_token_name_paths WHERE session_id = ? ORDER BY raw_name").all(sessionId2).map((row) => ({ rawName: row.raw_name, path: row.path, source: row.source }));
|
|
9310
|
-
}
|
|
9311
|
-
function replaceRawPropTokenPaths(db, sessionId2, componentId, propName, paths, source) {
|
|
9312
|
-
const deletePaths = db.prepare(
|
|
9313
|
-
`DELETE FROM raw_prop_token_paths
|
|
9314
|
-
WHERE session_id = ? AND component_id = ? AND prop_name = ?`
|
|
9315
|
-
);
|
|
9316
|
-
const insertPath = db.prepare(
|
|
9317
|
-
`INSERT INTO raw_prop_token_paths (session_id, component_id, prop_name, source, position, path)
|
|
9318
|
-
VALUES (?, ?, ?, ?, ?, ?)`
|
|
9319
|
-
);
|
|
9320
|
-
db.exec("BEGIN");
|
|
9321
|
-
try {
|
|
9322
|
-
deletePaths.run(sessionId2, componentId, propName);
|
|
9323
|
-
paths.forEach((path, position) => {
|
|
9324
|
-
insertPath.run(sessionId2, componentId, propName, source, position, path);
|
|
9325
|
-
});
|
|
9326
|
-
db.exec("COMMIT");
|
|
9327
|
-
} catch (e) {
|
|
9328
|
-
db.exec("ROLLBACK");
|
|
9329
|
-
throw e;
|
|
9330
|
-
}
|
|
9331
|
-
}
|
|
9332
9512
|
function loadComponentReviewMetadata(db, sessionId2, componentName) {
|
|
9333
9513
|
const compRow = db.prepare(`SELECT component_id, source, source_path FROM raw_components WHERE session_id = ? AND name = ?`).get(sessionId2, componentName);
|
|
9334
9514
|
if (!compRow) return null;
|
|
@@ -10163,7 +10343,7 @@ function loadCDFComponents(db, sessionId2) {
|
|
|
10163
10343
|
`SELECT component_id, prop_name, position, path
|
|
10164
10344
|
FROM raw_prop_token_paths WHERE session_id = ? ORDER BY component_id, prop_name, position`
|
|
10165
10345
|
).all(sessionId2);
|
|
10166
|
-
const resolvedDefaultPaths =
|
|
10346
|
+
const resolvedDefaultPaths = getRawTokenNamePaths(db, sessionId2);
|
|
10167
10347
|
const tokenTypeByPath = new Map(
|
|
10168
10348
|
db.prepare("SELECT path, type FROM raw_tokens WHERE session_id = ?").all(sessionId2).map((token) => [token.path, token.type])
|
|
10169
10349
|
);
|
|
@@ -10275,82 +10455,6 @@ function applyScopeDecisions(db, sessionId2, decisions) {
|
|
|
10275
10455
|
}
|
|
10276
10456
|
db.prepare("UPDATE sessions SET updated_at = ? WHERE id = ?").run(now, sessionId2);
|
|
10277
10457
|
}
|
|
10278
|
-
function storeDTCGTokens(db, sessionId2, groups, tokens) {
|
|
10279
|
-
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
10280
|
-
db.exec("BEGIN");
|
|
10281
|
-
try {
|
|
10282
|
-
db.prepare("DELETE FROM raw_token_groups WHERE session_id = ?").run(sessionId2);
|
|
10283
|
-
db.prepare("DELETE FROM raw_tokens WHERE session_id = ?").run(sessionId2);
|
|
10284
|
-
const insertGroup = db.prepare(`INSERT INTO raw_token_groups (session_id, path, description) VALUES (?, ?, ?)`);
|
|
10285
|
-
for (const group of groups) {
|
|
10286
|
-
insertGroup.run(sessionId2, group.path, group.$description ?? null);
|
|
10287
|
-
}
|
|
10288
|
-
const insertToken = db.prepare(
|
|
10289
|
-
`INSERT INTO raw_tokens (session_id, path, type, value, description) VALUES (?, ?, ?, ?, ?)`
|
|
10290
|
-
);
|
|
10291
|
-
for (const token of tokens) {
|
|
10292
|
-
insertToken.run(sessionId2, token.path, token.$type, JSON.stringify(token.$value), token.$description ?? null);
|
|
10293
|
-
}
|
|
10294
|
-
db.prepare("UPDATE sessions SET updated_at = ? WHERE id = ?").run(now, sessionId2);
|
|
10295
|
-
db.exec("COMMIT");
|
|
10296
|
-
} catch (e) {
|
|
10297
|
-
db.exec("ROLLBACK");
|
|
10298
|
-
throw e;
|
|
10299
|
-
}
|
|
10300
|
-
}
|
|
10301
|
-
function applyTokenToolCalls(db, sessionId2, calls, incomingWarnings) {
|
|
10302
|
-
const now = (/* @__PURE__ */ new Date()).toISOString();
|
|
10303
|
-
const warnings = [...incomingWarnings];
|
|
10304
|
-
let tokens = 0;
|
|
10305
|
-
let groups = 0;
|
|
10306
|
-
const upsertToken = db.prepare(
|
|
10307
|
-
`INSERT INTO raw_tokens (session_id, path, type, value, description) VALUES (?, ?, ?, ?, ?)
|
|
10308
|
-
ON CONFLICT(session_id, path) DO UPDATE SET type = excluded.type, value = excluded.value, description = excluded.description`
|
|
10309
|
-
);
|
|
10310
|
-
const upsertGroup = db.prepare(
|
|
10311
|
-
`INSERT INTO raw_token_groups (session_id, path, description) VALUES (?, ?, ?)
|
|
10312
|
-
ON CONFLICT(session_id, path) DO UPDATE SET description = excluded.description`
|
|
10313
|
-
);
|
|
10314
|
-
db.exec("BEGIN");
|
|
10315
|
-
try {
|
|
10316
|
-
for (const call of calls) {
|
|
10317
|
-
if (call.tool === "set_token") {
|
|
10318
|
-
upsertToken.run(sessionId2, call.path, call.type, JSON.stringify(call.value), call.description ?? null);
|
|
10319
|
-
tokens++;
|
|
10320
|
-
} else if (call.tool === "set_group") {
|
|
10321
|
-
upsertGroup.run(sessionId2, call.path, call.description ?? null);
|
|
10322
|
-
groups++;
|
|
10323
|
-
}
|
|
10324
|
-
}
|
|
10325
|
-
db.prepare("UPDATE sessions SET updated_at = ? WHERE id = ?").run(now, sessionId2);
|
|
10326
|
-
db.exec("COMMIT");
|
|
10327
|
-
} catch (e) {
|
|
10328
|
-
db.exec("ROLLBACK");
|
|
10329
|
-
throw e;
|
|
10330
|
-
}
|
|
10331
|
-
return { tokens, groups, warnings };
|
|
10332
|
-
}
|
|
10333
|
-
function loadDTCGTokens(db, sessionId2) {
|
|
10334
|
-
const groupRows = db.prepare("SELECT path, description FROM raw_token_groups WHERE session_id = ? ORDER BY path").all(sessionId2);
|
|
10335
|
-
const tokenRows = db.prepare("SELECT path, type, value, description FROM raw_tokens WHERE session_id = ? ORDER BY path").all(sessionId2);
|
|
10336
|
-
const groups = groupRows.map((r) => {
|
|
10337
|
-
const prefix = `${r.path}.`;
|
|
10338
|
-
const tokenIds = tokenRows.filter((t) => t.path.startsWith(prefix) && !t.path.slice(prefix.length).includes(".")).map((t) => t.path);
|
|
10339
|
-
const g = { path: r.path, tokenIds };
|
|
10340
|
-
if (r.description !== null) g.$description = r.description;
|
|
10341
|
-
return g;
|
|
10342
|
-
});
|
|
10343
|
-
const tokens = tokenRows.map((r) => {
|
|
10344
|
-
const t = {
|
|
10345
|
-
path: r.path,
|
|
10346
|
-
$type: r.type,
|
|
10347
|
-
$value: JSON.parse(r.value)
|
|
10348
|
-
};
|
|
10349
|
-
if (r.description !== null) t.$description = r.description;
|
|
10350
|
-
return t;
|
|
10351
|
-
});
|
|
10352
|
-
return { groups, tokens };
|
|
10353
|
-
}
|
|
10354
10458
|
function findLatestSessionForCommand(db, command) {
|
|
10355
10459
|
return getLatestCompletedSessionForCommand(db, command);
|
|
10356
10460
|
}
|
|
@@ -10771,10 +10875,16 @@ var init_db = __esm({
|
|
|
10771
10875
|
init_read2();
|
|
10772
10876
|
init_write2();
|
|
10773
10877
|
init_session_resolver();
|
|
10878
|
+
init_read3();
|
|
10774
10879
|
init_derive_component_id();
|
|
10775
10880
|
init_hash_component_shape();
|
|
10776
10881
|
init_hash_token_content();
|
|
10777
10882
|
init_cdf_mappers();
|
|
10883
|
+
init_read3();
|
|
10884
|
+
init_store_dtcg_tokens();
|
|
10885
|
+
init_apply_tool_calls();
|
|
10886
|
+
init_replace_raw_token_name_paths();
|
|
10887
|
+
init_replace_raw_prop_token_paths();
|
|
10778
10888
|
SCHEMA = `
|
|
10779
10889
|
PRAGMA journal_mode = WAL;
|
|
10780
10890
|
PRAGMA foreign_keys = ON;
|
|
@@ -24980,7 +25090,7 @@ function GenerateReviewStep({
|
|
|
24980
25090
|
try {
|
|
24981
25091
|
cdfComponents = loadCDFComponents(db, extractSessionId);
|
|
24982
25092
|
cycles = loadSlotCycles(db, extractSessionId);
|
|
24983
|
-
tokens =
|
|
25093
|
+
tokens = getDtcgTokensForSession(db, tokenSessionId ?? extractSessionId).tokens.map((token) => ({
|
|
24984
25094
|
path: token.path,
|
|
24985
25095
|
kind: token.$type
|
|
24986
25096
|
}));
|
|
@@ -26868,7 +26978,7 @@ function AtomicGenerateReviewStep({
|
|
|
26868
26978
|
let tokens = [];
|
|
26869
26979
|
try {
|
|
26870
26980
|
cdfComponents = loadCDFComponents(db, extractSessionId);
|
|
26871
|
-
tokens =
|
|
26981
|
+
tokens = getDtcgTokensForSession(db, tokenSessionId ?? extractSessionId).tokens.map((token) => ({
|
|
26872
26982
|
path: token.path,
|
|
26873
26983
|
kind: token.$type
|
|
26874
26984
|
}));
|
|
@@ -28217,7 +28327,7 @@ If you are using AWS Bedrock, run:
|
|
|
28217
28327
|
copyTokensFromCache(db, state.tokenSessionId, sessionId2);
|
|
28218
28328
|
} else if (!state.tokenSessionId && state.tokensPath) {
|
|
28219
28329
|
const tokens = await readTokensFromPath("tokens", state.tokensPath);
|
|
28220
|
-
|
|
28330
|
+
storeDtcgTokens(db, sessionId2, [], tokens);
|
|
28221
28331
|
}
|
|
28222
28332
|
const cdfEntries = loadCDFComponents(db, sessionId2);
|
|
28223
28333
|
mappablePropCount = cdfEntries.reduce(
|
|
@@ -28226,7 +28336,7 @@ If you are using AWS Bedrock, run:
|
|
|
28226
28336
|
).length,
|
|
28227
28337
|
0
|
|
28228
28338
|
);
|
|
28229
|
-
rawTokenCount =
|
|
28339
|
+
rawTokenCount = getDtcgTokensForSession(db, sessionId2).tokens.length;
|
|
28230
28340
|
} finally {
|
|
28231
28341
|
db.close();
|
|
28232
28342
|
}
|
|
@@ -34314,7 +34424,7 @@ function registerPrintCommand(program) {
|
|
|
34314
34424
|
const db = openPipelineDb();
|
|
34315
34425
|
let result;
|
|
34316
34426
|
try {
|
|
34317
|
-
result =
|
|
34427
|
+
result = getDtcgTokensForSession(db, sessionId2);
|
|
34318
34428
|
} finally {
|
|
34319
34429
|
db.close();
|
|
34320
34430
|
}
|
|
@@ -34664,7 +34774,7 @@ async function runMapTokens(opts) {
|
|
|
34664
34774
|
tokenLeaves
|
|
34665
34775
|
);
|
|
34666
34776
|
const manualMappings = new Map(
|
|
34667
|
-
|
|
34777
|
+
getRawTokenNamePathRows(db, sessionId2).filter((row) => row.source === "manual").map((row) => [row.rawName, row.path])
|
|
34668
34778
|
);
|
|
34669
34779
|
const automaticMappings = {};
|
|
34670
34780
|
const defaultDiagnostics = [
|
|
@@ -34699,7 +34809,7 @@ ${defaultDiagnostics.map((diagnostic) => ` ${diagnostic}`).join("\n")}
|
|
|
34699
34809
|
(count, { entry }) => count + Object.values(entry.$properties ?? {}).filter((prop) => prop.$type === "token" && prop.$category === "design").length,
|
|
34700
34810
|
0
|
|
34701
34811
|
);
|
|
34702
|
-
const { groups, tokens } =
|
|
34812
|
+
const { groups, tokens } = getDtcgTokensForSession(db, sessionId2);
|
|
34703
34813
|
const tokenCount = tokens.length;
|
|
34704
34814
|
if (mappablePropCount === 0 || tokenCount === 0) {
|
|
34705
34815
|
process.stdout.write(
|
|
@@ -35184,7 +35294,7 @@ async function runPipeline(opts, progressWriter, cliPathOverride) {
|
|
|
35184
35294
|
}
|
|
35185
35295
|
if (extractSessionId && opts.tokens) {
|
|
35186
35296
|
const tokens = await readTokensFromPath("--tokens", opts.tokens);
|
|
35187
|
-
|
|
35297
|
+
storeDtcgTokens(db, extractSessionId, [], tokens);
|
|
35188
35298
|
}
|
|
35189
35299
|
const mapTokensLabel = stepLabel("Mapping design tokens");
|
|
35190
35300
|
const hasGeneratedComponents = extractSessionId !== null && loadCDFComponents(db, extractSessionId).length > 0;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { DTCGTokenGroup } from '@contentful/experience-design-system-types';
|
|
2
|
+
export interface GroupRow {
|
|
3
|
+
path: string;
|
|
4
|
+
description: string | null;
|
|
5
|
+
}
|
|
6
|
+
export interface TokenRow {
|
|
7
|
+
path: string;
|
|
8
|
+
type: string;
|
|
9
|
+
value: string;
|
|
10
|
+
description: string | null;
|
|
11
|
+
}
|
|
12
|
+
export declare function buildDtcgGroups(groupRows: GroupRow[], tokenRows: TokenRow[]): DTCGTokenGroup[];
|
package/dist/src/session/db.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DatabaseSync } from 'node:sqlite';
|
|
2
2
|
import type { RawComponentDefinition } from '../types.js';
|
|
3
|
-
import type { CDFComponentEntry
|
|
4
|
-
import type { ToolCall,
|
|
3
|
+
import type { CDFComponentEntry } from '@contentful/experience-design-system-types';
|
|
4
|
+
import type { ToolCall, ComponentSourceRef } from '@contentful/experience-design-system-generation';
|
|
5
5
|
import type { ComponentTypeSummary } from '@contentful/experience-design-system-types';
|
|
6
6
|
import type { SlotCycle, SlotEdge } from '../analyze/cycle-detection.js';
|
|
7
7
|
import { type MatchHints as SessionMatchHints } from './repositories/sessions/read.js';
|
|
@@ -10,6 +10,12 @@ export { deriveComponentId } from './core/components/derive-component-id.js';
|
|
|
10
10
|
export { hashComponentShape as computeComponentInputHash } from './core/components/hash-component-shape.js';
|
|
11
11
|
export { hashTokenContent as computeTokenInputHash } from './core/tokens/hash-token-content.js';
|
|
12
12
|
export { mapContentfulTypeToCdfType, resolveCdfCategory } from './core/cdf/cdf-mappers.js';
|
|
13
|
+
export { getDtcgTokensForSession as loadDTCGTokens, getRawTokenNamePaths as loadRawTokenNamePaths, getRawTokenNamePathRows as loadRawTokenNamePathRows, type RawTokenNamePaths, type RawTokenNamePathSource, type RawTokenNamePath, } from './repositories/tokens/read.js';
|
|
14
|
+
export { type RawPropTokenPathSource } from './repositories/tokens/write.js';
|
|
15
|
+
export { storeDtcgTokens as storeDTCGTokens } from './services/tokens/store-dtcg-tokens.js';
|
|
16
|
+
export { applyTokenToolCalls, type ApplyTokenToolCallsResult } from './services/tokens/apply-tool-calls.js';
|
|
17
|
+
export { replaceRawTokenNamePaths } from './services/tokens/replace-raw-token-name-paths.js';
|
|
18
|
+
export { replaceRawPropTokenPaths } from './services/tokens/replace-raw-prop-token-paths.js';
|
|
13
19
|
export type StepStatus = 'pending' | 'complete' | 'failed' | 'interrupted';
|
|
14
20
|
export type CommandName = 'analyze extract' | 'analyze select' | 'generate components' | 'generate tokens' | 'generate edit' | 'apply preview' | 'apply select' | 'apply push' | 'print components' | 'print tokens' | 'map tokens' | 'fetch existing entities' | 'import';
|
|
15
21
|
export interface SessionRow {
|
|
@@ -32,30 +38,6 @@ export interface StepRow {
|
|
|
32
38
|
}
|
|
33
39
|
export declare function getPipelineDbPath(): string;
|
|
34
40
|
export declare function openPipelineDb(dbPath?: string): DatabaseSync;
|
|
35
|
-
/** An exact source token reference paired with its canonical DTCG path. */
|
|
36
|
-
export type RawTokenNamePaths = Record<string, string>;
|
|
37
|
-
export type RawTokenNamePathSource = 'automatic' | 'manual';
|
|
38
|
-
export interface RawTokenNamePath {
|
|
39
|
-
rawName: string;
|
|
40
|
-
path: string;
|
|
41
|
-
source: RawTokenNamePathSource;
|
|
42
|
-
}
|
|
43
|
-
/**
|
|
44
|
-
* Replaces the session's exact source-reference-to-DTCG-path sidecar.
|
|
45
|
-
* Source references are retained verbatim; normalisation belongs to the
|
|
46
|
-
* deterministic resolver, not to persistence or CDF emission.
|
|
47
|
-
*/
|
|
48
|
-
export declare function replaceRawTokenNamePaths(db: DatabaseSync, sessionId: string, tokenNamePaths: RawTokenNamePaths, source?: RawTokenNamePathSource): void;
|
|
49
|
-
/** Loads the exact source-reference-to-DTCG-path sidecar for a session. */
|
|
50
|
-
export declare function loadRawTokenNamePaths(db: DatabaseSync, sessionId: string): RawTokenNamePaths;
|
|
51
|
-
export declare function loadRawTokenNamePathRows(db: DatabaseSync, sessionId: string): RawTokenNamePath[];
|
|
52
|
-
/**
|
|
53
|
-
* Where a prop's token-path list came from. 'agent' is a map-tokens suggestion,
|
|
54
|
-
* which a later run of that step may revise. 'review' is a person's decision in
|
|
55
|
-
* the review editor, which a re-run must leave alone.
|
|
56
|
-
*/
|
|
57
|
-
export type RawPropTokenPathSource = 'agent' | 'review';
|
|
58
|
-
export declare function replaceRawPropTokenPaths(db: DatabaseSync, sessionId: string, componentId: string, propName: string, paths: string[], source: RawPropTokenPathSource): void;
|
|
59
41
|
export interface ApplyToolCallsResult {
|
|
60
42
|
classified: number;
|
|
61
43
|
excluded: number;
|
|
@@ -138,17 +120,6 @@ export declare function applyScopeDecisions(db: DatabaseSync, sessionId: string,
|
|
|
138
120
|
accepted: string[];
|
|
139
121
|
rejected: string[];
|
|
140
122
|
}): void;
|
|
141
|
-
export declare function storeDTCGTokens(db: DatabaseSync, sessionId: string, groups: DTCGTokenGroup[], tokens: DTCGTokenEntry[]): void;
|
|
142
|
-
export interface ApplyTokenToolCallsResult {
|
|
143
|
-
tokens: number;
|
|
144
|
-
groups: number;
|
|
145
|
-
warnings: string[];
|
|
146
|
-
}
|
|
147
|
-
export declare function applyTokenToolCalls(db: DatabaseSync, sessionId: string, calls: TokenToolCall[], incomingWarnings: string[]): ApplyTokenToolCallsResult;
|
|
148
|
-
export declare function loadDTCGTokens(db: DatabaseSync, sessionId: string): {
|
|
149
|
-
groups: DTCGTokenGroup[];
|
|
150
|
-
tokens: DTCGTokenEntry[];
|
|
151
|
-
};
|
|
152
123
|
export declare function findLatestSessionForCommand(db: DatabaseSync, command: CommandName): string | null;
|
|
153
124
|
export declare function seedCDFFromPriorSession(db: DatabaseSync, targetSessionId: string): number;
|
|
154
125
|
export declare function seedCDFFromPreviewResponse(db: DatabaseSync, sessionId: string, removedItems: ComponentTypeSummary[]): number;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { DatabaseSync } from 'node:sqlite';
|
|
2
|
+
import type { DTCGTokenEntry, DTCGTokenGroup } from '@contentful/experience-design-system-types';
|
|
3
|
+
export type RawTokenNamePaths = Record<string, string>;
|
|
4
|
+
export type RawTokenNamePathSource = 'automatic' | 'manual';
|
|
5
|
+
export interface RawTokenNamePath {
|
|
6
|
+
rawName: string;
|
|
7
|
+
path: string;
|
|
8
|
+
source: RawTokenNamePathSource;
|
|
9
|
+
}
|
|
10
|
+
export declare function getDtcgTokensForSession(db: DatabaseSync, sessionId: string): {
|
|
11
|
+
groups: DTCGTokenGroup[];
|
|
12
|
+
tokens: DTCGTokenEntry[];
|
|
13
|
+
};
|
|
14
|
+
export declare function getRawTokenNamePaths(db: DatabaseSync, sessionId: string): RawTokenNamePaths;
|
|
15
|
+
export declare function getRawTokenNamePathRows(db: DatabaseSync, sessionId: string): RawTokenNamePath[];
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { DatabaseSync } from 'node:sqlite';
|
|
2
|
+
import type { DTCGTokenEntry, DTCGTokenGroup } from '@contentful/experience-design-system-types';
|
|
3
|
+
import type { TokenToolCall } from '@contentful/experience-design-system-generation';
|
|
4
|
+
import type { RawTokenNamePaths, RawTokenNamePathSource } from './read.js';
|
|
5
|
+
export type RawPropTokenPathSource = 'agent' | 'review';
|
|
6
|
+
export declare function deleteRawTokensForSession(db: DatabaseSync, sessionId: string): void;
|
|
7
|
+
export declare function createRawTokenGroups(db: DatabaseSync, sessionId: string, groups: DTCGTokenGroup[]): void;
|
|
8
|
+
export declare function createRawTokens(db: DatabaseSync, sessionId: string, tokens: DTCGTokenEntry[]): void;
|
|
9
|
+
export declare function upsertRawToken(db: DatabaseSync, sessionId: string, call: Extract<TokenToolCall, {
|
|
10
|
+
tool: 'set_token';
|
|
11
|
+
}>): void;
|
|
12
|
+
export declare function upsertRawTokenGroup(db: DatabaseSync, sessionId: string, call: Extract<TokenToolCall, {
|
|
13
|
+
tool: 'set_group';
|
|
14
|
+
}>): void;
|
|
15
|
+
export declare function updateRawTokenNamePaths(db: DatabaseSync, sessionId: string, tokenNamePaths: RawTokenNamePaths, source: RawTokenNamePathSource): void;
|
|
16
|
+
export declare function updateRawPropTokenPaths(db: DatabaseSync, sessionId: string, componentId: string, propName: string, paths: string[], source: RawPropTokenPathSource): void;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { DatabaseSync } from 'node:sqlite';
|
|
2
|
+
import type { TokenToolCall } from '@contentful/experience-design-system-generation';
|
|
3
|
+
export interface ApplyTokenToolCallsResult {
|
|
4
|
+
tokens: number;
|
|
5
|
+
groups: number;
|
|
6
|
+
warnings: string[];
|
|
7
|
+
}
|
|
8
|
+
export declare function applyTokenToolCalls(db: DatabaseSync, sessionId: string, calls: TokenToolCall[], incomingWarnings: string[]): ApplyTokenToolCallsResult;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { DatabaseSync } from 'node:sqlite';
|
|
2
|
+
import { type RawPropTokenPathSource } from '../../repositories/tokens/write.js';
|
|
3
|
+
export declare function replaceRawPropTokenPaths(db: DatabaseSync, sessionId: string, componentId: string, propName: string, paths: string[], source: RawPropTokenPathSource): void;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { DatabaseSync } from 'node:sqlite';
|
|
2
|
+
import type { RawTokenNamePaths, RawTokenNamePathSource } from '../../repositories/tokens/read.js';
|
|
3
|
+
export declare function replaceRawTokenNamePaths(db: DatabaseSync, sessionId: string, tokenNamePaths: RawTokenNamePaths, source?: RawTokenNamePathSource): void;
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { DatabaseSync } from 'node:sqlite';
|
|
2
|
+
import type { DTCGTokenEntry, DTCGTokenGroup } from '@contentful/experience-design-system-types';
|
|
3
|
+
export declare function storeDtcgTokens(db: DatabaseSync, sessionId: string, groups: DTCGTokenGroup[], tokens: DTCGTokenEntry[]): void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contentful/experience-design-system-cli",
|
|
3
|
-
"version": "2.32.1-dev-build-
|
|
3
|
+
"version": "2.32.1-dev-build-4052dd5.0",
|
|
4
4
|
"description": "Contentful Experiences design system import CLI",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -40,8 +40,8 @@
|
|
|
40
40
|
"svelte": "^5.56.4",
|
|
41
41
|
"ts-morph": "^27.0.2",
|
|
42
42
|
"typescript": "^5.9.3",
|
|
43
|
-
"@contentful/experience-design-system-types": "2.32.1-dev-build-
|
|
44
|
-
"@contentful/experience-design-system-cli-v2": "2.32.1-dev-build-
|
|
43
|
+
"@contentful/experience-design-system-types": "2.32.1-dev-build-4052dd5.0",
|
|
44
|
+
"@contentful/experience-design-system-cli-v2": "2.32.1-dev-build-4052dd5.0"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
47
|
"@tsconfig/node24": "^24.0.4",
|
|
@@ -53,9 +53,9 @@
|
|
|
53
53
|
"ink-testing-library": "^4.0.0",
|
|
54
54
|
"typescript-eslint": "^8.67.0",
|
|
55
55
|
"vitest": "^4.0.16",
|
|
56
|
-
"@contentful/experience-design-system-generation": "2.32.1-dev-build-
|
|
57
|
-
"@contentful/experience-design-system-client": "2.32.1-dev-build-
|
|
58
|
-
"@contentful/experience-design-system-extraction": "2.32.1-dev-build-
|
|
56
|
+
"@contentful/experience-design-system-generation": "2.32.1-dev-build-4052dd5.0",
|
|
57
|
+
"@contentful/experience-design-system-client": "2.32.1-dev-build-4052dd5.0",
|
|
58
|
+
"@contentful/experience-design-system-extraction": "2.32.1-dev-build-4052dd5.0"
|
|
59
59
|
},
|
|
60
60
|
"repository": {
|
|
61
61
|
"type": "git",
|