@inharness-ai/claude4spec 1.0.16 → 1.0.18
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 +16 -0
- package/dist/bin/c4s/commands/tagged-list-mixed.js +2 -0
- package/dist/bin/c4s/commands/tagged-list-mixed.js.map +1 -1
- package/dist/client/assets/{arc-DrA6qHTw.js → arc-BoIjQ4Rl.js} +1 -1
- package/dist/client/assets/{architectureDiagram-3BPJPVTR-TEnwTtVX.js → architectureDiagram-3BPJPVTR-BxBVRaEg.js} +1 -1
- package/dist/client/assets/{blockDiagram-GPEHLZMM-txRnQm5w.js → blockDiagram-GPEHLZMM-CUZNbllz.js} +1 -1
- package/dist/client/assets/{c4Diagram-AAUBKEIU-ad8X3Q8n.js → c4Diagram-AAUBKEIU-CvuTKwEz.js} +1 -1
- package/dist/client/assets/channel-Ba45UACg.js +1 -0
- package/dist/client/assets/{chunk-2J33WTMH-Cp08Xa7f.js → chunk-2J33WTMH-CEO4c2pf.js} +1 -1
- package/dist/client/assets/{chunk-4BX2VUAB-Dc_0On6j.js → chunk-4BX2VUAB-Bu8DCHu0.js} +1 -1
- package/dist/client/assets/{chunk-55IACEB6-8d1qQ5z6.js → chunk-55IACEB6-DIN8FXXB.js} +1 -1
- package/dist/client/assets/{chunk-727SXJPM-TZenviWx.js → chunk-727SXJPM-DArSpufF.js} +1 -1
- package/dist/client/assets/{chunk-AQP2D5EJ-DKRRWy-J.js → chunk-AQP2D5EJ-DvyQ3boK.js} +1 -1
- package/dist/client/assets/{chunk-FMBD7UC4-DLEErJWK.js → chunk-FMBD7UC4-DzYhHpnC.js} +1 -1
- package/dist/client/assets/{chunk-ND2GUHAM-pKGgwz_0.js → chunk-ND2GUHAM-DocECmh1.js} +1 -1
- package/dist/client/assets/{chunk-QZHKN3VN-DVcNz8ng.js → chunk-QZHKN3VN-cUsgOLYm.js} +1 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-DigWu50-.js +1 -0
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-DigWu50-.js +1 -0
- package/dist/client/assets/{cose-bilkent-S5V4N54A-DZejbxEG.js → cose-bilkent-S5V4N54A-BXlU_dXh.js} +1 -1
- package/dist/client/assets/{dagre-BM42HDAG-DrPrkFcW.js → dagre-BM42HDAG-CmrHrBPK.js} +1 -1
- package/dist/client/assets/{diagram-2AECGRRQ-Dpn8TJa2.js → diagram-2AECGRRQ-CV4Tc8wQ.js} +1 -1
- package/dist/client/assets/{diagram-5GNKFQAL-BxkzEc_t.js → diagram-5GNKFQAL-BiBsPCGc.js} +1 -1
- package/dist/client/assets/{diagram-KO2AKTUF-KG0o4LQ7.js → diagram-KO2AKTUF-DA09S_op.js} +1 -1
- package/dist/client/assets/{diagram-LMA3HP47-CJ-AjQPt.js → diagram-LMA3HP47-DBaod99I.js} +1 -1
- package/dist/client/assets/{diagram-OG6HWLK6-D_FG9cDJ.js → diagram-OG6HWLK6-ClJXH4o0.js} +1 -1
- package/dist/client/assets/{erDiagram-TEJ5UH35-DllhUlzY.js → erDiagram-TEJ5UH35-9ic-AAly.js} +1 -1
- package/dist/client/assets/{flowDiagram-I6XJVG4X-Bg3OotXu.js → flowDiagram-I6XJVG4X-8UWNEpWY.js} +1 -1
- package/dist/client/assets/{ganttDiagram-6RSMTGT7-BUpUL2Cj.js → ganttDiagram-6RSMTGT7-ZMUkzsKr.js} +1 -1
- package/dist/client/assets/{gitGraphDiagram-PVQCEYII-DMRhyWth.js → gitGraphDiagram-PVQCEYII-5MgsfBQ-.js} +1 -1
- package/dist/client/assets/{index-BB2RmhGR.js → index-B3XLrPs9.js} +1 -1
- package/dist/client/assets/{index-BXzOTCgN.css → index-BKuHIaMg.css} +1 -1
- package/dist/client/assets/index-BSPNo0Xa.js +795 -0
- package/dist/client/assets/{index-Daewu-VD.js → index-D7DH-SO5.js} +1 -1
- package/dist/client/assets/{infoDiagram-5YYISTIA-Bq9D64Ar.js → infoDiagram-5YYISTIA-DnoyGZzF.js} +1 -1
- package/dist/client/assets/{ishikawaDiagram-YF4QCWOH-DIaKHHF-.js → ishikawaDiagram-YF4QCWOH-DXzuF94t.js} +1 -1
- package/dist/client/assets/{journeyDiagram-JHISSGLW-gQWGLTeZ.js → journeyDiagram-JHISSGLW-AEPglDXi.js} +1 -1
- package/dist/client/assets/{kanban-definition-UN3LZRKU-vRgZ5RjE.js → kanban-definition-UN3LZRKU-D0-kFv2f.js} +1 -1
- package/dist/client/assets/{linear-B4a11szP.js → linear-CZwFXsxu.js} +1 -1
- package/dist/client/assets/{mermaid.core-JhUbsJFB.js → mermaid.core-BikmxM36.js} +4 -4
- package/dist/client/assets/{mindmap-definition-RKZ34NQL-ZH-Oz_D-.js → mindmap-definition-RKZ34NQL-C95lTdDB.js} +1 -1
- package/dist/client/assets/{pieDiagram-4H26LBE5-6rpNrJR6.js → pieDiagram-4H26LBE5-CMeXZFX8.js} +1 -1
- package/dist/client/assets/{quadrantDiagram-W4KKPZXB-DpTKtxEM.js → quadrantDiagram-W4KKPZXB-D1dG1F2s.js} +1 -1
- package/dist/client/assets/{requirementDiagram-4Y6WPE33-DpDvZkrK.js → requirementDiagram-4Y6WPE33-RPNqJRNK.js} +1 -1
- package/dist/client/assets/{sankeyDiagram-5OEKKPKP-KKjWCTYP.js → sankeyDiagram-5OEKKPKP-DQ4EB8Xb.js} +1 -1
- package/dist/client/assets/{sequenceDiagram-3UESZ5HK-BCmXos1U.js → sequenceDiagram-3UESZ5HK-Dn-VJOlP.js} +1 -1
- package/dist/client/assets/{stateDiagram-AJRCARHV-Xq7jqpMj.js → stateDiagram-AJRCARHV-CCpprZJO.js} +1 -1
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-DZMO7v7d.js +1 -0
- package/dist/client/assets/{timeline-definition-PNZ67QCA-CMmq8p5q.js → timeline-definition-PNZ67QCA-h0cUr7kp.js} +1 -1
- package/dist/client/assets/{vennDiagram-CIIHVFJN-DgK-w2Jv.js → vennDiagram-CIIHVFJN-BTZzKsPH.js} +1 -1
- package/dist/client/assets/{wardley-L42UT6IY-C5CwlFHh.js → wardley-L42UT6IY-D1eOaFAH.js} +1 -1
- package/dist/client/assets/{wardleyDiagram-YWT4CUSO-D47CtDSc.js → wardleyDiagram-YWT4CUSO-wsnKkjjR.js} +1 -1
- package/dist/client/assets/{xychartDiagram-2RQKCTM6-C1M_xTVv.js → xychartDiagram-2RQKCTM6-BCebuOGO.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/server/config.js.map +1 -1
- package/dist/server/db/migrations/036_design_system.sql +16 -0
- package/dist/server/db/migrations/037_ui_view_design_system_slug.sql +7 -0
- package/dist/server/db/migrations/038_chat_queued_message.sql +18 -0
- package/dist/server/db/migrations/039_agent_credential.sql +17 -0
- package/dist/server/domain/raw-entity-reader.d.ts +1 -1
- package/dist/server/domain/raw-entity-reader.js +19 -3
- package/dist/server/domain/raw-entity-reader.js.map +1 -1
- package/dist/server/entities/design-system/mcp-server.d.ts +10 -0
- package/dist/server/entities/design-system/mcp-server.js +188 -0
- package/dist/server/entities/design-system/mcp-server.js.map +1 -0
- package/dist/server/entities/design-system/plugin.d.ts +3 -0
- package/dist/server/entities/design-system/plugin.js +34 -0
- package/dist/server/entities/design-system/plugin.js.map +1 -0
- package/dist/server/entities/design-system/routes.d.ts +5 -0
- package/dist/server/entities/design-system/routes.js +86 -0
- package/dist/server/entities/design-system/routes.js.map +1 -0
- package/dist/server/entities/design-system/serializer.d.ts +29 -0
- package/dist/server/entities/design-system/serializer.js +0 -0
- package/dist/server/entities/design-system/serializer.js.map +1 -0
- package/dist/server/entities/design-system/services.d.ts +49 -0
- package/dist/server/entities/design-system/services.js +225 -0
- package/dist/server/entities/design-system/services.js.map +1 -0
- package/dist/server/entities/design-system/system-prompt.d.ts +2 -0
- package/dist/server/entities/design-system/system-prompt.js +15 -0
- package/dist/server/entities/design-system/system-prompt.js.map +1 -0
- package/dist/server/entities/ui-view/mcp-server.js +14 -0
- package/dist/server/entities/ui-view/mcp-server.js.map +1 -1
- package/dist/server/entities/ui-view/serializer.d.ts +2 -0
- package/dist/server/entities/ui-view/serializer.js +25 -3
- package/dist/server/entities/ui-view/serializer.js.map +1 -1
- package/dist/server/entities/ui-view/services.js +22 -8
- package/dist/server/entities/ui-view/services.js.map +1 -1
- package/dist/server/mcp/c4s-reader.js +2 -0
- package/dist/server/mcp/c4s-reader.js.map +1 -1
- package/dist/server/routes/agent-credential.d.ts +9 -0
- package/dist/server/routes/agent-credential.js +43 -0
- package/dist/server/routes/agent-credential.js.map +1 -0
- package/dist/server/routes/agent-turn.d.ts +10 -0
- package/dist/server/routes/agent-turn.js +154 -85
- package/dist/server/routes/agent-turn.js.map +1 -1
- package/dist/server/routes/chat.js +99 -7
- package/dist/server/routes/chat.js.map +1 -1
- package/dist/server/routes/threads.js +12 -0
- package/dist/server/routes/threads.js.map +1 -1
- package/dist/server/serialization/registerAll.js +2 -0
- package/dist/server/serialization/registerAll.js.map +1 -1
- package/dist/server/serialization/writer.d.ts +2 -1
- package/dist/server/services/agent-credential-crypto.d.ts +4 -0
- package/dist/server/services/agent-credential-crypto.js +59 -0
- package/dist/server/services/agent-credential-crypto.js.map +1 -0
- package/dist/server/services/agent-credential.d.ts +32 -0
- package/dist/server/services/agent-credential.js +67 -0
- package/dist/server/services/agent-credential.js.map +1 -0
- package/dist/server/services/chat.d.ts +24 -1
- package/dist/server/services/chat.js +96 -0
- package/dist/server/services/chat.js.map +1 -1
- package/dist/server/services/entity-indexer.js +16 -2
- package/dist/server/services/entity-indexer.js.map +1 -1
- package/dist/server/services/entity-writer.d.ts +2 -0
- package/dist/server/services/entity-writer.js +12 -0
- package/dist/server/services/entity-writer.js.map +1 -1
- package/dist/server/services/references.js +20 -0
- package/dist/server/services/references.js.map +1 -1
- package/dist/server/services/slug.d.ts +1 -0
- package/dist/server/services/slug.js +6 -0
- package/dist/server/services/slug.js.map +1 -1
- package/dist/server/workspace/project-context.js +6 -0
- package/dist/server/workspace/project-context.js.map +1 -1
- package/dist/shared/agent-credential.d.ts +19 -0
- package/dist/shared/agent-credential.js +6 -0
- package/dist/shared/agent-credential.js.map +1 -0
- package/dist/shared/design-system.d.ts +20 -0
- package/dist/shared/design-system.js +222 -0
- package/dist/shared/design-system.js.map +1 -0
- package/dist/shared/entities.d.ts +127 -1
- package/dist/shared/entities.js +4 -0
- package/dist/shared/entities.js.map +1 -1
- package/package.json +3 -3
- package/dist/client/assets/channel-zmRfuI3H.js +0 -1
- package/dist/client/assets/classDiagram-4FO5ZUOK-B9RFgPu-.js +0 -1
- package/dist/client/assets/classDiagram-v2-Q7XG4LA2-B9RFgPu-.js +0 -1
- package/dist/client/assets/index-DRFbyGvK.js +0 -788
- package/dist/client/assets/stateDiagram-v2-BHNVJYJU-C3mDHsxD.js +0 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure, deterministic design-system token logic shared by the server (L2 service
|
|
3
|
+
* + L9 serializer) and the client (L5 live preview). No DB / no I/O — the single
|
|
4
|
+
* implementation of `resolve()` and `lintTokens()` referenced by the brief.
|
|
5
|
+
*/
|
|
6
|
+
import { type DesignMode, type DesignSystem, type DesignSystemListItem, type ResolvedTokenValue, type TokenGroup } from './entities.js';
|
|
7
|
+
export declare function parseGroups(raw: string | unknown): TokenGroup[];
|
|
8
|
+
export declare function parseModes(raw: string | unknown): DesignMode[];
|
|
9
|
+
export declare function toListItem(ds: DesignSystem): DesignSystemListItem;
|
|
10
|
+
export declare function aliasTarget(value: string): string | null;
|
|
11
|
+
/**
|
|
12
|
+
* Resolve every token to its concrete value:
|
|
13
|
+
* 1. recursive `{token}` alias expansion with cycle detection → `unresolved`
|
|
14
|
+
* (never throws),
|
|
15
|
+
* 2. active-mode overrides applied over base (Base = no overrides); unknown
|
|
16
|
+
* override token ignored,
|
|
17
|
+
* 3. name → resolvedValue (object for composite tokens).
|
|
18
|
+
*/
|
|
19
|
+
export declare function resolve(groups: TokenGroup[], modes: DesignMode[], activeMode?: string): Record<string, ResolvedTokenValue>;
|
|
20
|
+
export declare function lintTokens(groups: TokenGroup[], modes: DesignMode[]): string[];
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure, deterministic design-system token logic shared by the server (L2 service
|
|
3
|
+
* + L9 serializer) and the client (L5 live preview). No DB / no I/O — the single
|
|
4
|
+
* implementation of `resolve()` and `lintTokens()` referenced by the brief.
|
|
5
|
+
*/
|
|
6
|
+
import { COMPOSITE_TOKEN_TYPES, UNRESOLVED_TOKEN, } from './entities.js';
|
|
7
|
+
// ─── parsing (tolerant of raw JSON strings or already-parsed arrays) ─────────
|
|
8
|
+
function coerceArray(raw) {
|
|
9
|
+
if (Array.isArray(raw))
|
|
10
|
+
return raw;
|
|
11
|
+
if (typeof raw === 'string') {
|
|
12
|
+
try {
|
|
13
|
+
const parsed = JSON.parse(raw);
|
|
14
|
+
return Array.isArray(parsed) ? parsed : [];
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
return [];
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return [];
|
|
21
|
+
}
|
|
22
|
+
function parseValue(value) {
|
|
23
|
+
if (typeof value === 'string')
|
|
24
|
+
return value;
|
|
25
|
+
if (value && typeof value === 'object') {
|
|
26
|
+
return Object.fromEntries(Object.entries(value).map(([k, v]) => [k, String(v)]));
|
|
27
|
+
}
|
|
28
|
+
return '';
|
|
29
|
+
}
|
|
30
|
+
function parseToken(t) {
|
|
31
|
+
const o = (t ?? {});
|
|
32
|
+
const out = {
|
|
33
|
+
name: String(o.name ?? ''),
|
|
34
|
+
type: String(o.type ?? 'string'),
|
|
35
|
+
value: parseValue(o.value),
|
|
36
|
+
};
|
|
37
|
+
if (typeof o.description === 'string')
|
|
38
|
+
out.description = o.description;
|
|
39
|
+
return out;
|
|
40
|
+
}
|
|
41
|
+
export function parseGroups(raw) {
|
|
42
|
+
return coerceArray(raw)
|
|
43
|
+
.filter((g) => g !== null && typeof g === 'object')
|
|
44
|
+
.map((g) => ({
|
|
45
|
+
name: String(g.name ?? ''),
|
|
46
|
+
tier: g.tier === 'semantic' ? 'semantic' : 'primitive',
|
|
47
|
+
tokens: Array.isArray(g.tokens) ? g.tokens.map(parseToken) : [],
|
|
48
|
+
}));
|
|
49
|
+
}
|
|
50
|
+
export function parseModes(raw) {
|
|
51
|
+
return coerceArray(raw)
|
|
52
|
+
.filter((m) => m !== null && typeof m === 'object')
|
|
53
|
+
.map((m) => ({
|
|
54
|
+
name: String(m.name ?? ''),
|
|
55
|
+
overrides: Array.isArray(m.overrides)
|
|
56
|
+
? m.overrides
|
|
57
|
+
.filter((o) => o !== null && typeof o === 'object')
|
|
58
|
+
.map((o) => ({ token: String(o.token ?? ''), value: parseValue(o.value) }))
|
|
59
|
+
: [],
|
|
60
|
+
}));
|
|
61
|
+
}
|
|
62
|
+
export function toListItem(ds) {
|
|
63
|
+
return {
|
|
64
|
+
slug: ds.slug,
|
|
65
|
+
name: ds.name,
|
|
66
|
+
description: ds.description,
|
|
67
|
+
groupCount: ds.groups.length,
|
|
68
|
+
tokenCount: ds.groups.reduce((acc, g) => acc + (g.tokens?.length ?? 0), 0),
|
|
69
|
+
modeCount: ds.modes.length,
|
|
70
|
+
tags: ds.tags,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
// ─── resolve() ───────────────────────────────────────────────────────────────
|
|
74
|
+
const ALIAS_RE = /^\{([^}]+)\}$/;
|
|
75
|
+
export function aliasTarget(value) {
|
|
76
|
+
const m = ALIAS_RE.exec(value.trim());
|
|
77
|
+
return m ? m[1].trim() : null;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Resolve every token to its concrete value:
|
|
81
|
+
* 1. recursive `{token}` alias expansion with cycle detection → `unresolved`
|
|
82
|
+
* (never throws),
|
|
83
|
+
* 2. active-mode overrides applied over base (Base = no overrides); unknown
|
|
84
|
+
* override token ignored,
|
|
85
|
+
* 3. name → resolvedValue (object for composite tokens).
|
|
86
|
+
*/
|
|
87
|
+
export function resolve(groups, modes, activeMode) {
|
|
88
|
+
const base = new Map();
|
|
89
|
+
for (const g of groups ?? []) {
|
|
90
|
+
for (const t of g.tokens ?? []) {
|
|
91
|
+
if (t && typeof t.name === 'string' && t.name)
|
|
92
|
+
base.set(t.name, t.value);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
if (activeMode) {
|
|
96
|
+
const mode = (modes ?? []).find((m) => m.name === activeMode);
|
|
97
|
+
if (mode) {
|
|
98
|
+
for (const ov of mode.overrides ?? []) {
|
|
99
|
+
if (base.has(ov.token))
|
|
100
|
+
base.set(ov.token, ov.value);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
const resolveValue = (value, seen) => {
|
|
105
|
+
if (typeof value === 'string') {
|
|
106
|
+
const target = aliasTarget(value);
|
|
107
|
+
if (target === null)
|
|
108
|
+
return value; // literal
|
|
109
|
+
if (seen.has(target) || !base.has(target))
|
|
110
|
+
return UNRESOLVED_TOKEN;
|
|
111
|
+
const next = new Set(seen);
|
|
112
|
+
next.add(target);
|
|
113
|
+
return resolveValue(base.get(target), next);
|
|
114
|
+
}
|
|
115
|
+
const out = {};
|
|
116
|
+
for (const [k, fieldVal] of Object.entries(value ?? {})) {
|
|
117
|
+
const r = resolveValue(typeof fieldVal === 'string' ? fieldVal : '', seen);
|
|
118
|
+
out[k] = typeof r === 'string' ? r : UNRESOLVED_TOKEN;
|
|
119
|
+
}
|
|
120
|
+
return out;
|
|
121
|
+
};
|
|
122
|
+
const result = {};
|
|
123
|
+
for (const [name, value] of base) {
|
|
124
|
+
result[name] = resolveValue(value, new Set([name]));
|
|
125
|
+
}
|
|
126
|
+
return result;
|
|
127
|
+
}
|
|
128
|
+
// ─── lintTokens() — warnings only; never blocks a write ──────────────────────
|
|
129
|
+
function isComposite(type) {
|
|
130
|
+
return COMPOSITE_TOKEN_TYPES.includes(type);
|
|
131
|
+
}
|
|
132
|
+
function aliasTargetOf(t) {
|
|
133
|
+
if (!t || typeof t.value !== 'string')
|
|
134
|
+
return null;
|
|
135
|
+
return aliasTarget(t.value);
|
|
136
|
+
}
|
|
137
|
+
function detectCycles(base) {
|
|
138
|
+
const out = [];
|
|
139
|
+
const reported = new Set();
|
|
140
|
+
for (const start of base.keys()) {
|
|
141
|
+
const seen = [];
|
|
142
|
+
const seenSet = new Set();
|
|
143
|
+
let cur = start;
|
|
144
|
+
while (cur && base.has(cur)) {
|
|
145
|
+
if (seenSet.has(cur)) {
|
|
146
|
+
const idx = seen.indexOf(cur);
|
|
147
|
+
const cycle = seen.slice(idx).concat(cur);
|
|
148
|
+
const key = [...new Set(cycle)].sort().join('|');
|
|
149
|
+
if (!reported.has(key)) {
|
|
150
|
+
reported.add(key);
|
|
151
|
+
out.push(`Alias cycle: ${cycle.join(' → ')}`);
|
|
152
|
+
}
|
|
153
|
+
break;
|
|
154
|
+
}
|
|
155
|
+
seenSet.add(cur);
|
|
156
|
+
seen.push(cur);
|
|
157
|
+
cur = aliasTargetOf(base.get(cur));
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return out;
|
|
161
|
+
}
|
|
162
|
+
export function lintTokens(groups, modes) {
|
|
163
|
+
const warnings = [];
|
|
164
|
+
const base = new Map();
|
|
165
|
+
const seenNames = new Set();
|
|
166
|
+
for (const g of groups ?? []) {
|
|
167
|
+
for (const t of g.tokens ?? []) {
|
|
168
|
+
if (!t || typeof t.name !== 'string' || !t.name)
|
|
169
|
+
continue;
|
|
170
|
+
if (seenNames.has(t.name))
|
|
171
|
+
warnings.push(`Duplicate token name '${t.name}'`);
|
|
172
|
+
seenNames.add(t.name);
|
|
173
|
+
base.set(t.name, t);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
for (const g of groups ?? []) {
|
|
177
|
+
for (const t of g.tokens ?? []) {
|
|
178
|
+
if (!t || typeof t.name !== 'string' || !t.name)
|
|
179
|
+
continue;
|
|
180
|
+
const composite = isComposite(t.type);
|
|
181
|
+
if (t.value !== null && typeof t.value === 'object' && !composite) {
|
|
182
|
+
warnings.push(`Token '${t.name}': object value requires a composite type (typography|shadow), got '${t.type}'`);
|
|
183
|
+
}
|
|
184
|
+
if (typeof t.value === 'string' && composite) {
|
|
185
|
+
warnings.push(`Token '${t.name}': type '${t.type}' expects a composite object value, got a string`);
|
|
186
|
+
}
|
|
187
|
+
const aliasRefs = [];
|
|
188
|
+
if (typeof t.value === 'string') {
|
|
189
|
+
const target = aliasTarget(t.value);
|
|
190
|
+
if (target)
|
|
191
|
+
aliasRefs.push(target);
|
|
192
|
+
else if (g.tier === 'semantic') {
|
|
193
|
+
warnings.push(`note: semantic token '${t.name}' uses a literal value instead of an alias`);
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
else if (t.value && typeof t.value === 'object') {
|
|
197
|
+
for (const fv of Object.values(t.value)) {
|
|
198
|
+
if (typeof fv === 'string') {
|
|
199
|
+
const target = aliasTarget(fv);
|
|
200
|
+
if (target)
|
|
201
|
+
aliasRefs.push(target);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
for (const ref of aliasRefs) {
|
|
206
|
+
if (!base.has(ref)) {
|
|
207
|
+
warnings.push(`Token '${t.name}': alias '{${ref}}' points to a non-existent token`);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
warnings.push(...detectCycles(base));
|
|
213
|
+
for (const m of modes ?? []) {
|
|
214
|
+
for (const ov of m.overrides ?? []) {
|
|
215
|
+
if (!base.has(ov.token)) {
|
|
216
|
+
warnings.push(`Mode '${m.name}': override targets non-existent token '${ov.token}'`);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return [...new Set(warnings)];
|
|
221
|
+
}
|
|
222
|
+
//# sourceMappingURL=design-system.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"design-system.js","sourceRoot":"","sources":["../../src/shared/design-system.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { TodoItem, UsageStats } from '@inharness-ai/agent-adapters';
|
|
2
2
|
export type { TodoItem, UsageStats };
|
|
3
|
-
export type EntityType = 'endpoint' | 'dto' | 'database-table' | 'ui-view' | 'ac' | 'section';
|
|
3
|
+
export type EntityType = 'endpoint' | 'dto' | 'database-table' | 'ui-view' | 'ac' | 'design-system' | 'section';
|
|
4
4
|
export type ChangedBy = 'user' | 'agent';
|
|
5
5
|
export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
|
|
6
6
|
export type EndpointDtoRelation = 'request' | 'response' | 'error';
|
|
@@ -194,6 +194,8 @@ export interface UiView {
|
|
|
194
194
|
url: string | null;
|
|
195
195
|
description: string | null;
|
|
196
196
|
params: UiViewParam[];
|
|
197
|
+
/** v0.1.59: structural (non-tag) relation to a design-system. NULL = none. Slug, no FK. */
|
|
198
|
+
designSystemSlug: string | null;
|
|
197
199
|
tags: string[];
|
|
198
200
|
createdAt: string;
|
|
199
201
|
updatedAt: string;
|
|
@@ -203,6 +205,8 @@ export interface UiViewCreateInput {
|
|
|
203
205
|
url?: string | null;
|
|
204
206
|
description?: string;
|
|
205
207
|
params?: UiViewParam[];
|
|
208
|
+
/** v0.1.59: slug of the referenced design-system (no FK). undefined/null = none. */
|
|
209
|
+
designSystemSlug?: string | null;
|
|
206
210
|
slug?: string;
|
|
207
211
|
tags?: string[];
|
|
208
212
|
}
|
|
@@ -211,6 +215,8 @@ export interface UiViewUpdateInput {
|
|
|
211
215
|
url?: string | null;
|
|
212
216
|
description?: string | null;
|
|
213
217
|
params?: UiViewParam[];
|
|
218
|
+
/** v0.1.59: undefined = unchanged; null = clear; string = set (dangling allowed). */
|
|
219
|
+
designSystemSlug?: string | null;
|
|
214
220
|
tags?: string[];
|
|
215
221
|
newSlug?: string;
|
|
216
222
|
}
|
|
@@ -225,6 +231,92 @@ export interface UiViewDeleteResult {
|
|
|
225
231
|
deleted: true;
|
|
226
232
|
brokenReferences: BrokenReference[];
|
|
227
233
|
}
|
|
234
|
+
export type TokenTier = 'primitive' | 'semantic';
|
|
235
|
+
/** Best-effort vocabulary — the linter warns but never hard-validates `type`. */
|
|
236
|
+
export type TokenType = 'color' | 'dimension' | 'fontFamily' | 'fontWeight' | 'fontSize' | 'lineHeight' | 'letterSpacing' | 'duration' | 'easing' | 'shadow' | 'opacity' | 'zIndex' | 'number' | 'string' | 'typography';
|
|
237
|
+
/** Token types whose `value` is a composite object (each field literal or `{alias}`). */
|
|
238
|
+
export declare const COMPOSITE_TOKEN_TYPES: readonly ["typography", "shadow"];
|
|
239
|
+
/** Literal/alias string, or a composite object (typography/shadow). */
|
|
240
|
+
export type TokenValue = string | Record<string, string>;
|
|
241
|
+
export interface DesignToken {
|
|
242
|
+
name: string;
|
|
243
|
+
/** TokenType vocabulary, but typed loosely — linter is best-effort. */
|
|
244
|
+
type: string;
|
|
245
|
+
value: TokenValue;
|
|
246
|
+
description?: string;
|
|
247
|
+
}
|
|
248
|
+
export interface TokenGroup {
|
|
249
|
+
name: string;
|
|
250
|
+
tier: TokenTier;
|
|
251
|
+
tokens: DesignToken[];
|
|
252
|
+
}
|
|
253
|
+
export interface DesignModeOverride {
|
|
254
|
+
token: string;
|
|
255
|
+
value: TokenValue;
|
|
256
|
+
}
|
|
257
|
+
export interface DesignMode {
|
|
258
|
+
name: string;
|
|
259
|
+
overrides: DesignModeOverride[];
|
|
260
|
+
}
|
|
261
|
+
export interface DesignSystem {
|
|
262
|
+
slug: string;
|
|
263
|
+
name: string;
|
|
264
|
+
description: string | null;
|
|
265
|
+
groups: TokenGroup[];
|
|
266
|
+
modes: DesignMode[];
|
|
267
|
+
tags: string[];
|
|
268
|
+
createdAt: string;
|
|
269
|
+
updatedAt: string;
|
|
270
|
+
}
|
|
271
|
+
export interface DesignSystemCreateInput {
|
|
272
|
+
name: string;
|
|
273
|
+
description?: string;
|
|
274
|
+
groups?: TokenGroup[];
|
|
275
|
+
modes?: DesignMode[];
|
|
276
|
+
/** Optional explicit slug — used by M17 restore to preserve identity. */
|
|
277
|
+
slug?: string;
|
|
278
|
+
tags?: string[];
|
|
279
|
+
}
|
|
280
|
+
export interface DesignSystemUpdateInput {
|
|
281
|
+
name?: string;
|
|
282
|
+
description?: string | null;
|
|
283
|
+
/** Full replace of the array (not per-token patch). */
|
|
284
|
+
groups?: TokenGroup[];
|
|
285
|
+
/** Full replace of the array (not per-mode patch). */
|
|
286
|
+
modes?: DesignMode[];
|
|
287
|
+
tags?: string[];
|
|
288
|
+
newSlug?: string;
|
|
289
|
+
}
|
|
290
|
+
export interface DesignSystemListQuery {
|
|
291
|
+
tags?: string[];
|
|
292
|
+
tagFilter?: 'and' | 'or';
|
|
293
|
+
search?: string;
|
|
294
|
+
limit?: number;
|
|
295
|
+
offset?: number;
|
|
296
|
+
}
|
|
297
|
+
/** Trimmed list row — counts computed server-side without the full token payload. */
|
|
298
|
+
export interface DesignSystemListItem {
|
|
299
|
+
slug: string;
|
|
300
|
+
name: string;
|
|
301
|
+
description: string | null;
|
|
302
|
+
groupCount: number;
|
|
303
|
+
tokenCount: number;
|
|
304
|
+
modeCount: number;
|
|
305
|
+
tags: string[];
|
|
306
|
+
}
|
|
307
|
+
export interface DesignSystemDanglingUiView {
|
|
308
|
+
slug: string;
|
|
309
|
+
}
|
|
310
|
+
export interface DesignSystemDeleteResult {
|
|
311
|
+
deleted: true;
|
|
312
|
+
brokenReferences: BrokenReference[];
|
|
313
|
+
/** UI views whose `designSystemSlug` pointed at the deleted record (now dangling). */
|
|
314
|
+
danglingUiViews: DesignSystemDanglingUiView[];
|
|
315
|
+
}
|
|
316
|
+
/** Resolved token value: literal string, resolved composite object, or the `unresolved` sentinel. */
|
|
317
|
+
export type ResolvedTokenValue = string | Record<string, string>;
|
|
318
|
+
/** Sentinel for an alias that cannot be resolved (cycle / missing target). Preview never crashes. */
|
|
319
|
+
export declare const UNRESOLVED_TOKEN = "unresolved";
|
|
228
320
|
export interface Tag {
|
|
229
321
|
slug: string;
|
|
230
322
|
name: string;
|
|
@@ -467,6 +559,12 @@ export interface ChatThread {
|
|
|
467
559
|
id: string;
|
|
468
560
|
title: string | null;
|
|
469
561
|
lastSessionId: string | null;
|
|
562
|
+
/** M05 0.1.61: turn-1 architecture snapshot (model + reasoning config). null until the
|
|
563
|
+
* thread has a session; controls hydrate from this when session-locked. */
|
|
564
|
+
initialArchitectureConfig: {
|
|
565
|
+
model: string;
|
|
566
|
+
architectureConfig: Record<string, unknown>;
|
|
567
|
+
} | null;
|
|
470
568
|
currentTodoItems: TodoItem[] | null;
|
|
471
569
|
planMode: boolean;
|
|
472
570
|
usage: UsageStats | null;
|
|
@@ -519,6 +617,34 @@ export interface Annotation {
|
|
|
519
617
|
to: number;
|
|
520
618
|
};
|
|
521
619
|
}
|
|
620
|
+
/**
|
|
621
|
+
* A message waiting in a thread's queue. **Frozen wire contract** — the field
|
|
622
|
+
* names must match `@inharness-ai/agent-chat`'s `QueuedMessage`, because the
|
|
623
|
+
* client hydrates queue chips from them. Derived from a `chat_queued_message`
|
|
624
|
+
* row: `id → String(id)`, `text = prompt`, `createdAt = created_at`.
|
|
625
|
+
*/
|
|
626
|
+
export interface QueuedMessage {
|
|
627
|
+
/** `String(chat_queued_message.id)` — key for cancel/chip. */
|
|
628
|
+
id: string;
|
|
629
|
+
/** `chat_queued_message.prompt`; restored to the composer on abort/clear. */
|
|
630
|
+
text: string;
|
|
631
|
+
/** ISO timestamp of when the message was enqueued. */
|
|
632
|
+
createdAt: string;
|
|
633
|
+
}
|
|
634
|
+
/** Body of `POST /api/chat/queue/:threadId` — same context as `POST /api/chat`. */
|
|
635
|
+
export interface QueueMessageRequest {
|
|
636
|
+
prompt: string;
|
|
637
|
+
annotations?: Annotation[];
|
|
638
|
+
currentPage?: string | null;
|
|
639
|
+
}
|
|
640
|
+
/** Full queue snapshot after a mutation (enqueue/cancel) and carried by SSE `queue_updated`. */
|
|
641
|
+
export interface QueueSnapshotResponse {
|
|
642
|
+
queued: QueuedMessage[];
|
|
643
|
+
}
|
|
644
|
+
/** Returned by `DELETE /api/chat/queue/:threadId` and attached to abort responses. */
|
|
645
|
+
export interface ClearedQueueResponse {
|
|
646
|
+
clearedTexts: string[];
|
|
647
|
+
}
|
|
522
648
|
export type PlanExecuteMode = 'new-session' | 'continue';
|
|
523
649
|
export type PlanAction = 'replace' | 'append' | 'insert_after_section' | 'user_edit' | 'system_duplicate';
|
|
524
650
|
export type PlanChangedBy = 'agent' | 'user' | 'system';
|
package/dist/shared/entities.js
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
/** Token types whose `value` is a composite object (each field literal or `{alias}`). */
|
|
2
|
+
export const COMPOSITE_TOKEN_TYPES = ['typography', 'shadow'];
|
|
3
|
+
/** Sentinel for an alias that cannot be resolved (cycle / missing target). Preview never crashes. */
|
|
4
|
+
export const UNRESOLVED_TOKEN = 'unresolved';
|
|
1
5
|
/** Reserved frontmatter keys agent cannot mutate via update_brief. */
|
|
2
6
|
export const BRIEF_IMMUTABLE_FRONTMATTER_KEYS = [
|
|
3
7
|
'type',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entities.js","sourceRoot":"","sources":["../../src/shared/entities.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"entities.js","sourceRoot":"","sources":["../../src/shared/entities.ts"],"names":[],"mappings":"AA8SA,yFAAyF;AACzF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAU,CAAC;AA8FvE,qGAAqG;AACrG,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAwb7C,sEAAsE;AACtE,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC9C,MAAM;IACN,cAAc;IACd,YAAY;IACZ,cAAc;IACd,mBAAmB;CACX,CAAC;AAiFX;;;GAGG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG;IAC9C,MAAM;IACN,OAAO;IACP,YAAY;IACZ,YAAY;IACZ,YAAY;CACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@inharness-ai/claude4spec",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.18",
|
|
4
4
|
"description": "Plan the whole system before your agent writes a line of code. Local-first planning layer with structured entities and typed relations.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Mike Tomala <mike@inharness.ai>",
|
|
@@ -57,8 +57,8 @@
|
|
|
57
57
|
"dependencies": {
|
|
58
58
|
"@anthropic-ai/claude-agent-sdk": "^0.2.109",
|
|
59
59
|
"@google/gemini-cli-core": "^0.42.0",
|
|
60
|
-
"@inharness-ai/agent-adapters": "^0.
|
|
61
|
-
"@inharness-ai/agent-chat": "^0.3.
|
|
60
|
+
"@inharness-ai/agent-adapters": "^0.8.1",
|
|
61
|
+
"@inharness-ai/agent-chat": "^0.3.1",
|
|
62
62
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
63
63
|
"@monaco-editor/react": "^4.7.0",
|
|
64
64
|
"@openai/codex-sdk": "^0.130.0",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{ai as o,aj as n}from"./mermaid.core-JhUbsJFB.js";const t=(a,r)=>o.lang.round(n.parse(a)[r]);export{t as c};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-727SXJPM-TZenviWx.js";import{_ as i}from"./mermaid.core-JhUbsJFB.js";import"./chunk-FMBD7UC4-DLEErJWK.js";import"./chunk-ND2GUHAM-pKGgwz_0.js";import"./chunk-55IACEB6-8d1qQ5z6.js";import"./chunk-2J33WTMH-Cp08Xa7f.js";import"./index-DRFbyGvK.js";var n={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{n as diagram};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{s as a,c as s,a as e,C as t}from"./chunk-727SXJPM-TZenviWx.js";import{_ as i}from"./mermaid.core-JhUbsJFB.js";import"./chunk-FMBD7UC4-DLEErJWK.js";import"./chunk-ND2GUHAM-pKGgwz_0.js";import"./chunk-55IACEB6-8d1qQ5z6.js";import"./chunk-2J33WTMH-Cp08Xa7f.js";import"./index-DRFbyGvK.js";var n={parser:e,get db(){return new t},renderer:s,styles:a,init:i(r=>{r.class||(r.class={}),r.class.arrowMarkerAbsolute=r.arrowMarkerAbsolute},"init")};export{n as diagram};
|