@dxos/shell 0.6.13-main.548ca8d → 0.6.13-main.ed424a1

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.
@@ -1,7 +1,7 @@
1
1
  import { type CancellableInvitation } from '@dxos/client-protocol';
2
2
  import { type Identity } from '@dxos/react-client/halo';
3
3
  import { type AgentFormProps } from '../../components';
4
- export declare const useAgentHandlers: ({ invitations, identity, }: {
4
+ export declare const useAgentHandlers: (params: {
5
5
  invitations: CancellableInvitation[];
6
6
  identity: Identity | null;
7
7
  }) => AgentFormProps;
@@ -1 +1 @@
1
- {"version":3,"file":"useAgentHandlers.d.ts","sourceRoot":"","sources":["../../../../../src/panels/IdentityPanel/useAgentHandlers.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAInE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGxD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,eAAO,MAAM,gBAAgB,+BAG1B;IACD,WAAW,EAAE,qBAAqB,EAAE,CAAC;IACrC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;CAC3B,KAAG,cA0GH,CAAC"}
1
+ {"version":3,"file":"useAgentHandlers.d.ts","sourceRoot":"","sources":["../../../../../src/panels/IdentityPanel/useAgentHandlers.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAEnE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAIxD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,eAAO,MAAM,gBAAgB,WAAY;IACvC,WAAW,EAAE,qBAAqB,EAAE,CAAC;IACrC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;CAC3B,KAAG,cAOH,CAAC"}
@@ -4,116 +4,18 @@
4
4
  //
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.useAgentHandlers = void 0;
7
- const react_1 = require("react");
8
- const invariant_1 = require("@dxos/invariant");
9
- const log_1 = require("@dxos/log");
10
7
  const react_client_1 = require("@dxos/react-client");
11
- const invitations_1 = require("@dxos/react-client/invitations");
12
- const useAgentHandlers = ({ invitations, identity, }) => {
13
- const [validationMessage, setValidationMessage] = (0, react_1.useState)('');
14
- const [agentStatus, setAgentStatus] = (0, react_1.useState)('getting');
15
- const agentHostingProviderClient = (0, react_client_1.useAgentHostingClient)();
8
+ const useEdgeAgentsHandlers_1 = require("./useEdgeAgentsHandlers");
9
+ const useKubeAgentHandlers_1 = require("./useKubeAgentHandlers");
10
+ const useAgentHandlers = (params) => {
11
+ var _a, _b, _c, _d;
16
12
  const client = (0, react_client_1.useClient)();
17
- const updateAgentStatus = async () => {
18
- var _a;
19
- // TODO(nf): if agent exists, subscribe to updates instead of oneshot status
20
- if (agentHostingProviderClient) {
21
- setAgentStatus('getting');
22
- try {
23
- const agentId = await (agentHostingProviderClient === null || agentHostingProviderClient === void 0 ? void 0 : agentHostingProviderClient.getAgent((_a = identity === null || identity === void 0 ? void 0 : identity.identityKey.truncate()) !== null && _a !== void 0 ? _a : 'never'));
24
- if (agentId) {
25
- setAgentStatus('created');
26
- }
27
- else {
28
- setAgentStatus('creatable');
29
- }
30
- }
31
- catch (err) {
32
- setAgentStatus('error');
33
- setValidationMessage(`Couldn’t check agent status: ${err.message}`);
34
- }
35
- }
36
- else {
37
- setAgentStatus('error');
38
- setValidationMessage('No agent provider configured.');
39
- }
40
- };
41
- const createAgent = async (invitationCode) => {
42
- (0, invariant_1.invariant)(identity, 'Identity not found');
43
- if (agentHostingProviderClient) {
44
- setAgentStatus('creating');
45
- setValidationMessage('');
46
- try {
47
- const agentId = await (agentHostingProviderClient === null || agentHostingProviderClient === void 0 ? void 0 : agentHostingProviderClient.createAgent(invitationCode, identity.identityKey.truncate()));
48
- if (agentId) {
49
- setAgentStatus('created');
50
- }
51
- else {
52
- setAgentStatus('creatable');
53
- setValidationMessage('Error creating agent.');
54
- }
55
- }
56
- catch (err) {
57
- setValidationMessage(`Error creating agent: ${err.message}`);
58
- return updateAgentStatus();
59
- }
60
- }
61
- else {
62
- setAgentStatus('error');
63
- setValidationMessage('No agent provider configured.');
64
- }
65
- };
66
- const destroyAgent = async () => {
67
- (0, invariant_1.invariant)(identity, 'Identity not found');
68
- if (agentHostingProviderClient) {
69
- setAgentStatus('destroying');
70
- setValidationMessage('');
71
- try {
72
- await (agentHostingProviderClient === null || agentHostingProviderClient === void 0 ? void 0 : agentHostingProviderClient.destroyAgent(identity.identityKey.truncate()));
73
- setAgentStatus('creatable');
74
- }
75
- catch (err) {
76
- setValidationMessage(`Error destroying agent: ${err.message}`);
77
- return updateAgentStatus();
78
- }
79
- }
80
- else {
81
- setAgentStatus('error');
82
- setValidationMessage('No agent provider configured.');
83
- }
84
- };
85
- (0, react_1.useEffect)(() => {
86
- void updateAgentStatus();
87
- }, []);
88
- const handleAgentCreate = (0, react_1.useCallback)(async (invitation) => {
89
- const invitationCode = invitations_1.InvitationEncoder.encode(invitation);
90
- if (invitation.state === invitations_1.Invitation.State.CONNECTING) {
91
- log_1.log.info(JSON.stringify({ invitationCode, authCode: invitation.authCode }));
92
- return createAgent(invitationCode);
93
- }
94
- }, []);
95
- const onAgentCreate = async () => {
96
- invitations.forEach((invitation) => invitation.cancel());
97
- // TODO(nf): do this work in the hosting provider client?
98
- const invitation = client.halo.share({
99
- type: invitations_1.Invitation.Type.INTERACTIVE,
100
- authMethod: invitations_1.Invitation.AuthMethod.NONE,
101
- multiUse: true,
102
- });
103
- invitation.subscribe(handleAgentCreate);
104
- };
105
- const onAgentRefresh = async () => {
106
- setValidationMessage('');
107
- await updateAgentStatus();
108
- };
109
- return {
110
- onAgentCreate,
111
- onAgentDestroy: destroyAgent,
112
- onAgentRefresh,
113
- validationMessage,
114
- agentStatus,
115
- agentHostingEnabled: !!agentHostingProviderClient,
116
- };
13
+ if ((_d = (_c = (_b = (_a = client.config.values) === null || _a === void 0 ? void 0 : _a.runtime) === null || _b === void 0 ? void 0 : _b.client) === null || _c === void 0 ? void 0 : _c.edgeFeatures) === null || _d === void 0 ? void 0 : _d.agents) {
14
+ return (0, useEdgeAgentsHandlers_1.useEdgeAgentHandlers)(params);
15
+ }
16
+ else {
17
+ return (0, useKubeAgentHandlers_1.useKubeAgentHandlers)(params);
18
+ }
117
19
  };
118
20
  exports.useAgentHandlers = useAgentHandlers;
119
21
  //# sourceMappingURL=useAgentHandlers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useAgentHandlers.js","sourceRoot":"","sources":["../../../../../src/panels/IdentityPanel/useAgentHandlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useAgentHandlers.js","sourceRoot":"","sources":["../../../../../src/panels/IdentityPanel/useAgentHandlers.ts"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;AAGF,qDAA+C;AAG/C,mEAA+D;AAC/D,iEAA8D;AAGvD,MAAM,gBAAgB,GAAG,CAAC,MAGhC,EAAkB,EAAE;;IACnB,MAAM,MAAM,GAAG,IAAA,wBAAS,GAAE,CAAC;IAC3B,IAAI,MAAA,MAAA,MAAA,MAAA,MAAM,CAAC,MAAM,CAAC,MAAM,0CAAE,OAAO,0CAAE,MAAM,0CAAE,YAAY,0CAAE,MAAM,EAAE,CAAC;QAChE,OAAO,IAAA,4CAAoB,EAAC,MAAM,CAAC,CAAC;IACtC,CAAC;SAAM,CAAC;QACN,OAAO,IAAA,2CAAoB,EAAC,MAAM,CAAC,CAAC;IACtC,CAAC;AACH,CAAC,CAAC;AAVW,QAAA,gBAAgB,oBAU3B"}
@@ -0,0 +1,8 @@
1
+ import { type CancellableInvitation } from '@dxos/client-protocol';
2
+ import { type Identity } from '@dxos/react-client/halo';
3
+ import { type AgentFormProps } from '../../components';
4
+ export declare const useEdgeAgentHandlers: ({ identity, }: {
5
+ invitations: CancellableInvitation[];
6
+ identity: Identity | null;
7
+ }) => AgentFormProps;
8
+ //# sourceMappingURL=useEdgeAgentsHandlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useEdgeAgentsHandlers.d.ts","sourceRoot":"","sources":["../../../../../src/panels/IdentityPanel/useEdgeAgentsHandlers.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAInE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,eAAO,MAAM,oBAAoB,kBAE9B;IACD,WAAW,EAAE,qBAAqB,EAAE,CAAC;IACrC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;CAC3B,KAAG,cA4EH,CAAC"}
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ //
3
+ // Copyright 2024 DXOS.org
4
+ //
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.useEdgeAgentHandlers = void 0;
7
+ const react_1 = require("react");
8
+ const invariant_1 = require("@dxos/invariant");
9
+ const services_1 = require("@dxos/protocols/proto/dxos/client/services");
10
+ const react_client_1 = require("@dxos/react-client");
11
+ const useEdgeAgentHandlers = ({ identity, }) => {
12
+ var _a, _b, _c;
13
+ const [validationMessage, setValidationMessage] = (0, react_1.useState)('');
14
+ const [lastReceivedStatus, setLastReceivedStatus] = (0, react_1.useState)(services_1.QueryAgentStatusResponse.AgentStatus.UNKNOWN);
15
+ const [agentStatus, setAgentStatus] = (0, react_1.useState)('getting');
16
+ const client = (0, react_client_1.useClient)();
17
+ const agentHostingEnabled = Boolean((_c = (_b = (_a = client.config.values.runtime) === null || _a === void 0 ? void 0 : _a.client) === null || _b === void 0 ? void 0 : _b.edgeFeatures) === null || _c === void 0 ? void 0 : _c.agents);
18
+ const handleStatus = (status) => {
19
+ switch (status) {
20
+ case services_1.QueryAgentStatusResponse.AgentStatus.ACTIVE:
21
+ case services_1.QueryAgentStatusResponse.AgentStatus.INACTIVE:
22
+ setAgentStatus('created');
23
+ break;
24
+ case services_1.QueryAgentStatusResponse.AgentStatus.NOT_FOUND:
25
+ setAgentStatus('creatable');
26
+ break;
27
+ case services_1.QueryAgentStatusResponse.AgentStatus.UNKNOWN:
28
+ setAgentStatus('getting');
29
+ break;
30
+ }
31
+ };
32
+ (0, react_1.useEffect)(() => {
33
+ var _a;
34
+ const stream = (_a = client.services.services.EdgeAgentService) === null || _a === void 0 ? void 0 : _a.queryAgentStatus();
35
+ stream === null || stream === void 0 ? void 0 : stream.subscribe(({ status }) => {
36
+ setLastReceivedStatus(status);
37
+ handleStatus(status);
38
+ });
39
+ return () => {
40
+ void (stream === null || stream === void 0 ? void 0 : stream.close().catch(() => { }));
41
+ };
42
+ }, []);
43
+ const onAgentCreate = async () => {
44
+ (0, invariant_1.invariant)(identity, 'Identity not found');
45
+ const service = client.services.services.EdgeAgentService;
46
+ if (!service) {
47
+ setAgentStatus('error');
48
+ setValidationMessage('Agent service not initialized.');
49
+ return;
50
+ }
51
+ if (!agentHostingEnabled) {
52
+ setAgentStatus('error');
53
+ setValidationMessage('Edge agents are disabled in config.');
54
+ return;
55
+ }
56
+ setAgentStatus('creating');
57
+ setValidationMessage('');
58
+ try {
59
+ await service.createAgent();
60
+ setAgentStatus('created');
61
+ }
62
+ catch (err) {
63
+ setAgentStatus('error');
64
+ setValidationMessage(`Error creating an agent: ${err.message}`);
65
+ }
66
+ };
67
+ const onAgentDestroy = async () => {
68
+ setValidationMessage('Agents are non-destructible.');
69
+ };
70
+ const onAgentRefresh = async () => {
71
+ setValidationMessage('');
72
+ handleStatus(lastReceivedStatus);
73
+ };
74
+ return {
75
+ onAgentCreate,
76
+ onAgentDestroy,
77
+ onAgentRefresh,
78
+ validationMessage,
79
+ agentStatus,
80
+ agentHostingEnabled,
81
+ };
82
+ };
83
+ exports.useEdgeAgentHandlers = useEdgeAgentHandlers;
84
+ //# sourceMappingURL=useEdgeAgentsHandlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useEdgeAgentsHandlers.js","sourceRoot":"","sources":["../../../../../src/panels/IdentityPanel/useEdgeAgentsHandlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import { type CancellableInvitation } from '@dxos/client-protocol';
2
+ import { type Identity } from '@dxos/react-client/halo';
3
+ import { type AgentFormProps } from '../../components';
4
+ export declare const useKubeAgentHandlers: ({ invitations, identity, }: {
5
+ invitations: CancellableInvitation[];
6
+ identity: Identity | null;
7
+ }) => AgentFormProps;
8
+ //# sourceMappingURL=useKubeAgentHandlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useKubeAgentHandlers.d.ts","sourceRoot":"","sources":["../../../../../src/panels/IdentityPanel/useKubeAgentHandlers.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAInE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGxD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,eAAO,MAAM,oBAAoB,+BAG9B;IACD,WAAW,EAAE,qBAAqB,EAAE,CAAC;IACrC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;CAC3B,KAAG,cA0GH,CAAC"}
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+ //
3
+ // Copyright 2024 DXOS.org
4
+ //
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.useKubeAgentHandlers = void 0;
7
+ const react_1 = require("react");
8
+ const invariant_1 = require("@dxos/invariant");
9
+ const log_1 = require("@dxos/log");
10
+ const react_client_1 = require("@dxos/react-client");
11
+ const invitations_1 = require("@dxos/react-client/invitations");
12
+ const useKubeAgentHandlers = ({ invitations, identity, }) => {
13
+ const [validationMessage, setValidationMessage] = (0, react_1.useState)('');
14
+ const [agentStatus, setAgentStatus] = (0, react_1.useState)('getting');
15
+ const agentHostingProviderClient = (0, react_client_1.useAgentHostingClient)();
16
+ const client = (0, react_client_1.useClient)();
17
+ const updateAgentStatus = async () => {
18
+ var _a;
19
+ // TODO(nf): if agent exists, subscribe to updates instead of oneshot status
20
+ if (agentHostingProviderClient) {
21
+ setAgentStatus('getting');
22
+ try {
23
+ const agentId = await (agentHostingProviderClient === null || agentHostingProviderClient === void 0 ? void 0 : agentHostingProviderClient.getAgent((_a = identity === null || identity === void 0 ? void 0 : identity.identityKey.truncate()) !== null && _a !== void 0 ? _a : 'never'));
24
+ if (agentId) {
25
+ setAgentStatus('created');
26
+ }
27
+ else {
28
+ setAgentStatus('creatable');
29
+ }
30
+ }
31
+ catch (err) {
32
+ setAgentStatus('error');
33
+ setValidationMessage(`Couldn’t check agent status: ${err.message}`);
34
+ }
35
+ }
36
+ else {
37
+ setAgentStatus('error');
38
+ setValidationMessage('No agent provider configured.');
39
+ }
40
+ };
41
+ const createAgent = async (invitationCode) => {
42
+ (0, invariant_1.invariant)(identity, 'Identity not found');
43
+ if (agentHostingProviderClient) {
44
+ setAgentStatus('creating');
45
+ setValidationMessage('');
46
+ try {
47
+ const agentId = await (agentHostingProviderClient === null || agentHostingProviderClient === void 0 ? void 0 : agentHostingProviderClient.createAgent(invitationCode, identity.identityKey.truncate()));
48
+ if (agentId) {
49
+ setAgentStatus('created');
50
+ }
51
+ else {
52
+ setAgentStatus('creatable');
53
+ setValidationMessage('Error creating agent.');
54
+ }
55
+ }
56
+ catch (err) {
57
+ setValidationMessage(`Error creating agent: ${err.message}`);
58
+ return updateAgentStatus();
59
+ }
60
+ }
61
+ else {
62
+ setAgentStatus('error');
63
+ setValidationMessage('No agent provider configured.');
64
+ }
65
+ };
66
+ const destroyAgent = async () => {
67
+ (0, invariant_1.invariant)(identity, 'Identity not found');
68
+ if (agentHostingProviderClient) {
69
+ setAgentStatus('destroying');
70
+ setValidationMessage('');
71
+ try {
72
+ await (agentHostingProviderClient === null || agentHostingProviderClient === void 0 ? void 0 : agentHostingProviderClient.destroyAgent(identity.identityKey.truncate()));
73
+ setAgentStatus('creatable');
74
+ }
75
+ catch (err) {
76
+ setValidationMessage(`Error destroying agent: ${err.message}`);
77
+ return updateAgentStatus();
78
+ }
79
+ }
80
+ else {
81
+ setAgentStatus('error');
82
+ setValidationMessage('No agent provider configured.');
83
+ }
84
+ };
85
+ (0, react_1.useEffect)(() => {
86
+ void updateAgentStatus();
87
+ }, []);
88
+ const handleAgentCreate = (0, react_1.useCallback)(async (invitation) => {
89
+ const invitationCode = invitations_1.InvitationEncoder.encode(invitation);
90
+ if (invitation.state === invitations_1.Invitation.State.CONNECTING) {
91
+ log_1.log.info(JSON.stringify({ invitationCode, authCode: invitation.authCode }));
92
+ return createAgent(invitationCode);
93
+ }
94
+ }, []);
95
+ const onAgentCreate = async () => {
96
+ invitations.forEach((invitation) => invitation.cancel());
97
+ // TODO(nf): do this work in the hosting provider client?
98
+ const invitation = client.halo.share({
99
+ type: invitations_1.Invitation.Type.INTERACTIVE,
100
+ authMethod: invitations_1.Invitation.AuthMethod.NONE,
101
+ multiUse: true,
102
+ });
103
+ invitation.subscribe(handleAgentCreate);
104
+ };
105
+ const onAgentRefresh = async () => {
106
+ setValidationMessage('');
107
+ await updateAgentStatus();
108
+ };
109
+ return {
110
+ onAgentCreate,
111
+ onAgentDestroy: destroyAgent,
112
+ onAgentRefresh,
113
+ validationMessage,
114
+ agentStatus,
115
+ agentHostingEnabled: !!agentHostingProviderClient,
116
+ };
117
+ };
118
+ exports.useKubeAgentHandlers = useKubeAgentHandlers;
119
+ //# sourceMappingURL=useKubeAgentHandlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useKubeAgentHandlers.js","sourceRoot":"","sources":["../../../../../src/panels/IdentityPanel/useKubeAgentHandlers.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/shell",
3
- "version": "0.6.13-main.548ca8d",
3
+ "version": "0.6.13-main.ed424a1",
4
4
  "description": "DXOS’s OS experiences",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -42,20 +42,20 @@
42
42
  "react-qr-rounded": "^1.0.0",
43
43
  "url-join": "^5.0.0",
44
44
  "xstate": "^4.37.0",
45
- "@dxos/async": "0.6.13-main.548ca8d",
46
- "@dxos/client-protocol": "0.6.13-main.548ca8d",
47
- "@dxos/debug": "0.6.13-main.548ca8d",
48
- "@dxos/client-services": "0.6.13-main.548ca8d",
49
- "@dxos/display-name": "0.6.13-main.548ca8d",
50
- "@dxos/invariant": "0.6.13-main.548ca8d",
51
- "@dxos/log": "0.6.13-main.548ca8d",
52
- "@dxos/protocols": "0.6.13-main.548ca8d",
53
- "@dxos/react-ui": "0.6.13-main.548ca8d",
54
- "@dxos/react-ui-theme": "0.6.13-main.548ca8d",
55
- "@dxos/react-ui-types": "0.6.13-main.548ca8d",
56
- "@dxos/rpc": "0.6.13-main.548ca8d",
57
- "@dxos/util": "0.6.13-main.548ca8d",
58
- "@dxos/rpc-tunnel": "0.6.13-main.548ca8d"
45
+ "@dxos/async": "0.6.13-main.ed424a1",
46
+ "@dxos/client-protocol": "0.6.13-main.ed424a1",
47
+ "@dxos/debug": "0.6.13-main.ed424a1",
48
+ "@dxos/client-services": "0.6.13-main.ed424a1",
49
+ "@dxos/invariant": "0.6.13-main.ed424a1",
50
+ "@dxos/log": "0.6.13-main.ed424a1",
51
+ "@dxos/react-ui": "0.6.13-main.ed424a1",
52
+ "@dxos/protocols": "0.6.13-main.ed424a1",
53
+ "@dxos/display-name": "0.6.13-main.ed424a1",
54
+ "@dxos/react-ui-theme": "0.6.13-main.ed424a1",
55
+ "@dxos/react-ui-types": "0.6.13-main.ed424a1",
56
+ "@dxos/rpc": "0.6.13-main.ed424a1",
57
+ "@dxos/rpc-tunnel": "0.6.13-main.ed424a1",
58
+ "@dxos/util": "0.6.13-main.ed424a1"
59
59
  },
60
60
  "devDependencies": {
61
61
  "@phosphor-icons/react": "^2.1.5",
@@ -65,20 +65,20 @@
65
65
  "react": "~18.2.0",
66
66
  "react-dom": "~18.2.0",
67
67
  "vite": "5.4.7",
68
- "@dxos/random": "0.6.13-main.548ca8d",
69
- "@dxos/config": "0.6.13-main.548ca8d",
70
- "@dxos/protocols": "0.6.13-main.548ca8d",
71
- "@dxos/react-hooks": "0.6.13-main.548ca8d",
72
- "@dxos/react-ui-theme": "0.6.13-main.548ca8d",
73
- "@dxos/react-client": "0.6.13-main.548ca8d",
74
- "@dxos/storybook-utils": "0.6.13-main.548ca8d",
75
- "@dxos/test-utils": "0.6.13-main.548ca8d"
68
+ "@dxos/config": "0.6.13-main.ed424a1",
69
+ "@dxos/protocols": "0.6.13-main.ed424a1",
70
+ "@dxos/react-client": "0.6.13-main.ed424a1",
71
+ "@dxos/random": "0.6.13-main.ed424a1",
72
+ "@dxos/react-hooks": "0.6.13-main.ed424a1",
73
+ "@dxos/react-ui-theme": "0.6.13-main.ed424a1",
74
+ "@dxos/test-utils": "0.6.13-main.ed424a1",
75
+ "@dxos/storybook-utils": "0.6.13-main.ed424a1"
76
76
  },
77
77
  "peerDependencies": {
78
78
  "@phosphor-icons/react": "^2.1.5",
79
79
  "react": "~18.2.0",
80
80
  "react-dom": "~18.2.0",
81
- "@dxos/react-client": "0.6.13-main.548ca8d"
81
+ "@dxos/react-client": "0.6.13-main.ed424a1"
82
82
  },
83
83
  "publishConfig": {
84
84
  "access": "public"
@@ -2,127 +2,22 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { useCallback, useEffect, useState } from 'react';
6
-
7
5
  import { type CancellableInvitation } from '@dxos/client-protocol';
8
- import { invariant } from '@dxos/invariant';
9
- import { log } from '@dxos/log';
10
- import { useClient, useAgentHostingClient } from '@dxos/react-client';
6
+ import { useClient } from '@dxos/react-client';
11
7
  import { type Identity } from '@dxos/react-client/halo';
12
- import { Invitation, InvitationEncoder } from '@dxos/react-client/invitations';
13
8
 
9
+ import { useEdgeAgentHandlers } from './useEdgeAgentsHandlers';
10
+ import { useKubeAgentHandlers } from './useKubeAgentHandlers';
14
11
  import { type AgentFormProps } from '../../components';
15
12
 
16
- export const useAgentHandlers = ({
17
- invitations,
18
- identity,
19
- }: {
13
+ export const useAgentHandlers = (params: {
20
14
  invitations: CancellableInvitation[];
21
15
  identity: Identity | null;
22
16
  }): AgentFormProps => {
23
- const [validationMessage, setValidationMessage] = useState('');
24
- const [agentStatus, setAgentStatus] = useState<AgentFormProps['agentStatus']>('getting');
25
- const agentHostingProviderClient = useAgentHostingClient();
26
17
  const client = useClient();
27
-
28
- const updateAgentStatus = async () => {
29
- // TODO(nf): if agent exists, subscribe to updates instead of oneshot status
30
- if (agentHostingProviderClient) {
31
- setAgentStatus('getting');
32
- try {
33
- const agentId = await agentHostingProviderClient?.getAgent(identity?.identityKey.truncate() ?? 'never');
34
- if (agentId) {
35
- setAgentStatus('created');
36
- } else {
37
- setAgentStatus('creatable');
38
- }
39
- } catch (err: any) {
40
- setAgentStatus('error');
41
- setValidationMessage(`Couldn’t check agent status: ${err.message}`);
42
- }
43
- } else {
44
- setAgentStatus('error');
45
- setValidationMessage('No agent provider configured.');
46
- }
47
- };
48
-
49
- const createAgent = async (invitationCode: string) => {
50
- invariant(identity, 'Identity not found');
51
- if (agentHostingProviderClient) {
52
- setAgentStatus('creating');
53
- setValidationMessage('');
54
- try {
55
- const agentId = await agentHostingProviderClient?.createAgent(invitationCode, identity.identityKey.truncate());
56
- if (agentId) {
57
- setAgentStatus('created');
58
- } else {
59
- setAgentStatus('creatable');
60
- setValidationMessage('Error creating agent.');
61
- }
62
- } catch (err: any) {
63
- setValidationMessage(`Error creating agent: ${err.message}`);
64
- return updateAgentStatus();
65
- }
66
- } else {
67
- setAgentStatus('error');
68
- setValidationMessage('No agent provider configured.');
69
- }
70
- };
71
-
72
- const destroyAgent = async () => {
73
- invariant(identity, 'Identity not found');
74
- if (agentHostingProviderClient) {
75
- setAgentStatus('destroying');
76
- setValidationMessage('');
77
- try {
78
- await agentHostingProviderClient?.destroyAgent(identity.identityKey.truncate());
79
- setAgentStatus('creatable');
80
- } catch (err: any) {
81
- setValidationMessage(`Error destroying agent: ${err.message}`);
82
- return updateAgentStatus();
83
- }
84
- } else {
85
- setAgentStatus('error');
86
- setValidationMessage('No agent provider configured.');
87
- }
88
- };
89
-
90
- useEffect(() => {
91
- void updateAgentStatus();
92
- }, []);
93
-
94
- const handleAgentCreate = useCallback(async (invitation: Invitation) => {
95
- const invitationCode = InvitationEncoder.encode(invitation);
96
- if (invitation.state === Invitation.State.CONNECTING) {
97
- log.info(JSON.stringify({ invitationCode, authCode: invitation.authCode }));
98
- return createAgent(invitationCode);
99
- }
100
- }, []);
101
-
102
- const onAgentCreate = async () => {
103
- invitations.forEach((invitation) => invitation.cancel());
104
-
105
- // TODO(nf): do this work in the hosting provider client?
106
- const invitation = client.halo.share({
107
- type: Invitation.Type.INTERACTIVE,
108
- authMethod: Invitation.AuthMethod.NONE,
109
- multiUse: true,
110
- });
111
-
112
- invitation.subscribe(handleAgentCreate);
113
- };
114
-
115
- const onAgentRefresh = async () => {
116
- setValidationMessage('');
117
- await updateAgentStatus();
118
- };
119
-
120
- return {
121
- onAgentCreate,
122
- onAgentDestroy: destroyAgent,
123
- onAgentRefresh,
124
- validationMessage,
125
- agentStatus,
126
- agentHostingEnabled: !!agentHostingProviderClient,
127
- };
18
+ if (client.config.values?.runtime?.client?.edgeFeatures?.agents) {
19
+ return useEdgeAgentHandlers(params);
20
+ } else {
21
+ return useKubeAgentHandlers(params);
22
+ }
128
23
  };