comisai 1.0.24 → 1.0.25
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/node_modules/@comis/agent/package.json +1 -1
- package/node_modules/@comis/channels/package.json +1 -1
- package/node_modules/@comis/cli/package.json +1 -1
- package/node_modules/@comis/core/dist/bootstrap.js +5 -0
- package/node_modules/@comis/core/dist/config/env-layer.d.ts +31 -0
- package/node_modules/@comis/core/dist/config/env-layer.js +41 -0
- package/node_modules/@comis/core/dist/config/layered.d.ts +9 -0
- package/node_modules/@comis/core/dist/config/layered.js +11 -0
- package/node_modules/@comis/core/package.json +1 -1
- package/node_modules/@comis/daemon/dist/daemon.js +3 -0
- package/node_modules/@comis/daemon/package.json +1 -1
- package/node_modules/@comis/gateway/package.json +1 -1
- package/node_modules/@comis/infra/package.json +1 -1
- package/node_modules/@comis/memory/package.json +1 -1
- package/node_modules/@comis/scheduler/package.json +1 -1
- package/node_modules/@comis/shared/package.json +1 -1
- package/node_modules/@comis/skills/package.json +1 -1
- package/node_modules/@comis/web/dist/assets/{agent-detail-BG9MGWWj.js → agent-detail-ru-AhppM.js} +270 -270
- package/node_modules/@comis/web/dist/assets/agent-editor-hjwRuFVp.js +2173 -0
- package/node_modules/@comis/web/dist/assets/{agent-list-LHCJ4rw2.js → agent-list-6Uotjatr.js} +170 -170
- package/node_modules/@comis/web/dist/assets/{approvals-q9VH_IKr.js → approvals-C-K6hN2U.js} +13 -13
- package/node_modules/@comis/web/dist/assets/billing-view-CxysXH0p.js +375 -0
- package/node_modules/@comis/web/dist/assets/{channel-detail-CaInesJM.js → channel-detail-BBCKtmne.js} +265 -265
- package/node_modules/@comis/web/dist/assets/channel-list-FkfeOLBQ.js +323 -0
- package/node_modules/@comis/web/dist/assets/{chat-console-CNmzl0JW.js → chat-console-BumBaIgO.js} +243 -246
- package/node_modules/@comis/web/dist/assets/{config-editor-DX4ITw6y.js → config-editor-C9BSwHGy.js} +477 -477
- package/node_modules/@comis/web/dist/assets/{context-dag-browser-BwiaF5tf.js → context-dag-browser-BHm00mJD.js} +105 -105
- package/node_modules/@comis/web/dist/assets/{context-engine-BZ5Am6hA.js → context-engine-BENY3pWE.js} +136 -136
- package/node_modules/@comis/web/dist/assets/decorate-BvWYovGE.js +38 -0
- package/node_modules/@comis/web/dist/assets/{delivery-view-OfBZof-m.js → delivery-view-BCnkPsAp.js} +134 -134
- package/node_modules/@comis/web/dist/assets/{diagnostics-view-YFwCxgr2.js → diagnostics-view-C_jQFG2H.js} +82 -82
- package/node_modules/@comis/web/dist/assets/directive-BOYXJ-K-.js +1 -0
- package/node_modules/@comis/web/dist/assets/{extract-variables-BM5qyK-s.js → extract-variables-B7-Doo7l.js} +39 -39
- package/node_modules/@comis/web/dist/assets/{ic-array-editor-B7m6x7-S.js → ic-array-editor-BLoEyeLS.js} +29 -29
- package/node_modules/@comis/web/dist/assets/{ic-breadcrumb-CUMpp3BL.js → ic-breadcrumb-DqN6G3gc.js} +16 -16
- package/node_modules/@comis/web/dist/assets/{ic-budget-segment-bar-BtJ6x5mN.js → ic-budget-segment-bar-zLsMzjDO.js} +20 -20
- package/node_modules/@comis/web/dist/assets/ic-chat-message-FdQcZsSQ.js +352 -0
- package/node_modules/@comis/web/dist/assets/{ic-confirm-dialog-CCDbB04e.js → ic-confirm-dialog-DGlPbV1T.js} +26 -26
- package/node_modules/@comis/web/dist/assets/{ic-connection-dot-CnT1b8xr.js → ic-connection-dot-BgYiK2N4.js} +13 -13
- package/node_modules/@comis/web/dist/assets/ic-data-table-CKIvr-ag.js +277 -0
- package/node_modules/@comis/web/dist/assets/ic-delivery-row-B3YwjjuM.js +67 -0
- package/node_modules/@comis/web/dist/assets/{ic-detail-panel-BF83r-if.js → ic-detail-panel-DiCe4hLr.js} +27 -27
- package/node_modules/@comis/web/dist/assets/{ic-empty-state-60l2ePhd.js → ic-empty-state-CM3Wbj2f.js} +19 -19
- package/node_modules/@comis/web/dist/assets/ic-graph-canvas-ByRjij68.js +359 -0
- package/node_modules/@comis/web/dist/assets/ic-icon-BGNCCPpZ.js +33 -0
- package/node_modules/@comis/web/dist/assets/{ic-layer-waterfall-COvEYMg5.js → ic-layer-waterfall-WkaFyu-l.js} +18 -18
- package/node_modules/@comis/web/dist/assets/ic-relative-time-B3UAnTqg.js +12 -0
- package/node_modules/@comis/web/dist/assets/{ic-search-input-CSOxY9g7.js → ic-search-input-B02AGw1i.js} +22 -22
- package/node_modules/@comis/web/dist/assets/{ic-select-Ce-Raudx.js → ic-select-BqfZISjw.js} +29 -29
- package/node_modules/@comis/web/dist/assets/ic-tabs-yBjkWKJH.js +95 -0
- package/node_modules/@comis/web/dist/assets/ic-tag-CvMVQFRR.js +33 -0
- package/node_modules/@comis/web/dist/assets/{ic-time-range-picker-CypCT68y.js → ic-time-range-picker-DXbYeBmY.js} +31 -31
- package/node_modules/@comis/web/dist/assets/{ic-tool-call-7MaXSsCW.js → ic-tool-call-DMPHsLyx.js} +51 -51
- package/node_modules/@comis/web/dist/assets/index-CVEaS9aY.css +2 -0
- package/node_modules/@comis/web/dist/assets/index-FLPhHz8p.js +2792 -0
- package/node_modules/@comis/web/dist/assets/{mcp-management-BNZPnpDn.js → mcp-management-5jyScQis.js} +209 -209
- package/node_modules/@comis/web/dist/assets/{media-config-BBvTYxOX.js → media-config-J9oT9PPs.js} +154 -154
- package/node_modules/@comis/web/dist/assets/{media-test-BkK3RCRK.js → media-test-DGTCtM8-.js} +259 -259
- package/node_modules/@comis/web/dist/assets/{memory-inspector-1hDGCGat.js → memory-inspector-D5Re9ptG.js} +450 -450
- package/node_modules/@comis/web/dist/assets/{message-center-CXefwsUu.js → message-center-cRLK6ZmG.js} +290 -290
- package/node_modules/@comis/web/dist/assets/{models-C1qcU_j3.js → models-D5vu07MR.js} +371 -371
- package/node_modules/@comis/web/dist/assets/observability-types-D0tkwElU.js +1 -0
- package/node_modules/@comis/web/dist/assets/{observe-view-C0VBhX4C.js → observe-view-CalNNEmd.js} +399 -399
- package/node_modules/@comis/web/dist/assets/pipeline-builder-DUYDGwZf.js +1495 -0
- package/node_modules/@comis/web/dist/assets/{pipeline-history-DkfOQ6SW.js → pipeline-history-BAO8brOe.js} +124 -124
- package/node_modules/@comis/web/dist/assets/{pipeline-history-detail-hyHgD0ai.js → pipeline-history-detail-DectIoQt.js} +65 -65
- package/node_modules/@comis/web/dist/assets/{pipeline-list-BPW8hV-q.js → pipeline-list-BHlaBKww.js} +227 -227
- package/node_modules/@comis/web/dist/assets/{pipeline-monitor-Bip16T7e.js → pipeline-monitor-BhtpNEHf.js} +298 -298
- package/node_modules/@comis/web/dist/assets/{scheduler-BGgwKd06.js → scheduler-VafN_8xi.js} +486 -486
- package/node_modules/@comis/web/dist/assets/{security-D15st4xx.js → security-QQXMRTlo.js} +389 -389
- package/node_modules/@comis/web/dist/assets/{session-detail-SGEYNJ0M.js → session-detail-BpZ_8Yih.js} +294 -294
- package/node_modules/@comis/web/dist/assets/session-key-parser-Dkqcj2Ss.js +1 -0
- package/node_modules/@comis/web/dist/assets/session-list-DfCm8Cec.js +231 -0
- package/node_modules/@comis/web/dist/assets/{setup-wizard-nT0tz9QP.js → setup-wizard-C-z477CG.js} +486 -494
- package/node_modules/@comis/web/dist/assets/{skills-D8yVfSUy.js → skills-BCOGPf6s.js} +329 -329
- package/node_modules/@comis/web/dist/assets/{subagents-HHXMeHYo.js → subagents-l-auUraL.js} +74 -74
- package/node_modules/@comis/web/dist/assets/{workspace-manager-BQlr10iH.js → workspace-manager-DlvBixiq.js} +236 -236
- package/node_modules/@comis/web/dist/index.html +3 -2
- package/node_modules/@comis/web/package.json +1 -1
- package/package.json +15 -15
- package/node_modules/@comis/web/dist/assets/agent-editor-C26Q_xCs.js +0 -2173
- package/node_modules/@comis/web/dist/assets/billing-view-CtYvBqTE.js +0 -375
- package/node_modules/@comis/web/dist/assets/channel-list-B8dj3O9a.js +0 -323
- package/node_modules/@comis/web/dist/assets/directive-DoeGSK_T.js +0 -1
- package/node_modules/@comis/web/dist/assets/ic-chat-message-CFyDJd0z.js +0 -352
- package/node_modules/@comis/web/dist/assets/ic-data-table-CKUNTxHw.js +0 -277
- package/node_modules/@comis/web/dist/assets/ic-delivery-row-GP5Fkygs.js +0 -67
- package/node_modules/@comis/web/dist/assets/ic-graph-canvas-C8FuSMe1.js +0 -359
- package/node_modules/@comis/web/dist/assets/ic-icon-xeGTVhVG.js +0 -33
- package/node_modules/@comis/web/dist/assets/ic-relative-time-3FqpjeAI.js +0 -12
- package/node_modules/@comis/web/dist/assets/ic-tabs-B7QtM_v8.js +0 -95
- package/node_modules/@comis/web/dist/assets/ic-tag-CPPUnDLF.js +0 -33
- package/node_modules/@comis/web/dist/assets/index-CEcM1R_C.js +0 -2830
- package/node_modules/@comis/web/dist/assets/index-CIJFuItj.css +0 -1
- package/node_modules/@comis/web/dist/assets/observability-types-D7jUtSde.js +0 -1
- package/node_modules/@comis/web/dist/assets/pipeline-builder-DcUUIrm0.js +0 -1496
- package/node_modules/@comis/web/dist/assets/session-key-parser-DPORMVyU.js +0 -1
- package/node_modules/@comis/web/dist/assets/session-list-6ybUTxbY.js +0 -231
|
@@ -1,238 +1,4 @@
|
|
|
1
|
-
import{
|
|
2
|
-
<div class="error-container">
|
|
3
|
-
<div class="error-message">${this._error}</div>
|
|
4
|
-
<button class="retry-btn" @click=${()=>this._loadStatus()}>Retry</button>
|
|
5
|
-
</div>
|
|
6
|
-
`;case"loaded":return this._status&&!this._status.exists?this._renderNotInitialized():this._renderWorkspace()}}_renderNotInitialized(){return t`
|
|
7
|
-
${this._renderBreadcrumb()}
|
|
8
|
-
<ic-empty-state
|
|
9
|
-
message="Workspace not initialized"
|
|
10
|
-
icon="folder"
|
|
11
|
-
description="Initialize the workspace to manage agent files and configuration."
|
|
12
|
-
>
|
|
13
|
-
<button
|
|
14
|
-
class="btn btn--primary"
|
|
15
|
-
?disabled=${this._actionPending}
|
|
16
|
-
@click=${()=>this._handleInit()}
|
|
17
|
-
>Init Workspace</button>
|
|
18
|
-
</ic-empty-state>
|
|
19
|
-
`}_renderWorkspace(){return t`
|
|
20
|
-
${this._renderBreadcrumb()}
|
|
21
|
-
${this._renderStatusBar()}
|
|
22
|
-
${this._renderTabBar()}
|
|
23
|
-
${this._activeTab==="files"?t`
|
|
24
|
-
<div class="workspace-layout">
|
|
25
|
-
<div class="file-tree">
|
|
26
|
-
${this._renderFileTree()}
|
|
27
|
-
</div>
|
|
28
|
-
<div class="editor-panel">
|
|
29
|
-
${this._renderEditorPanel()}
|
|
30
|
-
</div>
|
|
31
|
-
</div>
|
|
32
|
-
`:this._renderGitTab()}
|
|
33
|
-
`}_renderBreadcrumb(){return t`
|
|
34
|
-
<ic-breadcrumb
|
|
35
|
-
.items=${[{label:"Agents",route:"agents"},{label:this.agentId,route:`agents/${this.agentId}`},{label:"Workspace"}]}
|
|
36
|
-
@navigate=${e=>this._navigate(e.detail)}
|
|
37
|
-
></ic-breadcrumb>
|
|
38
|
-
`}_renderStatusBar(){return this._status?t`
|
|
39
|
-
<div class="status-bar">
|
|
40
|
-
<code>${this._status.dir}</code>
|
|
41
|
-
<ic-tag variant=${this._status.hasGitRepo?"success":"default"}>
|
|
42
|
-
${this._status.hasGitRepo?"git repo":"no git"}
|
|
43
|
-
</ic-tag>
|
|
44
|
-
<ic-tag variant=${this._status.isBootstrapped?"success":"warning"}>
|
|
45
|
-
${this._status.isBootstrapped?"bootstrapped":"onboarding"}
|
|
46
|
-
</ic-tag>
|
|
47
|
-
</div>
|
|
48
|
-
`:d}_renderTabBar(){return t`
|
|
49
|
-
<div class="tab-bar">
|
|
50
|
-
<button
|
|
51
|
-
class="tab-btn ${this._activeTab==="files"?"tab-btn--active":""}"
|
|
52
|
-
@click=${()=>{this._activeTab="files",this._confirmAction=null,this._restoreTarget=null}}
|
|
53
|
-
>Files</button>
|
|
54
|
-
<button
|
|
55
|
-
class="tab-btn ${this._activeTab==="git"?"tab-btn--active":""}"
|
|
56
|
-
@click=${()=>this._switchToGitTab()}
|
|
57
|
-
>Git</button>
|
|
58
|
-
</div>
|
|
59
|
-
`}_renderFileTree(){return this._status?t`
|
|
60
|
-
<div class="tree-section-label">Template Files</div>
|
|
61
|
-
${this._status.files.map(e=>t`
|
|
62
|
-
<button
|
|
63
|
-
class="tree-item ${this._selectedFile===e.name?"tree-item--active":""}"
|
|
64
|
-
@click=${()=>this._selectFile(e.name)}
|
|
65
|
-
>
|
|
66
|
-
<span class="presence-dot ${e.present?"presence-dot--present":"presence-dot--absent"}"></span>
|
|
67
|
-
<span class="file-name">${e.name}</span>
|
|
68
|
-
${e.present&&e.sizeBytes!==void 0?t`<span class="file-size">${p(e.sizeBytes)}</span>`:d}
|
|
69
|
-
</button>
|
|
70
|
-
`)}
|
|
71
|
-
<hr class="tree-separator" />
|
|
72
|
-
<div class="tree-section-label">Directories</div>
|
|
73
|
-
${w.map(e=>t`
|
|
74
|
-
<button
|
|
75
|
-
class="tree-item ${this._selectedSubdir===e?"tree-item--active":""}"
|
|
76
|
-
@click=${()=>this._selectSubdir(e)}
|
|
77
|
-
>
|
|
78
|
-
<span class="folder-icon">\uD83D\uDCC1</span>
|
|
79
|
-
<span class="file-name">${e}</span>
|
|
80
|
-
</button>
|
|
81
|
-
`)}
|
|
82
|
-
`:d}_renderEditorPanel(){return this._selectedFile?this._renderFileEditor():this._selectedSubdir?this._renderDirListing():t`
|
|
83
|
-
<div class="placeholder-panel">Select a file or directory from the sidebar</div>
|
|
84
|
-
`}_renderFileEditor(){return t`
|
|
85
|
-
<div class="editor-header">
|
|
86
|
-
<span class="editor-filename">${this._selectedFile}</span>
|
|
87
|
-
${this._dirty?t`<span class="dirty-indicator">unsaved</span>`:d}
|
|
88
|
-
</div>
|
|
89
|
-
<textarea
|
|
90
|
-
class="editor-textarea"
|
|
91
|
-
.value=${this._editedContent}
|
|
92
|
-
@input=${this._onEditorInput}
|
|
93
|
-
spellcheck="false"
|
|
94
|
-
></textarea>
|
|
95
|
-
<div class="action-bar">
|
|
96
|
-
<button
|
|
97
|
-
class="btn btn--primary"
|
|
98
|
-
?disabled=${!this._dirty||this._saving}
|
|
99
|
-
@click=${()=>this._handleSave()}
|
|
100
|
-
>${this._saving?"Saving...":"Save"}</button>
|
|
101
|
-
<button
|
|
102
|
-
class="btn btn--secondary"
|
|
103
|
-
?disabled=${this._actionPending}
|
|
104
|
-
@click=${()=>{this._confirmAction="reset"}}
|
|
105
|
-
>Reset to Default</button>
|
|
106
|
-
<button
|
|
107
|
-
class="btn btn--danger"
|
|
108
|
-
?disabled=${this._actionPending}
|
|
109
|
-
@click=${()=>{this._confirmAction="delete"}}
|
|
110
|
-
>Delete</button>
|
|
111
|
-
</div>
|
|
112
|
-
|
|
113
|
-
<ic-confirm-dialog
|
|
114
|
-
?open=${this._confirmAction==="reset"}
|
|
115
|
-
title="Reset to Default"
|
|
116
|
-
message=${`Reset "${this._selectedFile}" to its default content? Current content will be overwritten.`}
|
|
117
|
-
variant="default"
|
|
118
|
-
confirmLabel="Reset"
|
|
119
|
-
@confirm=${()=>this._handleReset()}
|
|
120
|
-
@cancel=${()=>{this._confirmAction=null}}
|
|
121
|
-
></ic-confirm-dialog>
|
|
122
|
-
|
|
123
|
-
<ic-confirm-dialog
|
|
124
|
-
?open=${this._confirmAction==="delete"}
|
|
125
|
-
title="Delete File"
|
|
126
|
-
message=${`Delete "${this._selectedFile}"? This action cannot be undone.`}
|
|
127
|
-
variant="danger"
|
|
128
|
-
confirmLabel="Delete"
|
|
129
|
-
@confirm=${()=>this._handleDelete()}
|
|
130
|
-
@cancel=${()=>{this._confirmAction=null}}
|
|
131
|
-
></ic-confirm-dialog>
|
|
132
|
-
`}_renderDirListing(){return this._dirEntries.length===0?t`<div class="dir-empty">Empty directory</div>`:t`
|
|
133
|
-
<table class="dir-table">
|
|
134
|
-
<thead>
|
|
135
|
-
<tr>
|
|
136
|
-
<th>Name</th>
|
|
137
|
-
<th>Type</th>
|
|
138
|
-
<th>Size</th>
|
|
139
|
-
<th>Modified</th>
|
|
140
|
-
</tr>
|
|
141
|
-
</thead>
|
|
142
|
-
<tbody>
|
|
143
|
-
${this._dirEntries.map(e=>t`
|
|
144
|
-
<tr>
|
|
145
|
-
<td>${e.name}</td>
|
|
146
|
-
<td>${e.type}</td>
|
|
147
|
-
<td>${e.sizeBytes!==void 0?p(e.sizeBytes):"-"}</td>
|
|
148
|
-
<td>
|
|
149
|
-
${e.modifiedAt?t`<ic-relative-time .timestamp=${e.modifiedAt}></ic-relative-time>`:"-"}
|
|
150
|
-
</td>
|
|
151
|
-
</tr>
|
|
152
|
-
`)}
|
|
153
|
-
</tbody>
|
|
154
|
-
</table>
|
|
155
|
-
`}_renderGitTab(){return this._status?.hasGitRepo?t`
|
|
156
|
-
<div class="git-panel">
|
|
157
|
-
${this._renderGitStatus()}
|
|
158
|
-
${this._renderDiffViewer()}
|
|
159
|
-
${this._renderCommitForm()}
|
|
160
|
-
${this._renderCommitLog()}
|
|
161
|
-
<ic-confirm-dialog
|
|
162
|
-
?open=${this._confirmAction==="restore"}
|
|
163
|
-
title="Restore File"
|
|
164
|
-
message=${`Restore "${this._restoreTarget}" to HEAD? Uncommitted changes will be lost.`}
|
|
165
|
-
variant="danger"
|
|
166
|
-
confirmLabel="Restore"
|
|
167
|
-
@confirm=${()=>this._handleRestore()}
|
|
168
|
-
@cancel=${()=>{this._confirmAction=null,this._restoreTarget=null}}
|
|
169
|
-
></ic-confirm-dialog>
|
|
170
|
-
</div>
|
|
171
|
-
`:t`
|
|
172
|
-
<ic-empty-state
|
|
173
|
-
message="No git repository"
|
|
174
|
-
description="Initialize a git repository to track workspace changes."
|
|
175
|
-
icon="folder"
|
|
176
|
-
></ic-empty-state>
|
|
177
|
-
`}_renderGitStatus(){return this._gitStatus?t`
|
|
178
|
-
<div class="git-section">
|
|
179
|
-
<div class="git-section-header">
|
|
180
|
-
<span>Status</span>
|
|
181
|
-
<span class="git-branch">${this._gitStatus.branch}</span>
|
|
182
|
-
<span class="git-change-count">${this._gitStatus.entries.length} changes</span>
|
|
183
|
-
</div>
|
|
184
|
-
${this._gitStatus.clean?t`<div class="clean-message">Working tree clean</div>`:this._gitStatus.entries.map(e=>{const i=this._statusBadge(e.status),l=i==="??"?"U":i;return t`
|
|
185
|
-
<div
|
|
186
|
-
class="changed-file ${this._gitDiffFile===e.path?"changed-file--active":""}"
|
|
187
|
-
@click=${()=>this._loadFileDiff(e.path)}
|
|
188
|
-
>
|
|
189
|
-
<span class="status-badge status-badge--${l}">${i}</span>
|
|
190
|
-
<span class="changed-file-path">${e.path}</span>
|
|
191
|
-
${e.status!=="untracked"&&e.status!=="added"?t`<button
|
|
192
|
-
class="restore-btn"
|
|
193
|
-
@click=${c=>{c.stopPropagation(),this._requestRestore(e.path)}}
|
|
194
|
-
>Restore</button>`:d}
|
|
195
|
-
</div>
|
|
196
|
-
`})}
|
|
197
|
-
</div>
|
|
198
|
-
`:d}_renderDiffViewer(){if(!this._gitDiff)return t`<div class="diff-empty">Select a changed file to view its diff</div>`;const e=this._gitDiff.split(`
|
|
199
|
-
`);return t`
|
|
200
|
-
<div class="diff-viewer">
|
|
201
|
-
<div class="diff-header">${this._gitDiffFile}</div>
|
|
202
|
-
<pre class="diff-content">${e.map(i=>t`<span class="${this._diffLineClass(i)}">${i}\n</span>`)}</pre>
|
|
203
|
-
</div>
|
|
204
|
-
`}_renderCommitForm(){return t`
|
|
205
|
-
<div class="git-section">
|
|
206
|
-
<div class="git-section-header">Commit</div>
|
|
207
|
-
<div class="commit-form">
|
|
208
|
-
<input
|
|
209
|
-
class="commit-input"
|
|
210
|
-
type="text"
|
|
211
|
-
placeholder="Commit message (optional)"
|
|
212
|
-
.value=${this._commitMessage}
|
|
213
|
-
@input=${e=>{this._commitMessage=e.target.value}}
|
|
214
|
-
/>
|
|
215
|
-
<button
|
|
216
|
-
class="btn btn--primary"
|
|
217
|
-
?disabled=${this._commitDisabled}
|
|
218
|
-
@click=${()=>this._handleCommit()}
|
|
219
|
-
>${this._committing?"Committing...":"Commit"}</button>
|
|
220
|
-
</div>
|
|
221
|
-
</div>
|
|
222
|
-
`}_renderCommitLog(){return t`
|
|
223
|
-
<div class="git-section">
|
|
224
|
-
<div class="git-section-header">Recent Commits</div>
|
|
225
|
-
${this._gitLog.length===0?t`<div class="clean-message">No commits yet</div>`:this._gitLog.map(e=>t`
|
|
226
|
-
<div class="commit-entry">
|
|
227
|
-
<span class="commit-sha">${e.sha.slice(0,7)}</span>
|
|
228
|
-
<span class="commit-message">${e.message}</span>
|
|
229
|
-
<span class="commit-time">
|
|
230
|
-
<ic-relative-time .timestamp=${new Date(e.date).getTime()}></ic-relative-time>
|
|
231
|
-
</span>
|
|
232
|
-
</div>
|
|
233
|
-
`)}
|
|
234
|
-
</div>
|
|
235
|
-
`}};r.styles=[u,v,b`
|
|
1
|
+
import{c as e,f as t,h as n,l as r,n as i,o as a,r as o,s,t as c,u as l}from"./decorate-BvWYovGE.js";import{a as u}from"./index-FLPhHz8p.js";import"./ic-breadcrumb-DqN6G3gc.js";import"./ic-tag-CvMVQFRR.js";import"./ic-confirm-dialog-DGlPbV1T.js";import"./ic-relative-time-B3UAnTqg.js";import"./ic-empty-state-CM3Wbj2f.js";var d=[`projects`,`scripts`,`documents`,`media`,`data`,`output`];function f(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`}var p=class extends r{constructor(...e){super(...e),this.rpcClient=null,this.agentId=``,this._status=null,this._loadState=`loading`,this._error=``,this._activeTab=`files`,this._selectedFile=null,this._selectedSubdir=null,this._fileContent=``,this._editedContent=``,this._dirEntries=[],this._saving=!1,this._dirty=!1,this._confirmAction=null,this._actionPending=!1,this._gitStatus=null,this._gitLog=[],this._gitDiff=``,this._gitDiffFile=null,this._commitMessage=``,this._committing=!1,this._restoreTarget=null}static{this.styles=[o,i,n`
|
|
236
2
|
:host {
|
|
237
3
|
display: block;
|
|
238
4
|
}
|
|
@@ -782,4 +548,238 @@ import{a as g,I as o,b as t,A as d,s as u,f as v,i as b,n as h,r as s,t as _}fro
|
|
|
782
548
|
max-height: 250px;
|
|
783
549
|
}
|
|
784
550
|
}
|
|
785
|
-
`]
|
|
551
|
+
`]}updated(e){(e.has(`agentId`)||e.has(`rpcClient`))&&this.agentId&&this.rpcClient&&this._loadStatus()}async _loadStatus(){if(!(!this.rpcClient||!this.agentId)){this._loadState=`loading`,this._error=``;try{this._status=await this.rpcClient.call(`workspace.status`,{agentId:this.agentId}),this._loadState=`loaded`}catch(e){this._error=e instanceof Error?e.message:`Failed to load workspace status`,this._loadState=`error`}}}async _selectFile(e){if(this.rpcClient&&!(this._dirty&&!window.confirm(`Discard unsaved changes?`)))try{let t=await this.rpcClient.call(`workspace.readFile`,{agentId:this.agentId,filePath:e});this._selectedFile=e,this._fileContent=t.content,this._editedContent=t.content,this._dirty=!1,this._selectedSubdir=null,this._dirEntries=[]}catch(e){u.show(`Failed to read file: ${e instanceof Error?e.message:`Unknown error`}`,`error`)}}async _selectSubdir(e){if(this.rpcClient&&!(this._dirty&&!window.confirm(`Discard unsaved changes?`)))try{let t=await this.rpcClient.call(`workspace.listDir`,{agentId:this.agentId,subdir:e});this._selectedSubdir=e,this._dirEntries=t.entries,this._selectedFile=null,this._fileContent=``,this._editedContent=``,this._dirty=!1}catch(e){u.show(`Failed to list directory: ${e instanceof Error?e.message:`Unknown error`}`,`error`)}}_onEditorInput(e){let t=e.target;this._editedContent=t.value,this._dirty=this._editedContent!==this._fileContent}async _loadGitData(){if(!(!this.rpcClient||!this.agentId))try{let[e,t]=await Promise.all([this.rpcClient.call(`workspace.git.status`,{agentId:this.agentId}),this.rpcClient.call(`workspace.git.log`,{agentId:this.agentId,limit:20})]);this._gitStatus=e,this._gitLog=t.commits,this._gitDiff=``,this._gitDiffFile=null}catch(e){u.show(`Failed to load git data: ${e instanceof Error?e.message:`Unknown error`}`,`error`)}}async _loadFileDiff(e){if(!(!this.rpcClient||!this.agentId))try{let t=await this.rpcClient.call(`workspace.git.diff`,{agentId:this.agentId,filePath:e});this._gitDiff=t.diff,this._gitDiffFile=e}catch(e){u.show(`Failed to load diff: ${e instanceof Error?e.message:`Unknown error`}`,`error`)}}async _handleSave(){if(!(!this.rpcClient||this._saving||!this._selectedFile)){this._saving=!0;try{await this.rpcClient.call(`workspace.writeFile`,{agentId:this.agentId,filePath:this._selectedFile,content:this._editedContent}),u.show(`File saved`,`success`),this._fileContent=this._editedContent,this._dirty=!1}catch(e){u.show(`Failed to save: ${e instanceof Error?e.message:`Unknown error`}`,`error`)}finally{this._saving=!1}}}async _handleReset(){if(!(!this.rpcClient||!this._selectedFile)){this._confirmAction=null,this._actionPending=!0;try{await this.rpcClient.call(`workspace.resetFile`,{agentId:this.agentId,fileName:this._selectedFile}),u.show(`File reset to default`,`success`),await this._selectFile(this._selectedFile)}catch(e){u.show(`Failed to reset file: ${e instanceof Error?e.message:`Unknown error`}`,`error`)}finally{this._actionPending=!1}}}async _handleDelete(){if(!(!this.rpcClient||!this._selectedFile)){this._confirmAction=null,this._actionPending=!0;try{await this.rpcClient.call(`workspace.deleteFile`,{agentId:this.agentId,filePath:this._selectedFile}),u.show(`File deleted`,`success`),this._selectedFile=null,this._fileContent=``,this._editedContent=``,this._dirty=!1,await this._loadStatus()}catch(e){u.show(`Failed to delete file: ${e instanceof Error?e.message:`Unknown error`}`,`error`)}finally{this._actionPending=!1}}}async _handleInit(){if(this.rpcClient){this._actionPending=!0;try{await this.rpcClient.call(`workspace.init`,{agentId:this.agentId}),u.show(`Workspace initialized`,`success`),await this._loadStatus()}catch(e){u.show(`Failed to initialize workspace: ${e instanceof Error?e.message:`Unknown error`}`,`error`)}finally{this._actionPending=!1}}}_switchToGitTab(){this._activeTab=`git`,this._confirmAction=null,this._restoreTarget=null,this._loadGitData()}_requestRestore(e){this._restoreTarget=e,this._confirmAction=`restore`}async _handleRestore(){if(!(!this.rpcClient||!this._restoreTarget)){this._confirmAction=null,this._actionPending=!0;try{await this.rpcClient.call(`workspace.git.restore`,{agentId:this.agentId,filePath:this._restoreTarget}),u.show(`File restored to HEAD`,`success`),this._restoreTarget=null,await this._loadGitData()}catch(e){u.show(`Failed to restore: ${e instanceof Error?e.message:`Unknown error`}`,`error`)}finally{this._actionPending=!1}}}async _handleCommit(){if(!(!this.rpcClient||!this.agentId||this._committing)){this._committing=!0;try{await this.rpcClient.call(`workspace.git.commit`,{agentId:this.agentId,message:this._commitMessage||void 0}),u.show(`Changes committed`,`success`),this._commitMessage=``,await this._loadGitData()}catch(e){u.show(`Commit failed: ${e instanceof Error?e.message:`Unknown error`}`,`error`)}finally{this._committing=!1}}}_statusBadge(e){switch(e){case`modified`:return`M`;case`added`:return`A`;case`deleted`:return`D`;case`untracked`:return`??`;case`renamed`:return`R`;case`copied`:return`C`;default:return`?`}}_diffLineClass(e){return e.startsWith(`@@`)?`diff-hunk`:e.startsWith(`+`)?`diff-add`:e.startsWith(`-`)?`diff-del`:`diff-ctx`}get _commitDisabled(){return this._committing||this._gitStatus?.clean===!0}_navigate(e){this.dispatchEvent(new CustomEvent(`navigate`,{detail:e,bubbles:!0,composed:!0}))}render(){switch(this._loadState){case`loading`:return t`<ic-skeleton-view variant="editor"></ic-skeleton-view>`;case`error`:return t`
|
|
552
|
+
<div class="error-container">
|
|
553
|
+
<div class="error-message">${this._error}</div>
|
|
554
|
+
<button class="retry-btn" @click=${()=>this._loadStatus()}>Retry</button>
|
|
555
|
+
</div>
|
|
556
|
+
`;case`loaded`:return this._status&&!this._status.exists?this._renderNotInitialized():this._renderWorkspace()}}_renderNotInitialized(){return t`
|
|
557
|
+
${this._renderBreadcrumb()}
|
|
558
|
+
<ic-empty-state
|
|
559
|
+
message="Workspace not initialized"
|
|
560
|
+
icon="folder"
|
|
561
|
+
description="Initialize the workspace to manage agent files and configuration."
|
|
562
|
+
>
|
|
563
|
+
<button
|
|
564
|
+
class="btn btn--primary"
|
|
565
|
+
?disabled=${this._actionPending}
|
|
566
|
+
@click=${()=>this._handleInit()}
|
|
567
|
+
>Init Workspace</button>
|
|
568
|
+
</ic-empty-state>
|
|
569
|
+
`}_renderWorkspace(){return t`
|
|
570
|
+
${this._renderBreadcrumb()}
|
|
571
|
+
${this._renderStatusBar()}
|
|
572
|
+
${this._renderTabBar()}
|
|
573
|
+
${this._activeTab===`files`?t`
|
|
574
|
+
<div class="workspace-layout">
|
|
575
|
+
<div class="file-tree">
|
|
576
|
+
${this._renderFileTree()}
|
|
577
|
+
</div>
|
|
578
|
+
<div class="editor-panel">
|
|
579
|
+
${this._renderEditorPanel()}
|
|
580
|
+
</div>
|
|
581
|
+
</div>
|
|
582
|
+
`:this._renderGitTab()}
|
|
583
|
+
`}_renderBreadcrumb(){return t`
|
|
584
|
+
<ic-breadcrumb
|
|
585
|
+
.items=${[{label:`Agents`,route:`agents`},{label:this.agentId,route:`agents/${this.agentId}`},{label:`Workspace`}]}
|
|
586
|
+
@navigate=${e=>this._navigate(e.detail)}
|
|
587
|
+
></ic-breadcrumb>
|
|
588
|
+
`}_renderStatusBar(){return this._status?t`
|
|
589
|
+
<div class="status-bar">
|
|
590
|
+
<code>${this._status.dir}</code>
|
|
591
|
+
<ic-tag variant=${this._status.hasGitRepo?`success`:`default`}>
|
|
592
|
+
${this._status.hasGitRepo?`git repo`:`no git`}
|
|
593
|
+
</ic-tag>
|
|
594
|
+
<ic-tag variant=${this._status.isBootstrapped?`success`:`warning`}>
|
|
595
|
+
${this._status.isBootstrapped?`bootstrapped`:`onboarding`}
|
|
596
|
+
</ic-tag>
|
|
597
|
+
</div>
|
|
598
|
+
`:l}_renderTabBar(){return t`
|
|
599
|
+
<div class="tab-bar">
|
|
600
|
+
<button
|
|
601
|
+
class="tab-btn ${this._activeTab===`files`?`tab-btn--active`:``}"
|
|
602
|
+
@click=${()=>{this._activeTab=`files`,this._confirmAction=null,this._restoreTarget=null}}
|
|
603
|
+
>Files</button>
|
|
604
|
+
<button
|
|
605
|
+
class="tab-btn ${this._activeTab===`git`?`tab-btn--active`:``}"
|
|
606
|
+
@click=${()=>this._switchToGitTab()}
|
|
607
|
+
>Git</button>
|
|
608
|
+
</div>
|
|
609
|
+
`}_renderFileTree(){return this._status?t`
|
|
610
|
+
<div class="tree-section-label">Template Files</div>
|
|
611
|
+
${this._status.files.map(e=>t`
|
|
612
|
+
<button
|
|
613
|
+
class="tree-item ${this._selectedFile===e.name?`tree-item--active`:``}"
|
|
614
|
+
@click=${()=>this._selectFile(e.name)}
|
|
615
|
+
>
|
|
616
|
+
<span class="presence-dot ${e.present?`presence-dot--present`:`presence-dot--absent`}"></span>
|
|
617
|
+
<span class="file-name">${e.name}</span>
|
|
618
|
+
${e.present&&e.sizeBytes!==void 0?t`<span class="file-size">${f(e.sizeBytes)}</span>`:l}
|
|
619
|
+
</button>
|
|
620
|
+
`)}
|
|
621
|
+
<hr class="tree-separator" />
|
|
622
|
+
<div class="tree-section-label">Directories</div>
|
|
623
|
+
${d.map(e=>t`
|
|
624
|
+
<button
|
|
625
|
+
class="tree-item ${this._selectedSubdir===e?`tree-item--active`:``}"
|
|
626
|
+
@click=${()=>this._selectSubdir(e)}
|
|
627
|
+
>
|
|
628
|
+
<span class="folder-icon">\uD83D\uDCC1</span>
|
|
629
|
+
<span class="file-name">${e}</span>
|
|
630
|
+
</button>
|
|
631
|
+
`)}
|
|
632
|
+
`:l}_renderEditorPanel(){return this._selectedFile?this._renderFileEditor():this._selectedSubdir?this._renderDirListing():t`
|
|
633
|
+
<div class="placeholder-panel">Select a file or directory from the sidebar</div>
|
|
634
|
+
`}_renderFileEditor(){return t`
|
|
635
|
+
<div class="editor-header">
|
|
636
|
+
<span class="editor-filename">${this._selectedFile}</span>
|
|
637
|
+
${this._dirty?t`<span class="dirty-indicator">unsaved</span>`:l}
|
|
638
|
+
</div>
|
|
639
|
+
<textarea
|
|
640
|
+
class="editor-textarea"
|
|
641
|
+
.value=${this._editedContent}
|
|
642
|
+
@input=${this._onEditorInput}
|
|
643
|
+
spellcheck="false"
|
|
644
|
+
></textarea>
|
|
645
|
+
<div class="action-bar">
|
|
646
|
+
<button
|
|
647
|
+
class="btn btn--primary"
|
|
648
|
+
?disabled=${!this._dirty||this._saving}
|
|
649
|
+
@click=${()=>this._handleSave()}
|
|
650
|
+
>${this._saving?`Saving...`:`Save`}</button>
|
|
651
|
+
<button
|
|
652
|
+
class="btn btn--secondary"
|
|
653
|
+
?disabled=${this._actionPending}
|
|
654
|
+
@click=${()=>{this._confirmAction=`reset`}}
|
|
655
|
+
>Reset to Default</button>
|
|
656
|
+
<button
|
|
657
|
+
class="btn btn--danger"
|
|
658
|
+
?disabled=${this._actionPending}
|
|
659
|
+
@click=${()=>{this._confirmAction=`delete`}}
|
|
660
|
+
>Delete</button>
|
|
661
|
+
</div>
|
|
662
|
+
|
|
663
|
+
<ic-confirm-dialog
|
|
664
|
+
?open=${this._confirmAction===`reset`}
|
|
665
|
+
title="Reset to Default"
|
|
666
|
+
message=${`Reset "${this._selectedFile}" to its default content? Current content will be overwritten.`}
|
|
667
|
+
variant="default"
|
|
668
|
+
confirmLabel="Reset"
|
|
669
|
+
@confirm=${()=>this._handleReset()}
|
|
670
|
+
@cancel=${()=>{this._confirmAction=null}}
|
|
671
|
+
></ic-confirm-dialog>
|
|
672
|
+
|
|
673
|
+
<ic-confirm-dialog
|
|
674
|
+
?open=${this._confirmAction===`delete`}
|
|
675
|
+
title="Delete File"
|
|
676
|
+
message=${`Delete "${this._selectedFile}"? This action cannot be undone.`}
|
|
677
|
+
variant="danger"
|
|
678
|
+
confirmLabel="Delete"
|
|
679
|
+
@confirm=${()=>this._handleDelete()}
|
|
680
|
+
@cancel=${()=>{this._confirmAction=null}}
|
|
681
|
+
></ic-confirm-dialog>
|
|
682
|
+
`}_renderDirListing(){return this._dirEntries.length===0?t`<div class="dir-empty">Empty directory</div>`:t`
|
|
683
|
+
<table class="dir-table">
|
|
684
|
+
<thead>
|
|
685
|
+
<tr>
|
|
686
|
+
<th>Name</th>
|
|
687
|
+
<th>Type</th>
|
|
688
|
+
<th>Size</th>
|
|
689
|
+
<th>Modified</th>
|
|
690
|
+
</tr>
|
|
691
|
+
</thead>
|
|
692
|
+
<tbody>
|
|
693
|
+
${this._dirEntries.map(e=>t`
|
|
694
|
+
<tr>
|
|
695
|
+
<td>${e.name}</td>
|
|
696
|
+
<td>${e.type}</td>
|
|
697
|
+
<td>${e.sizeBytes===void 0?`-`:f(e.sizeBytes)}</td>
|
|
698
|
+
<td>
|
|
699
|
+
${e.modifiedAt?t`<ic-relative-time .timestamp=${e.modifiedAt}></ic-relative-time>`:`-`}
|
|
700
|
+
</td>
|
|
701
|
+
</tr>
|
|
702
|
+
`)}
|
|
703
|
+
</tbody>
|
|
704
|
+
</table>
|
|
705
|
+
`}_renderGitTab(){return this._status?.hasGitRepo?t`
|
|
706
|
+
<div class="git-panel">
|
|
707
|
+
${this._renderGitStatus()}
|
|
708
|
+
${this._renderDiffViewer()}
|
|
709
|
+
${this._renderCommitForm()}
|
|
710
|
+
${this._renderCommitLog()}
|
|
711
|
+
<ic-confirm-dialog
|
|
712
|
+
?open=${this._confirmAction===`restore`}
|
|
713
|
+
title="Restore File"
|
|
714
|
+
message=${`Restore "${this._restoreTarget}" to HEAD? Uncommitted changes will be lost.`}
|
|
715
|
+
variant="danger"
|
|
716
|
+
confirmLabel="Restore"
|
|
717
|
+
@confirm=${()=>this._handleRestore()}
|
|
718
|
+
@cancel=${()=>{this._confirmAction=null,this._restoreTarget=null}}
|
|
719
|
+
></ic-confirm-dialog>
|
|
720
|
+
</div>
|
|
721
|
+
`:t`
|
|
722
|
+
<ic-empty-state
|
|
723
|
+
message="No git repository"
|
|
724
|
+
description="Initialize a git repository to track workspace changes."
|
|
725
|
+
icon="folder"
|
|
726
|
+
></ic-empty-state>
|
|
727
|
+
`}_renderGitStatus(){return this._gitStatus?t`
|
|
728
|
+
<div class="git-section">
|
|
729
|
+
<div class="git-section-header">
|
|
730
|
+
<span>Status</span>
|
|
731
|
+
<span class="git-branch">${this._gitStatus.branch}</span>
|
|
732
|
+
<span class="git-change-count">${this._gitStatus.entries.length} changes</span>
|
|
733
|
+
</div>
|
|
734
|
+
${this._gitStatus.clean?t`<div class="clean-message">Working tree clean</div>`:this._gitStatus.entries.map(e=>{let n=this._statusBadge(e.status),r=n===`??`?`U`:n;return t`
|
|
735
|
+
<div
|
|
736
|
+
class="changed-file ${this._gitDiffFile===e.path?`changed-file--active`:``}"
|
|
737
|
+
@click=${()=>this._loadFileDiff(e.path)}
|
|
738
|
+
>
|
|
739
|
+
<span class="status-badge status-badge--${r}">${n}</span>
|
|
740
|
+
<span class="changed-file-path">${e.path}</span>
|
|
741
|
+
${e.status!==`untracked`&&e.status!==`added`?t`<button
|
|
742
|
+
class="restore-btn"
|
|
743
|
+
@click=${t=>{t.stopPropagation(),this._requestRestore(e.path)}}
|
|
744
|
+
>Restore</button>`:l}
|
|
745
|
+
</div>
|
|
746
|
+
`})}
|
|
747
|
+
</div>
|
|
748
|
+
`:l}_renderDiffViewer(){if(!this._gitDiff)return t`<div class="diff-empty">Select a changed file to view its diff</div>`;let e=this._gitDiff.split(`
|
|
749
|
+
`);return t`
|
|
750
|
+
<div class="diff-viewer">
|
|
751
|
+
<div class="diff-header">${this._gitDiffFile}</div>
|
|
752
|
+
<pre class="diff-content">${e.map(e=>t`<span class="${this._diffLineClass(e)}">${e}\n</span>`)}</pre>
|
|
753
|
+
</div>
|
|
754
|
+
`}_renderCommitForm(){return t`
|
|
755
|
+
<div class="git-section">
|
|
756
|
+
<div class="git-section-header">Commit</div>
|
|
757
|
+
<div class="commit-form">
|
|
758
|
+
<input
|
|
759
|
+
class="commit-input"
|
|
760
|
+
type="text"
|
|
761
|
+
placeholder="Commit message (optional)"
|
|
762
|
+
.value=${this._commitMessage}
|
|
763
|
+
@input=${e=>{this._commitMessage=e.target.value}}
|
|
764
|
+
/>
|
|
765
|
+
<button
|
|
766
|
+
class="btn btn--primary"
|
|
767
|
+
?disabled=${this._commitDisabled}
|
|
768
|
+
@click=${()=>this._handleCommit()}
|
|
769
|
+
>${this._committing?`Committing...`:`Commit`}</button>
|
|
770
|
+
</div>
|
|
771
|
+
</div>
|
|
772
|
+
`}_renderCommitLog(){return t`
|
|
773
|
+
<div class="git-section">
|
|
774
|
+
<div class="git-section-header">Recent Commits</div>
|
|
775
|
+
${this._gitLog.length===0?t`<div class="clean-message">No commits yet</div>`:this._gitLog.map(e=>t`
|
|
776
|
+
<div class="commit-entry">
|
|
777
|
+
<span class="commit-sha">${e.sha.slice(0,7)}</span>
|
|
778
|
+
<span class="commit-message">${e.message}</span>
|
|
779
|
+
<span class="commit-time">
|
|
780
|
+
<ic-relative-time .timestamp=${new Date(e.date).getTime()}></ic-relative-time>
|
|
781
|
+
</span>
|
|
782
|
+
</div>
|
|
783
|
+
`)}
|
|
784
|
+
</div>
|
|
785
|
+
`}};c([s({attribute:!1})],p.prototype,`rpcClient`,void 0),c([s()],p.prototype,`agentId`,void 0),c([a()],p.prototype,`_status`,void 0),c([a()],p.prototype,`_loadState`,void 0),c([a()],p.prototype,`_error`,void 0),c([a()],p.prototype,`_activeTab`,void 0),c([a()],p.prototype,`_selectedFile`,void 0),c([a()],p.prototype,`_selectedSubdir`,void 0),c([a()],p.prototype,`_fileContent`,void 0),c([a()],p.prototype,`_editedContent`,void 0),c([a()],p.prototype,`_dirEntries`,void 0),c([a()],p.prototype,`_saving`,void 0),c([a()],p.prototype,`_dirty`,void 0),c([a()],p.prototype,`_confirmAction`,void 0),c([a()],p.prototype,`_actionPending`,void 0),c([a()],p.prototype,`_gitStatus`,void 0),c([a()],p.prototype,`_gitLog`,void 0),c([a()],p.prototype,`_gitDiff`,void 0),c([a()],p.prototype,`_gitDiffFile`,void 0),c([a()],p.prototype,`_commitMessage`,void 0),c([a()],p.prototype,`_committing`,void 0),c([a()],p.prototype,`_restoreTarget`,void 0),p=c([e(`ic-workspace-manager`)],p);export{p as IcWorkspaceManager};
|
|
@@ -8,8 +8,9 @@
|
|
|
8
8
|
<link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png" />
|
|
9
9
|
<link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png" />
|
|
10
10
|
<link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png" />
|
|
11
|
-
<script type="module" crossorigin src="/app/assets/index-
|
|
12
|
-
<link rel="
|
|
11
|
+
<script type="module" crossorigin src="/app/assets/index-FLPhHz8p.js"></script>
|
|
12
|
+
<link rel="modulepreload" crossorigin href="/app/assets/decorate-BvWYovGE.js">
|
|
13
|
+
<link rel="stylesheet" crossorigin href="/app/assets/index-CVEaS9aY.css">
|
|
13
14
|
</head>
|
|
14
15
|
<body style="background: var(--ic-bg); color: var(--ic-text);" class="min-h-screen">
|
|
15
16
|
<ic-app></ic-app>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "comisai",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.25",
|
|
4
4
|
"author": "Moshe Anconina",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"description": "Security-first AI agent platform — connects AI agents to Discord, Telegram, Slack, WhatsApp, and more",
|
|
@@ -111,23 +111,23 @@
|
|
|
111
111
|
"@comis/web"
|
|
112
112
|
],
|
|
113
113
|
"dependencies": {
|
|
114
|
-
"@comis/shared": "1.0.
|
|
115
|
-
"@comis/core": "1.0.
|
|
116
|
-
"@comis/infra": "1.0.
|
|
117
|
-
"@comis/memory": "1.0.
|
|
118
|
-
"@comis/gateway": "1.0.
|
|
119
|
-
"@comis/skills": "1.0.
|
|
120
|
-
"@comis/scheduler": "1.0.
|
|
121
|
-
"@comis/agent": "1.0.
|
|
122
|
-
"@comis/channels": "1.0.
|
|
123
|
-
"@comis/cli": "1.0.
|
|
124
|
-
"@comis/daemon": "1.0.
|
|
125
|
-
"@comis/web": "1.0.
|
|
114
|
+
"@comis/shared": "1.0.25",
|
|
115
|
+
"@comis/core": "1.0.25",
|
|
116
|
+
"@comis/infra": "1.0.25",
|
|
117
|
+
"@comis/memory": "1.0.25",
|
|
118
|
+
"@comis/gateway": "1.0.25",
|
|
119
|
+
"@comis/skills": "1.0.25",
|
|
120
|
+
"@comis/scheduler": "1.0.25",
|
|
121
|
+
"@comis/agent": "1.0.25",
|
|
122
|
+
"@comis/channels": "1.0.25",
|
|
123
|
+
"@comis/cli": "1.0.25",
|
|
124
|
+
"@comis/daemon": "1.0.25",
|
|
125
|
+
"@comis/web": "1.0.25",
|
|
126
126
|
"@agentclientprotocol/sdk": "^0.19.0",
|
|
127
127
|
"@clack/core": "^1.1.0",
|
|
128
128
|
"@clack/prompts": "^1.1.0",
|
|
129
129
|
"@elevenlabs/elevenlabs-js": "^2.38.1",
|
|
130
|
-
"@fal-ai/client": "1.9.
|
|
130
|
+
"@fal-ai/client": "1.9.6",
|
|
131
131
|
"@google/genai": "1.50.1",
|
|
132
132
|
"@grammyjs/auto-retry": "^2.0.2",
|
|
133
133
|
"@grammyjs/files": "^1.2.0",
|
|
@@ -193,7 +193,7 @@
|
|
|
193
193
|
"sd-notify": "^2.8.0"
|
|
194
194
|
},
|
|
195
195
|
"devDependencies": {
|
|
196
|
-
"typescript": "
|
|
196
|
+
"typescript": "5.9.3"
|
|
197
197
|
},
|
|
198
198
|
"scripts": {
|
|
199
199
|
"build": "tsc"
|