dorkos 0.92.0 → 0.93.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/core-extensions/hello-world/index.ts +69 -4
- package/dist/bin/cli.js +1199 -319
- package/dist/client/assets/{AboutPage-CtAhGJVI.js → AboutPage-R35A-Uu-.js} +1 -1
- package/dist/client/assets/{AdapterIcon-DTXuj6Zu.js → AdapterIcon-kPDXiFU1.js} +1 -1
- package/dist/client/assets/{AppearancePage-EJF8LarY.js → AppearancePage-COqDtruX.js} +1 -1
- package/dist/client/assets/{BaseTanStackRouterDevtoolsPanel-B-iktbLX-COy_dBa2.js → BaseTanStackRouterDevtoolsPanel-B-iktbLX-CIKvkn5X.js} +24 -24
- package/dist/client/assets/{BlintzCanvas-Bb84mtl-.js → BlintzCanvas-4FX_eaSh.js} +1 -1
- package/dist/client/assets/{CanvasCsvContent-D1y22lqg.js → CanvasCsvContent-Dq2X1kUl.js} +1 -1
- package/dist/client/assets/{CanvasFileContent-CbOnIUPF.js → CanvasFileContent-CZUc62IR.js} +2 -2
- package/dist/client/assets/{CanvasModel3dContent-Bv86PZ-y.js → CanvasModel3dContent-D1IN_nl9.js} +2 -2
- package/dist/client/assets/{CodeMirrorDiff-CXqMnztG.js → CodeMirrorDiff-BeEhMSvL.js} +1 -1
- package/dist/client/assets/{CodeMirrorEditor-DHSY565t.js → CodeMirrorEditor-BlNLMvbo.js} +1 -1
- package/dist/client/assets/{ConnectionAccessLists-D5Qo1i-D.js → ConnectionAccessLists-s7RnRr1y.js} +1 -1
- package/dist/client/assets/{ConnectionsPage-DFvJRdx7.js → ConnectionsPage-BTTdQBdS.js} +2 -2
- package/dist/client/assets/ConventionPage-CI3PeUHm.js +11 -0
- package/dist/client/assets/{FloatingTanStackRouterDevtools-CqogiFob-BDQA6n2J.js → FloatingTanStackRouterDevtools-CqogiFob-D6OvDT9K.js} +1 -1
- package/dist/client/assets/HandlePage-Dvqztr0N.js +1 -0
- package/dist/client/assets/{LexicalField-a7Ov2ETq.js → LexicalField-Bqq5KeUW.js} +1 -1
- package/dist/client/assets/{ManagesPage-Czapr6qD.js → ManagesPage-CWdKDvw1.js} +1 -1
- package/dist/client/assets/{Model3dViewer-C_lFbWIi.js → Model3dViewer-ClJVGLDb.js} +1 -1
- package/dist/client/assets/NamePage-BgVZ-KD1.js +1 -0
- package/dist/client/assets/{NotificationsPage-CdQCyMJk.js → NotificationsPage-C6tE8iuE.js} +1 -1
- package/dist/client/assets/{PermissionsPage-DLT-RkUE.js → PermissionsPage-BqDl7shN.js} +1 -1
- package/dist/client/assets/{PersonalityPopover-BeOdD7eK.js → PersonalityPopover-B3q8QYcS.js} +1 -1
- package/dist/client/assets/PhotoPage-lt6ZevHW.js +1 -0
- package/dist/client/assets/{RoomsPage-CuZJdN_k.js → RoomsPage-DwYtOhd7.js} +1 -1
- package/dist/client/assets/{RunsOnPopover-DspQEAdG.js → RunsOnPopover-BDPs-RYB.js} +1 -1
- package/dist/client/assets/{SessionsPage-Ctwlg7GN.js → SessionsPage-Du24E934.js} +2 -2
- package/dist/client/assets/{SkillsPage-DJdFnWfL.js → SkillsPage-DjLUEngt.js} +1 -1
- package/dist/client/assets/{TasksPage-9jCfZB7f.js → TasksPage-B6i3r76o.js} +1 -1
- package/dist/client/assets/{ToolsPage-W7zK5P0s.js → ToolsPage-DNoC2MMz.js} +2 -2
- package/dist/client/assets/{TopologyGraph-CQga4Nuw.js → TopologyGraph-DtBDaHqX.js} +1 -1
- package/dist/client/assets/{agent-browser-CoSmBP5N.js → agent-browser-da9rKrej.js} +1 -1
- package/dist/client/assets/{highlighted-body-KPVGNVTW-Bq_O6Zlj.js → highlighted-body-KPVGNVTW-DJ5Xz8gv.js} +1 -1
- package/dist/client/assets/{index-CKY7hz-9.js → index-1o6WO7iZ.js} +1 -1
- package/dist/client/assets/{index-Dx0uYGgf.js → index-3DE2Q3OD.js} +1 -1
- package/dist/client/assets/index-B5yJddXH.js +1 -0
- package/dist/client/assets/{index-DrD7x9EL.js → index-BC9LsNlJ.js} +1 -1
- package/dist/client/assets/{index-bYhLX3oQ.js → index-BCGiD7pg.js} +410 -405
- package/dist/client/assets/index-BG-HtbEP.css +1 -0
- package/dist/client/assets/{index-BBMfKdj-.js → index-BQ-o6bQ0.js} +1 -1
- package/dist/client/assets/{index-D4nkiaT7.js → index-BVpHI-1y.js} +1 -1
- package/dist/client/assets/{index-DCmzSFWM.js → index-Bl2j_xjE.js} +1 -1
- package/dist/client/assets/{index-THAVeZRE.js → index-BnORUrPC.js} +1 -1
- package/dist/client/assets/{index-OidZkt6z.js → index-Bp2CiCey.js} +1 -1
- package/dist/client/assets/{index-BfoOBbWz.js → index-Bu16-jWo.js} +1 -1
- package/dist/client/assets/{index-DT9R_NnS.js → index-BzDP7VXZ.js} +1 -1
- package/dist/client/assets/{index-Bj32H2Xz.js → index-C9wgMNj5.js} +3 -3
- package/dist/client/assets/{index-CpCOMkMm.js → index-CJK5Iw50.js} +1 -1
- package/dist/client/assets/{index-Bat0bq64.js → index-CObinYlG.js} +1 -1
- package/dist/client/assets/{index-CdNENSm7.js → index-CQXxVt4A.js} +1 -1
- package/dist/client/assets/{index-Bn-vRpKY.js → index-CZ0BaV1t.js} +1 -1
- package/dist/client/assets/index-Ca5JlBEc.js +1 -0
- package/dist/client/assets/{index-CmQbhXN6.js → index-CfUAagLY.js} +1 -1
- package/dist/client/assets/{index-ULWpcSAZ.js → index-CotYqF0w.js} +1 -1
- package/dist/client/assets/{index-7AN8MIhq.js → index-CtJTMcuR.js} +1 -1
- package/dist/client/assets/{index-nztBriGg.js → index-CtlzkOJ3.js} +3 -3
- package/dist/client/assets/{index-9RHYMIP_.js → index-Cvzimc0W.js} +1 -1
- package/dist/client/assets/{index-cNE108-h.js → index-D0sn-ct6.js} +1 -1
- package/dist/client/assets/{index-BI051zYq.js → index-D1kH8Sr2.js} +2 -2
- package/dist/client/assets/{index-DV_54TKu.js → index-DJGEk3-H.js} +1 -1
- package/dist/client/assets/{index-B7fRxuTQ.js → index-DQWAoAN-.js} +1 -1
- package/dist/client/assets/{index-B4oYDFdX.js → index-DdsOOmtz.js} +1 -1
- package/dist/client/assets/{index-CIPmtIuV.js → index-DnN4PJaN.js} +1 -1
- package/dist/client/assets/{index-BiqiwP26.js → index-DsH33VjO.js} +4 -4
- package/dist/client/assets/{index-ahTVwxpJ.js → index-DwfaFQZo.js} +1 -1
- package/dist/client/assets/{index-BuAy0fEx.js → index-Dyeo69l2.js} +1 -1
- package/dist/client/assets/{index-E7ZNee_E.js → index-FsBhOkNr.js} +1 -1
- package/dist/client/assets/{index-DcwZU98u.js → index-LcH-4hgH.js} +1 -1
- package/dist/client/assets/{index-EmzeTf1X.js → index-gHd4-GL-.js} +1 -1
- package/dist/client/assets/{index-CFdScmIU.js → index-gIAwAMkn.js} +1 -1
- package/dist/client/assets/{room-files-source-CMj0pEdy.js → room-files-source-DRQNpCWs.js} +1 -1
- package/dist/client/assets/{soul-file-C_AT0A8U.js → soul-file-DcQD5pcS.js} +1 -1
- package/dist/client/assets/{use-personality-commit-ClM-Ahk5.js → use-personality-commit-Dsy9tqWY.js} +1 -1
- package/dist/client/index.html +2 -2
- package/dist/drizzle/0132_connection_access_levels.sql +84 -0
- package/dist/drizzle/0134_query_indexes.sql +8 -0
- package/dist/drizzle/0135_session_started_by.sql +13 -0
- package/dist/drizzle/meta/0132_snapshot.json +10075 -0
- package/dist/drizzle/meta/0134_snapshot.json +10095 -0
- package/dist/drizzle/meta/0135_snapshot.json +10176 -0
- package/dist/drizzle/meta/_journal.json +22 -1
- package/dist/server/index.js +18659 -13468
- package/dist/server/index.js.map +2 -2
- package/package.json +9 -7
- package/dist/client/assets/ConventionPage-fMfStY8d.js +0 -11
- package/dist/client/assets/HandlePage-8Gv3fBBC.js +0 -1
- package/dist/client/assets/NamePage-CrZUfKVe.js +0 -1
- package/dist/client/assets/PhotoPage-C2mHVHvV.js +0 -1
- package/dist/client/assets/index-B0qJNUoh.css +0 -1
- package/dist/client/assets/index-CtxpF7aO.js +0 -1
- package/dist/client/assets/index-N8BCc19i.js +0 -1
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { ExtensionAPI, ExtensionPageProps, StatusBarSlotContext } from '@dorkos/extension-api';
|
|
2
2
|
|
|
3
|
+
// React is provided by the host as a global — do not import it.
|
|
4
|
+
|
|
3
5
|
/**
|
|
4
6
|
* Hello World extension — demonstrates the extension API.
|
|
5
7
|
*
|
|
@@ -8,7 +10,8 @@ import type { ExtensionAPI, ExtensionPageProps, StatusBarSlotContext } from '@do
|
|
|
8
10
|
* - a section on the Activity tab,
|
|
9
11
|
* - a command palette item that says hello, and one that marks its tab,
|
|
10
12
|
* - a page at `/x/hello-world`, listed in the command palette and the phone's
|
|
11
|
-
* "Add-ons" menu,
|
|
13
|
+
* "Add-ons" menu, with a "Start a chat" button that starts work in a new
|
|
14
|
+
* chat and leaves the current one alone,
|
|
12
15
|
* - an item in the chat status bar, shown only when the chat has a folder,
|
|
13
16
|
* - a tab in the right panel, which its command marks with a dot.
|
|
14
17
|
*
|
|
@@ -34,8 +37,10 @@ export function activate(api: ExtensionAPI): () => void {
|
|
|
34
37
|
{ icon: 'hand-metal' }
|
|
35
38
|
);
|
|
36
39
|
|
|
37
|
-
// A full page at /x/hello-world. The empty path is the extension's home.
|
|
38
|
-
|
|
40
|
+
// A full page at /x/hello-world. The empty path is the extension's home. The
|
|
41
|
+
// page needs `api` for its button, so it is bound here.
|
|
42
|
+
const Page = (props: ExtensionPageProps) => <HelloPage {...props} api={api} />;
|
|
43
|
+
const unregisterPage = api.registerPage('', Page, { title: 'Hello' });
|
|
39
44
|
|
|
40
45
|
// An item in the chat status bar. `when` reads only its `ctx` argument: it
|
|
41
46
|
// runs while the status bar decides what fits, so it must never fetch or
|
|
@@ -107,7 +112,7 @@ function HelloSection() {
|
|
|
107
112
|
}
|
|
108
113
|
|
|
109
114
|
/** The extension's page. Core gives it the whole content area and scrolls it. */
|
|
110
|
-
function HelloPage({ search, setSearch }: ExtensionPageProps) {
|
|
115
|
+
function HelloPage({ search, setSearch, api }: ExtensionPageProps & { api: ExtensionAPI }) {
|
|
111
116
|
const name = search.name ?? 'there';
|
|
112
117
|
return (
|
|
113
118
|
<div style={{ maxWidth: '40rem', margin: '0 auto', padding: '24px 16px' }}>
|
|
@@ -124,10 +129,70 @@ function HelloPage({ search, setSearch }: ExtensionPageProps) {
|
|
|
124
129
|
style={{ display: 'block', marginTop: '4px', width: '100%', maxWidth: '20rem', padding: '6px 8px', border: '1px solid var(--border)', borderRadius: '8px', background: 'transparent', color: 'inherit', fontSize: '14px' }}
|
|
125
130
|
/>
|
|
126
131
|
</label>
|
|
132
|
+
<StartChat api={api} />
|
|
127
133
|
</div>
|
|
128
134
|
);
|
|
129
135
|
}
|
|
130
136
|
|
|
137
|
+
/**
|
|
138
|
+
* An outcome button (spec `flow-multiproject` V7): one click starts the work in
|
|
139
|
+
* a NEW chat in the current project, and the button turns into "Saying hello… ·
|
|
140
|
+
* Watch". Nothing navigates, and the chat you were in keeps what you typed.
|
|
141
|
+
*/
|
|
142
|
+
function StartChat({ api }: { api: ExtensionAPI }) {
|
|
143
|
+
const [started, setStarted] = React.useState<string | null>(null);
|
|
144
|
+
const [problem, setProblem] = React.useState<string | null>(null);
|
|
145
|
+
const [busy, setBusy] = React.useState(false);
|
|
146
|
+
// The project of the folder the app is in, kept current: it is null while
|
|
147
|
+
// the folder is still being resolved.
|
|
148
|
+
const [project, setProject] = React.useState(() => api.getState().currentProject);
|
|
149
|
+
React.useEffect(
|
|
150
|
+
() => api.subscribe((state) => state.currentProject, (next) => setProject(next)),
|
|
151
|
+
[]
|
|
152
|
+
);
|
|
153
|
+
|
|
154
|
+
const start = async () => {
|
|
155
|
+
if (!project) return;
|
|
156
|
+
setBusy(true);
|
|
157
|
+
setProblem(null);
|
|
158
|
+
try {
|
|
159
|
+
const { sessionId } = await api.startWork({
|
|
160
|
+
project: project.root,
|
|
161
|
+
prompt: 'Say hello, in one short sentence, then stop.',
|
|
162
|
+
title: `Saying hello in ${project.name}`,
|
|
163
|
+
reason: 'You asked for a hello from the Hello page',
|
|
164
|
+
});
|
|
165
|
+
setStarted(sessionId);
|
|
166
|
+
} catch (err) {
|
|
167
|
+
// `err.code` says which rule refused it; the message is already plain words.
|
|
168
|
+
setProblem(err instanceof Error ? err.message : 'The chat could not be started.');
|
|
169
|
+
} finally {
|
|
170
|
+
setBusy(false);
|
|
171
|
+
}
|
|
172
|
+
};
|
|
173
|
+
|
|
174
|
+
const button = { padding: '6px 12px', border: '1px solid var(--border)', borderRadius: '8px', background: 'transparent', color: 'inherit', fontSize: '13px', cursor: 'pointer' };
|
|
175
|
+
return (
|
|
176
|
+
<section style={{ marginTop: '24px' }}>
|
|
177
|
+
{started ? (
|
|
178
|
+
<p style={{ margin: 0, fontSize: '13px' }}>
|
|
179
|
+
Saying hello…{' · '}
|
|
180
|
+
<button type="button" style={{ ...button, padding: '2px 8px' }} onClick={() => api.navigate(`/session?session=${encodeURIComponent(started)}`)}>
|
|
181
|
+
Watch
|
|
182
|
+
</button>
|
|
183
|
+
</p>
|
|
184
|
+
) : (
|
|
185
|
+
<button type="button" style={button} disabled={!project || busy} onClick={() => void start()}>
|
|
186
|
+
Start a chat
|
|
187
|
+
</button>
|
|
188
|
+
)}
|
|
189
|
+
<p style={{ margin: '8px 0 0', fontSize: '12px', color: MUTED }}>
|
|
190
|
+
{problem ?? (project ? `A new chat in ${project.name} says hello. This page stays as it is.` : 'Open a chat in one of your projects first, then come back.')}
|
|
191
|
+
</p>
|
|
192
|
+
</section>
|
|
193
|
+
);
|
|
194
|
+
}
|
|
195
|
+
|
|
131
196
|
/** The status-bar item: short on a phone, with the project's name when there is room. */
|
|
132
197
|
function HelloStatusItem({ project, compact }: StatusBarSlotContext) {
|
|
133
198
|
return (
|