@dotit/core 1.0.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/LICENSE +21 -0
- package/README.md +229 -0
- package/dist/aliases.d.ts +1 -0
- package/dist/aliases.js +8 -0
- package/dist/ask.d.ts +7 -0
- package/dist/ask.js +55 -0
- package/dist/browser.d.ts +12 -0
- package/dist/browser.js +32 -0
- package/dist/diff.d.ts +17 -0
- package/dist/diff.js +179 -0
- package/dist/document-css.d.ts +1 -0
- package/dist/document-css.js +290 -0
- package/dist/executor.d.ts +40 -0
- package/dist/executor.js +501 -0
- package/dist/history.d.ts +10 -0
- package/dist/history.js +297 -0
- package/dist/html-to-it.d.ts +1 -0
- package/dist/html-to-it.js +288 -0
- package/dist/index-builder.d.ts +62 -0
- package/dist/index-builder.js +228 -0
- package/dist/index.d.ts +39 -0
- package/dist/index.js +94 -0
- package/dist/language-registry.d.ts +39 -0
- package/dist/language-registry.js +530 -0
- package/dist/markdown.d.ts +1 -0
- package/dist/markdown.js +123 -0
- package/dist/merge.d.ts +6 -0
- package/dist/merge.js +255 -0
- package/dist/parser.d.ts +29 -0
- package/dist/parser.js +1562 -0
- package/dist/query.d.ts +32 -0
- package/dist/query.js +293 -0
- package/dist/renderer.d.ts +16 -0
- package/dist/renderer.js +1286 -0
- package/dist/schema.d.ts +47 -0
- package/dist/schema.js +574 -0
- package/dist/source.d.ts +3 -0
- package/dist/source.js +223 -0
- package/dist/theme.d.ts +49 -0
- package/dist/theme.js +113 -0
- package/dist/themes/corporate.json +86 -0
- package/dist/themes/dark.json +64 -0
- package/dist/themes/editorial.json +54 -0
- package/dist/themes/legal.json +57 -0
- package/dist/themes/minimal.json +50 -0
- package/dist/themes/print.json +54 -0
- package/dist/themes/technical.json +59 -0
- package/dist/themes/warm.json +53 -0
- package/dist/trust.d.ts +66 -0
- package/dist/trust.js +200 -0
- package/dist/types.d.ts +234 -0
- package/dist/types.js +19 -0
- package/dist/utils.d.ts +2 -0
- package/dist/utils.js +13 -0
- package/dist/validate.d.ts +13 -0
- package/dist/validate.js +711 -0
- package/dist/workflow.d.ts +18 -0
- package/dist/workflow.js +160 -0
- package/package.json +51 -0
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DOCUMENT_CSS = void 0;
|
|
4
|
+
exports.DOCUMENT_CSS = `
|
|
5
|
+
/* ── Base ──────────────────────────────────────────────── */
|
|
6
|
+
.intent-document{font-family:Georgia,'Times New Roman',serif;line-height:1.7;color:#111;max-width:680px;margin:0 auto;padding:32px 24px;}
|
|
7
|
+
/* ── Typography ────────────────────────────────────────── */
|
|
8
|
+
.intent-title{font-size:1.75rem;line-height:1.2;margin:0 0 12px;font-weight:700;letter-spacing:-0.01em;}
|
|
9
|
+
.intent-summary{margin:8px 0 20px;padding:8px 0 8px 14px;border-left:2px solid #999;color:#333;font-style:italic;font-size:0.95rem;}
|
|
10
|
+
.intent-section{margin:24px 0 8px;font-size:1.1rem;line-height:1.3;font-weight:600;padding-bottom:4px;border-bottom:1px solid #ccc;}
|
|
11
|
+
.intent-sub{margin:16px 0 6px;font-size:1rem;line-height:1.3;font-weight:600;}
|
|
12
|
+
.intent-note{margin:6px 0;color:#222;}
|
|
13
|
+
.intent-prose{margin:0 0 1em;color:#222;font-size:1rem;line-height:1.8;max-width:65ch;text-wrap:pretty;}
|
|
14
|
+
.intent-align-center{text-align:center;}
|
|
15
|
+
.intent-align-right{text-align:right;}
|
|
16
|
+
.intent-align-justify{text-align:justify;}
|
|
17
|
+
/* ── Divider ───────────────────────────────────────────── */
|
|
18
|
+
.intent-divider{margin:18px 0;text-align:center;}
|
|
19
|
+
.intent-divider-line{border:none;border-top:1px solid #ccc;margin:0;}
|
|
20
|
+
.intent-divider-label{display:inline-block;padding:0 10px;background:#fff;color:#888;font-size:0.78rem;position:relative;top:-9px;}
|
|
21
|
+
/* ── Tasks ─────────────────────────────────────────────── */
|
|
22
|
+
.intent-task{display:flex;align-items:flex-start;gap:8px;padding:7px 10px;border:1px solid #ddd;margin:5px 0;}
|
|
23
|
+
.intent-task-checkbox{margin-top:3px;flex-shrink:0;}
|
|
24
|
+
.intent-task-text{flex:1;}
|
|
25
|
+
.intent-task-meta{display:flex;gap:6px;color:#888;font-size:0.78rem;white-space:nowrap;}
|
|
26
|
+
.intent-task-owner::before{content:'@ ';opacity:0.6;}
|
|
27
|
+
.intent-task-due::before{content:'due ';}
|
|
28
|
+
.intent-task-time::before{content:'at ';}
|
|
29
|
+
.intent-task-text-done{text-decoration:line-through;color:#999;}
|
|
30
|
+
/* ── Ask ───────────────────────────────────────────────── */
|
|
31
|
+
.intent-ask{display:flex;gap:10px;margin:10px 0;padding:6px 0 6px 12px;border-left:2px solid #999;align-items:baseline;}
|
|
32
|
+
.intent-ask-label{font-size:0.68rem;font-weight:700;text-transform:uppercase;letter-spacing:0.08em;color:#555;flex-shrink:0;line-height:1.65;}
|
|
33
|
+
.intent-ask-content{flex:1;color:#333;font-style:italic;}
|
|
34
|
+
/* ── Quote ─────────────────────────────────────────────── */
|
|
35
|
+
.intent-quote{margin:14px 0;padding:2px 0 2px 16px;border-left:2px solid #999;font-style:italic;color:#333;}
|
|
36
|
+
.intent-quote p{margin:0;line-height:1.7;}
|
|
37
|
+
.intent-quote-cite{display:block;margin-top:5px;font-style:normal;color:#888;font-size:0.82rem;}
|
|
38
|
+
/* ── Code ──────────────────────────────────────────────── */
|
|
39
|
+
.intent-code{margin:10px 0;padding:10px 12px;background:#f5f5f5;border:1px solid #ddd;overflow-x:auto;}
|
|
40
|
+
.intent-code code{font-family:'SFMono-Regular',Consolas,'Liberation Mono',Menlo,monospace;font-size:0.85rem;color:#111;}
|
|
41
|
+
/* ── Table ─────────────────────────────────────────────── */
|
|
42
|
+
.intent-table{width:100%;border-collapse:collapse;margin:12px 0;font-size:0.9em;}
|
|
43
|
+
.intent-table th,.intent-table-th{padding:6px 10px;text-align:left;font-weight:600;font-size:0.78rem;text-transform:uppercase;letter-spacing:0.04em;border-bottom:2px solid #333;}
|
|
44
|
+
.intent-table td,.intent-table-td{padding:6px 10px;text-align:left;border-bottom:1px solid #ddd;vertical-align:top;}
|
|
45
|
+
.intent-row:last-child .intent-table-td,.intent-row:last-child td{border-bottom:none;}
|
|
46
|
+
/* ── Image ─────────────────────────────────────────────── */
|
|
47
|
+
.intent-image{margin:12px 0;}
|
|
48
|
+
.intent-image-img{max-width:100%;height:auto;border:1px solid #ddd;}
|
|
49
|
+
.intent-image-caption{margin-top:4px;color:#555;font-size:0.82rem;text-align:center;font-style:italic;}
|
|
50
|
+
/* ── Links / Refs ──────────────────────────────────────── */
|
|
51
|
+
.intent-link{margin:4px 0;}
|
|
52
|
+
.intent-link a{color:#111;text-decoration:underline;}
|
|
53
|
+
.intent-ref{margin:4px 0;}
|
|
54
|
+
.intent-ref a{color:#111;text-decoration:underline;font-style:italic;}
|
|
55
|
+
.intent-unknown{margin:6px 0;padding:6px 10px;border:1px dashed #ccc;color:#888;}
|
|
56
|
+
/* ── Embed ─────────────────────────────────────────────── */
|
|
57
|
+
.intent-embed{margin:14px 0;}
|
|
58
|
+
.intent-embed iframe,.intent-embed video,.intent-embed audio{display:block;width:100%;border:1px solid #ddd;}
|
|
59
|
+
/* ── Callouts ──────────────────────────────────────────── */
|
|
60
|
+
.intent-callout{display:flex;gap:10px;margin:10px 0;padding:6px 0 6px 12px;border-left:2px solid #888;align-items:baseline;}
|
|
61
|
+
.intent-callout-label{font-size:0.68rem;font-weight:700;text-transform:uppercase;letter-spacing:0.08em;flex-shrink:0;white-space:nowrap;line-height:1.65;color:#444;}
|
|
62
|
+
.intent-callout-content{flex:1;color:#222;}
|
|
63
|
+
.intent-info{border-color:#888;}
|
|
64
|
+
.intent-info .intent-callout-label{color:#444;}
|
|
65
|
+
.intent-warning{border-color:#888;}
|
|
66
|
+
.intent-warning .intent-callout-label{color:#444;}
|
|
67
|
+
.intent-tip{border-color:#888;}
|
|
68
|
+
.intent-tip .intent-callout-label{color:#444;}
|
|
69
|
+
.intent-success{border-color:#888;}
|
|
70
|
+
.intent-success .intent-callout-label{color:#444;}
|
|
71
|
+
/* ── Inline formatting ─────────────────────────────────── */
|
|
72
|
+
.intent-inline-link{color:#111;text-decoration:underline;}
|
|
73
|
+
.intent-inline-highlight{background:#eee;padding:0 .15em;}
|
|
74
|
+
.intent-inline-note{display:inline-block;padding:0 .3em;border:1px solid #ddd;color:#333;font-size:.92em;}
|
|
75
|
+
.intent-inline-quote{color:#333;font-style:italic;}
|
|
76
|
+
.intent-inline-date{font-weight:600;font-family:'SFMono-Regular',Consolas,monospace;}
|
|
77
|
+
.intent-inline-mention{font-weight:600;}
|
|
78
|
+
.intent-inline-tag{font-weight:600;}
|
|
79
|
+
/* ── Lists ─────────────────────────────────────────────── */
|
|
80
|
+
ul,ol{margin:6px 0 6px 20px;padding:0;}
|
|
81
|
+
li{margin:3px 0;color:#222;}
|
|
82
|
+
/* ── v2 Agentic Workflow Blocks ────────────────────────── */
|
|
83
|
+
.intent-step{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #ddd;margin:5px 0;}
|
|
84
|
+
.intent-step-icon{font-size:0.85rem;flex-shrink:0;}
|
|
85
|
+
.intent-step-content{flex:1;font-weight:500;}
|
|
86
|
+
.intent-step-meta{display:flex;gap:5px;align-items:center;flex-wrap:wrap;}
|
|
87
|
+
.intent-step-id{font-size:0.72rem;color:#888;font-family:monospace;}
|
|
88
|
+
.intent-step-depends{font-size:0.75rem;color:#555;font-style:italic;}
|
|
89
|
+
.intent-badge{font-size:0.7rem;padding:1px 6px;border:1px solid #bbb;font-weight:600;text-transform:uppercase;letter-spacing:0.04em;}
|
|
90
|
+
.intent-badge-tool{border-color:#999;}
|
|
91
|
+
.intent-status-pending{color:#666;}
|
|
92
|
+
.intent-status-running{color:#333;animation:intent-pulse 1.5s ease-in-out infinite;}
|
|
93
|
+
.intent-status-blocked{color:#666;}
|
|
94
|
+
.intent-status-failed{color:#333;text-decoration:line-through;}
|
|
95
|
+
.intent-status-done{color:#333;}
|
|
96
|
+
.intent-status-skipped,.intent-status-cancelled{color:#999;text-decoration:line-through;}
|
|
97
|
+
@keyframes intent-pulse{0%,100%{opacity:1;}50%{opacity:0.4;}}
|
|
98
|
+
.intent-decision{display:flex;gap:10px;margin:8px 0;padding:8px 12px;border:1px solid #bbb;}
|
|
99
|
+
.intent-decision-diamond{width:16px;height:16px;border:2px solid #333;transform:rotate(45deg);flex-shrink:0;margin-top:4px;}
|
|
100
|
+
.intent-decision-body{flex:1;}
|
|
101
|
+
.intent-decision-label{font-weight:600;margin-bottom:3px;}
|
|
102
|
+
.intent-decision-condition{font-size:0.85rem;color:#444;font-family:monospace;margin-bottom:3px;}
|
|
103
|
+
.intent-decision-branches{display:flex;gap:14px;font-size:0.82rem;}
|
|
104
|
+
.intent-decision-then{color:#333;}
|
|
105
|
+
.intent-decision-else{color:#333;}
|
|
106
|
+
.intent-trigger{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #ddd;margin:5px 0;}
|
|
107
|
+
.intent-trigger-icon{font-size:1rem;}
|
|
108
|
+
.intent-trigger-content{flex:1;font-weight:500;}
|
|
109
|
+
.intent-badge-event{border-color:#999;}
|
|
110
|
+
.intent-loop{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #ddd;margin:5px 0;}
|
|
111
|
+
.intent-loop-icon{font-size:1rem;}
|
|
112
|
+
.intent-loop-content{flex:1;font-weight:500;}
|
|
113
|
+
.intent-loop-over,.intent-loop-do{font-size:0.8rem;color:#555;font-family:monospace;}
|
|
114
|
+
.intent-checkpoint{display:flex;align-items:center;gap:8px;margin:16px 0;color:#555;font-size:0.85rem;font-weight:600;text-transform:uppercase;letter-spacing:0.06em;}
|
|
115
|
+
.intent-checkpoint-flag{font-size:1rem;}
|
|
116
|
+
.intent-checkpoint-label{flex-shrink:0;}
|
|
117
|
+
.intent-checkpoint-line{flex:1;border:none;border-top:1px dashed #bbb;margin:0;}
|
|
118
|
+
.intent-audit{margin:4px 0;padding:4px 8px;font-family:'SFMono-Regular',Consolas,monospace;font-size:0.8rem;color:#555;border-left:2px solid #bbb;}
|
|
119
|
+
.intent-audit-prefix{color:#888;font-weight:600;}
|
|
120
|
+
.intent-error-block{border-color:#999;}
|
|
121
|
+
.intent-error-block .intent-callout-label{color:#333;}
|
|
122
|
+
.intent-error-fallback{font-size:0.8rem;color:#555;font-style:italic;margin-left:6px;}
|
|
123
|
+
.intent-error-notify{font-size:0.8rem;color:#555;margin-left:6px;}
|
|
124
|
+
.intent-context-table{width:auto;border-collapse:collapse;margin:6px 0;font-size:0.85rem;}
|
|
125
|
+
.intent-context-key{padding:3px 10px 3px 8px;font-weight:600;color:#333;font-family:monospace;border-bottom:1px solid #ddd;}
|
|
126
|
+
.intent-context-val{padding:3px 12px 3px 6px;color:#333;font-family:monospace;border-bottom:1px solid #ddd;}
|
|
127
|
+
.intent-context{margin:4px 0;font-size:0.85rem;color:#333;}
|
|
128
|
+
.intent-progress{display:flex;align-items:center;gap:8px;margin:6px 0;}
|
|
129
|
+
.intent-progress-label{font-size:0.85rem;color:#222;flex-shrink:0;}
|
|
130
|
+
.intent-progress-bar{flex:1;height:6px;background:#ddd;overflow:hidden;}
|
|
131
|
+
.intent-progress-fill{height:100%;background:#555;}
|
|
132
|
+
.intent-progress-pct{font-size:0.78rem;color:#555;font-weight:600;min-width:36px;text-align:right;}
|
|
133
|
+
.intent-file-ref{display:flex;align-items:center;gap:6px;margin:4px 0;padding:4px 8px;border:1px dashed #ccc;font-size:0.82rem;color:#555;font-family:monospace;}
|
|
134
|
+
.intent-file-ref-icon{font-size:0.9rem;}
|
|
135
|
+
/* ── v2.1 Agentic Workflow Blocks ──────────────────────── */
|
|
136
|
+
.intent-emit-block{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #bbb;margin:5px 0;}
|
|
137
|
+
.intent-emit-icon{font-size:1rem;}
|
|
138
|
+
.intent-emit-content{flex:1;font-weight:500;}
|
|
139
|
+
.intent-emit-meta{display:flex;gap:5px;align-items:center;}
|
|
140
|
+
.intent-emit-phase{font-size:0.78rem;color:#555;font-weight:600;}
|
|
141
|
+
.intent-badge-level{border-color:#999;}
|
|
142
|
+
.intent-result{display:flex;align-items:flex-start;gap:8px;padding:7px 10px;border:1px solid #bbb;margin:5px 0;flex-wrap:wrap;}
|
|
143
|
+
.intent-result-success{border-color:#999;}
|
|
144
|
+
.intent-result-error,.intent-result-failure{border-color:#999;}
|
|
145
|
+
.intent-result-icon{font-size:1rem;flex-shrink:0;}
|
|
146
|
+
.intent-result-content{flex:1;font-weight:500;}
|
|
147
|
+
.intent-badge-code{border-color:#999;font-family:monospace;}
|
|
148
|
+
.intent-result-data{width:100%;margin-top:3px;padding:4px 8px;font-size:0.82rem;overflow-x:auto;border-top:1px solid #ddd;}
|
|
149
|
+
.intent-result-data code{font-family:'SFMono-Regular',Consolas,monospace;font-size:0.82rem;color:#333;}
|
|
150
|
+
.intent-handoff{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #bbb;margin:5px 0;}
|
|
151
|
+
.intent-handoff-icon{font-size:1rem;}
|
|
152
|
+
.intent-handoff-content{flex:1;font-weight:500;}
|
|
153
|
+
.intent-handoff-arrow{display:flex;align-items:center;gap:5px;font-size:0.82rem;color:#444;font-weight:600;}
|
|
154
|
+
.intent-handoff-agent{padding:1px 5px;border:1px solid #bbb;font-family:monospace;font-size:0.78rem;}
|
|
155
|
+
.intent-wait{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #ddd;margin:5px 0;border-left:2px solid #999;}
|
|
156
|
+
.intent-wait-icon{font-size:1rem;animation:intent-pulse 2s ease-in-out infinite;}
|
|
157
|
+
.intent-wait-content{flex:1;font-weight:500;color:#333;}
|
|
158
|
+
.intent-wait-meta{display:flex;gap:5px;align-items:center;}
|
|
159
|
+
.intent-badge-timeout{border-color:#999;font-family:monospace;}
|
|
160
|
+
.intent-wait-fallback{font-size:0.8rem;color:#555;font-style:italic;}
|
|
161
|
+
.intent-parallel{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #bbb;margin:5px 0;}
|
|
162
|
+
.intent-parallel-icon{font-size:1rem;}
|
|
163
|
+
.intent-parallel-content{flex:1;font-weight:500;}
|
|
164
|
+
.intent-parallel-steps{display:flex;gap:4px;flex-wrap:wrap;}
|
|
165
|
+
.intent-badge-parallel-step{border-color:#999;font-family:monospace;font-size:0.72rem;padding:1px 5px;}
|
|
166
|
+
.intent-badge-join{border-color:#999;font-size:0.72rem;padding:1px 5px;}
|
|
167
|
+
.intent-retry{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #bbb;margin:5px 0;}
|
|
168
|
+
.intent-retry-icon{font-size:1rem;}
|
|
169
|
+
.intent-retry-content{flex:1;font-weight:500;}
|
|
170
|
+
.intent-retry-meta{display:flex;gap:5px;align-items:center;}
|
|
171
|
+
.intent-badge-retry-max{border-color:#999;font-size:0.72rem;}
|
|
172
|
+
.intent-badge-retry-delay{border-color:#999;font-size:0.72rem;font-family:monospace;}
|
|
173
|
+
.intent-badge-retry-backoff{border-color:#999;font-size:0.72rem;font-style:italic;}
|
|
174
|
+
/* ── v2.2 Agentic Workflow Blocks ──────────────────────── */
|
|
175
|
+
.intent-gate{display:flex;gap:10px;margin:8px 0;padding:10px 12px;border:2px solid #888;}
|
|
176
|
+
.intent-gate-icon{font-size:1.2rem;flex-shrink:0;margin-top:2px;}
|
|
177
|
+
.intent-gate-body{flex:1;}
|
|
178
|
+
.intent-gate-label{font-weight:600;margin-bottom:3px;}
|
|
179
|
+
.intent-gate-meta{display:flex;gap:5px;align-items:center;flex-wrap:wrap;}
|
|
180
|
+
.intent-badge-approver{border-color:#999;font-family:monospace;}
|
|
181
|
+
.intent-gate-fallback{font-size:0.8rem;color:#555;font-style:italic;}
|
|
182
|
+
.intent-call{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px dashed #999;margin:5px 0;}
|
|
183
|
+
.intent-call-icon{font-size:1rem;}
|
|
184
|
+
.intent-call-content{flex:1;font-weight:500;font-family:monospace;font-size:0.9rem;}
|
|
185
|
+
.intent-call-meta{display:flex;gap:6px;align-items:center;}
|
|
186
|
+
.intent-call-input{font-size:0.78rem;color:#555;font-family:monospace;}
|
|
187
|
+
.intent-call-output{font-size:0.78rem;color:#555;font-family:monospace;}
|
|
188
|
+
/* ── v2.5 Document Generation Blocks ───────────────────── */
|
|
189
|
+
.it-page-break{page-break-after:always;break-after:page;height:0;}
|
|
190
|
+
.it-byline{margin:0 0 16px;font-size:0.9em;color:#333;}
|
|
191
|
+
.it-byline-author{display:block;font-weight:bold;}
|
|
192
|
+
.it-byline-meta{display:block;font-size:0.85em;color:#666;margin-top:2px;}
|
|
193
|
+
.it-epigraph{font-style:italic;text-align:center;margin:20px 3em;border:none;padding:0;}
|
|
194
|
+
.it-epigraph p{margin:0;}
|
|
195
|
+
.it-epigraph .it-epigraph-by{display:block;text-align:right;font-size:0.9em;margin-top:4px;font-style:normal;color:#666;}
|
|
196
|
+
.it-caption{font-size:0.85em;font-style:italic;text-align:center;color:#444;margin-top:3px;margin-bottom:10px;}
|
|
197
|
+
.it-dedication{font-style:italic;text-align:center;margin:3em auto;}
|
|
198
|
+
.it-toc{margin:20px 0;}
|
|
199
|
+
.it-toc-title{font-size:1.1rem;font-weight:600;margin-bottom:8px;border:none;}
|
|
200
|
+
.it-toc ol{list-style:none;padding:0;margin:0;}
|
|
201
|
+
.it-toc li{margin:3px 0;}
|
|
202
|
+
.it-toc li a{color:#111;text-decoration:none;border-bottom:1px dotted #bbb;}
|
|
203
|
+
.it-toc li a:hover{border-bottom-style:solid;}
|
|
204
|
+
.it-toc .it-toc-sub{padding-left:20px;font-size:0.92em;}
|
|
205
|
+
.it-footnotes{border-top:1px solid #ccc;margin-top:24px;padding-top:8px;font-size:0.85em;color:#444;}
|
|
206
|
+
.it-footnotes ol{padding-left:1.5em;margin:0;}
|
|
207
|
+
.it-footnotes li{margin:3px 0;}
|
|
208
|
+
sup.it-fn-ref{font-size:0.7em;vertical-align:super;}
|
|
209
|
+
sup.it-fn-ref a{color:#111;text-decoration:none;border-bottom:1px solid #999;}
|
|
210
|
+
/* ── v2.8 Document Trust ───────────────────────────────── */
|
|
211
|
+
.it-approval{display:flex;gap:10px;margin:10px 0;padding:10px 14px;border:1px solid #4caf50;background:#f8fdf8;}
|
|
212
|
+
.it-approval__icon{font-size:1.2rem;color:#4caf50;flex-shrink:0;}
|
|
213
|
+
.it-approval__body{display:flex;flex-direction:column;gap:2px;}
|
|
214
|
+
.it-approval__label{font-size:0.72rem;font-weight:700;text-transform:uppercase;letter-spacing:0.08em;color:#4caf50;}
|
|
215
|
+
.it-approval__who{font-size:0.9rem;color:#222;}
|
|
216
|
+
.it-approval__date{font-size:0.8rem;color:#666;}
|
|
217
|
+
.it-signature{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:10px 0;padding:10px 14px;border:1px solid #daa520;background:#fffdf5;}
|
|
218
|
+
.it-signature--valid{border-color:#4caf50;background:#f8fdf8;}
|
|
219
|
+
.it-signature--invalid{border-color:#c62828;background:#fdf5f5;}
|
|
220
|
+
.it-signature__name{font-weight:600;font-size:0.95rem;color:#111;}
|
|
221
|
+
.it-signature__role{font-size:0.85rem;color:#555;}
|
|
222
|
+
.it-signature__date{font-size:0.8rem;color:#666;}
|
|
223
|
+
.it-signature__status{font-size:0.8rem;font-weight:600;margin-left:auto;}
|
|
224
|
+
.it-sealed-banner{display:flex;gap:10px;align-items:center;margin:16px 0;padding:12px 16px;border:2px solid #c62828;background:#fdf5f5;font-weight:600;}
|
|
225
|
+
.it-sealed-banner__icon{font-size:1.3rem;}
|
|
226
|
+
.it-sealed-banner__text{font-size:1rem;color:#c62828;text-transform:uppercase;letter-spacing:0.04em;}
|
|
227
|
+
.it-sealed-banner__date{font-size:0.8rem;color:#666;margin-left:auto;}
|
|
228
|
+
.it-sealed-banner__hash{font-size:0.72rem;color:#888;font-family:monospace;}
|
|
229
|
+
/* ── v2.11 Keyword Expansion ──────────────────────────── */
|
|
230
|
+
.it-ref-card{display:flex;align-items:center;gap:8px;padding:7px 10px;border:1px solid #ddd;margin:5px 0;}
|
|
231
|
+
.it-ref-icon{font-size:1rem;flex-shrink:0;}
|
|
232
|
+
.it-ref-link{color:#111;text-decoration:underline;font-weight:500;}
|
|
233
|
+
.it-ref-name{font-weight:500;}
|
|
234
|
+
.it-ref-rel{font-size:0.7rem;padding:1px 6px;border:1px solid #bbb;font-weight:600;text-transform:uppercase;letter-spacing:0.04em;}
|
|
235
|
+
.it-def{margin:6px 0;padding:4px 0;}
|
|
236
|
+
.it-def-term{font-weight:700;font-size:0.95rem;color:#111;}
|
|
237
|
+
.it-def-abbr{font-weight:400;color:#555;}
|
|
238
|
+
.it-def-meaning{margin:2px 0 0 0;color:#333;font-size:0.92rem;padding-left:1em;}
|
|
239
|
+
.it-metric{display:inline-block;padding:10px 14px;border:1px solid #ddd;margin:5px;min-width:140px;vertical-align:top;}
|
|
240
|
+
.it-metric-name{font-size:0.78rem;font-weight:600;text-transform:uppercase;letter-spacing:0.04em;color:#555;}
|
|
241
|
+
.it-metric-value{font-size:1.6rem;font-weight:700;line-height:1.2;color:#111;}
|
|
242
|
+
.it-metric-unit{font-size:0.85rem;font-weight:400;color:#666;margin-left:2px;}
|
|
243
|
+
.it-metric-target{font-size:0.78rem;color:#888;}
|
|
244
|
+
.it-metric-trend{font-size:1rem;font-weight:700;margin-top:2px;}
|
|
245
|
+
.it-metric-period{font-size:0.72rem;color:#888;}
|
|
246
|
+
.it-metric-green{border-color:#4caf50;}
|
|
247
|
+
.it-metric-green .it-metric-value{color:#2e7d32;}
|
|
248
|
+
.it-metric-red{border-color:#c62828;}
|
|
249
|
+
.it-metric-red .it-metric-value{color:#c62828;}
|
|
250
|
+
.it-metric-neutral{border-color:#ddd;}
|
|
251
|
+
/* Document total/line rows (invoice, receipt, statement) — matches the editor's
|
|
252
|
+
itMetric node so editor-designed templates print identically. */
|
|
253
|
+
.it-metric-row{display:flex;align-items:baseline;justify-content:space-between;gap:16px;padding:5px 0;border-bottom:1px solid var(--it-color-border,#e5e7eb);}
|
|
254
|
+
.it-metric-row__label{color:var(--it-color-muted,#555);}
|
|
255
|
+
.it-metric-row__value{font-variant-numeric:tabular-nums;font-weight:600;color:var(--it-color-text,#111);white-space:nowrap;}
|
|
256
|
+
.it-metric-row--total{border-bottom:none;border-top:2px solid var(--it-color-text,#333);margin-top:2px;padding-top:8px;font-size:1.05em;}
|
|
257
|
+
.it-metric-row--total .it-metric-row__label{color:var(--it-color-text,#111);font-weight:600;}
|
|
258
|
+
.it-amendment{margin:10px 0;padding:10px 14px;border:2px solid #e65100;background:#fff8e1;}
|
|
259
|
+
.it-amendment-header{display:flex;align-items:center;gap:8px;margin-bottom:6px;}
|
|
260
|
+
.it-amendment-icon{font-size:1rem;}
|
|
261
|
+
.it-amendment-ref{font-size:0.72rem;font-weight:700;padding:1px 6px;border:1px solid #e65100;color:#e65100;text-transform:uppercase;letter-spacing:0.04em;}
|
|
262
|
+
.it-amendment-title{font-weight:600;color:#111;}
|
|
263
|
+
.it-amendment-section{font-size:0.85rem;color:#555;font-style:italic;}
|
|
264
|
+
.it-amendment-was{font-size:0.85rem;color:#c62828;text-decoration:line-through;}
|
|
265
|
+
.it-amendment-now{font-size:0.85rem;color:#2e7d32;font-weight:500;}
|
|
266
|
+
.it-amendment-meta{display:flex;gap:8px;margin-top:4px;font-size:0.8rem;color:#666;}
|
|
267
|
+
.it-figure{margin:14px 0;}
|
|
268
|
+
.it-figure img{display:block;margin:0 auto;border:1px solid #ddd;}
|
|
269
|
+
.it-figure-caption{font-size:0.85em;font-style:italic;text-align:center;color:#444;margin-top:6px;}
|
|
270
|
+
.it-signline{margin:20px 0;padding:0;}
|
|
271
|
+
.it-signline-label{font-size:0.72rem;color:#888;text-transform:uppercase;letter-spacing:0.06em;margin-bottom:4px;}
|
|
272
|
+
.it-signline-rule{border-bottom:1px solid #111;margin-bottom:4px;}
|
|
273
|
+
.it-signline-name{font-size:0.9rem;font-weight:500;color:#111;}
|
|
274
|
+
.it-signline-role{font-size:0.82rem;color:#555;}
|
|
275
|
+
.it-signline-date{font-size:0.82rem;color:#555;margin-top:4px;}
|
|
276
|
+
.it-contact{padding:8px 12px;border:1px solid #ddd;margin:5px 0;}
|
|
277
|
+
.it-contact-name{font-weight:600;font-size:0.95rem;color:#111;}
|
|
278
|
+
.it-contact-role{font-size:0.82rem;color:#555;}
|
|
279
|
+
.it-contact-org{font-size:0.82rem;color:#555;}
|
|
280
|
+
.it-contact-email a,.it-contact-phone a,.it-contact-url a{color:#111;text-decoration:underline;font-size:0.85rem;}
|
|
281
|
+
.it-deadline{padding:8px 12px;border-left:3px solid #4caf50;margin:5px 0;}
|
|
282
|
+
.it-deadline-name{font-weight:600;color:#111;}
|
|
283
|
+
.it-deadline-date{font-size:0.9rem;font-weight:600;color:#111;}
|
|
284
|
+
.it-deadline-consequence{font-size:0.85rem;color:#555;font-style:italic;}
|
|
285
|
+
.it-deadline-owner{font-size:0.82rem;color:#555;}
|
|
286
|
+
.it-deadline-authority{font-size:0.82rem;color:#555;}
|
|
287
|
+
.it-deadline-green{border-color:#4caf50;}
|
|
288
|
+
.it-deadline-amber{border-color:#f57c00;}
|
|
289
|
+
.it-deadline-red{border-color:#c62828;}
|
|
290
|
+
`;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { IntentDocument, IntentBlock } from "./types";
|
|
2
|
+
export type ToolHandler = (input: unknown, context: ExecutionContext) => Promise<unknown> | unknown;
|
|
3
|
+
export interface WorkflowRuntime {
|
|
4
|
+
tools?: Record<string, ToolHandler>;
|
|
5
|
+
context?: Record<string, unknown>;
|
|
6
|
+
onGate?: (gate: IntentBlock, context: ExecutionContext) => Promise<boolean>;
|
|
7
|
+
onStepStart?: (step: IntentBlock, context: ExecutionContext) => void;
|
|
8
|
+
onStepComplete?: (step: IntentBlock, output: unknown, context: ExecutionContext) => void;
|
|
9
|
+
onStepError?: (step: IntentBlock, error: Error, context: ExecutionContext) => void;
|
|
10
|
+
onAudit?: (audit: IntentBlock, context: ExecutionContext) => void;
|
|
11
|
+
options?: ExecutionOptions;
|
|
12
|
+
}
|
|
13
|
+
export interface ExecutionOptions {
|
|
14
|
+
maxSteps?: number;
|
|
15
|
+
stepTimeout?: number;
|
|
16
|
+
unknownTool?: "skip" | "error" | "warn";
|
|
17
|
+
dryRun?: boolean;
|
|
18
|
+
}
|
|
19
|
+
export type ExecutionContext = Record<string, unknown>;
|
|
20
|
+
export interface ExecutionResult {
|
|
21
|
+
document: IntentDocument;
|
|
22
|
+
context: ExecutionContext;
|
|
23
|
+
log: ExecutionLogEntry[];
|
|
24
|
+
status: "completed" | "gate_blocked" | "policy_blocked" | "error" | "dry_run";
|
|
25
|
+
error?: Error;
|
|
26
|
+
blockedAt?: IntentBlock;
|
|
27
|
+
blockedByPolicy?: IntentBlock;
|
|
28
|
+
}
|
|
29
|
+
export interface ExecutionLogEntry {
|
|
30
|
+
blockId: string;
|
|
31
|
+
blockType: string;
|
|
32
|
+
content: string;
|
|
33
|
+
status: "skipped" | "running" | "completed" | "failed" | "blocked" | "dry_run";
|
|
34
|
+
input?: unknown;
|
|
35
|
+
output?: unknown;
|
|
36
|
+
error?: string;
|
|
37
|
+
durationMs?: number;
|
|
38
|
+
timestamp: string;
|
|
39
|
+
}
|
|
40
|
+
export declare function executeWorkflow(document: IntentDocument, runtime?: WorkflowRuntime): Promise<ExecutionResult>;
|