@contentful/experience-design-system-cli 2.35.1-dev-build-a2149178.0 → 2.35.1-dev-build-36aa669d.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 -5
- package/dist/src/tui/home/home.d.ts +0 -1
- package/dist/src/tui/home/home.theme.d.ts +0 -11
- package/legacy/dist/src/analyze/extract-command.d.ts +4 -0
- package/legacy/dist/src/import/tui/WizardApp.d.ts +7 -1
- package/legacy/dist/src/import/tui/run-selection-agent.d.ts +1 -0
- package/legacy/dist/src/import/tui/wizard-state-transitions.d.ts +3 -0
- package/legacy/dist/src/index.js +1329 -213
- package/legacy/dist/src/map-tokens/tui/MapTokensView.d.ts +1 -0
- package/legacy/dist/src/session/cache-keys.d.ts +22 -0
- package/legacy/dist/src/session/core/components/hash-component-shape.d.ts +5 -0
- package/legacy/dist/src/session/core/tokens/hash-token-content.d.ts +1 -0
- package/legacy/dist/src/session/db.d.ts +72 -2
- package/legacy/package.json +1 -5
- package/package.json +3 -7
- package/legacy/skills/debate-select.md +0 -23
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type Skill } from '@contentful/experience-design-system-generation';
|
|
2
|
+
/** sha256 hex of a string. Stable across runs. */
|
|
3
|
+
export declare function hashContent(content: string): string;
|
|
4
|
+
/** sha256 hex of a file's UTF-8 content. */
|
|
5
|
+
export declare function hashFile(filePath: string): Promise<string>;
|
|
6
|
+
/**
|
|
7
|
+
* Hash the prompt content for a skill — either the bundled skill file shipped
|
|
8
|
+
* with the CLI, or a custom override path. Used to key the select_cache and
|
|
9
|
+
* generation_cache so cache entries invalidate when the prompt itself changes
|
|
10
|
+
* (including bundled-skill updates across CLI versions).
|
|
11
|
+
*
|
|
12
|
+
* Also folds in the resolved agent and model: a cache hit must not stand in
|
|
13
|
+
* for an agent run that was never made with the currently requested
|
|
14
|
+
* agent/model, or `--agent`/`--model` overrides would appear to be ignored
|
|
15
|
+
* whenever a prior cache entry already exists for the same input/prompt.
|
|
16
|
+
*
|
|
17
|
+
* @param skill — which skill (matches resolveSkillPath in prompt-builder)
|
|
18
|
+
* @param agent — resolved agent name for this run
|
|
19
|
+
* @param model — resolved model for this run (undefined resolves to the agent's default)
|
|
20
|
+
* @param skillPathOverride — optional absolute/relative path to a custom prompt
|
|
21
|
+
*/
|
|
22
|
+
export declare function hashPromptForSkill(skill: Skill, agent: string, model: string | undefined, skillPathOverride?: string, extraInputs?: string[], skillContentOverride?: string): Promise<string>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function hashTokenContent(rawTokenContent: string): string;
|
|
@@ -6,6 +6,8 @@ import type { ComponentTypeSummary } from '@contentful/experience-design-system-
|
|
|
6
6
|
import type { SlotCycle, SlotEdge } from '../analyze/cycle-detection.js';
|
|
7
7
|
import { type MatchHints as SessionMatchHints } from './repositories/sessions/read.js';
|
|
8
8
|
import { type SessionResolution } from './services/session-resolver.js';
|
|
9
|
+
export { hashComponentShape as computeComponentInputHash } from './core/components/hash-component-shape.js';
|
|
10
|
+
export { hashTokenContent as computeTokenInputHash } from './core/tokens/hash-token-content.js';
|
|
9
11
|
export { getDtcgTokensForSession as loadDTCGTokens, getRawTokenNamePaths as loadRawTokenNamePaths, getRawTokenNamePathRows as loadRawTokenNamePathRows, } from './repositories/tokens/read.js';
|
|
10
12
|
export { storeDtcgTokens as storeDTCGTokens } from './services/tokens/store-dtcg-tokens.js';
|
|
11
13
|
export { applyTokenToolCalls } from './services/tokens/apply-tool-calls.js';
|
|
@@ -110,6 +112,29 @@ export declare function seedDefaultsFromChangedItems(db: DatabaseSync, sessionId
|
|
|
110
112
|
proposed: object;
|
|
111
113
|
}>): number;
|
|
112
114
|
export declare function backfillUnclassifiedProps(db: DatabaseSync, sessionId: string): number;
|
|
115
|
+
export type CacheEntityType = 'component' | 'token_set' | 'token_mapping';
|
|
116
|
+
export interface CacheEntry {
|
|
117
|
+
inputHash: string;
|
|
118
|
+
entityType: CacheEntityType;
|
|
119
|
+
entityId: string;
|
|
120
|
+
sourceSessionId: string;
|
|
121
|
+
humanEdited: boolean;
|
|
122
|
+
promptHash: string;
|
|
123
|
+
createdAt: string;
|
|
124
|
+
updatedAt: string;
|
|
125
|
+
}
|
|
126
|
+
export declare function computeMapTokensInputHash(db: DatabaseSync, sessionId: string, componentSourceRefs?: readonly ComponentSourceRef[]): string;
|
|
127
|
+
export declare function lookupCache(db: DatabaseSync, inputHash: string, entityType: CacheEntityType, entityId: string, promptHash?: string): CacheEntry | null;
|
|
128
|
+
export declare function lookupCacheByEntity(db: DatabaseSync, entityType: CacheEntityType, entityId: string): CacheEntry | null;
|
|
129
|
+
export declare function storeCache(db: DatabaseSync, inputHash: string, entityType: CacheEntityType, entityId: string, sourceSessionId: string, humanEdited: boolean, promptHash?: string): void;
|
|
130
|
+
export declare function storeCaches(db: DatabaseSync, entries: Array<{
|
|
131
|
+
inputHash: string;
|
|
132
|
+
entityType: CacheEntityType;
|
|
133
|
+
entityId: string;
|
|
134
|
+
sourceSessionId: string;
|
|
135
|
+
humanEdited: boolean;
|
|
136
|
+
promptHash?: string;
|
|
137
|
+
}>): void;
|
|
113
138
|
export declare function storeScannedFiles(db: DatabaseSync, sessionId: string, filePaths: string[]): void;
|
|
114
139
|
export declare function loadScannedFiles(db: DatabaseSync, sessionId: string): string[];
|
|
115
140
|
export declare function storeSlotCycles(db: DatabaseSync, sessionId: string, cycles: Array<SlotCycle & {
|
|
@@ -120,12 +145,57 @@ export interface StoredSlotCycle extends SlotCycle {
|
|
|
120
145
|
}
|
|
121
146
|
export declare function loadSlotCycles(db: DatabaseSync, sessionId: string): StoredSlotCycle[];
|
|
122
147
|
export declare function clearSlotCycles(db: DatabaseSync, sessionId: string): void;
|
|
123
|
-
|
|
148
|
+
export declare function markCacheHumanEdited(db: DatabaseSync, entityType: 'component' | 'token_set', entityId: string): void;
|
|
149
|
+
export interface UnknownSlotAllowedComponent {
|
|
124
150
|
componentId: string;
|
|
125
151
|
componentName: string;
|
|
126
152
|
slotName: string;
|
|
127
153
|
allowedComponent: string;
|
|
128
154
|
}
|
|
155
|
+
export declare function findUnknownSlotAllowedComponents(db: DatabaseSync, sessionId: string, allowedComponentNames: ReadonlySet<string>, componentId?: string): UnknownSlotAllowedComponent[];
|
|
129
156
|
/** Remove slot references that cannot resolve in the current manifest or target space. */
|
|
130
157
|
export declare function filterUnknownSlotAllowedComponents(db: DatabaseSync, sessionId: string, allowedComponentNames: ReadonlySet<string>): UnknownSlotAllowedComponent[];
|
|
131
|
-
export
|
|
158
|
+
export interface CopyComponentFromCacheOptions {
|
|
159
|
+
allowedComponentNames?: ReadonlySet<string>;
|
|
160
|
+
}
|
|
161
|
+
export declare function copyComponentFromCache(db: DatabaseSync, sourceSessionId: string, targetSessionId: string, componentId: string, manageTransaction?: boolean, options?: CopyComponentFromCacheOptions): void;
|
|
162
|
+
export declare function copyComponentsFromCache(db: DatabaseSync, entries: Array<{
|
|
163
|
+
sourceSessionId: string;
|
|
164
|
+
targetSessionId: string;
|
|
165
|
+
componentId: string;
|
|
166
|
+
}>, options?: CopyComponentFromCacheOptions): void;
|
|
167
|
+
export declare function copyTokensFromCache(db: DatabaseSync, sourceSessionId: string, targetSessionId: string): void;
|
|
168
|
+
export declare function copyMapTokensFromCache(db: DatabaseSync, sourceSessionId: string, targetSessionId: string): number;
|
|
169
|
+
export declare function getCliCacheVersion(): Promise<string>;
|
|
170
|
+
export interface ExtractCacheEntry {
|
|
171
|
+
filePath: string;
|
|
172
|
+
fileHash: string;
|
|
173
|
+
cliVersion: string;
|
|
174
|
+
createdAt: string;
|
|
175
|
+
updatedAt: string;
|
|
176
|
+
components: RawComponentDefinition[];
|
|
177
|
+
}
|
|
178
|
+
export declare function storeExtractCache(db: DatabaseSync, filePath: string, fileHash: string, cliVersion: string, components: RawComponentDefinition[]): void;
|
|
179
|
+
export declare function lookupExtractCache(db: DatabaseSync, fileHash: string, cliVersion: string): ExtractCacheEntry | null;
|
|
180
|
+
/**
|
|
181
|
+
* Content-addressed cache for the composition resolver's raw agent output
|
|
182
|
+
* (authored parser source or emitted-edge JSONL). Keyed by a hash of the
|
|
183
|
+
* candidate files + producer identity (`composition-cache-key.ts`), scoped by
|
|
184
|
+
* `cli_version` so a prompt/skill change invalidates stale entries. Replaces
|
|
185
|
+
* the former on-disk `~/.contentful/.../composition-cache` store so all CLI
|
|
186
|
+
* caches live in the one pipeline DB.
|
|
187
|
+
*/
|
|
188
|
+
export declare function storeCompositionCache(db: DatabaseSync, inputHash: string, cliVersion: string, agentOutput: string): void;
|
|
189
|
+
export declare function lookupCompositionCache(db: DatabaseSync, inputHash: string, cliVersion: string): string | null;
|
|
190
|
+
export type SelectDecision = 'accepted' | 'rejected';
|
|
191
|
+
export interface SelectCacheEntry {
|
|
192
|
+
componentHash: string;
|
|
193
|
+
promptHash: string;
|
|
194
|
+
cliVersion: string;
|
|
195
|
+
decision: SelectDecision;
|
|
196
|
+
reason: string | null;
|
|
197
|
+
createdAt: string;
|
|
198
|
+
updatedAt: string;
|
|
199
|
+
}
|
|
200
|
+
export declare function storeSelectCache(db: DatabaseSync, componentHash: string, promptHash: string, cliVersion: string, decision: SelectDecision, reason: string | null): void;
|
|
201
|
+
export declare function lookupSelectCache(db: DatabaseSync, componentHash: string, promptHash: string, cliVersion: string): SelectCacheEntry | null;
|
package/legacy/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contentful/experience-design-system-cli",
|
|
3
|
-
"version": "2.35.1-dev-build-
|
|
3
|
+
"version": "2.35.1-dev-build-36aa669d.0",
|
|
4
4
|
"description": "Contentful Experiences design system import CLI",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -53,9 +53,6 @@
|
|
|
53
53
|
"typescript": "^5.9.3"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
|
-
"@contentful/experience-design-system-agents": "workspace:*",
|
|
57
|
-
"@contentful/experience-design-system-extraction": "workspace:*",
|
|
58
|
-
"@contentful/experience-design-system-generation": "workspace:*",
|
|
59
56
|
"@tsconfig/node24": "^24.0.4",
|
|
60
57
|
"@types/node": "^24.0.3",
|
|
61
58
|
"@types/react": "^18.3.24",
|
|
@@ -63,7 +60,6 @@
|
|
|
63
60
|
"eslint": "^9.39.5",
|
|
64
61
|
"eslint-config-prettier": "^10.1.8",
|
|
65
62
|
"eslint-plugin-prettier": "^5.5.6",
|
|
66
|
-
"ink-testing-library": "^4.0.0",
|
|
67
63
|
"typescript-eslint": "^8.67.0",
|
|
68
64
|
"vitest": "^4.0.16"
|
|
69
65
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@contentful/experience-design-system-cli",
|
|
3
|
-
"version": "2.35.1-dev-build-
|
|
3
|
+
"version": "2.35.1-dev-build-36aa669d.0",
|
|
4
4
|
"description": "Contentful Experiences design system import CLI",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"svelte": "^5.56.4",
|
|
43
43
|
"ts-morph": "^27.0.2",
|
|
44
44
|
"typescript": "^5.9.3",
|
|
45
|
-
"@contentful/experience-design-system-types": "2.35.1-dev-build-
|
|
45
|
+
"@contentful/experience-design-system-types": "2.35.1-dev-build-36aa669d.0"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"@tsconfig/node24": "^24.0.4",
|
|
@@ -52,12 +52,8 @@
|
|
|
52
52
|
"eslint": "^9.39.5",
|
|
53
53
|
"eslint-config-prettier": "^10.1.8",
|
|
54
54
|
"eslint-plugin-prettier": "^5.5.6",
|
|
55
|
-
"ink-testing-library": "^4.0.0",
|
|
56
55
|
"typescript-eslint": "^8.67.0",
|
|
57
|
-
"vitest": "^4.0.16"
|
|
58
|
-
"@contentful/experience-design-system-agents": "2.35.1-dev-build-a2149178.0",
|
|
59
|
-
"@contentful/experience-design-system-generation": "2.35.1-dev-build-a2149178.0",
|
|
60
|
-
"@contentful/experience-design-system-extraction": "2.35.1-dev-build-a2149178.0"
|
|
56
|
+
"vitest": "^4.0.16"
|
|
61
57
|
},
|
|
62
58
|
"repository": {
|
|
63
59
|
"type": "git",
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# Debate component selection
|
|
2
|
-
|
|
3
|
-
This skill is used after independent component-selection agents disagree about an interpretive question. The caller supplies one component, its source evidence, the disagreement record, and your role (for or against).
|
|
4
|
-
|
|
5
|
-
The caller dispatches a blind FOR/AGAINST pair; argue only the side named in your prompt and do not assume or describe the other participant's response.
|
|
6
|
-
|
|
7
|
-
## Scope
|
|
8
|
-
|
|
9
|
-
- Argue only the exact disagreement in the prompt.
|
|
10
|
-
- Use the supplied component data and citations as the evidence base.
|
|
11
|
-
- For slot-realness or allowed-component questions, reason from concrete caller evidence rather than from a ReactNode-shaped prop alone.
|
|
12
|
-
- Keep the argument specific enough for an orchestrator to make an independent determination.
|
|
13
|
-
- Do not write files, call tools, or invent evidence that is not present in the prompt.
|
|
14
|
-
|
|
15
|
-
## Output protocol
|
|
16
|
-
|
|
17
|
-
Emit exactly one JSON object on one line:
|
|
18
|
-
|
|
19
|
-
~~~json
|
|
20
|
-
{"role":"for","disagreement_id":"d1","argument":"...","evidence":[{"source":"src/Panel.tsx","line":"42","quote":"<Card><Badge /></Card>"}]}
|
|
21
|
-
~~~
|
|
22
|
-
|
|
23
|
-
Use the role and disagreement ID supplied by the caller. evidence must be an array of objects with source, line, and quote strings; use an empty array when no citable source evidence is supplied.
|