mindwire 0.1.36 → 0.1.40
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/README.md +16 -0
- package/dist/{chunk-RTGZDLSG.js → chunk-BJL5K6M7.js} +74 -21
- package/dist/chunk-BJL5K6M7.js.map +1 -0
- package/dist/chunk-ZP7F7LP7.js +306 -0
- package/dist/chunk-ZP7F7LP7.js.map +1 -0
- package/dist/cli.js +499 -250
- package/dist/cli.js.map +1 -1
- package/dist/client.d.ts +6 -8
- package/dist/computer/dashboard.d.ts +1 -0
- package/dist/computer/desktop.d.ts +17 -0
- package/dist/computer/directory-http.d.ts +1 -1
- package/dist/computer/discovery.d.ts +22 -0
- package/dist/computer/inspection.d.ts +30 -0
- package/dist/computer/lifecycle.d.ts +4 -2
- package/dist/computer/runtime-version.d.ts +6 -0
- package/dist/computer/service-update.d.ts +26 -0
- package/dist/computer/setup-prompt.d.ts +2 -0
- package/dist/computer/startup.d.ts +7 -0
- package/dist/computer/terminal-ui.d.ts +9 -0
- package/dist/computer.d.ts +2 -0
- package/dist/{connection-change-IBNL42BL.js → connection-change-7ZV6O75Q.js} +3 -3
- package/dist/{connection-change-IBNL42BL.js.map → connection-change-7ZV6O75Q.js.map} +1 -1
- package/dist/{controller-2SJLZMJZ.js → controller-FBMGMSLM.js} +67 -9
- package/dist/controller-FBMGMSLM.js.map +1 -0
- package/dist/{controller-handoff-RUUHODNC.js → controller-handoff-CJKXUFQI.js} +3 -3
- package/dist/{controller-handoff-RUUHODNC.js.map → controller-handoff-CJKXUFQI.js.map} +1 -1
- package/dist/conversations.d.ts +57 -0
- package/dist/daemon-binary.d.ts +2 -0
- package/dist/index.cjs +66 -12
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +66 -13
- package/dist/index.js.map +1 -1
- package/dist/project-sync.d.ts +29 -0
- package/dist/surfaces.d.ts +20 -1
- package/dist/types.d.ts +18 -0
- package/dist/workspace.d.ts +2 -0
- package/package.json +1 -1
- package/dist/chunk-67BNDGRK.js +0 -20
- package/dist/chunk-67BNDGRK.js.map +0 -1
- package/dist/chunk-RTGZDLSG.js.map +0 -1
- package/dist/controller-2SJLZMJZ.js.map +0 -1
package/dist/project-sync.d.ts
CHANGED
|
@@ -23,6 +23,31 @@ export interface ProjectSyncRequest {
|
|
|
23
23
|
checkpointId?: string;
|
|
24
24
|
/** Only needed on first import; subsequent imports find the preserved replica. */
|
|
25
25
|
path?: string;
|
|
26
|
+
/** Literal project-relative ignored files/folders to include. Default: respect Git ignores. */
|
|
27
|
+
includeIgnored?: string[];
|
|
28
|
+
/** Preview scope token. Re-review if ignore rules or tracked paths change. */
|
|
29
|
+
selectionToken?: string;
|
|
30
|
+
}
|
|
31
|
+
export interface ProjectSyncPreviewRequest {
|
|
32
|
+
projectId: string;
|
|
33
|
+
includeIgnored?: string[];
|
|
34
|
+
cursor?: number;
|
|
35
|
+
}
|
|
36
|
+
export interface ProjectSyncIgnoredPath {
|
|
37
|
+
path: string;
|
|
38
|
+
kind: "file" | "directory";
|
|
39
|
+
included: boolean;
|
|
40
|
+
}
|
|
41
|
+
export interface ProjectSyncPreview {
|
|
42
|
+
version: number;
|
|
43
|
+
fileCount: number;
|
|
44
|
+
/** Selected working-file bytes; Git history and conversations are additional. */
|
|
45
|
+
bytes: number;
|
|
46
|
+
ignoredCount: number;
|
|
47
|
+
ignored: ProjectSyncIgnoredPath[];
|
|
48
|
+
includeIgnored: string[];
|
|
49
|
+
next?: number;
|
|
50
|
+
selectionToken: string;
|
|
26
51
|
}
|
|
27
52
|
export interface ProjectSyncConflict {
|
|
28
53
|
path: string;
|
|
@@ -62,6 +87,8 @@ export declare class ProjectSyncApi {
|
|
|
62
87
|
private readonly mw;
|
|
63
88
|
private readonly flights;
|
|
64
89
|
constructor(mw: Mindwire);
|
|
90
|
+
private requireSelectionSupport;
|
|
91
|
+
preview(request: ProjectSyncPreviewRequest, options?: Options): Promise<ProjectSyncPreview>;
|
|
65
92
|
export(request: ProjectSyncRequest, options?: Options): Promise<ProjectSyncOperation>;
|
|
66
93
|
import(request: ProjectSyncRequest, options?: Options): Promise<ProjectSyncOperation>;
|
|
67
94
|
list(options?: Options): Promise<ProjectSyncOperation[]>;
|
|
@@ -94,6 +121,8 @@ export declare class ProjectSyncApi {
|
|
|
94
121
|
id: string;
|
|
95
122
|
projectId: string;
|
|
96
123
|
path?: string;
|
|
124
|
+
includeIgnored?: string[];
|
|
125
|
+
selectionToken?: string;
|
|
97
126
|
}, options?: Options & {
|
|
98
127
|
onProgress?: (progress: ProjectSyncProgress) => void;
|
|
99
128
|
}): Promise<ProjectSyncOperation>;
|
package/dist/surfaces.d.ts
CHANGED
|
@@ -32,7 +32,7 @@ export interface SurfaceSnapshot {
|
|
|
32
32
|
id: string;
|
|
33
33
|
workspaceId: string;
|
|
34
34
|
kind: "desktop";
|
|
35
|
-
provider: "oblien";
|
|
35
|
+
provider: "oblien" | "macos";
|
|
36
36
|
version: number;
|
|
37
37
|
revision: number;
|
|
38
38
|
instanceId: string;
|
|
@@ -48,6 +48,22 @@ export interface SurfaceSnapshot {
|
|
|
48
48
|
controller?: SurfaceController;
|
|
49
49
|
authorizationExpiresAt?: string;
|
|
50
50
|
error?: SurfaceProblem;
|
|
51
|
+
setup?: {
|
|
52
|
+
reason: string;
|
|
53
|
+
command: string;
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
export interface LocalDesktopInfo {
|
|
57
|
+
supported: boolean;
|
|
58
|
+
enabled: boolean;
|
|
59
|
+
screenSharing: boolean;
|
|
60
|
+
username: string;
|
|
61
|
+
}
|
|
62
|
+
/** Write-only Mac configuration. The CLI prompts locally; never include this in a QR or workspace metadata. */
|
|
63
|
+
export interface LocalDesktopSettings {
|
|
64
|
+
enabled: boolean;
|
|
65
|
+
username?: string;
|
|
66
|
+
password?: string;
|
|
51
67
|
}
|
|
52
68
|
/** Write-only, desktop-only, expiring provider grant. Never pass a user's session JWT. */
|
|
53
69
|
export interface SurfaceBinding {
|
|
@@ -165,6 +181,9 @@ export declare class SurfacesApi {
|
|
|
165
181
|
list(): Promise<SurfaceSnapshot[]>;
|
|
166
182
|
status(refresh?: boolean): Promise<SurfaceSnapshot>;
|
|
167
183
|
bind(binding: SurfaceBinding): Promise<SurfaceSnapshot>;
|
|
184
|
+
localStatus(): Promise<LocalDesktopInfo>;
|
|
185
|
+
/** Local CLI only. The separate 0600 control credential is not part of phone pairing. */
|
|
186
|
+
configureLocal(settings: LocalDesktopSettings, localControlToken: string): Promise<SurfaceSnapshot>;
|
|
168
187
|
open(request: SurfaceOpenRequest): Promise<SurfaceSession>;
|
|
169
188
|
control(id: string, request: SurfaceControlRequest): Promise<SurfaceSession>;
|
|
170
189
|
close(id: string): Promise<{
|
package/dist/types.d.ts
CHANGED
|
@@ -271,6 +271,8 @@ export interface Capabilities {
|
|
|
271
271
|
history: Support;
|
|
272
272
|
sessions: Support;
|
|
273
273
|
resume: boolean;
|
|
274
|
+
/** Native conversation branching before a selected user message. */
|
|
275
|
+
fork?: boolean;
|
|
274
276
|
toolEvents: boolean;
|
|
275
277
|
cancel: boolean;
|
|
276
278
|
persistent: boolean;
|
|
@@ -678,6 +680,18 @@ export interface Message {
|
|
|
678
680
|
parts?: Part[];
|
|
679
681
|
/** Native user images, including inline bytes when retained by the harness or recorded turn. */
|
|
680
682
|
attachments?: Attachment[];
|
|
683
|
+
/** This native prompt has a safe edit-and-resend boundary. */
|
|
684
|
+
canFork?: boolean;
|
|
685
|
+
}
|
|
686
|
+
export interface ForkChatOptions {
|
|
687
|
+
/** Reuse this ID when retrying a selected-message fork. */
|
|
688
|
+
newChatId?: string;
|
|
689
|
+
/** Excludes this user message and all later history from the branch. */
|
|
690
|
+
beforeMessageId?: string;
|
|
691
|
+
}
|
|
692
|
+
export interface ChatForkResult extends ChatSummary {
|
|
693
|
+
/** Authoritative metadata for the new branch, when a workspace registry is available. */
|
|
694
|
+
snapshot?: import("./workspace.js").WorkspaceSnapshot;
|
|
681
695
|
}
|
|
682
696
|
/** Complete messages, oldest first. A soft byte budget keeps large histories incremental. */
|
|
683
697
|
export interface MessagePage {
|
|
@@ -988,6 +1002,8 @@ export interface NotifyChannelTestResult {
|
|
|
988
1002
|
export interface Health {
|
|
989
1003
|
historyPageVersion?: number;
|
|
990
1004
|
surfaceProtocolVersion?: number;
|
|
1005
|
+
/** Opt-in Mac Screen Sharing through the existing paired SSH connection. */
|
|
1006
|
+
localDesktopVersion?: number;
|
|
991
1007
|
/** Workspace registry protocol version; absent on daemons predating workspace metadata. */
|
|
992
1008
|
workspaceMetadataVersion?: number;
|
|
993
1009
|
/** Durable project creation/clone operations; absent on older daemons. */
|
|
@@ -996,6 +1012,7 @@ export interface Health {
|
|
|
996
1012
|
projectIconsVersion?: number;
|
|
997
1013
|
/** Preserved workspace replicas, native chat checkpoints and recoverable three-way import. */
|
|
998
1014
|
projectSyncVersion?: number;
|
|
1015
|
+
conversationBrowserVersion?: number;
|
|
999
1016
|
/** Workspace/project GitHub bindings and operation/run credential forwarding. */
|
|
1000
1017
|
gitAccessVersion?: number;
|
|
1001
1018
|
/** Durable Git writes: v2 adds branches; v3 adds repository-scoped commit author setup. */
|
|
@@ -1015,6 +1032,7 @@ export interface Health {
|
|
|
1015
1032
|
workspaceExecutionVersion?: number;
|
|
1016
1033
|
terminalProtocolVersion?: number;
|
|
1017
1034
|
turnRequestVersion?: number;
|
|
1035
|
+
chatForkVersion?: number;
|
|
1018
1036
|
/** Image-only input and image attachments retained in message history. */
|
|
1019
1037
|
imageAttachmentsVersion?: number;
|
|
1020
1038
|
computerConnectionVersion?: number;
|
package/dist/workspace.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Mindwire } from "./client.js";
|
|
2
2
|
import { ProjectSyncApi } from "./project-sync.js";
|
|
3
|
+
import { ConversationsApi } from "./conversations.js";
|
|
3
4
|
/** Write-only credentials. Never persisted in operation snapshots or conversation state. */
|
|
4
5
|
export type ProjectAuth = ({
|
|
5
6
|
kind: "token";
|
|
@@ -245,6 +246,7 @@ export declare class WorkspaceCollection<T extends WorkspaceRecord> {
|
|
|
245
246
|
/** Workspace metadata is shared by all harnesses; withAgent() never scopes these requests. */
|
|
246
247
|
export declare class WorkspaceApi {
|
|
247
248
|
private readonly mw;
|
|
249
|
+
readonly conversations: ConversationsApi;
|
|
248
250
|
readonly sync: ProjectSyncApi;
|
|
249
251
|
readonly git: GitAccessApi;
|
|
250
252
|
readonly operations: ProjectOperationsApi;
|
package/package.json
CHANGED
package/dist/chunk-67BNDGRK.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { websocketURL } from './chunk-RTGZDLSG.js';
|
|
2
|
-
|
|
3
|
-
// src/computer/provider-info.ts
|
|
4
|
-
function connectionAddress(relay, host) {
|
|
5
|
-
return relay.kind === "none" ? `ssh:${host ?? "network"}` : relay.url ? websocketURL(relay.url) : `temporary:${relay.kind}`;
|
|
6
|
-
}
|
|
7
|
-
function connectionInfo(relay, host) {
|
|
8
|
-
if (relay.kind === "none") return { provider: "direct", address: host ? "persistent" : "network" };
|
|
9
|
-
return { provider: relay.kind, address: ["cloudflare", "ngrok"].includes(relay.kind) && !relay.url ? "temporary" : "persistent" };
|
|
10
|
-
}
|
|
11
|
-
function connectionDescription(info) {
|
|
12
|
-
const name = { oblien: "Oblien", cloudflare: "Cloudflare", ngrok: "ngrok", custom: "Your tunnel", direct: "Direct SSH / VPN" }[info.provider];
|
|
13
|
-
if (info.address === "temporary") return `${name} \xB7 temporary address. For reconnect after a restart, run mindwire connection to choose a persistent address.`;
|
|
14
|
-
if (info.address === "network") return `${name} \xB7 reachable network required. Use a VPN hostname for access across networks.`;
|
|
15
|
-
return `${name} \xB7 persistent address. Saved phones retry automatically when this computer is online.`;
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export { connectionAddress, connectionDescription, connectionInfo };
|
|
19
|
-
//# sourceMappingURL=chunk-67BNDGRK.js.map
|
|
20
|
-
//# sourceMappingURL=chunk-67BNDGRK.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/computer/provider-info.ts"],"names":[],"mappings":";;;AAKO,SAAS,iBAAA,CAAkB,OAAqB,IAAA,EAAuB;AAC5E,EAAA,OAAO,KAAA,CAAM,IAAA,KAAS,MAAA,GAAS,CAAA,IAAA,EAAO,QAAQ,SAAS,CAAA,CAAA,GACnD,KAAA,CAAM,GAAA,GAAM,aAAa,KAAA,CAAM,GAAG,CAAA,GAAI,CAAA,UAAA,EAAa,MAAM,IAAI,CAAA,CAAA;AACnE;AAGO,SAAS,cAAA,CAAe,OAAqB,IAAA,EAAuC;AACzF,EAAA,IAAI,KAAA,CAAM,IAAA,KAAS,MAAA,EAAQ,OAAO,EAAE,UAAU,QAAA,EAAU,OAAA,EAAS,IAAA,GAAO,YAAA,GAAe,SAAA,EAAU;AACjG,EAAA,OAAO,EAAE,QAAA,EAAU,KAAA,CAAM,IAAA,EAAM,OAAA,EAAS,CAAC,YAAA,EAAc,OAAO,CAAA,CAAE,QAAA,CAAS,MAAM,IAAI,CAAA,IAAK,CAAC,KAAA,CAAM,GAAA,GAAM,cAAc,YAAA,EAAa;AAClI;AAEO,SAAS,sBAAsB,IAAA,EAAsC;AAC1E,EAAA,MAAM,IAAA,GAAO,EAAE,MAAA,EAAQ,QAAA,EAAU,YAAY,YAAA,EAAc,KAAA,EAAO,OAAA,EAAS,MAAA,EAAQ,aAAA,EAAe,MAAA,EAAQ,kBAAA,EAAmB,CAAE,KAAK,QAAQ,CAAA;AAC5I,EAAA,IAAI,IAAA,CAAK,OAAA,KAAY,WAAA,EAAa,OAAO,GAAG,IAAI,CAAA,+GAAA,CAAA;AAChD,EAAA,IAAI,IAAA,CAAK,OAAA,KAAY,SAAA,EAAW,OAAO,GAAG,IAAI,CAAA,gFAAA,CAAA;AAC9C,EAAA,OAAO,GAAG,IAAI,CAAA,wFAAA,CAAA;AAChB","file":"chunk-67BNDGRK.js","sourcesContent":["import type { ComputerConnectionInfo } from \"../computer.js\";\nimport type { RelayOptions } from \"./relay.js\";\nimport { websocketURL } from \"./relay.js\";\n\n/** Credential renewal does not change the address already saved by the phone. */\nexport function connectionAddress(relay: RelayOptions, host?: string): string {\n return relay.kind === \"none\" ? `ssh:${host ?? \"network\"}`\n : relay.url ? websocketURL(relay.url) : `temporary:${relay.kind}`;\n}\n\n/** Public, non-secret metadata. Route/SSH identity is independent of provider credentials. */\nexport function connectionInfo(relay: RelayOptions, host?: string): ComputerConnectionInfo {\n if (relay.kind === \"none\") return { provider: \"direct\", address: host ? \"persistent\" : \"network\" };\n return { provider: relay.kind, address: [\"cloudflare\", \"ngrok\"].includes(relay.kind) && !relay.url ? \"temporary\" : \"persistent\" };\n}\n\nexport function connectionDescription(info: ComputerConnectionInfo): string {\n const name = { oblien: \"Oblien\", cloudflare: \"Cloudflare\", ngrok: \"ngrok\", custom: \"Your tunnel\", direct: \"Direct SSH / VPN\" }[info.provider];\n if (info.address === \"temporary\") return `${name} · temporary address. For reconnect after a restart, run mindwire connection to choose a persistent address.`;\n if (info.address === \"network\") return `${name} · reachable network required. Use a VPN hostname for access across networks.`;\n return `${name} · persistent address. Saved phones retry automatically when this computer is online.`;\n}\n"]}
|