ng-directive-zero 1.0.5

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.
@@ -0,0 +1,84 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { ComponentNode } from '../../models/component-node.interface';
3
+ import { PromptGeneratorService } from '../../services/prompt-generator.service';
4
+ /**
5
+ * AnnotationPanelComponent
6
+ *
7
+ * 標註面板:顯示選中組件的詳細資訊,並提供使用者輸入意圖的介面
8
+ */
9
+ import { McpService, McpStatus } from '../../services/mcp.service';
10
+ import { Observable } from 'rxjs';
11
+ import * as i0 from "@angular/core";
12
+ export declare class AnnotationPanelComponent {
13
+ private promptGenerator;
14
+ private mcpService;
15
+ /** 選中的組件節點 */
16
+ selectedNode: ComponentNode | null;
17
+ /** 面板關閉時觸發 */
18
+ closed: EventEmitter<void>;
19
+ /** 使用者輸入的意圖 */
20
+ userIntent: string;
21
+ /** 是否已複製到剪貼板 */
22
+ copied: boolean;
23
+ /** 是否已發送到 MCP */
24
+ sent: boolean;
25
+ /** 展開的區塊 */
26
+ expandedSections: Record<'inputs' | 'outputs' | 'properties' | 'styles', boolean>;
27
+ mcpStatus$: Observable<McpStatus>;
28
+ constructor(promptGenerator: PromptGeneratorService, mcpService: McpService);
29
+ /**
30
+ * 發送標註給 Agent (MCP)
31
+ */
32
+ sendToAgent(): Promise<void>;
33
+ /**
34
+ * 複製 Markdown 到剪貼板
35
+ */
36
+ copyToClipboard(): Promise<void>;
37
+ /**
38
+ * 僅複製組件資訊(不含使用者意圖)
39
+ */
40
+ copyComponentInfo(): Promise<void>;
41
+ /**
42
+ * 清除選擇
43
+ */
44
+ clearSelection(): void;
45
+ /**
46
+ * 切換區塊展開狀態
47
+ */
48
+ toggleSection(section: 'inputs' | 'outputs' | 'properties' | 'styles'): void;
49
+ /**
50
+ * 獲取 Input 的條目
51
+ */
52
+ getInputEntries(): Array<{
53
+ key: string;
54
+ value: unknown;
55
+ }>;
56
+ /**
57
+ * 獲取公開屬性條目
58
+ */
59
+ getPropertyEntries(): Array<{
60
+ key: string;
61
+ value: unknown;
62
+ }>;
63
+ /**
64
+ * 獲取樣式條目
65
+ */
66
+ getStyleEntries(): Array<{
67
+ key: string;
68
+ value: string;
69
+ }>;
70
+ /**
71
+ * 格式化值為顯示字串
72
+ */
73
+ formatValue(value: unknown): string;
74
+ /**
75
+ * 獲取值的類型顏色
76
+ */
77
+ getValueColor(value: unknown): string;
78
+ /**
79
+ * Fallback 複製方式
80
+ */
81
+ private fallbackCopy;
82
+ static ɵfac: i0.ɵɵFactoryDeclaration<AnnotationPanelComponent, never>;
83
+ static ɵcmp: i0.ɵɵComponentDeclaration<AnnotationPanelComponent, "ag-annotation-panel", never, { "selectedNode": { "alias": "selectedNode"; "required": false; }; }, { "closed": "closed"; }, never, never, false, never>;
84
+ }
@@ -0,0 +1,53 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { MarkerAnnotation } from '../../models/component-node.interface';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * InlineEditorComponent
6
+ *
7
+ * 內嵌編輯器:用於編輯已標記元素的 intent
8
+ * 參考 React Agentation 的設計
9
+ */
10
+ export declare class InlineEditorComponent {
11
+ /** 正在編輯的標記 */
12
+ marker: MarkerAnnotation | null;
13
+ /** 編輯器位置 */
14
+ position: {
15
+ top: number;
16
+ left: number;
17
+ };
18
+ /** 儲存時觸發 */
19
+ save: EventEmitter<{
20
+ index: number;
21
+ intent: string;
22
+ }>;
23
+ /** 刪除時觸發 */
24
+ delete: EventEmitter<number>;
25
+ /** 取消時觸發 */
26
+ cancel: EventEmitter<void>;
27
+ /** 暫存的 intent 值 */
28
+ tempIntent: string;
29
+ /** 樣式面板是否展開 */
30
+ isStyleExpanded: boolean;
31
+ ngOnChanges(): void;
32
+ /** 儲存 */
33
+ onSave(): void;
34
+ /** 刪除 */
35
+ onDelete(): void;
36
+ /** 取消 */
37
+ onCancel(): void;
38
+ /** 獲取編輯器樣式 */
39
+ getEditorStyle(): Record<string, string>;
40
+ /** 獲取元素描述 */
41
+ getElementDescription(): string;
42
+ /** 切換樣式面板 */
43
+ toggleStylePanel(): void;
44
+ /** 獲取樣式條目 */
45
+ getStyleEntries(): Array<{
46
+ key: string;
47
+ value: string;
48
+ }>;
49
+ /** 格式化值為顯示字串 */
50
+ formatValue(value: string): string;
51
+ static ɵfac: i0.ɵɵFactoryDeclaration<InlineEditorComponent, never>;
52
+ static ɵcmp: i0.ɵɵComponentDeclaration<InlineEditorComponent, "ag-inline-editor", never, { "marker": { "alias": "marker"; "required": false; }; "position": { "alias": "position"; "required": false; }; }, { "save": "save"; "delete": "delete"; "cancel": "cancel"; }, never, never, false, never>;
53
+ }
@@ -0,0 +1,47 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { MarkerAnnotation } from '../../models/component-node.interface';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * MarkersPanelComponent
6
+ *
7
+ * 已標記組件列表:顯示、編輯意圖、刪除標記
8
+ */
9
+ export declare class MarkersPanelComponent {
10
+ /** 標記列表 */
11
+ markers: MarkerAnnotation[];
12
+ /** 面板關閉時觸發 */
13
+ closed: EventEmitter<void>;
14
+ /** 刪除標記時觸發 */
15
+ deleteMarker: EventEmitter<number>;
16
+ /** 更新標記意圖時觸發 */
17
+ updateIntent: EventEmitter<{
18
+ index: number;
19
+ intent: string;
20
+ }>;
21
+ /** 跳轉到標記時觸發 */
22
+ scrollToMarker: EventEmitter<number>;
23
+ /** 顏色對應的 HEX 值 */
24
+ readonly colorHex: Record<import("../../models/component-node.interface").MarkerColor, string>;
25
+ /** 當前編輯的標記索引 */
26
+ editingIndex: number | null;
27
+ /** 編輯中的意圖文字 */
28
+ editingIntent: string;
29
+ /** 開始編輯意圖 */
30
+ startEdit(marker: MarkerAnnotation): void;
31
+ /** 保存編輯 */
32
+ saveEdit(): void;
33
+ /** 取消編輯 */
34
+ cancelEdit(): void;
35
+ /** 刪除標記 */
36
+ onDelete(index: number): void;
37
+ /** 跳轉到標記 */
38
+ onScrollTo(index: number): void;
39
+ /** 關閉面板 */
40
+ close(): void;
41
+ /** 處理 Enter 鍵 */
42
+ onKeyDown(event: KeyboardEvent): void;
43
+ /** trackBy 函數 */
44
+ trackByIndex(index: number, marker: MarkerAnnotation): number;
45
+ static ɵfac: i0.ɵɵFactoryDeclaration<MarkersPanelComponent, never>;
46
+ static ɵcmp: i0.ɵɵComponentDeclaration<MarkersPanelComponent, "ag-markers-panel", never, { "markers": { "alias": "markers"; "required": false; }; }, { "closed": "closed"; "deleteMarker": "deleteMarker"; "updateIntent": "updateIntent"; "scrollToMarker": "scrollToMarker"; }, never, never, false, never>;
47
+ }
@@ -0,0 +1,171 @@
1
+ import { EventEmitter, OnDestroy, OnInit, SimpleChanges, OnChanges } from '@angular/core';
2
+ import { ComponentNode, MarkerAnnotation, MarkerColor, AgentationSettings } from '../../models/component-node.interface';
3
+ import { ComponentWalkerService, AncestorBreadcrumb } from '../../services/component-walker.service';
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * OverlayComponent (v2)
7
+ *
8
+ * 支援多選標記的視覺化 DOM 檢查器
9
+ */
10
+ export declare class OverlayComponent implements OnInit, OnDestroy, OnChanges {
11
+ private componentWalker;
12
+ /** 已有的標記列表 */
13
+ markers: MarkerAnnotation[];
14
+ /** 當前設定 */
15
+ settings: AgentationSettings;
16
+ /** 是否處於錄製模式 */
17
+ isRecording: boolean;
18
+ /** 工具列是否最小化 */
19
+ isMinimized: boolean;
20
+ /** 新增標記時觸發(多選模式) */
21
+ markerAdded: EventEmitter<ComponentNode>;
22
+ /** 選中組件時觸發(兼容舊版) */
23
+ componentSelected: EventEmitter<ComponentNode>;
24
+ /** 懸停組件變化時觸發 */
25
+ componentHovered: EventEmitter<ComponentNode | null>;
26
+ /** 錄製模式變化時觸發 */
27
+ recordingChanged: EventEmitter<boolean>;
28
+ /** 標記被刪除時觸發 */
29
+ markerDeleted: EventEmitter<number>;
30
+ /** 高亮框樣式 */
31
+ highlightStyle: Record<string, string>;
32
+ /** Tooltip 內容 */
33
+ tooltipContent: string;
34
+ /** Tooltip 位置 */
35
+ tooltipStyle: Record<string, string>;
36
+ /** 是否顯示 tooltip */
37
+ showTooltip: boolean;
38
+ /** 當前懸停的節點 */
39
+ hoveredNode: ComponentNode | null;
40
+ /** 顏色對應的 HEX 值 */
41
+ readonly colorHex: Record<MarkerColor, string>;
42
+ /** 綁定的 click handler(用於移除監聽器) */
43
+ private boundClickHandler;
44
+ /** 正在編輯的標記 */
45
+ editingMarker: MarkerAnnotation | null;
46
+ /** 編輯器位置 */
47
+ editorPosition: {
48
+ top: number;
49
+ left: number;
50
+ };
51
+ /** 祖先麵包屑列表 */
52
+ ancestorBreadcrumbs: AncestorBreadcrumb[];
53
+ /** 麵包屑位置 */
54
+ breadcrumbStyle: Record<string, string>;
55
+ /** 當前選中的麵包屑索引 */
56
+ selectedBreadcrumbIndex: number;
57
+ /** 是否顯示麵包屑 */
58
+ showBreadcrumb: boolean;
59
+ /** 是否鎖定當前選取(Click-to-lock) */
60
+ isLocked: boolean;
61
+ /** 鎖定的節點 */
62
+ lockedNode: ComponentNode | null;
63
+ constructor(componentWalker: ComponentWalkerService);
64
+ ngOnInit(): void;
65
+ ngOnDestroy(): void;
66
+ ngOnChanges(changes: SimpleChanges): void;
67
+ /**
68
+ * 開始錄製模式
69
+ */
70
+ startRecording(): void;
71
+ /**
72
+ * 停止錄製模式
73
+ */
74
+ stopRecording(): void;
75
+ private cleanupRecording;
76
+ /**
77
+ * 切換錄製模式
78
+ */
79
+ toggleRecording(): void;
80
+ /**
81
+ * 處理滑鼠移動
82
+ */
83
+ onMouseMove(event: MouseEvent): void;
84
+ /**
85
+ * 處理點擊(capture phase,優先攔截)
86
+ */
87
+ /**
88
+ * 處理點擊(capture phase,優先攔截)
89
+ */
90
+ private onDocumentClick;
91
+ /**
92
+ * 鎖定節點
93
+ */
94
+ private lockNode;
95
+ /**
96
+ * 解鎖
97
+ */
98
+ unlock(): void;
99
+ /**
100
+ * 確認新增標記
101
+ */
102
+ private confirmMarker;
103
+ /**
104
+ * 比較兩個節點是否相同
105
+ */
106
+ private isSameNode;
107
+ /**
108
+ * 處理編輯器儲存
109
+ */
110
+ onEditorSave(event: {
111
+ index: number;
112
+ intent: string;
113
+ }): void;
114
+ /**
115
+ * 處理編輯器刪除
116
+ */
117
+ onEditorDelete(index: number): void;
118
+ /**
119
+ * 處理編輯器取消
120
+ */
121
+ onEditorCancel(): void;
122
+ /**
123
+ * 處理 Escape 鍵
124
+ */
125
+ onEscape(): void;
126
+ /**
127
+ * 處理快捷鍵 Ctrl+Shift+I
128
+ */
129
+ onKeyDown(event: KeyboardEvent): void;
130
+ /**
131
+ * 處理點擊標記編號
132
+ */
133
+ onMarkerClick(marker: MarkerAnnotation, event: MouseEvent): void;
134
+ /**
135
+ * 獲取標記的位置樣式
136
+ */
137
+ getMarkerStyle(marker: MarkerAnnotation): Record<string, string>;
138
+ /**
139
+ * 更新高亮框
140
+ */
141
+ private updateHighlight;
142
+ /**
143
+ * 更新 tooltip
144
+ */
145
+ private updateTooltip;
146
+ /**
147
+ * 清除高亮
148
+ */
149
+ private clearHighlight;
150
+ /**
151
+ * 更新祖先麵包屑
152
+ */
153
+ private updateBreadcrumbs;
154
+ /**
155
+ * 處理麵包屑項目點擊
156
+ */
157
+ onBreadcrumbClick(breadcrumb: AncestorBreadcrumb, index: number, event: MouseEvent): void;
158
+ /**
159
+ * 處理麵包屑項目雙擊(選取該元素)
160
+ */
161
+ /**
162
+ * 處理麵包屑項目雙擊(直接選取)
163
+ */
164
+ onBreadcrumbDoubleClick(breadcrumb: AncestorBreadcrumb, event: MouseEvent): void;
165
+ /**
166
+ * 檢查是否為 overlay 元素
167
+ */
168
+ private isOverlayElement;
169
+ static ɵfac: i0.ɵɵFactoryDeclaration<OverlayComponent, never>;
170
+ static ɵcmp: i0.ɵɵComponentDeclaration<OverlayComponent, "ag-overlay", never, { "markers": { "alias": "markers"; "required": false; }; "settings": { "alias": "settings"; "required": false; }; "isRecording": { "alias": "isRecording"; "required": false; }; "isMinimized": { "alias": "isMinimized"; "required": false; }; }, { "markerAdded": "markerAdded"; "componentSelected": "componentSelected"; "componentHovered": "componentHovered"; "recordingChanged": "recordingChanged"; "markerDeleted": "markerDeleted"; }, never, never, false, never>;
171
+ }
@@ -0,0 +1,48 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { AgentationSettings, MarkerColor, OutputDetail } from '../../models/component-node.interface';
3
+ import { McpService, McpStatus } from '../../services/mcp.service';
4
+ import { Observable } from 'rxjs';
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * SettingsPanelComponent
8
+ *
9
+ * 設定面板:顏色選擇、輸出詳細程度、選項開關等
10
+ */
11
+ export declare class SettingsPanelComponent {
12
+ private mcpService;
13
+ /** 當前設定 */
14
+ settings: AgentationSettings;
15
+ /** 綁定 dark mode class 到 host */
16
+ get isDarkMode(): boolean;
17
+ /** 面板關閉時觸發 */
18
+ closed: EventEmitter<void>;
19
+ /** 設定變更時觸發 */
20
+ settingsChange: EventEmitter<AgentationSettings>;
21
+ mcpStatus$: Observable<McpStatus>;
22
+ constructor(mcpService: McpService);
23
+ connectMcp(): void;
24
+ /** 可用顏色列表 */
25
+ readonly colors: MarkerColor[];
26
+ /** 顏色對應的 HEX 值 */
27
+ readonly colorHex: Record<MarkerColor, string>;
28
+ /** 輸出詳細程度選項 */
29
+ readonly outputOptions: OutputDetail[];
30
+ /** 選擇顏色 */
31
+ selectColor(color: MarkerColor): void;
32
+ /** 選擇輸出詳細程度 */
33
+ selectOutputDetail(detail: OutputDetail): void;
34
+ /** 切換 Angular 組件顯示 */
35
+ toggleAngularComponents(): void;
36
+ /** 切換複製後清除 */
37
+ toggleClearOnCopy(): void;
38
+ /** 切換阻止頁面互動 */
39
+ toggleBlockInteractions(): void;
40
+ /** 切換主題(深色/淺色) */
41
+ toggleTheme(): void;
42
+ /** 關閉面板 */
43
+ close(): void;
44
+ /** 更新設定 */
45
+ private updateSettings;
46
+ static ɵfac: i0.ɵɵFactoryDeclaration<SettingsPanelComponent, never>;
47
+ static ɵcmp: i0.ɵɵComponentDeclaration<SettingsPanelComponent, "ag-settings-panel", never, { "settings": { "alias": "settings"; "required": false; }; }, { "closed": "closed"; "settingsChange": "settingsChange"; }, never, never, false, never>;
48
+ }
@@ -0,0 +1,56 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { ToolbarState, RecordingSession, AgentationSettings } from '../../models/component-node.interface';
3
+ import * as i0 from "@angular/core";
4
+ /**
5
+ * ToolbarComponent
6
+ *
7
+ * 浮動工具列:提供錄製控制、檢視、複製、設定等功能
8
+ */
9
+ export declare class ToolbarComponent {
10
+ /** 當前錄製會話 */
11
+ session: RecordingSession | null;
12
+ /** 當前設定 */
13
+ settings: AgentationSettings;
14
+ /** 綁定 dark mode class 到 host */
15
+ get isDarkMode(): boolean;
16
+ /** 工具列狀態 */
17
+ state: ToolbarState;
18
+ /** 開始錄製 */
19
+ startRecording: EventEmitter<void>;
20
+ /** 結束錄製 */
21
+ stopRecording: EventEmitter<void>;
22
+ /** 切換檢視標記列表 */
23
+ toggleMarkers: EventEmitter<void>;
24
+ /** 複製到剪貼簿 */
25
+ copyToClipboard: EventEmitter<void>;
26
+ /** 清除所有標記 */
27
+ clearMarkers: EventEmitter<void>;
28
+ /** 切換設定面板 */
29
+ toggleSettings: EventEmitter<void>;
30
+ /** 關閉工具 */
31
+ closeToolbar: EventEmitter<void>;
32
+ /** 切換最小化狀態 */
33
+ toggleMinimize: EventEmitter<void>;
34
+ /** 設定變更 */
35
+ settingsChange: EventEmitter<AgentationSettings>;
36
+ /** 標記數量 */
37
+ get markerCount(): number;
38
+ /** 是否有標記 */
39
+ get hasMarkers(): boolean;
40
+ /** 切換錄製狀態 */
41
+ onToggleRecording(): void;
42
+ /** 處理複製 */
43
+ onCopy(): void;
44
+ /** 處理清除 */
45
+ onClear(): void;
46
+ /** 處理設定切換 */
47
+ onToggleSettings(): void;
48
+ /** 處理標記列表切換 */
49
+ onToggleMarkers(): void;
50
+ /** 處理關閉 */
51
+ onClose(): void;
52
+ /** 處理最小化切換 */
53
+ onToggleMinimize(): void;
54
+ static ɵfac: i0.ɵɵFactoryDeclaration<ToolbarComponent, never>;
55
+ static ɵcmp: i0.ɵɵComponentDeclaration<ToolbarComponent, "ag-toolbar", never, { "session": { "alias": "session"; "required": false; }; "settings": { "alias": "settings"; "required": false; }; "state": { "alias": "state"; "required": false; }; }, { "startRecording": "startRecording"; "stopRecording": "stopRecording"; "toggleMarkers": "toggleMarkers"; "copyToClipboard": "copyToClipboard"; "clearMarkers": "clearMarkers"; "toggleSettings": "toggleSettings"; "closeToolbar": "closeToolbar"; "toggleMinimize": "toggleMinimize"; "settingsChange": "settingsChange"; }, never, never, false, never>;
56
+ }
@@ -0,0 +1,154 @@
1
+ /**
2
+ * Angular Agentation - Component Node Interface
3
+ * 定義從 DOM 元素解析出的 Angular 組件資訊結構
4
+ */
5
+ /**
6
+ * 組件節點資訊
7
+ * 包含識別、邏輯層、渲染層三個維度的資料
8
+ */
9
+ export interface ComponentNode {
10
+ /** 唯一識別符 */
11
+ uid: string;
12
+ /** 組件類別名稱 e.g., "ProductCardComponent" */
13
+ displayName: string;
14
+ /** Angular selector e.g., "app-product-card" */
15
+ selector: string;
16
+ /** 原始檔路徑 (MVP 階段為 null,需 build-time 支援) */
17
+ filePath: string | null;
18
+ /** DOM 路徑 e.g., "html > body > app-root > app-product-card" */
19
+ domPath: string;
20
+ /** @Input 綁定值 { 'propertyName': currentValue } */
21
+ inputs: Record<string, unknown>;
22
+ /** @Output 事件名稱列表 */
23
+ outputs: string[];
24
+ /** 組件公開屬性(非 @Input 的成員變數) */
25
+ publicProperties: Record<string, unknown>;
26
+ /** 原始 DOM 元素參考 */
27
+ domElement: HTMLElement;
28
+ /** 元素的邊界矩形(用於繪製高亮框) */
29
+ rect: DOMRect;
30
+ /** 關鍵 computed styles */
31
+ computedStyles: Record<string, string>;
32
+ /** 應用的指令列表 */
33
+ directives: string[];
34
+ /** 父組件資訊(可選) */
35
+ parent?: ParentComponentInfo;
36
+ }
37
+ /**
38
+ * 父組件簡要資訊
39
+ */
40
+ export interface ParentComponentInfo {
41
+ displayName: string;
42
+ selector: string;
43
+ }
44
+ /**
45
+ * 使用者標註
46
+ * 將「人類意圖」與「程式碼位置」綁定
47
+ */
48
+ export interface UserAnnotation {
49
+ /** 目標組件節點 */
50
+ target: ComponentNode;
51
+ /** 使用者的意圖描述 */
52
+ intent: string;
53
+ /** 截圖 (Base64) - 可選 */
54
+ snapshotImage?: string;
55
+ /** 標註時間戳 */
56
+ timestamp: number;
57
+ }
58
+ /**
59
+ * Overlay 狀態
60
+ */
61
+ export interface OverlayState {
62
+ /** 是否處於檢查模式 */
63
+ isInspecting: boolean;
64
+ /** 當前懸停的組件節點 */
65
+ hoveredNode: ComponentNode | null;
66
+ /** 當前選中的組件節點 */
67
+ selectedNode: ComponentNode | null;
68
+ }
69
+ /**
70
+ * 需要提取的關鍵 CSS 屬性列表
71
+ */
72
+ export declare const KEY_COMPUTED_STYLES: readonly ["display", "position", "width", "height", "padding", "margin", "background-color", "color", "font-size", "font-family", "border", "border-radius", "opacity", "cursor", "z-index"];
73
+ /**
74
+ * 標記顏色選項
75
+ */
76
+ export type MarkerColor = 'purple' | 'blue' | 'cyan' | 'green' | 'yellow' | 'orange' | 'red';
77
+ /**
78
+ * 標記顏色對應 HEX 值
79
+ */
80
+ export declare const MARKER_COLORS: Record<MarkerColor, string>;
81
+ /**
82
+ * 單個標記
83
+ * 代表一次點擊標記的組件
84
+ */
85
+ export interface MarkerAnnotation {
86
+ /** 標記編號(1, 2, 3...) */
87
+ index: number;
88
+ /** 目標組件節點 */
89
+ target: ComponentNode;
90
+ /** 使用者的意圖描述 */
91
+ intent: string;
92
+ /** 標記顏色 */
93
+ color: MarkerColor;
94
+ /** 標記時間戳 */
95
+ timestamp: number;
96
+ }
97
+ /**
98
+ * 錄製會話
99
+ * 包含多個標記
100
+ */
101
+ export interface RecordingSession {
102
+ /** 會話 ID */
103
+ id: string;
104
+ /** 會話內的標記列表 */
105
+ markers: MarkerAnnotation[];
106
+ /** 會話開始時間 */
107
+ startTime: number;
108
+ /** 會話結束時間 */
109
+ endTime?: number;
110
+ /** 是否正在錄製中 */
111
+ isRecording: boolean;
112
+ }
113
+ /**
114
+ * 輸出詳細程度
115
+ * - compact: 最簡潔,只有基本識別資訊
116
+ * - standard: 標準模式,包含位置和基本樣式
117
+ * - detailed: 詳細模式,包含所有屬性和上下文
118
+ * - forensic: 完整模式,包含所有可用資訊
119
+ */
120
+ export type OutputDetail = 'compact' | 'standard' | 'detailed' | 'forensic';
121
+ /**
122
+ * Agentation 設定
123
+ */
124
+ export interface AgentationSettings {
125
+ /** 是否為深色模式 */
126
+ isDarkMode: boolean;
127
+ /** 輸出詳細程度 */
128
+ outputDetail: OutputDetail;
129
+ /** 是否顯示 Angular 組件資訊 */
130
+ showAngularComponents: boolean;
131
+ /** 當前標記顏色 */
132
+ markerColor: MarkerColor;
133
+ /** 複製/發送後清除標記 */
134
+ clearOnCopy: boolean;
135
+ /** 阻止頁面互動(檢查模式下) */
136
+ blockPageInteractions: boolean;
137
+ }
138
+ /**
139
+ * 預設設定
140
+ */
141
+ export declare const DEFAULT_SETTINGS: AgentationSettings;
142
+ /**
143
+ * 工具列狀態
144
+ */
145
+ export interface ToolbarState {
146
+ /** 是否顯示設定面板 */
147
+ showSettings: boolean;
148
+ /** 是否顯示標記列表 */
149
+ showMarkers: boolean;
150
+ /** 是否正在錄製 */
151
+ isRecording: boolean;
152
+ /** 是否最小化 */
153
+ isMinimized: boolean;
154
+ }
@@ -0,0 +1,35 @@
1
+ import { ModuleWithProviders } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "./components/overlay/overlay.component";
4
+ import * as i2 from "./components/annotation-panel/annotation-panel.component";
5
+ import * as i3 from "./components/toolbar/toolbar.component";
6
+ import * as i4 from "./components/settings-panel/settings-panel.component";
7
+ import * as i5 from "./components/markers-panel/markers-panel.component";
8
+ import * as i6 from "./components/inline-editor/inline-editor.component";
9
+ import * as i7 from "./components/agentation/agentation.component";
10
+ import * as i8 from "@angular/common";
11
+ import * as i9 from "@angular/forms";
12
+ import * as i10 from "@angular/common/http";
13
+ /**
14
+ * NgDirectiveZeroModule
15
+ *
16
+ * Angular 版本的 Agentation 工具
17
+ * 提供視覺化 DOM 檢查器、組件樹遍歷、AI 語意化序列化等功能
18
+ *
19
+ * 使用方式:
20
+ * ```typescript
21
+ * @NgModule({
22
+ * imports: [NgDirectiveZeroModule.forRoot()]
23
+ * })
24
+ * export class AppModule {}
25
+ * ```
26
+ */
27
+ export declare class NgDirectiveZeroModule {
28
+ /**
29
+ * 在根模組中使用,提供單例服務
30
+ */
31
+ static forRoot(): ModuleWithProviders<NgDirectiveZeroModule>;
32
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgDirectiveZeroModule, never>;
33
+ static ɵmod: i0.ɵɵNgModuleDeclaration<NgDirectiveZeroModule, [typeof i1.OverlayComponent, typeof i2.AnnotationPanelComponent, typeof i3.ToolbarComponent, typeof i4.SettingsPanelComponent, typeof i5.MarkersPanelComponent, typeof i6.InlineEditorComponent, typeof i7.AgentationComponent], [typeof i8.CommonModule, typeof i9.FormsModule, typeof i10.HttpClientModule], [typeof i1.OverlayComponent, typeof i2.AnnotationPanelComponent, typeof i3.ToolbarComponent, typeof i4.SettingsPanelComponent, typeof i5.MarkersPanelComponent, typeof i6.InlineEditorComponent, typeof i7.AgentationComponent]>;
34
+ static ɵinj: i0.ɵɵInjectorDeclaration<NgDirectiveZeroModule>;
35
+ }