@opencomputer/cli 0.2.0 → 0.3.1
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 +27 -0
- package/dist/api.d.ts +53 -22
- package/dist/api.js +38 -3
- package/dist/api.js.map +1 -1
- package/dist/commands.js +447 -31
- package/dist/commands.js.map +1 -1
- package/dist/index.js +22 -3
- package/dist/index.js.map +1 -1
- package/dist/local.d.ts +2 -1
- package/dist/local.js +120 -19
- package/dist/local.js.map +1 -1
- package/dist/project.js +225 -9
- package/dist/project.js.map +1 -1
- package/dist/project.test.js +29 -1
- package/dist/project.test.js.map +1 -1
- package/dist/slack.d.ts +24 -0
- package/dist/slack.js +257 -0
- package/dist/slack.js.map +1 -0
- package/dist/slack.test.d.ts +1 -0
- package/dist/slack.test.js +44 -0
- package/dist/slack.test.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -41,3 +41,30 @@ email-triage/
|
|
|
41
41
|
The directory can be renamed without creating a different deployed agent; each
|
|
42
42
|
`opencomputer deploy` publishes a new immutable deployment and advances the
|
|
43
43
|
selected alias.
|
|
44
|
+
|
|
45
|
+
## Sessions
|
|
46
|
+
|
|
47
|
+
`opencomputer session` runs the current source locally. Deployed sessions have
|
|
48
|
+
their own lifecycle and can be resumed across CLI invocations:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
opencomputer session create --remote \
|
|
52
|
+
--agent gmail-summarizer@production
|
|
53
|
+
opencomputer session list
|
|
54
|
+
opencomputer session send <session-id> "Summarize today's inbox."
|
|
55
|
+
opencomputer session inspect <session-id>
|
|
56
|
+
opencomputer session attach <session-id>
|
|
57
|
+
opencomputer session end <session-id>
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
Add and manage account connections and agent channels from the same CLI:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
opencomputer connections connect gmail
|
|
64
|
+
opencomputer connections list
|
|
65
|
+
|
|
66
|
+
opencomputer channels add slack
|
|
67
|
+
opencomputer deploy
|
|
68
|
+
opencomputer channels connect slack --remote
|
|
69
|
+
opencomputer channels list
|
|
70
|
+
```
|
package/dist/api.d.ts
CHANGED
|
@@ -26,24 +26,31 @@ export interface ManagedAgentDeployment {
|
|
|
26
26
|
alias: string;
|
|
27
27
|
createdAt: string;
|
|
28
28
|
}
|
|
29
|
-
export interface AgentArtifactReference {
|
|
30
|
-
bucket: string;
|
|
31
|
-
key: string;
|
|
32
|
-
digest: string;
|
|
33
|
-
size: number;
|
|
34
|
-
}
|
|
35
|
-
export interface DeploymentUpload {
|
|
36
|
-
uploadUrl: string;
|
|
37
|
-
method: "PUT";
|
|
38
|
-
headers: Record<string, string>;
|
|
39
|
-
artifact: AgentArtifactReference;
|
|
40
|
-
}
|
|
41
29
|
export interface ManagedConnection {
|
|
42
30
|
id: string;
|
|
31
|
+
kind?: "channel" | "tool";
|
|
43
32
|
provider: string;
|
|
44
33
|
label: string;
|
|
34
|
+
agentId?: string;
|
|
35
|
+
alias?: string;
|
|
36
|
+
externalAccountId?: string;
|
|
45
37
|
displayName?: string;
|
|
38
|
+
scopes?: string[];
|
|
46
39
|
status: string;
|
|
40
|
+
createdAt?: string;
|
|
41
|
+
updatedAt?: string;
|
|
42
|
+
}
|
|
43
|
+
export interface ManagedSlackConnection {
|
|
44
|
+
id: string;
|
|
45
|
+
agentId: string;
|
|
46
|
+
alias: string;
|
|
47
|
+
appId?: string;
|
|
48
|
+
teamId?: string;
|
|
49
|
+
teamName?: string;
|
|
50
|
+
botUserId?: string;
|
|
51
|
+
status: string;
|
|
52
|
+
createdAt: string;
|
|
53
|
+
updatedAt: string;
|
|
47
54
|
}
|
|
48
55
|
export interface ManagedAgentEvent {
|
|
49
56
|
id: string;
|
|
@@ -51,12 +58,24 @@ export interface ManagedAgentEvent {
|
|
|
51
58
|
type: string;
|
|
52
59
|
data: Record<string, unknown>;
|
|
53
60
|
}
|
|
54
|
-
interface
|
|
61
|
+
export interface ManagedSessionSnapshot {
|
|
55
62
|
id: string;
|
|
56
63
|
status: string;
|
|
64
|
+
agentId?: string;
|
|
65
|
+
deploymentId?: string;
|
|
66
|
+
microvmState?: string;
|
|
67
|
+
createdAt?: string;
|
|
68
|
+
updatedAt?: string;
|
|
69
|
+
turns?: Array<{
|
|
70
|
+
id: string;
|
|
71
|
+
input: string;
|
|
72
|
+
status: string;
|
|
73
|
+
createdAt: string;
|
|
74
|
+
updatedAt: string;
|
|
75
|
+
}>;
|
|
57
76
|
}
|
|
58
77
|
interface CreateSessionResult {
|
|
59
|
-
session:
|
|
78
|
+
session: ManagedSessionSnapshot;
|
|
60
79
|
deployment?: ManagedAgentDeployment;
|
|
61
80
|
}
|
|
62
81
|
export declare class APIError extends Error {
|
|
@@ -89,20 +108,20 @@ export declare class OpenComputerClient {
|
|
|
89
108
|
revokeCredential(): Promise<void>;
|
|
90
109
|
templates(): Promise<ManagedAgentTemplate[]>;
|
|
91
110
|
agents(): Promise<ManagedAgentSummary[]>;
|
|
92
|
-
createDeploymentUpload(input: {
|
|
93
|
-
agentId: string;
|
|
94
|
-
digest: string;
|
|
95
|
-
size: number;
|
|
96
|
-
contentType: string;
|
|
97
|
-
}): Promise<DeploymentUpload>;
|
|
98
111
|
registerDeployment(input: {
|
|
99
112
|
agentId: string;
|
|
100
113
|
alias: string;
|
|
101
114
|
channels: string[];
|
|
102
115
|
connections: string[];
|
|
103
|
-
|
|
116
|
+
source: {
|
|
117
|
+
digest: string;
|
|
118
|
+
size: number;
|
|
119
|
+
contentType: string;
|
|
120
|
+
body: string;
|
|
121
|
+
};
|
|
104
122
|
}): Promise<ManagedAgentDeployment>;
|
|
105
123
|
connections(): Promise<ManagedConnection[]>;
|
|
124
|
+
disconnectConnection(connectionId: string): Promise<ManagedConnection>;
|
|
106
125
|
linkGoogle(service: string): Promise<{
|
|
107
126
|
service: string;
|
|
108
127
|
toolkit: string;
|
|
@@ -119,12 +138,24 @@ export declare class OpenComputerClient {
|
|
|
119
138
|
authorizationUrl?: string;
|
|
120
139
|
expiresAt?: string;
|
|
121
140
|
}>;
|
|
141
|
+
createSlackConnection(agentId: string): Promise<{
|
|
142
|
+
connection: ManagedSlackConnection;
|
|
143
|
+
webhookUrl: string;
|
|
144
|
+
}>;
|
|
145
|
+
channelConnections(): Promise<ManagedSlackConnection[]>;
|
|
146
|
+
completeSlackConnection(connectionId: string, botToken: string): Promise<ManagedSlackConnection>;
|
|
147
|
+
disconnectSlack(connectionId: string): Promise<ManagedSlackConnection>;
|
|
122
148
|
createSession(agentId: string): Promise<CreateSessionResult>;
|
|
149
|
+
sessions(): Promise<ManagedSessionSnapshot[]>;
|
|
150
|
+
session(sessionId: string): Promise<ManagedSessionSnapshot>;
|
|
123
151
|
createTurn(sessionId: string, input: string): Promise<{
|
|
124
152
|
turnId: string;
|
|
125
153
|
duplicate: boolean;
|
|
126
154
|
}>;
|
|
127
155
|
events(sessionId: string, after: number): Promise<ManagedAgentEvent[]>;
|
|
128
|
-
suspendSession(sessionId: string): Promise<
|
|
156
|
+
suspendSession(sessionId: string): Promise<ManagedSessionSnapshot>;
|
|
157
|
+
resumeSession(sessionId: string): Promise<ManagedSessionSnapshot>;
|
|
158
|
+
endSession(sessionId: string): Promise<ManagedSessionSnapshot>;
|
|
159
|
+
terminateSession(sessionId: string): Promise<ManagedSessionSnapshot>;
|
|
129
160
|
}
|
|
130
161
|
export {};
|
package/dist/api.js
CHANGED
|
@@ -76,9 +76,6 @@ export class OpenComputerClient {
|
|
|
76
76
|
const result = await this.request("/api/managed-agents/agents");
|
|
77
77
|
return result.agents;
|
|
78
78
|
}
|
|
79
|
-
createDeploymentUpload(input) {
|
|
80
|
-
return this.request("/api/managed-agents/deployment-uploads", { method: "POST", body: JSON.stringify(input) });
|
|
81
|
-
}
|
|
82
79
|
registerDeployment(input) {
|
|
83
80
|
return this.request("/api/managed-agents/deployments", { method: "POST", body: JSON.stringify(input) });
|
|
84
81
|
}
|
|
@@ -86,6 +83,9 @@ export class OpenComputerClient {
|
|
|
86
83
|
const result = await this.request("/api/managed-agents/connections");
|
|
87
84
|
return result.connections;
|
|
88
85
|
}
|
|
86
|
+
disconnectConnection(connectionId) {
|
|
87
|
+
return this.request(`/api/managed-agents/connections/${encodeURIComponent(connectionId)}`, { method: "DELETE" });
|
|
88
|
+
}
|
|
89
89
|
linkGoogle(service) {
|
|
90
90
|
return this.request("/api/managed-agents/connections/google/link", {
|
|
91
91
|
method: "POST",
|
|
@@ -95,12 +95,38 @@ export class OpenComputerClient {
|
|
|
95
95
|
googleConnection(service) {
|
|
96
96
|
return this.request(`/api/managed-agents/connections/google/status?service=${encodeURIComponent(service)}`);
|
|
97
97
|
}
|
|
98
|
+
createSlackConnection(agentId) {
|
|
99
|
+
return this.request("/api/managed-agents/channels/slack/connections", {
|
|
100
|
+
method: "POST",
|
|
101
|
+
body: JSON.stringify({ agentId }),
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
async channelConnections() {
|
|
105
|
+
const result = await this.request("/api/managed-agents/channels");
|
|
106
|
+
return result.connections;
|
|
107
|
+
}
|
|
108
|
+
completeSlackConnection(connectionId, botToken) {
|
|
109
|
+
return this.request(`/api/managed-agents/channels/slack/connections/${encodeURIComponent(connectionId)}`, {
|
|
110
|
+
method: "PUT",
|
|
111
|
+
body: JSON.stringify({ botToken }),
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
disconnectSlack(connectionId) {
|
|
115
|
+
return this.request(`/api/managed-agents/channels/slack/connections/${encodeURIComponent(connectionId)}`, { method: "DELETE" });
|
|
116
|
+
}
|
|
98
117
|
createSession(agentId) {
|
|
99
118
|
return this.request("/api/managed-agents/sessions", {
|
|
100
119
|
method: "POST",
|
|
101
120
|
body: JSON.stringify({ agentId }),
|
|
102
121
|
});
|
|
103
122
|
}
|
|
123
|
+
async sessions() {
|
|
124
|
+
const result = await this.request("/api/managed-agents/sessions");
|
|
125
|
+
return result.sessions;
|
|
126
|
+
}
|
|
127
|
+
session(sessionId) {
|
|
128
|
+
return this.request(`/api/managed-agents/sessions/${encodeURIComponent(sessionId)}`);
|
|
129
|
+
}
|
|
104
130
|
createTurn(sessionId, input) {
|
|
105
131
|
return this.request(`/api/managed-agents/sessions/${encodeURIComponent(sessionId)}/turns`, {
|
|
106
132
|
method: "POST",
|
|
@@ -117,5 +143,14 @@ export class OpenComputerClient {
|
|
|
117
143
|
suspendSession(sessionId) {
|
|
118
144
|
return this.request(`/api/managed-agents/sessions/${encodeURIComponent(sessionId)}/suspend`, { method: "POST" });
|
|
119
145
|
}
|
|
146
|
+
resumeSession(sessionId) {
|
|
147
|
+
return this.request(`/api/managed-agents/sessions/${encodeURIComponent(sessionId)}/resume`, { method: "POST" });
|
|
148
|
+
}
|
|
149
|
+
endSession(sessionId) {
|
|
150
|
+
return this.request(`/api/managed-agents/sessions/${encodeURIComponent(sessionId)}/end`, { method: "POST" });
|
|
151
|
+
}
|
|
152
|
+
terminateSession(sessionId) {
|
|
153
|
+
return this.request(`/api/managed-agents/sessions/${encodeURIComponent(sessionId)}/terminate`, { method: "POST" });
|
|
154
|
+
}
|
|
120
155
|
}
|
|
121
156
|
//# sourceMappingURL=api.js.map
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
|