@dxos/shell 0.3.11-main.a8d7a97 → 0.3.11-main.afa73e0
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/dist/bundle/shell.mjs +6989 -6763
- package/dist/bundle/shell.mjs.map +1 -1
- package/dist/bundle/shell.umd.js +64 -64
- package/dist/bundle/shell.umd.js.map +1 -1
- package/dist/bundle/style.css +1 -1
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/react.mjs +497 -411
- package/dist/lib/browser/react.mjs.map +4 -4
- package/dist/lib/browser/testing/index.mjs +35 -14
- package/dist/lib/browser/testing/index.mjs.map +3 -3
- package/dist/types/src/components/IdentityList/SpaceMemberList.js +1 -1
- package/dist/types/src/components/IdentityList/SpaceMemberList.js.map +1 -1
- package/dist/types/src/components/Panel/Action.d.ts.map +1 -1
- package/dist/types/src/components/Panel/Action.js +3 -18
- package/dist/types/src/components/Panel/Action.js.map +1 -1
- package/dist/types/src/composites/Shell/Shell.d.ts.map +1 -1
- package/dist/types/src/composites/Shell/Shell.js +5 -1
- package/dist/types/src/composites/Shell/Shell.js.map +1 -1
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.d.ts.map +1 -1
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.js +11 -7
- package/dist/types/src/panels/IdentityPanel/IdentityPanel.js.map +1 -1
- package/dist/types/src/panels/IdentityPanel/IdentityPanelProps.d.ts +12 -2
- package/dist/types/src/panels/IdentityPanel/IdentityPanelProps.d.ts.map +1 -1
- package/dist/types/src/panels/IdentityPanel/identityMachine.d.ts +1 -1
- package/dist/types/src/panels/IdentityPanel/identityMachine.d.ts.map +1 -1
- package/dist/types/src/panels/IdentityPanel/identityMachine.js +2 -2
- package/dist/types/src/panels/IdentityPanel/identityMachine.js.map +1 -1
- package/dist/types/src/panels/IdentityPanel/steps/AgentForm.d.ts +3 -0
- package/dist/types/src/panels/IdentityPanel/steps/AgentForm.d.ts.map +1 -0
- package/dist/types/src/panels/IdentityPanel/steps/AgentForm.js +26 -0
- package/dist/types/src/panels/IdentityPanel/steps/AgentForm.js.map +1 -0
- package/dist/types/src/panels/IdentityPanel/steps/IdentityActionChooser.d.ts.map +1 -1
- package/dist/types/src/panels/IdentityPanel/steps/IdentityActionChooser.js +1 -1
- package/dist/types/src/panels/IdentityPanel/steps/IdentityActionChooser.js.map +1 -1
- package/dist/types/src/panels/IdentityPanel/steps/SignOutChooser.d.ts +16 -0
- package/dist/types/src/panels/IdentityPanel/steps/SignOutChooser.d.ts.map +1 -0
- package/dist/types/src/panels/IdentityPanel/steps/SignOutChooser.js +40 -0
- package/dist/types/src/panels/IdentityPanel/steps/SignOutChooser.js.map +1 -0
- package/dist/types/src/panels/IdentityPanel/steps/index.d.ts +2 -1
- package/dist/types/src/panels/IdentityPanel/steps/index.d.ts.map +1 -1
- package/dist/types/src/panels/IdentityPanel/steps/index.js +2 -1
- package/dist/types/src/panels/IdentityPanel/steps/index.js.map +1 -1
- package/dist/types/src/panels/IdentityPanel/useAgentHandlers.d.ts +15 -0
- package/dist/types/src/panels/IdentityPanel/useAgentHandlers.d.ts.map +1 -0
- package/dist/types/src/panels/IdentityPanel/useAgentHandlers.js +78 -0
- package/dist/types/src/panels/IdentityPanel/useAgentHandlers.js.map +1 -0
- package/dist/types/src/panels/JoinPanel/joinMachine.d.ts +1 -1
- package/dist/types/src/panels/JoinPanel/joinMachine.d.ts.map +1 -1
- package/dist/types/src/panels/JoinPanel/joinMachine.js +14 -17
- package/dist/types/src/panels/JoinPanel/joinMachine.js.map +1 -1
- package/dist/types/src/panels/JoinPanel/steps/AdditionMethodChooser.js +3 -3
- package/dist/types/src/panels/JoinPanel/steps/AdditionMethodChooser.js.map +1 -1
- package/dist/types/src/panels/JoinPanel/steps/InvitationInput.d.ts.map +1 -1
- package/dist/types/src/panels/JoinPanel/steps/InvitationInput.js +13 -6
- package/dist/types/src/panels/JoinPanel/steps/InvitationInput.js.map +1 -1
- package/dist/types/src/panels/JoinPanel/steps/ResetIdentity.js +1 -1
- package/dist/types/src/panels/JoinPanel/steps/ResetIdentity.js.map +1 -1
- package/dist/types/src/playwright/invitations-manager.d.ts +1 -0
- package/dist/types/src/playwright/invitations-manager.d.ts.map +1 -1
- package/dist/types/src/playwright/invitations-manager.js +4 -1
- package/dist/types/src/playwright/invitations-manager.js.map +1 -1
- package/dist/types/src/playwright/invitations.spec.js +15 -0
- package/dist/types/src/playwright/invitations.spec.js.map +1 -1
- package/dist/types/src/testing/shell-manager.d.ts +5 -4
- package/dist/types/src/testing/shell-manager.d.ts.map +1 -1
- package/dist/types/src/testing/shell-manager.js +36 -12
- package/dist/types/src/testing/shell-manager.js.map +1 -1
- package/dist/types/src/translations/locales/en-US.d.ts +5 -0
- package/dist/types/src/translations/locales/en-US.d.ts.map +1 -1
- package/dist/types/src/translations/locales/en-US.js +5 -0
- package/dist/types/src/translations/locales/en-US.js.map +1 -1
- package/package.json +21 -21
- package/src/components/IdentityList/SpaceMemberList.tsx +1 -1
- package/src/components/Panel/Action.tsx +4 -19
- package/src/composites/Shell/Shell.tsx +7 -1
- package/src/panels/IdentityPanel/IdentityPanel.tsx +21 -10
- package/src/panels/IdentityPanel/IdentityPanelProps.ts +15 -2
- package/src/panels/IdentityPanel/identityMachine.ts +3 -3
- package/src/panels/IdentityPanel/steps/AgentForm.tsx +61 -0
- package/src/panels/IdentityPanel/steps/IdentityActionChooser.tsx +2 -3
- package/src/panels/IdentityPanel/steps/SignOutChooser.tsx +84 -0
- package/src/panels/IdentityPanel/steps/index.ts +2 -1
- package/src/panels/IdentityPanel/useAgentHandlers.ts +88 -0
- package/src/panels/JoinPanel/joinMachine.ts +15 -18
- package/src/panels/JoinPanel/steps/AdditionMethodChooser.tsx +3 -3
- package/src/panels/JoinPanel/steps/InvitationInput.tsx +7 -1
- package/src/panels/JoinPanel/steps/ResetIdentity.tsx +1 -1
- package/src/playwright/invitations-manager.ts +5 -1
- package/src/playwright/invitations.spec.ts +19 -0
- package/src/testing/shell-manager.ts +40 -13
- package/src/translations/locales/en-US.ts +5 -0
- package/dist/types/src/panels/IdentityPanel/steps/AgentPanel.d.ts +0 -19
- package/dist/types/src/panels/IdentityPanel/steps/AgentPanel.d.ts.map +0 -1
- package/dist/types/src/panels/IdentityPanel/steps/AgentPanel.js +0 -122
- package/dist/types/src/panels/IdentityPanel/steps/AgentPanel.js.map +0 -1
- package/src/panels/IdentityPanel/steps/AgentPanel.tsx +0 -165
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
//
|
|
3
|
-
// Copyright 2023 DXOS.org
|
|
4
|
-
//
|
|
5
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
-
}
|
|
11
|
-
Object.defineProperty(o, k2, desc);
|
|
12
|
-
}) : (function(o, m, k, k2) {
|
|
13
|
-
if (k2 === undefined) k2 = k;
|
|
14
|
-
o[k2] = m[k];
|
|
15
|
-
}));
|
|
16
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
-
}) : function(o, v) {
|
|
19
|
-
o["default"] = v;
|
|
20
|
-
});
|
|
21
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
22
|
-
if (mod && mod.__esModule) return mod;
|
|
23
|
-
var result = {};
|
|
24
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
25
|
-
__setModuleDefault(result, mod);
|
|
26
|
-
return result;
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.AgentFormImpl = exports.AgentForm = void 0;
|
|
30
|
-
const react_1 = __importStar(require("react"));
|
|
31
|
-
const invariant_1 = require("@dxos/invariant");
|
|
32
|
-
const react_client_1 = require("@dxos/react-client");
|
|
33
|
-
const halo_1 = require("@dxos/react-client/halo");
|
|
34
|
-
const invitations_1 = require("@dxos/react-client/invitations");
|
|
35
|
-
const react_ui_1 = require("@dxos/react-ui");
|
|
36
|
-
const components_1 = require("../../../components");
|
|
37
|
-
const AgentForm = (props) => {
|
|
38
|
-
const { identity } = props;
|
|
39
|
-
// const { t } = useTranslation('os');
|
|
40
|
-
const [validationMessage, setValidationMessage] = (0, react_1.useState)('');
|
|
41
|
-
const [agentStatus, setAgentStatus] = (0, react_1.useState)('');
|
|
42
|
-
const [agentActive, setAgentActive] = (0, react_1.useState)(false);
|
|
43
|
-
const client = (0, react_client_1.useClient)();
|
|
44
|
-
const invitations = (0, halo_1.useHaloInvitations)();
|
|
45
|
-
const agentHostingProviderClient = (0, react_client_1.useAgentHostingProviderClient)(client.config);
|
|
46
|
-
(0, react_1.useEffect)(() => {
|
|
47
|
-
const fetchAgentStatus = async () => {
|
|
48
|
-
var _a;
|
|
49
|
-
// TODO(nf): if agent exists, subscribe to updates instead of oneshot status
|
|
50
|
-
if (agentHostingProviderClient) {
|
|
51
|
-
const agentStatus = 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 : 'foo'));
|
|
52
|
-
if (agentStatus) {
|
|
53
|
-
setAgentActive(true);
|
|
54
|
-
setAgentStatus(agentStatus);
|
|
55
|
-
}
|
|
56
|
-
else {
|
|
57
|
-
setAgentActive(false);
|
|
58
|
-
setValidationMessage('No agent deployed via provider.');
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
else {
|
|
62
|
-
setValidationMessage('No agent provider configured.');
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
void fetchAgentStatus();
|
|
66
|
-
}, []);
|
|
67
|
-
const onAgentCreateEvent = (0, react_1.useCallback)(async (invitation) => {
|
|
68
|
-
const invitationCode = invitations_1.InvitationEncoder.encode(invitation);
|
|
69
|
-
if (invitation.state === invitations_1.Invitation.State.CONNECTING) {
|
|
70
|
-
console.log(JSON.stringify({ invitationCode, authCode: invitation.authCode }));
|
|
71
|
-
(0, invariant_1.invariant)(identity, 'Identity not found');
|
|
72
|
-
if (agentHostingProviderClient) {
|
|
73
|
-
try {
|
|
74
|
-
const res = await (agentHostingProviderClient === null || agentHostingProviderClient === void 0 ? void 0 : agentHostingProviderClient.createAgent(invitationCode, identity.identityKey.truncate()));
|
|
75
|
-
// TODO(nf): human-consumable response from API
|
|
76
|
-
setAgentStatus(res);
|
|
77
|
-
setAgentActive(true);
|
|
78
|
-
setValidationMessage('');
|
|
79
|
-
}
|
|
80
|
-
catch (err) {
|
|
81
|
-
setValidationMessage(`error creating agent: ${err.message}`);
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
|
-
}, []);
|
|
86
|
-
const handleAgentCreate = async () => {
|
|
87
|
-
invitations.forEach((invitation) => invitation.cancel());
|
|
88
|
-
// TODO(nf): do this work in the hosting provider client?
|
|
89
|
-
const invitation = client.halo.share({ type: invitations_1.Invitation.Type.MULTIUSE, authMethod: invitations_1.Invitation.AuthMethod.NONE });
|
|
90
|
-
invitation.subscribe(onAgentCreateEvent);
|
|
91
|
-
};
|
|
92
|
-
const handleAgentDestroy = async () => {
|
|
93
|
-
const identity = client.halo.identity.get();
|
|
94
|
-
(0, invariant_1.invariant)(identity, 'Identity not found');
|
|
95
|
-
try {
|
|
96
|
-
await (agentHostingProviderClient === null || agentHostingProviderClient === void 0 ? void 0 : agentHostingProviderClient.destroyAgent(identity.identityKey.truncate()));
|
|
97
|
-
setValidationMessage('No agent deployed via provider.');
|
|
98
|
-
setAgentStatus('');
|
|
99
|
-
setAgentActive(false);
|
|
100
|
-
}
|
|
101
|
-
catch (err) {
|
|
102
|
-
setValidationMessage(`error destroying agent: ${err.message}`);
|
|
103
|
-
}
|
|
104
|
-
};
|
|
105
|
-
return (react_1.default.createElement(exports.AgentFormImpl, { ...props, onAgentCreate: handleAgentCreate, onAgentDestroy: handleAgentDestroy, validationMessage: validationMessage, agentStatus: agentStatus, agentActive: agentActive, agentProviderDisabled: !agentHostingProviderClient }));
|
|
106
|
-
};
|
|
107
|
-
exports.AgentForm = AgentForm;
|
|
108
|
-
// TODO(zhenyasav): impl shouldn't need send()
|
|
109
|
-
const AgentFormImpl = (props) => {
|
|
110
|
-
const { active, onAgentCreate, onAgentDestroy, send, validationMessage, agentStatus, agentActive, agentProviderDisabled, } = props;
|
|
111
|
-
const disabled = !active;
|
|
112
|
-
const { t } = (0, react_ui_1.useTranslation)('os');
|
|
113
|
-
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
114
|
-
react_1.default.createElement("div", { role: 'none', className: 'grow flex flex-col justify-center' },
|
|
115
|
-
react_1.default.createElement(components_1.Input, { validationMessage, label: react_1.default.createElement(components_1.StepHeading, null, "Agent Status"), disabled: disabled, "data-testid": 'agent-status', value: agentStatus })),
|
|
116
|
-
react_1.default.createElement(components_1.Actions, null,
|
|
117
|
-
react_1.default.createElement(components_1.Action, { disabled: agentActive || agentProviderDisabled, onClick: () => onAgentCreate === null || onAgentCreate === void 0 ? void 0 : onAgentCreate(), "data-testid": 'create-agent' }, "Create Agent"),
|
|
118
|
-
react_1.default.createElement(components_1.Action, { disabled: !agentActive || agentProviderDisabled, onClick: () => onAgentDestroy === null || onAgentDestroy === void 0 ? void 0 : onAgentDestroy(), "data-testid": 'destroy-agent' }, "Destroy Agent"),
|
|
119
|
-
react_1.default.createElement(components_1.Action, { disabled: disabled, onClick: () => send === null || send === void 0 ? void 0 : send({ type: 'unchooseAction' }), "data-testid": 'update-profile-form-back' }, t('back label')))));
|
|
120
|
-
};
|
|
121
|
-
exports.AgentFormImpl = AgentFormImpl;
|
|
122
|
-
//# sourceMappingURL=AgentPanel.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"AgentPanel.js","sourceRoot":"","sources":["../../../../../../src/panels/IdentityPanel/steps/AgentPanel.tsx"],"names":[],"mappings":";AAAA,EAAE;AACF,0BAA0B;AAC1B,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;AAEF,+CAAgE;AAGhE,+CAA4C;AAC5C,qDAA8E;AAC9E,kDAA4E;AAC5E,gEAA+E;AAC/E,6CAAgD;AAEhD,oDAA0E;AAkBnE,MAAM,SAAS,GAAG,CAAC,KAAqB,EAAE,EAAE;IACjD,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC3B,sCAAsC;IACtC,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAC;IAC/D,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAAC,EAAE,CAAC,CAAC;IACnD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,IAAA,wBAAS,GAAE,CAAC;IAC3B,MAAM,WAAW,GAAG,IAAA,yBAAkB,GAAE,CAAC;IACzC,MAAM,0BAA0B,GAAG,IAAA,4CAA6B,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAEhF,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,MAAM,gBAAgB,GAAG,KAAK,IAAI,EAAE;;YAClC,4EAA4E;YAC5E,IAAI,0BAA0B,EAAE;gBAC9B,MAAM,WAAW,GAAG,MAAM,CAAA,0BAA0B,aAA1B,0BAA0B,uBAA1B,0BAA0B,CAAE,QAAQ,CAAC,MAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,WAAW,CAAC,QAAQ,EAAE,mCAAI,KAAK,CAAC,CAAA,CAAC;gBAC1G,IAAI,WAAW,EAAE;oBACf,cAAc,CAAC,IAAI,CAAC,CAAC;oBACrB,cAAc,CAAC,WAAW,CAAC,CAAC;iBAC7B;qBAAM;oBACL,cAAc,CAAC,KAAK,CAAC,CAAC;oBACtB,oBAAoB,CAAC,iCAAiC,CAAC,CAAC;iBACzD;aACF;iBAAM;gBACL,oBAAoB,CAAC,+BAA+B,CAAC,CAAC;aACvD;QACH,CAAC,CAAC;QACF,KAAK,gBAAgB,EAAE,CAAC;IAC1B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,kBAAkB,GAAG,IAAA,mBAAW,EAAC,KAAK,EAAE,UAAsB,EAAE,EAAE;QACtE,MAAM,cAAc,GAAG,+BAAiB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC5D,IAAI,UAAU,CAAC,KAAK,KAAK,wBAAU,CAAC,KAAK,CAAC,UAAU,EAAE;YACpD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC/E,IAAA,qBAAS,EAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;YAC1C,IAAI,0BAA0B,EAAE;gBAC9B,IAAI;oBACF,MAAM,GAAG,GAAG,MAAM,CAAA,0BAA0B,aAA1B,0BAA0B,uBAA1B,0BAA0B,CAAE,WAAW,CAAC,cAAc,EAAE,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAA,CAAC;oBAC3G,+CAA+C;oBAC/C,cAAc,CAAC,GAAG,CAAC,CAAC;oBACpB,cAAc,CAAC,IAAI,CAAC,CAAC;oBACrB,oBAAoB,CAAC,EAAE,CAAC,CAAC;iBAC1B;gBAAC,OAAO,GAAQ,EAAE;oBACjB,oBAAoB,CAAC,yBAAyB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;iBAC9D;aACF;SACF;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,MAAM,iBAAiB,GAAG,KAAK,IAAI,EAAE;QACnC,WAAW,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAEzD,yDAAyD;QACzD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,wBAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,EAAE,wBAAU,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;QAEjH,UAAU,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;IAC3C,CAAC,CAAC;IAEF,MAAM,kBAAkB,GAAG,KAAK,IAAI,EAAE;QACpC,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;QAC5C,IAAA,qBAAS,EAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;QAC1C,IAAI;YACF,MAAM,CAAA,0BAA0B,aAA1B,0BAA0B,uBAA1B,0BAA0B,CAAE,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAA,CAAC;YAChF,oBAAoB,CAAC,iCAAiC,CAAC,CAAC;YACxD,cAAc,CAAC,EAAE,CAAC,CAAC;YACnB,cAAc,CAAC,KAAK,CAAC,CAAC;SACvB;QAAC,OAAO,GAAQ,EAAE;YACjB,oBAAoB,CAAC,2BAA2B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;SAChE;IACH,CAAC,CAAC;IAEF,OAAO,CACL,8BAAC,qBAAa,OACR,KAAK,EACT,aAAa,EAAE,iBAAiB,EAChC,cAAc,EAAE,kBAAkB,EAClC,iBAAiB,EAAE,iBAAiB,EACpC,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW,EACxB,qBAAqB,EAAE,CAAC,0BAA0B,GAClD,CACH,CAAC;AACJ,CAAC,CAAC;AAjFW,QAAA,SAAS,aAiFpB;AAEF,8CAA8C;AACvC,MAAM,aAAa,GAAG,CAAC,KAAyB,EAAE,EAAE;IACzD,MAAM,EACJ,MAAM,EACN,aAAa,EACb,cAAc,EACd,IAAI,EACJ,iBAAiB,EACjB,WAAW,EACX,WAAW,EACX,qBAAqB,GACtB,GAAG,KAAK,CAAC;IACV,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC;IACzB,MAAM,EAAE,CAAC,EAAE,GAAG,IAAA,yBAAc,EAAC,IAAI,CAAC,CAAC;IACnC,OAAO,CACL;QACE,uCAAK,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,mCAAmC;YAC5D,8BAAC,kBAAK,IACE,iBAAiB,EACvB,KAAK,EAAE,8BAAC,wBAAW,uBAA2B,EAC9C,QAAQ,EAAE,QAAQ,iBACN,cAAc,EAC1B,KAAK,EAAE,WAAW,GAClB,CACE;QACN,8BAAC,oBAAO;YACN,8BAAC,mBAAM,IACL,QAAQ,EAAE,WAAW,IAAI,qBAAqB,EAC9C,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,aAAb,aAAa,uBAAb,aAAa,EAAI,iBACnB,cAAc,mBAGpB;YACT,8BAAC,mBAAM,IACL,QAAQ,EAAE,CAAC,WAAW,IAAI,qBAAqB,EAC/C,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,aAAd,cAAc,uBAAd,cAAc,EAAI,iBACpB,eAAe,oBAGrB;YACT,8BAAC,mBAAM,IACL,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC,iBACpC,0BAA0B,IAEtC,CAAC,CAAC,YAAY,CAAC,CACT,CACD,CACT,CACJ,CAAC;AACJ,CAAC,CAAC;AAjDW,QAAA,aAAa,iBAiDxB"}
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
//
|
|
2
|
-
// Copyright 2023 DXOS.org
|
|
3
|
-
//
|
|
4
|
-
|
|
5
|
-
import React, { useState, useCallback, useEffect } from 'react';
|
|
6
|
-
import { type Event, type SingleOrArray } from 'xstate';
|
|
7
|
-
|
|
8
|
-
import { invariant } from '@dxos/invariant';
|
|
9
|
-
import { useClient, useAgentHostingProviderClient } from '@dxos/react-client';
|
|
10
|
-
import { type Identity, useHaloInvitations } from '@dxos/react-client/halo';
|
|
11
|
-
import { Invitation, InvitationEncoder } from '@dxos/react-client/invitations';
|
|
12
|
-
import { useTranslation } from '@dxos/react-ui';
|
|
13
|
-
|
|
14
|
-
import { Action, Actions, StepHeading, Input } from '../../../components';
|
|
15
|
-
import { type IdentityPanelStepProps } from '../IdentityPanelProps';
|
|
16
|
-
import { type IdentityEvent } from '../identityMachine';
|
|
17
|
-
|
|
18
|
-
export interface AgentFormProps extends Omit<IdentityPanelStepProps, 'send'> {
|
|
19
|
-
send?: (event: SingleOrArray<Event<IdentityEvent>>) => void;
|
|
20
|
-
onAgentCreate?: () => Promise<void>;
|
|
21
|
-
onAgentDestroy?: () => Promise<void>;
|
|
22
|
-
identity?: Identity;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export type AgentFormImplProps = AgentFormProps & {
|
|
26
|
-
agentStatus?: string;
|
|
27
|
-
agentActive?: boolean;
|
|
28
|
-
agentProviderDisabled?: boolean;
|
|
29
|
-
validationMessage?: string;
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
export const AgentForm = (props: AgentFormProps) => {
|
|
33
|
-
const { identity } = props;
|
|
34
|
-
// const { t } = useTranslation('os');
|
|
35
|
-
const [validationMessage, setValidationMessage] = useState('');
|
|
36
|
-
const [agentStatus, setAgentStatus] = useState('');
|
|
37
|
-
const [agentActive, setAgentActive] = useState(false);
|
|
38
|
-
const client = useClient();
|
|
39
|
-
const invitations = useHaloInvitations();
|
|
40
|
-
const agentHostingProviderClient = useAgentHostingProviderClient(client.config);
|
|
41
|
-
|
|
42
|
-
useEffect(() => {
|
|
43
|
-
const fetchAgentStatus = async () => {
|
|
44
|
-
// TODO(nf): if agent exists, subscribe to updates instead of oneshot status
|
|
45
|
-
if (agentHostingProviderClient) {
|
|
46
|
-
const agentStatus = await agentHostingProviderClient?.getAgent(identity?.identityKey.truncate() ?? 'foo');
|
|
47
|
-
if (agentStatus) {
|
|
48
|
-
setAgentActive(true);
|
|
49
|
-
setAgentStatus(agentStatus);
|
|
50
|
-
} else {
|
|
51
|
-
setAgentActive(false);
|
|
52
|
-
setValidationMessage('No agent deployed via provider.');
|
|
53
|
-
}
|
|
54
|
-
} else {
|
|
55
|
-
setValidationMessage('No agent provider configured.');
|
|
56
|
-
}
|
|
57
|
-
};
|
|
58
|
-
void fetchAgentStatus();
|
|
59
|
-
}, []);
|
|
60
|
-
|
|
61
|
-
const onAgentCreateEvent = useCallback(async (invitation: Invitation) => {
|
|
62
|
-
const invitationCode = InvitationEncoder.encode(invitation);
|
|
63
|
-
if (invitation.state === Invitation.State.CONNECTING) {
|
|
64
|
-
console.log(JSON.stringify({ invitationCode, authCode: invitation.authCode }));
|
|
65
|
-
invariant(identity, 'Identity not found');
|
|
66
|
-
if (agentHostingProviderClient) {
|
|
67
|
-
try {
|
|
68
|
-
const res = await agentHostingProviderClient?.createAgent(invitationCode, identity.identityKey.truncate());
|
|
69
|
-
// TODO(nf): human-consumable response from API
|
|
70
|
-
setAgentStatus(res);
|
|
71
|
-
setAgentActive(true);
|
|
72
|
-
setValidationMessage('');
|
|
73
|
-
} catch (err: any) {
|
|
74
|
-
setValidationMessage(`error creating agent: ${err.message}`);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}, []);
|
|
79
|
-
|
|
80
|
-
const handleAgentCreate = async () => {
|
|
81
|
-
invitations.forEach((invitation) => invitation.cancel());
|
|
82
|
-
|
|
83
|
-
// TODO(nf): do this work in the hosting provider client?
|
|
84
|
-
const invitation = client.halo.share({ type: Invitation.Type.MULTIUSE, authMethod: Invitation.AuthMethod.NONE });
|
|
85
|
-
|
|
86
|
-
invitation.subscribe(onAgentCreateEvent);
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
const handleAgentDestroy = async () => {
|
|
90
|
-
const identity = client.halo.identity.get();
|
|
91
|
-
invariant(identity, 'Identity not found');
|
|
92
|
-
try {
|
|
93
|
-
await agentHostingProviderClient?.destroyAgent(identity.identityKey.truncate());
|
|
94
|
-
setValidationMessage('No agent deployed via provider.');
|
|
95
|
-
setAgentStatus('');
|
|
96
|
-
setAgentActive(false);
|
|
97
|
-
} catch (err: any) {
|
|
98
|
-
setValidationMessage(`error destroying agent: ${err.message}`);
|
|
99
|
-
}
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
return (
|
|
103
|
-
<AgentFormImpl
|
|
104
|
-
{...props}
|
|
105
|
-
onAgentCreate={handleAgentCreate}
|
|
106
|
-
onAgentDestroy={handleAgentDestroy}
|
|
107
|
-
validationMessage={validationMessage}
|
|
108
|
-
agentStatus={agentStatus}
|
|
109
|
-
agentActive={agentActive}
|
|
110
|
-
agentProviderDisabled={!agentHostingProviderClient}
|
|
111
|
-
/>
|
|
112
|
-
);
|
|
113
|
-
};
|
|
114
|
-
|
|
115
|
-
// TODO(zhenyasav): impl shouldn't need send()
|
|
116
|
-
export const AgentFormImpl = (props: AgentFormImplProps) => {
|
|
117
|
-
const {
|
|
118
|
-
active,
|
|
119
|
-
onAgentCreate,
|
|
120
|
-
onAgentDestroy,
|
|
121
|
-
send,
|
|
122
|
-
validationMessage,
|
|
123
|
-
agentStatus,
|
|
124
|
-
agentActive,
|
|
125
|
-
agentProviderDisabled,
|
|
126
|
-
} = props;
|
|
127
|
-
const disabled = !active;
|
|
128
|
-
const { t } = useTranslation('os');
|
|
129
|
-
return (
|
|
130
|
-
<>
|
|
131
|
-
<div role='none' className='grow flex flex-col justify-center'>
|
|
132
|
-
<Input
|
|
133
|
-
{...{ validationMessage }}
|
|
134
|
-
label={<StepHeading>Agent Status</StepHeading>}
|
|
135
|
-
disabled={disabled}
|
|
136
|
-
data-testid='agent-status'
|
|
137
|
-
value={agentStatus}
|
|
138
|
-
/>
|
|
139
|
-
</div>
|
|
140
|
-
<Actions>
|
|
141
|
-
<Action
|
|
142
|
-
disabled={agentActive || agentProviderDisabled}
|
|
143
|
-
onClick={() => onAgentCreate?.()}
|
|
144
|
-
data-testid={'create-agent'}
|
|
145
|
-
>
|
|
146
|
-
Create Agent
|
|
147
|
-
</Action>
|
|
148
|
-
<Action
|
|
149
|
-
disabled={!agentActive || agentProviderDisabled}
|
|
150
|
-
onClick={() => onAgentDestroy?.()}
|
|
151
|
-
data-testid={'destroy-agent'}
|
|
152
|
-
>
|
|
153
|
-
Destroy Agent
|
|
154
|
-
</Action>
|
|
155
|
-
<Action
|
|
156
|
-
disabled={disabled}
|
|
157
|
-
onClick={() => send?.({ type: 'unchooseAction' })}
|
|
158
|
-
data-testid={'update-profile-form-back'}
|
|
159
|
-
>
|
|
160
|
-
{t('back label')}
|
|
161
|
-
</Action>
|
|
162
|
-
</Actions>
|
|
163
|
-
</>
|
|
164
|
-
);
|
|
165
|
-
};
|