@agimon-ai/doompi-session 0.0.1-alpha.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/LICENSE +21 -0
- package/README.md +44 -0
- package/dist/_virtual/_rolldown/runtime.cjs +23 -0
- package/dist/api-contracts.cjs +7 -0
- package/dist/api-contracts.d.cts +2 -0
- package/dist/api-contracts.d.mts +2 -0
- package/dist/api-contracts.mjs +2 -0
- package/dist/extensions/pi.cjs +20 -0
- package/dist/extensions/pi.cjs.map +1 -0
- package/dist/extensions/pi.d.cts +5 -0
- package/dist/extensions/pi.d.cts.map +1 -0
- package/dist/extensions/pi.d.mts +5 -0
- package/dist/extensions/pi.d.mts.map +1 -0
- package/dist/extensions/pi.mjs +15 -0
- package/dist/extensions/pi.mjs.map +1 -0
- package/dist/extensions/server.cjs +37 -0
- package/dist/extensions/server.cjs.map +1 -0
- package/dist/extensions/server.d.cts +5 -0
- package/dist/extensions/server.d.cts.map +1 -0
- package/dist/extensions/server.d.mts +5 -0
- package/dist/extensions/server.d.mts.map +1 -0
- package/dist/extensions/server.mjs +32 -0
- package/dist/extensions/server.mjs.map +1 -0
- package/dist/index.cjs +32 -0
- package/dist/index.d.cts +11 -0
- package/dist/index.d.mts +11 -0
- package/dist/index.mjs +10 -0
- package/dist/src/extensions/(backend)/api/session-peer/route.server.cjs +7 -0
- package/dist/src/extensions/(backend)/api/session-peer/route.server.cjs.map +1 -0
- package/dist/src/extensions/(backend)/api/session-peer/route.server.mjs +8 -0
- package/dist/src/extensions/(backend)/api/session-peer/route.server.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.cjs +10 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.mjs +11 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/root.server.cjs +101 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/root.server.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/root.server.mjs +99 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/root.server.mjs.map +1 -0
- package/dist/src/schemas/apiContracts.cjs +33 -0
- package/dist/src/schemas/apiContracts.cjs.map +1 -0
- package/dist/src/schemas/apiContracts.d.cts +52 -0
- package/dist/src/schemas/apiContracts.d.cts.map +1 -0
- package/dist/src/schemas/apiContracts.d.mts +52 -0
- package/dist/src/schemas/apiContracts.d.mts.map +1 -0
- package/dist/src/schemas/apiContracts.mjs +32 -0
- package/dist/src/schemas/apiContracts.mjs.map +1 -0
- package/dist/src/services/backgroundWorkService/index.cjs +79 -0
- package/dist/src/services/backgroundWorkService/index.cjs.map +1 -0
- package/dist/src/services/backgroundWorkService/index.d.cts +9 -0
- package/dist/src/services/backgroundWorkService/index.d.cts.map +1 -0
- package/dist/src/services/backgroundWorkService/index.d.mts +9 -0
- package/dist/src/services/backgroundWorkService/index.d.mts.map +1 -0
- package/dist/src/services/backgroundWorkService/index.mjs +78 -0
- package/dist/src/services/backgroundWorkService/index.mjs.map +1 -0
- package/dist/src/services/peerInbox/index.cjs +18 -0
- package/dist/src/services/peerInbox/index.cjs.map +1 -0
- package/dist/src/services/peerInbox/index.mjs +17 -0
- package/dist/src/services/peerInbox/index.mjs.map +1 -0
- package/dist/src/services/peerInboxApi/index.cjs +48 -0
- package/dist/src/services/peerInboxApi/index.cjs.map +1 -0
- package/dist/src/services/peerInboxApi/index.mjs +48 -0
- package/dist/src/services/peerInboxApi/index.mjs.map +1 -0
- package/dist/src/services/peerTransport/index.cjs +206 -0
- package/dist/src/services/peerTransport/index.cjs.map +1 -0
- package/dist/src/services/peerTransport/index.d.cts +49 -0
- package/dist/src/services/peerTransport/index.d.cts.map +1 -0
- package/dist/src/services/peerTransport/index.d.mts +49 -0
- package/dist/src/services/peerTransport/index.d.mts.map +1 -0
- package/dist/src/services/peerTransport/index.mjs +195 -0
- package/dist/src/services/peerTransport/index.mjs.map +1 -0
- package/dist/src/services/sessionDelivery/index.cjs +277 -0
- package/dist/src/services/sessionDelivery/index.cjs.map +1 -0
- package/dist/src/services/sessionDelivery/index.d.cts +10 -0
- package/dist/src/services/sessionDelivery/index.d.cts.map +1 -0
- package/dist/src/services/sessionDelivery/index.d.mts +10 -0
- package/dist/src/services/sessionDelivery/index.d.mts.map +1 -0
- package/dist/src/services/sessionDelivery/index.mjs +274 -0
- package/dist/src/services/sessionDelivery/index.mjs.map +1 -0
- package/dist/src/services/sessionDelivery/type.cjs +11 -0
- package/dist/src/services/sessionDelivery/type.cjs.map +1 -0
- package/dist/src/services/sessionDelivery/type.d.cts +73 -0
- package/dist/src/services/sessionDelivery/type.d.cts.map +1 -0
- package/dist/src/services/sessionDelivery/type.d.mts +73 -0
- package/dist/src/services/sessionDelivery/type.d.mts.map +1 -0
- package/dist/src/services/sessionDelivery/type.mjs +10 -0
- package/dist/src/services/sessionDelivery/type.mjs.map +1 -0
- package/dist/src/services/sessionDirectory/index.cjs +120 -0
- package/dist/src/services/sessionDirectory/index.cjs.map +1 -0
- package/dist/src/services/sessionDirectory/index.d.cts +7 -0
- package/dist/src/services/sessionDirectory/index.d.cts.map +1 -0
- package/dist/src/services/sessionDirectory/index.d.mts +7 -0
- package/dist/src/services/sessionDirectory/index.d.mts.map +1 -0
- package/dist/src/services/sessionDirectory/index.mjs +120 -0
- package/dist/src/services/sessionDirectory/index.mjs.map +1 -0
- package/dist/src/services/sessionDirectory/type.d.cts +54 -0
- package/dist/src/services/sessionDirectory/type.d.cts.map +1 -0
- package/dist/src/services/sessionDirectory/type.d.mts +54 -0
- package/dist/src/services/sessionDirectory/type.d.mts.map +1 -0
- package/dist/src/services/sessionGroups/index.cjs +105 -0
- package/dist/src/services/sessionGroups/index.cjs.map +1 -0
- package/dist/src/services/sessionGroups/index.d.cts +7 -0
- package/dist/src/services/sessionGroups/index.d.cts.map +1 -0
- package/dist/src/services/sessionGroups/index.d.mts +7 -0
- package/dist/src/services/sessionGroups/index.d.mts.map +1 -0
- package/dist/src/services/sessionGroups/index.mjs +104 -0
- package/dist/src/services/sessionGroups/index.mjs.map +1 -0
- package/dist/src/services/sessionGroups/type.cjs +11 -0
- package/dist/src/services/sessionGroups/type.cjs.map +1 -0
- package/dist/src/services/sessionGroups/type.d.cts +32 -0
- package/dist/src/services/sessionGroups/type.d.cts.map +1 -0
- package/dist/src/services/sessionGroups/type.d.mts +32 -0
- package/dist/src/services/sessionGroups/type.d.mts.map +1 -0
- package/dist/src/services/sessionGroups/type.mjs +11 -0
- package/dist/src/services/sessionGroups/type.mjs.map +1 -0
- package/dist/src/services/sessionIntercom/index.cjs +89 -0
- package/dist/src/services/sessionIntercom/index.cjs.map +1 -0
- package/dist/src/services/sessionIntercom/index.d.cts +11 -0
- package/dist/src/services/sessionIntercom/index.d.cts.map +1 -0
- package/dist/src/services/sessionIntercom/index.d.mts +11 -0
- package/dist/src/services/sessionIntercom/index.d.mts.map +1 -0
- package/dist/src/services/sessionIntercom/index.mjs +85 -0
- package/dist/src/services/sessionIntercom/index.mjs.map +1 -0
- package/dist/src/services/sessionIntercom/type.cjs +16 -0
- package/dist/src/services/sessionIntercom/type.cjs.map +1 -0
- package/dist/src/services/sessionIntercom/type.d.cts +60 -0
- package/dist/src/services/sessionIntercom/type.d.cts.map +1 -0
- package/dist/src/services/sessionIntercom/type.d.mts +60 -0
- package/dist/src/services/sessionIntercom/type.d.mts.map +1 -0
- package/dist/src/services/sessionIntercom/type.mjs +14 -0
- package/dist/src/services/sessionIntercom/type.mjs.map +1 -0
- package/llms.txt +3 -0
- package/package.json +115 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Vuong Ngo
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# @agimon-ai/doompi-session
|
|
2
|
+
|
|
3
|
+
Shared session coordination services for DoomPi.
|
|
4
|
+
|
|
5
|
+
The foundation owns the session-scoped background-work coordinator used by optional execution packages. It also provides SQLite-backed delivery with host-bound sender identities, durable inbox and outbox state, acknowledgements, keyed duplicate suppression, and prompt admission that wakes idle recipients. Interrupted admission is marked for recovery and is never replayed automatically.
|
|
6
|
+
|
|
7
|
+
Its public services also include:
|
|
8
|
+
|
|
9
|
+
- An in-memory, permission-filtered presence directory with qualified references, separate reachability, runtime, activity, and Voice facts, incarnation and sequence tracking, expiry, and snapshot recovery after sequence gaps.
|
|
10
|
+
- A SQLite communication-group registry with one owner authority, explicit qualified members, enrollment policy, revision conflicts, and current-membership authorization.
|
|
11
|
+
- An agent-facing intercom service for `discover`, attributed direct `send`, `messages`, and correlated `report` operations. Compositions acquire this service explicitly. Group membership grants only discovery and messaging, never session controls or Voice ownership.
|
|
12
|
+
|
|
13
|
+
Session delivery rechecks current authority before each initial send and queued retry. Removing a member therefore blocks later publication while preserving already accepted delivery evidence.
|
|
14
|
+
|
|
15
|
+
## Paired hosts
|
|
16
|
+
|
|
17
|
+
A paired host is configured privately in `~/.pi/.doom/session/peers.json`. The file must be owner-only (`0600`). Each peer needs an HTTPS tunnel URL, a shared secret of at least 32 characters, and explicit operation-specific session allowlists. Pairing alone grants no Session or Voice access.
|
|
18
|
+
|
|
19
|
+
```json
|
|
20
|
+
{
|
|
21
|
+
"version": 1,
|
|
22
|
+
"hostId": "home-host",
|
|
23
|
+
"peers": [
|
|
24
|
+
{
|
|
25
|
+
"hostId": "work-host",
|
|
26
|
+
"url": "https://work.example.net/",
|
|
27
|
+
"secret": "replace-with-a-private-32-character-minimum-secret",
|
|
28
|
+
"allowedSessionIds": ["approved-message-session-id"],
|
|
29
|
+
"allowedVoiceSessionIds": ["approved-voice-session-id"]
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Use `peer/<host-id>/<session-id>` as a qualified target. `allowedSessionIds` grants durable messages and acknowledgements. `allowedVoiceSessionIds` separately grants bounded Voice client-media relay operations. Neither grant exposes owner, `/host/*`, or `/hub/*` routes.
|
|
36
|
+
|
|
37
|
+
## Development
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
pnpm build
|
|
41
|
+
pnpm typecheck
|
|
42
|
+
pnpm test
|
|
43
|
+
pnpm lint
|
|
44
|
+
```
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
//#region \0rolldown/runtime.js
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __copyProps = (to, from, except, desc) => {
|
|
9
|
+
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
10
|
+
key = keys[i];
|
|
11
|
+
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
12
|
+
get: ((k) => from[k]).bind(null, key),
|
|
13
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule || !__hasOwnProp.call(mod, "default") ? __defProp(target, "default", {
|
|
19
|
+
value: mod,
|
|
20
|
+
enumerable: true
|
|
21
|
+
}) : target, mod));
|
|
22
|
+
//#endregion
|
|
23
|
+
exports.__toESM = __toESM;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
Object.defineProperties(exports, {
|
|
2
|
+
__esModule: { value: true },
|
|
3
|
+
[Symbol.toStringTag]: { value: "Module" }
|
|
4
|
+
});
|
|
5
|
+
const require_apiContracts = require("./src/schemas/apiContracts.cjs");
|
|
6
|
+
exports.apiContracts = require_apiContracts.apiContracts;
|
|
7
|
+
exports.default = require_apiContracts.apiContracts;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Object.defineProperties(exports, {
|
|
2
|
+
__esModule: { value: true },
|
|
3
|
+
[Symbol.toStringTag]: { value: "Module" }
|
|
4
|
+
});
|
|
5
|
+
const require_root_cli = require("../src/extensions/workspaces/sessions/(backend)/root.cli.cjs");
|
|
6
|
+
let _agimon_ai_doompi_core_pi_extension = require("@agimon-ai/doompi-core/pi-extension");
|
|
7
|
+
let _agimon_ai_doompi_core_extension_file = require("@agimon-ai/doompi-core/extension-file");
|
|
8
|
+
//#region generated/pi.ts
|
|
9
|
+
const extension = (0, _agimon_ai_doompi_core_pi_extension.definePiExtension)("@agimon-ai/doompi-session", async (context) => {
|
|
10
|
+
const scopeSession = await require_root_cli.default(context);
|
|
11
|
+
return {
|
|
12
|
+
...(0, _agimon_ai_doompi_core_extension_file.composeRootHooks)(scopeSession),
|
|
13
|
+
services: [...scopeSession.services ?? []]
|
|
14
|
+
};
|
|
15
|
+
});
|
|
16
|
+
//#endregion
|
|
17
|
+
exports.default = extension;
|
|
18
|
+
exports.extension = extension;
|
|
19
|
+
|
|
20
|
+
//# sourceMappingURL=pi.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pi.cjs","names":["definePiExtension","rootSession","composeRootHooks"],"sources":["../../generated/pi.ts"],"sourcesContent":["// Generated by @agimon-ai/doompi-build. Do not edit by hand.\nimport { definePiExtension, type PiPluginContext } from '@agimon-ai/doompi-core/pi-extension';\nimport { composeRootHooks } from '@agimon-ai/doompi-core/extension-file';\n\nimport rootSession from '../src/extensions/workspaces/sessions/(backend)/root.cli';\n\ntype OptionsOf<T> = T extends (context: PiPluginContext<infer Options>) => unknown ? Options : never;\ntype InferredOptions = Exclude<OptionsOf<typeof rootSession>, undefined>;\ntype Intersect<Union> =\n (Union extends unknown ? (value: Union) => void : never) extends (value: infer Value) => void ? Value : never;\ntype ExtensionOptions = [InferredOptions] extends [never] ? undefined : Intersect<InferredOptions>;\n\nexport const extension = definePiExtension<ExtensionOptions>('@agimon-ai/doompi-session', async (context) => {\n const scopeSession = await rootSession(context);\n return {\n ...composeRootHooks(scopeSession),\n services: [...(scopeSession.services ?? [])],\n };\n});\n\nexport default extension;\n"],"mappings":";;;;;;;;AAYA,MAAa,aAAA,GAAYA,oCAAAA,kBAAAA,CAAoC,6BAA6B,OAAO,YAAY;CAC3G,MAAM,eAAe,MAAMC,iBAAAA,QAAY,OAAO;CAC9C,OAAO;EACL,IAAA,GAAGC,sCAAAA,iBAAAA,CAAiB,YAAY;EAChC,UAAU,CAAC,GAAI,aAAa,YAAY,CAAC,CAAE;CAC7C;AACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pi.d.cts","names":[],"sources":["../../generated/pi.ts"],"mappings":";qBAYa,iEAAS"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pi.d.mts","names":[],"sources":["../../generated/pi.ts"],"mappings":";qBAYa,iEAAS"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import root_cli_default from "../src/extensions/workspaces/sessions/(backend)/root.cli.mjs";
|
|
2
|
+
import { definePiExtension } from "@agimon-ai/doompi-core/pi-extension";
|
|
3
|
+
import { composeRootHooks } from "@agimon-ai/doompi-core/extension-file";
|
|
4
|
+
//#region generated/pi.ts
|
|
5
|
+
const extension = definePiExtension("@agimon-ai/doompi-session", async (context) => {
|
|
6
|
+
const scopeSession = await root_cli_default(context);
|
|
7
|
+
return {
|
|
8
|
+
...composeRootHooks(scopeSession),
|
|
9
|
+
services: [...scopeSession.services ?? []]
|
|
10
|
+
};
|
|
11
|
+
});
|
|
12
|
+
//#endregion
|
|
13
|
+
export { extension as default, extension };
|
|
14
|
+
|
|
15
|
+
//# sourceMappingURL=pi.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pi.mjs","names":["rootSession"],"sources":["../../generated/pi.ts"],"sourcesContent":["// Generated by @agimon-ai/doompi-build. Do not edit by hand.\nimport { definePiExtension, type PiPluginContext } from '@agimon-ai/doompi-core/pi-extension';\nimport { composeRootHooks } from '@agimon-ai/doompi-core/extension-file';\n\nimport rootSession from '../src/extensions/workspaces/sessions/(backend)/root.cli';\n\ntype OptionsOf<T> = T extends (context: PiPluginContext<infer Options>) => unknown ? Options : never;\ntype InferredOptions = Exclude<OptionsOf<typeof rootSession>, undefined>;\ntype Intersect<Union> =\n (Union extends unknown ? (value: Union) => void : never) extends (value: infer Value) => void ? Value : never;\ntype ExtensionOptions = [InferredOptions] extends [never] ? undefined : Intersect<InferredOptions>;\n\nexport const extension = definePiExtension<ExtensionOptions>('@agimon-ai/doompi-session', async (context) => {\n const scopeSession = await rootSession(context);\n return {\n ...composeRootHooks(scopeSession),\n services: [...(scopeSession.services ?? [])],\n };\n});\n\nexport default extension;\n"],"mappings":";;;;AAYA,MAAa,YAAY,kBAAoC,6BAA6B,OAAO,YAAY;CAC3G,MAAM,eAAe,MAAMA,iBAAY,OAAO;CAC9C,OAAO;EACL,GAAG,iBAAiB,YAAY;EAChC,UAAU,CAAC,GAAI,aAAa,YAAY,CAAC,CAAE;CAC7C;AACF,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
Object.defineProperties(exports, {
|
|
2
|
+
__esModule: { value: true },
|
|
3
|
+
[Symbol.toStringTag]: { value: "Module" }
|
|
4
|
+
});
|
|
5
|
+
const require_root_server = require("../src/extensions/workspaces/sessions/(backend)/root.server.cjs");
|
|
6
|
+
const require_route_server = require("../src/extensions/(backend)/api/session-peer/route.server.cjs");
|
|
7
|
+
let _agimon_ai_doompi_core_extension_file = require("@agimon-ai/doompi-core/extension-file");
|
|
8
|
+
let _agimon_ai_doompi_core_server_facet = require("@agimon-ai/doompi-core/server-facet");
|
|
9
|
+
//#region generated/server.ts
|
|
10
|
+
const at = (value, context) => typeof value === "function" ? value(context) : value;
|
|
11
|
+
const facet = (0, _agimon_ai_doompi_core_server_facet.defineServerPlugin)({
|
|
12
|
+
name: "@agimon-ai/doompi-session",
|
|
13
|
+
global: (context) => ({ get api() {
|
|
14
|
+
return [at(require_route_server.default, context)];
|
|
15
|
+
} }),
|
|
16
|
+
workspace: (context) => ({ get api() {
|
|
17
|
+
return [at(require_route_server.default, context)];
|
|
18
|
+
} }),
|
|
19
|
+
session: async (context) => {
|
|
20
|
+
const scopeSession = await require_root_server.default(context);
|
|
21
|
+
return {
|
|
22
|
+
...(0, _agimon_ai_doompi_core_extension_file.composeRootHooks)(scopeSession),
|
|
23
|
+
get api() {
|
|
24
|
+
return [at(require_route_server.default, context)];
|
|
25
|
+
},
|
|
26
|
+
services: [...scopeSession.services ?? []],
|
|
27
|
+
get activities() {
|
|
28
|
+
return [...scopeSession.activities ?? []];
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
//#endregion
|
|
34
|
+
exports.default = facet;
|
|
35
|
+
exports.facet = facet;
|
|
36
|
+
|
|
37
|
+
//# sourceMappingURL=server.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.cjs","names":["defineServerPlugin","apiRoute","rootSession","composeRootHooks"],"sources":["../../generated/server.ts"],"sourcesContent":["// Generated by @agimon-ai/doompi-build. Do not edit by hand.\nimport { defineServerPlugin, type DoomServerSessionPlugin } from '@agimon-ai/doompi-core/server-facet';\nimport { composeRootHooks } from '@agimon-ai/doompi-core/extension-file';\n\nimport rootSession from '../src/extensions/workspaces/sessions/(backend)/root.server';\nimport apiRoute from '../src/extensions/(backend)/api/session-peer/route.server';\n\ntype Factory<T, C> = (context: C) => T;\nconst at = <T, C>(value: T | Factory<T, C>, context: C): T =>\n typeof value === 'function' ? (value as Factory<T, C>)(context) : value;\n\nexport const facet = defineServerPlugin({\n name: '@agimon-ai/doompi-session',\n global: (context) => ({\n get api(): DoomServerSessionPlugin['api'] { return [at(apiRoute, context)]; },\n }),\n workspace: (context) => ({\n get api(): DoomServerSessionPlugin['api'] { return [at(apiRoute, context)]; },\n }),\n session: async (context) => {\n const scopeSession = await rootSession(context);\n return {\n ...composeRootHooks(scopeSession),\n get api(): DoomServerSessionPlugin['api'] { return [at(apiRoute, context)]; },\n services: [...(scopeSession.services ?? [])],\n get activities(): DoomServerSessionPlugin['activities'] { return [...(scopeSession.activities ?? [])]; },\n };\n },\n});\n\nexport default facet;\n"],"mappings":";;;;;;;;;AAQA,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;AAEpE,MAAa,SAAA,GAAQA,oCAAAA,mBAAAA,CAAmB;CACtC,MAAM;CACN,SAAS,aAAa,EACpB,IAAI,MAAsC;EAAE,OAAO,CAAC,GAAGC,qBAAAA,SAAU,OAAO,CAAC;CAAG,EAC9E;CACA,YAAY,aAAa,EACvB,IAAI,MAAsC;EAAE,OAAO,CAAC,GAAGA,qBAAAA,SAAU,OAAO,CAAC;CAAG,EAC9E;CACA,SAAS,OAAO,YAAY;EAC1B,MAAM,eAAe,MAAMC,oBAAAA,QAAY,OAAO;EAC9C,OAAO;GACL,IAAA,GAAGC,sCAAAA,iBAAAA,CAAiB,YAAY;GAChC,IAAI,MAAsC;IAAE,OAAO,CAAC,GAAGF,qBAAAA,SAAU,OAAO,CAAC;GAAG;GAC5E,UAAU,CAAC,GAAI,aAAa,YAAY,CAAC,CAAE;GAC3C,IAAI,aAAoD;IAAE,OAAO,CAAC,GAAI,aAAa,cAAc,CAAC,CAAE;GAAG;EACzG;CACF;AACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.cts","names":[],"sources":["../../generated/server.ts"],"mappings":";qBAWa,qDAAK"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.mts","names":[],"sources":["../../generated/server.ts"],"mappings":";qBAWa,qDAAK"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import root_server_default from "../src/extensions/workspaces/sessions/(backend)/root.server.mjs";
|
|
2
|
+
import route_server_default from "../src/extensions/(backend)/api/session-peer/route.server.mjs";
|
|
3
|
+
import { composeRootHooks } from "@agimon-ai/doompi-core/extension-file";
|
|
4
|
+
import { defineServerPlugin } from "@agimon-ai/doompi-core/server-facet";
|
|
5
|
+
//#region generated/server.ts
|
|
6
|
+
const at = (value, context) => typeof value === "function" ? value(context) : value;
|
|
7
|
+
const facet = defineServerPlugin({
|
|
8
|
+
name: "@agimon-ai/doompi-session",
|
|
9
|
+
global: (context) => ({ get api() {
|
|
10
|
+
return [at(route_server_default, context)];
|
|
11
|
+
} }),
|
|
12
|
+
workspace: (context) => ({ get api() {
|
|
13
|
+
return [at(route_server_default, context)];
|
|
14
|
+
} }),
|
|
15
|
+
session: async (context) => {
|
|
16
|
+
const scopeSession = await root_server_default(context);
|
|
17
|
+
return {
|
|
18
|
+
...composeRootHooks(scopeSession),
|
|
19
|
+
get api() {
|
|
20
|
+
return [at(route_server_default, context)];
|
|
21
|
+
},
|
|
22
|
+
services: [...scopeSession.services ?? []],
|
|
23
|
+
get activities() {
|
|
24
|
+
return [...scopeSession.activities ?? []];
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
//#endregion
|
|
30
|
+
export { facet as default, facet };
|
|
31
|
+
|
|
32
|
+
//# sourceMappingURL=server.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.mjs","names":["apiRoute","rootSession"],"sources":["../../generated/server.ts"],"sourcesContent":["// Generated by @agimon-ai/doompi-build. Do not edit by hand.\nimport { defineServerPlugin, type DoomServerSessionPlugin } from '@agimon-ai/doompi-core/server-facet';\nimport { composeRootHooks } from '@agimon-ai/doompi-core/extension-file';\n\nimport rootSession from '../src/extensions/workspaces/sessions/(backend)/root.server';\nimport apiRoute from '../src/extensions/(backend)/api/session-peer/route.server';\n\ntype Factory<T, C> = (context: C) => T;\nconst at = <T, C>(value: T | Factory<T, C>, context: C): T =>\n typeof value === 'function' ? (value as Factory<T, C>)(context) : value;\n\nexport const facet = defineServerPlugin({\n name: '@agimon-ai/doompi-session',\n global: (context) => ({\n get api(): DoomServerSessionPlugin['api'] { return [at(apiRoute, context)]; },\n }),\n workspace: (context) => ({\n get api(): DoomServerSessionPlugin['api'] { return [at(apiRoute, context)]; },\n }),\n session: async (context) => {\n const scopeSession = await rootSession(context);\n return {\n ...composeRootHooks(scopeSession),\n get api(): DoomServerSessionPlugin['api'] { return [at(apiRoute, context)]; },\n services: [...(scopeSession.services ?? [])],\n get activities(): DoomServerSessionPlugin['activities'] { return [...(scopeSession.activities ?? [])]; },\n };\n },\n});\n\nexport default facet;\n"],"mappings":";;;;;AAQA,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;AAEpE,MAAa,QAAQ,mBAAmB;CACtC,MAAM;CACN,SAAS,aAAa,EACpB,IAAI,MAAsC;EAAE,OAAO,CAAC,GAAGA,sBAAU,OAAO,CAAC;CAAG,EAC9E;CACA,YAAY,aAAa,EACvB,IAAI,MAAsC;EAAE,OAAO,CAAC,GAAGA,sBAAU,OAAO,CAAC;CAAG,EAC9E;CACA,SAAS,OAAO,YAAY;EAC1B,MAAM,eAAe,MAAMC,oBAAY,OAAO;EAC9C,OAAO;GACL,GAAG,iBAAiB,YAAY;GAChC,IAAI,MAAsC;IAAE,OAAO,CAAC,GAAGD,sBAAU,OAAO,CAAC;GAAG;GAC5E,UAAU,CAAC,GAAI,aAAa,YAAY,CAAC,CAAE;GAC3C,IAAI,aAAoD;IAAE,OAAO,CAAC,GAAI,aAAa,cAAc,CAAC,CAAE;GAAG;EACzG;CACF;AACF,CAAC"}
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_index = require("./src/services/backgroundWorkService/index.cjs");
|
|
3
|
+
const require_index$1 = require("./src/services/peerTransport/index.cjs");
|
|
4
|
+
const require_index$2 = require("./src/services/sessionDirectory/index.cjs");
|
|
5
|
+
const require_type = require("./src/services/sessionGroups/type.cjs");
|
|
6
|
+
const require_index$3 = require("./src/services/sessionGroups/index.cjs");
|
|
7
|
+
const require_type$1 = require("./src/services/sessionIntercom/type.cjs");
|
|
8
|
+
const require_index$4 = require("./src/services/sessionIntercom/index.cjs");
|
|
9
|
+
const require_type$2 = require("./src/services/sessionDelivery/type.cjs");
|
|
10
|
+
const require_index$5 = require("./src/services/sessionDelivery/index.cjs");
|
|
11
|
+
exports.DOOM_SESSION_DELIVERY_SERVICE = require_type$2.DOOM_SESSION_DELIVERY_SERVICE;
|
|
12
|
+
exports.DOOM_SESSION_INTERCOM_SERVICE = require_type$1.DOOM_SESSION_INTERCOM_SERVICE;
|
|
13
|
+
exports.SessionGroupRevisionError = require_type.SessionGroupRevisionError;
|
|
14
|
+
exports.createBackgroundWorkService = require_index.createBackgroundWorkService;
|
|
15
|
+
exports.createPeerCommunication = require_index$1.createPeerCommunication;
|
|
16
|
+
exports.createPeerReplayGuard = require_index$1.createPeerReplayGuard;
|
|
17
|
+
exports.createSessionDeliveryService = require_index$5.createSessionDeliveryService;
|
|
18
|
+
exports.createSessionDirectory = require_index$2.createSessionDirectory;
|
|
19
|
+
exports.createSessionGroupDeliveryAuthorizer = require_index$4.createSessionGroupDeliveryAuthorizer;
|
|
20
|
+
exports.createSessionGroupStore = require_index$3.createSessionGroupStore;
|
|
21
|
+
exports.createSessionIntercom = require_index$4.createSessionIntercom;
|
|
22
|
+
exports.parseRemoteSessionReference = require_index$1.parseRemoteSessionReference;
|
|
23
|
+
exports.peerRequestHeaders = require_index$1.peerRequestHeaders;
|
|
24
|
+
exports.peerSessionReference = require_index$1.peerSessionReference;
|
|
25
|
+
exports.provideBackgroundWorkService = require_index.provideBackgroundWorkService;
|
|
26
|
+
exports.provideSessionDeliveryService = require_index$5.provideSessionDeliveryService;
|
|
27
|
+
exports.readDoomSessionDelivery = require_type$2.readDoomSessionDelivery;
|
|
28
|
+
exports.readSessionIntercom = require_type$1.readSessionIntercom;
|
|
29
|
+
exports.readSessionPeerConfig = require_index$1.readSessionPeerConfig;
|
|
30
|
+
exports.requireSessionIntercom = require_type$1.requireSessionIntercom;
|
|
31
|
+
exports.sessionPeerConfigPath = require_index$1.sessionPeerConfigPath;
|
|
32
|
+
exports.verifyPeerRequest = require_index$1.verifyPeerRequest;
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createBackgroundWorkService, provideBackgroundWorkService } from "./src/services/backgroundWorkService/index.cjs";
|
|
2
|
+
import { RemoteSessionReference, SessionPeer, SessionPeerConfig, SessionPeerEnvelope, SessionPeerReplayGuard, createPeerCommunication, createPeerReplayGuard, parseRemoteSessionReference, peerRequestHeaders, peerSessionReference, readSessionPeerConfig, sessionPeerConfigPath, verifyPeerRequest } from "./src/services/peerTransport/index.cjs";
|
|
3
|
+
import { DiscoveredSession, SessionActivityState, SessionDirectory, SessionDirectoryOptions, SessionDiscoveryGrant, SessionHostReachability, SessionPresenceFacts, SessionPresenceObservation, SessionRuntimeState, SessionVoiceReadiness } from "./src/services/sessionDirectory/type.cjs";
|
|
4
|
+
import { createSessionDirectory } from "./src/services/sessionDirectory/index.cjs";
|
|
5
|
+
import { SessionCommunicationGroup, SessionGroupMutation, SessionGroupRevisionError, SessionGroupStore, SessionGroupStoreOptions } from "./src/services/sessionGroups/type.cjs";
|
|
6
|
+
import { createSessionGroupStore } from "./src/services/sessionGroups/index.cjs";
|
|
7
|
+
import { DOOM_SESSION_DELIVERY_SERVICE, DoomSessionDeliveryInboxState, DoomSessionDeliveryMetadata, DoomSessionDeliveryMode, DoomSessionDeliveryRequest, DoomSessionDeliveryService, DoomSessionInboxEntry, DoomSessionInboxQuery, DoomSessionOutboxEntry, SessionDeliveryServiceOptions, readDoomSessionDelivery } from "./src/services/sessionDelivery/type.cjs";
|
|
8
|
+
import { createSessionDeliveryService, provideSessionDeliveryService } from "./src/services/sessionDelivery/index.cjs";
|
|
9
|
+
import { DOOM_SESSION_INTERCOM_SERVICE, SessionGroupDeliveryAuthorizationOptions, SessionIntercom, SessionIntercomMessage, SessionIntercomOptions, SessionIntercomSendRequest, SessionReportStatus, readSessionIntercom, requireSessionIntercom } from "./src/services/sessionIntercom/type.cjs";
|
|
10
|
+
import { createSessionGroupDeliveryAuthorizer, createSessionIntercom } from "./src/services/sessionIntercom/index.cjs";
|
|
11
|
+
export { DOOM_SESSION_DELIVERY_SERVICE, DOOM_SESSION_INTERCOM_SERVICE, type DiscoveredSession, type DoomSessionDeliveryInboxState, type DoomSessionDeliveryMetadata, type DoomSessionDeliveryMode, type DoomSessionDeliveryRequest, type DoomSessionDeliveryService, type DoomSessionInboxEntry, type DoomSessionInboxQuery, type DoomSessionOutboxEntry, type RemoteSessionReference, type SessionActivityState, type SessionCommunicationGroup, type SessionDeliveryServiceOptions, type SessionDirectory, type SessionDirectoryOptions, type SessionDiscoveryGrant, type SessionGroupDeliveryAuthorizationOptions, type SessionGroupMutation, SessionGroupRevisionError, type SessionGroupStore, type SessionGroupStoreOptions, type SessionHostReachability, type SessionIntercom, type SessionIntercomMessage, type SessionIntercomOptions, type SessionIntercomSendRequest, type SessionPeer, type SessionPeerConfig, type SessionPeerEnvelope, type SessionPeerReplayGuard, type SessionPresenceFacts, type SessionPresenceObservation, type SessionReportStatus, type SessionRuntimeState, type SessionVoiceReadiness, createBackgroundWorkService, createPeerCommunication, createPeerReplayGuard, createSessionDeliveryService, createSessionDirectory, createSessionGroupDeliveryAuthorizer, createSessionGroupStore, createSessionIntercom, parseRemoteSessionReference, peerRequestHeaders, peerSessionReference, provideBackgroundWorkService, provideSessionDeliveryService, readDoomSessionDelivery, readSessionIntercom, readSessionPeerConfig, requireSessionIntercom, sessionPeerConfigPath, verifyPeerRequest };
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { createBackgroundWorkService, provideBackgroundWorkService } from "./src/services/backgroundWorkService/index.mjs";
|
|
2
|
+
import { RemoteSessionReference, SessionPeer, SessionPeerConfig, SessionPeerEnvelope, SessionPeerReplayGuard, createPeerCommunication, createPeerReplayGuard, parseRemoteSessionReference, peerRequestHeaders, peerSessionReference, readSessionPeerConfig, sessionPeerConfigPath, verifyPeerRequest } from "./src/services/peerTransport/index.mjs";
|
|
3
|
+
import { DiscoveredSession, SessionActivityState, SessionDirectory, SessionDirectoryOptions, SessionDiscoveryGrant, SessionHostReachability, SessionPresenceFacts, SessionPresenceObservation, SessionRuntimeState, SessionVoiceReadiness } from "./src/services/sessionDirectory/type.mjs";
|
|
4
|
+
import { createSessionDirectory } from "./src/services/sessionDirectory/index.mjs";
|
|
5
|
+
import { SessionCommunicationGroup, SessionGroupMutation, SessionGroupRevisionError, SessionGroupStore, SessionGroupStoreOptions } from "./src/services/sessionGroups/type.mjs";
|
|
6
|
+
import { createSessionGroupStore } from "./src/services/sessionGroups/index.mjs";
|
|
7
|
+
import { DOOM_SESSION_DELIVERY_SERVICE, DoomSessionDeliveryInboxState, DoomSessionDeliveryMetadata, DoomSessionDeliveryMode, DoomSessionDeliveryRequest, DoomSessionDeliveryService, DoomSessionInboxEntry, DoomSessionInboxQuery, DoomSessionOutboxEntry, SessionDeliveryServiceOptions, readDoomSessionDelivery } from "./src/services/sessionDelivery/type.mjs";
|
|
8
|
+
import { createSessionDeliveryService, provideSessionDeliveryService } from "./src/services/sessionDelivery/index.mjs";
|
|
9
|
+
import { DOOM_SESSION_INTERCOM_SERVICE, SessionGroupDeliveryAuthorizationOptions, SessionIntercom, SessionIntercomMessage, SessionIntercomOptions, SessionIntercomSendRequest, SessionReportStatus, readSessionIntercom, requireSessionIntercom } from "./src/services/sessionIntercom/type.mjs";
|
|
10
|
+
import { createSessionGroupDeliveryAuthorizer, createSessionIntercom } from "./src/services/sessionIntercom/index.mjs";
|
|
11
|
+
export { DOOM_SESSION_DELIVERY_SERVICE, DOOM_SESSION_INTERCOM_SERVICE, type DiscoveredSession, type DoomSessionDeliveryInboxState, type DoomSessionDeliveryMetadata, type DoomSessionDeliveryMode, type DoomSessionDeliveryRequest, type DoomSessionDeliveryService, type DoomSessionInboxEntry, type DoomSessionInboxQuery, type DoomSessionOutboxEntry, type RemoteSessionReference, type SessionActivityState, type SessionCommunicationGroup, type SessionDeliveryServiceOptions, type SessionDirectory, type SessionDirectoryOptions, type SessionDiscoveryGrant, type SessionGroupDeliveryAuthorizationOptions, type SessionGroupMutation, SessionGroupRevisionError, type SessionGroupStore, type SessionGroupStoreOptions, type SessionHostReachability, type SessionIntercom, type SessionIntercomMessage, type SessionIntercomOptions, type SessionIntercomSendRequest, type SessionPeer, type SessionPeerConfig, type SessionPeerEnvelope, type SessionPeerReplayGuard, type SessionPresenceFacts, type SessionPresenceObservation, type SessionReportStatus, type SessionRuntimeState, type SessionVoiceReadiness, createBackgroundWorkService, createPeerCommunication, createPeerReplayGuard, createSessionDeliveryService, createSessionDirectory, createSessionGroupDeliveryAuthorizer, createSessionGroupStore, createSessionIntercom, parseRemoteSessionReference, peerRequestHeaders, peerSessionReference, provideBackgroundWorkService, provideSessionDeliveryService, readDoomSessionDelivery, readSessionIntercom, readSessionPeerConfig, requireSessionIntercom, sessionPeerConfigPath, verifyPeerRequest };
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { createBackgroundWorkService, provideBackgroundWorkService } from "./src/services/backgroundWorkService/index.mjs";
|
|
2
|
+
import { createPeerCommunication, createPeerReplayGuard, parseRemoteSessionReference, peerRequestHeaders, peerSessionReference, readSessionPeerConfig, sessionPeerConfigPath, verifyPeerRequest } from "./src/services/peerTransport/index.mjs";
|
|
3
|
+
import { createSessionDirectory } from "./src/services/sessionDirectory/index.mjs";
|
|
4
|
+
import { SessionGroupRevisionError } from "./src/services/sessionGroups/type.mjs";
|
|
5
|
+
import { createSessionGroupStore } from "./src/services/sessionGroups/index.mjs";
|
|
6
|
+
import { DOOM_SESSION_INTERCOM_SERVICE, readSessionIntercom, requireSessionIntercom } from "./src/services/sessionIntercom/type.mjs";
|
|
7
|
+
import { createSessionGroupDeliveryAuthorizer, createSessionIntercom } from "./src/services/sessionIntercom/index.mjs";
|
|
8
|
+
import { DOOM_SESSION_DELIVERY_SERVICE, readDoomSessionDelivery } from "./src/services/sessionDelivery/type.mjs";
|
|
9
|
+
import { createSessionDeliveryService, provideSessionDeliveryService } from "./src/services/sessionDelivery/index.mjs";
|
|
10
|
+
export { DOOM_SESSION_DELIVERY_SERVICE, DOOM_SESSION_INTERCOM_SERVICE, SessionGroupRevisionError, createBackgroundWorkService, createPeerCommunication, createPeerReplayGuard, createSessionDeliveryService, createSessionDirectory, createSessionGroupDeliveryAuthorizer, createSessionGroupStore, createSessionIntercom, parseRemoteSessionReference, peerRequestHeaders, peerSessionReference, provideBackgroundWorkService, provideSessionDeliveryService, readDoomSessionDelivery, readSessionIntercom, readSessionPeerConfig, requireSessionIntercom, sessionPeerConfigPath, verifyPeerRequest };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
const require_index = require("../../../../services/peerInboxApi/index.cjs");
|
|
2
|
+
//#region src/extensions/(backend)/api/session-peer/route.server.ts
|
|
3
|
+
var route_server_default = (0, require("@agimon-ai/doompi-core/extension-file").defineRoute)(require_index.peerInboxApi);
|
|
4
|
+
//#endregion
|
|
5
|
+
exports.default = route_server_default;
|
|
6
|
+
|
|
7
|
+
//# sourceMappingURL=route.server.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route.server.cjs","names":["defineRoute","peerInboxApi"],"sources":["../../../../../../src/extensions/(backend)/api/session-peer/route.server.ts"],"sourcesContent":["import { defineRoute } from '@agimon-ai/doompi-core/extension-file';\n\nimport { peerInboxApi } from '../../../../services/peerInboxApi';\n\nexport default defineRoute(peerInboxApi);\n"],"mappings":";;AAIA,IAAA,wBAAA,kDAAeA,CAAAA,CAAAA,YAAAA,CAAYC,cAAAA,YAAY"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { peerInboxApi } from "../../../../services/peerInboxApi/index.mjs";
|
|
2
|
+
import { defineRoute } from "@agimon-ai/doompi-core/extension-file";
|
|
3
|
+
//#region src/extensions/(backend)/api/session-peer/route.server.ts
|
|
4
|
+
var route_server_default = defineRoute(peerInboxApi);
|
|
5
|
+
//#endregion
|
|
6
|
+
export { route_server_default as default };
|
|
7
|
+
|
|
8
|
+
//# sourceMappingURL=route.server.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route.server.mjs","names":[],"sources":["../../../../../../src/extensions/(backend)/api/session-peer/route.server.ts"],"sourcesContent":["import { defineRoute } from '@agimon-ai/doompi-core/extension-file';\n\nimport { peerInboxApi } from '../../../../services/peerInboxApi';\n\nexport default defineRoute(peerInboxApi);\n"],"mappings":";;;AAIA,IAAA,uBAAe,YAAY,YAAY"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
const require_index = require("../../../../services/backgroundWorkService/index.cjs");
|
|
2
|
+
//#region src/extensions/workspaces/sessions/(backend)/root.cli.ts
|
|
3
|
+
var root_cli_default = (0, require("@agimon-ai/doompi-core/extension-file").defineRoot)((_context) => ({
|
|
4
|
+
value: void 0,
|
|
5
|
+
services: [require_index.provideBackgroundWorkService]
|
|
6
|
+
}));
|
|
7
|
+
//#endregion
|
|
8
|
+
exports.default = root_cli_default;
|
|
9
|
+
|
|
10
|
+
//# sourceMappingURL=root.cli.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"root.cli.cjs","names":["defineRoot","provideBackgroundWorkService"],"sources":["../../../../../../src/extensions/workspaces/sessions/(backend)/root.cli.ts"],"sourcesContent":["import { defineRoot } from '@agimon-ai/doompi-core/extension-file';\nimport type { PiPluginContext } from '@agimon-ai/doompi-core/pi-extension';\n\nimport { provideBackgroundWorkService } from '../../../../services/backgroundWorkService';\n\nexport default defineRoot((_context: PiPluginContext) => ({\n value: undefined,\n services: [provideBackgroundWorkService],\n}));\n"],"mappings":";;AAKA,IAAA,oBAAA,kDAAeA,CAAAA,CAAAA,WAAAA,EAAY,cAA+B;CACxD,OAAO,KAAA;CACP,UAAU,CAACC,cAAAA,4BAA4B;AACzC,EAAE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { provideBackgroundWorkService } from "../../../../services/backgroundWorkService/index.mjs";
|
|
2
|
+
import { defineRoot } from "@agimon-ai/doompi-core/extension-file";
|
|
3
|
+
//#region src/extensions/workspaces/sessions/(backend)/root.cli.ts
|
|
4
|
+
var root_cli_default = defineRoot((_context) => ({
|
|
5
|
+
value: void 0,
|
|
6
|
+
services: [provideBackgroundWorkService]
|
|
7
|
+
}));
|
|
8
|
+
//#endregion
|
|
9
|
+
export { root_cli_default as default };
|
|
10
|
+
|
|
11
|
+
//# sourceMappingURL=root.cli.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"root.cli.mjs","names":[],"sources":["../../../../../../src/extensions/workspaces/sessions/(backend)/root.cli.ts"],"sourcesContent":["import { defineRoot } from '@agimon-ai/doompi-core/extension-file';\nimport type { PiPluginContext } from '@agimon-ai/doompi-core/pi-extension';\n\nimport { provideBackgroundWorkService } from '../../../../services/backgroundWorkService';\n\nexport default defineRoot((_context: PiPluginContext) => ({\n value: undefined,\n services: [provideBackgroundWorkService],\n}));\n"],"mappings":";;;AAKA,IAAA,mBAAe,YAAY,cAA+B;CACxD,OAAO,KAAA;CACP,UAAU,CAAC,4BAA4B;AACzC,EAAE"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
const require_runtime = require("../../../../../_virtual/_rolldown/runtime.cjs");
|
|
2
|
+
const require_index = require("../../../../services/backgroundWorkService/index.cjs");
|
|
3
|
+
const require_index$1 = require("../../../../services/peerTransport/index.cjs");
|
|
4
|
+
const require_index$2 = require("../../../../services/sessionDirectory/index.cjs");
|
|
5
|
+
const require_index$3 = require("../../../../services/sessionGroups/index.cjs");
|
|
6
|
+
const require_type = require("../../../../services/sessionIntercom/type.cjs");
|
|
7
|
+
const require_index$4 = require("../../../../services/sessionIntercom/index.cjs");
|
|
8
|
+
const require_type$1 = require("../../../../services/sessionDelivery/type.cjs");
|
|
9
|
+
const require_index$5 = require("../../../../services/sessionDelivery/index.cjs");
|
|
10
|
+
const require_index$6 = require("../../../../services/peerInbox/index.cjs");
|
|
11
|
+
let node_fs = require("node:fs");
|
|
12
|
+
node_fs = require_runtime.__toESM(node_fs, 1);
|
|
13
|
+
let node_path = require("node:path");
|
|
14
|
+
node_path = require_runtime.__toESM(node_path, 1);
|
|
15
|
+
//#region src/extensions/workspaces/sessions/(backend)/root.server.ts
|
|
16
|
+
var root_server_default = (0, require("@agimon-ai/doompi-core/extension-file").defineRoot)((pluginContext) => ({
|
|
17
|
+
value: void 0,
|
|
18
|
+
services: [require_index.provideBackgroundWorkService, (context) => {
|
|
19
|
+
const agent = pluginContext.agent;
|
|
20
|
+
const session = agent?.context.session;
|
|
21
|
+
const communication = pluginContext.host.context.sessionCommunication;
|
|
22
|
+
const homeDirectory = pluginContext.host.context.homeDirectory;
|
|
23
|
+
const sessionService = pluginContext.host.context.sessionService;
|
|
24
|
+
if (!agent || !session?.admitPrompt || !communication || !homeDirectory || !sessionService?.canCommunicate) throw new Error("Session delivery requires the headless agent, authenticated session communication, host home directory, and communication policy.");
|
|
25
|
+
const sessionDirectory = node_path.default.join(homeDirectory, ".pi", ".doom", "session");
|
|
26
|
+
const deliveryDirectory = node_path.default.join(sessionDirectory, "delivery");
|
|
27
|
+
node_fs.default.mkdirSync(deliveryDirectory, {
|
|
28
|
+
recursive: true,
|
|
29
|
+
mode: 448
|
|
30
|
+
});
|
|
31
|
+
const peerCommunication = require_index$1.createPeerCommunication({
|
|
32
|
+
local: communication,
|
|
33
|
+
homeDirectory
|
|
34
|
+
});
|
|
35
|
+
const peerConfig = require_index$1.readSessionPeerConfig(homeDirectory);
|
|
36
|
+
const remotePeerIsGranted = (peerKey) => {
|
|
37
|
+
const peer = require_index$1.parseRemoteSessionReference(peerKey);
|
|
38
|
+
return peer !== void 0 && peerConfig?.peers.some((candidate) => candidate.hostId === peer.hostId && candidate.allowedSessionIds.includes(agent.context.sessionId)) === true;
|
|
39
|
+
};
|
|
40
|
+
const fallbackAuthorization = (peerKey) => sessionService.canCommunicate?.(agent.context.sessionId, peerKey) === true || remotePeerIsGranted(peerKey);
|
|
41
|
+
const groups = peerConfig ? require_index$3.createSessionGroupStore({ databasePath: node_path.default.join(sessionDirectory, "groups.sqlite") }) : void 0;
|
|
42
|
+
const localHostId = peerConfig?.hostId;
|
|
43
|
+
const selfReference = localHostId ? require_index$1.peerSessionReference(localHostId, agent.context.sessionId) : void 0;
|
|
44
|
+
const groupAuthorization = groups && selfReference && localHostId ? require_index$4.createSessionGroupDeliveryAuthorizer({
|
|
45
|
+
selfReference,
|
|
46
|
+
groups,
|
|
47
|
+
peerReference: (peerKey) => require_index$1.parseRemoteSessionReference(peerKey) === void 0 ? require_index$1.peerSessionReference(localHostId, peerKey) : peerKey,
|
|
48
|
+
fallback: fallbackAuthorization
|
|
49
|
+
}) : void 0;
|
|
50
|
+
const closeDelivery = require_index$5.provideSessionDeliveryService(context, {
|
|
51
|
+
databasePath: node_path.default.join(deliveryDirectory, `${agent.context.sessionId}.sqlite`),
|
|
52
|
+
recipientKey: agent.context.sessionId,
|
|
53
|
+
communication: peerCommunication,
|
|
54
|
+
authorizePeer: (peerKey, metadata) => groupAuthorization?.(peerKey, metadata) ?? fallbackAuthorization(peerKey),
|
|
55
|
+
admitPrompt: (prompt, delivery) => session.admitPrompt(prompt, delivery)
|
|
56
|
+
});
|
|
57
|
+
const service = require_type$1.readDoomSessionDelivery(context);
|
|
58
|
+
if (!service?.receive) throw new Error("Session peer delivery receiver was not installed.");
|
|
59
|
+
const unprovide = [];
|
|
60
|
+
if (groups && selfReference && peerConfig) {
|
|
61
|
+
const directory = require_index$2.createSessionDirectory({ authorizeDiscovery: (caller, subject) => {
|
|
62
|
+
const reference = require_index$1.peerSessionReference(subject.hostId, subject.sessionId);
|
|
63
|
+
return groups.groupsFor(caller).some((group) => group.members.includes(reference)) ? { capabilities: ["message"] } : void 0;
|
|
64
|
+
} });
|
|
65
|
+
for (const peer of peerConfig.peers) for (const sessionId of peer.allowedSessionIds) directory.observe({
|
|
66
|
+
hostId: peer.hostId,
|
|
67
|
+
sessionId,
|
|
68
|
+
hostIncarnation: "unknown",
|
|
69
|
+
sessionIncarnation: "unknown",
|
|
70
|
+
sequence: 0,
|
|
71
|
+
observedAt: 0,
|
|
72
|
+
staleAfterMs: 0,
|
|
73
|
+
deliveryTarget: require_index$1.peerSessionReference(peer.hostId, sessionId),
|
|
74
|
+
reachability: "unknown",
|
|
75
|
+
runtime: "unknown",
|
|
76
|
+
activity: "unknown",
|
|
77
|
+
voice: {
|
|
78
|
+
eligible: "unknown",
|
|
79
|
+
readiness: "unknown"
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
unprovide.push(context.provide(require_type.DOOM_SESSION_INTERCOM_SERVICE, require_index$4.createSessionIntercom({
|
|
83
|
+
selfReference,
|
|
84
|
+
directory,
|
|
85
|
+
groups,
|
|
86
|
+
delivery: service
|
|
87
|
+
})));
|
|
88
|
+
}
|
|
89
|
+
const unregister = require_index$6.registerSessionPeerInbox(agent.context.sessionId, (sourceKey, kind, payload) => service.receive?.(sourceKey, kind, payload));
|
|
90
|
+
return async () => {
|
|
91
|
+
unregister();
|
|
92
|
+
for (const release of unprovide.reverse()) release();
|
|
93
|
+
await closeDelivery();
|
|
94
|
+
groups?.close();
|
|
95
|
+
};
|
|
96
|
+
}]
|
|
97
|
+
}));
|
|
98
|
+
//#endregion
|
|
99
|
+
exports.default = root_server_default;
|
|
100
|
+
|
|
101
|
+
//# sourceMappingURL=root.server.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"root.server.cjs","names":["defineRoot","provideBackgroundWorkService","path","createPeerCommunication","readSessionPeerConfig","parseRemoteSessionReference","createSessionGroupStore","peerSessionReference","createSessionGroupDeliveryAuthorizer","provideSessionDeliveryService","readDoomSessionDelivery","createSessionDirectory","DOOM_SESSION_INTERCOM_SERVICE","createSessionIntercom","registerSessionPeerInbox"],"sources":["../../../../../../src/extensions/workspaces/sessions/(backend)/root.server.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { defineRoot } from '@agimon-ai/doompi-core/extension-file';\nimport type { DoomServerPluginContext } from '@agimon-ai/doompi-core/server-facet';\n\nimport { provideBackgroundWorkService } from '../../../../services/backgroundWorkService';\nimport { registerSessionPeerInbox } from '../../../../services/peerInbox';\nimport {\n createPeerCommunication,\n parseRemoteSessionReference,\n peerSessionReference,\n readSessionPeerConfig,\n} from '../../../../services/peerTransport';\nimport { provideSessionDeliveryService, readDoomSessionDelivery } from '../../../../services/sessionDelivery';\nimport { createSessionDirectory } from '../../../../services/sessionDirectory';\nimport { createSessionGroupStore } from '../../../../services/sessionGroups';\nimport {\n DOOM_SESSION_INTERCOM_SERVICE,\n createSessionGroupDeliveryAuthorizer,\n createSessionIntercom,\n} from '../../../../services/sessionIntercom';\n\nexport default defineRoot((pluginContext: DoomServerPluginContext) => ({\n value: undefined,\n services: [\n provideBackgroundWorkService,\n (context) => {\n const agent = pluginContext.agent;\n const session = agent?.context.session;\n const communication = pluginContext.host.context.sessionCommunication;\n const homeDirectory = pluginContext.host.context.homeDirectory;\n const sessionService = pluginContext.host.context.sessionService;\n if (!agent || !session?.admitPrompt || !communication || !homeDirectory || !sessionService?.canCommunicate) {\n throw new Error(\n 'Session delivery requires the headless agent, authenticated session communication, host home directory, and communication policy.',\n );\n }\n const sessionDirectory = path.join(homeDirectory, '.pi', '.doom', 'session');\n const deliveryDirectory = path.join(sessionDirectory, 'delivery');\n fs.mkdirSync(deliveryDirectory, { recursive: true, mode: 0o700 });\n const peerCommunication = createPeerCommunication({ local: communication, homeDirectory });\n const peerConfig = readSessionPeerConfig(homeDirectory);\n const remotePeerIsGranted = (peerKey: string): boolean => {\n const peer = parseRemoteSessionReference(peerKey);\n return (\n peer !== undefined &&\n peerConfig?.peers.some(\n (candidate) =>\n candidate.hostId === peer.hostId && candidate.allowedSessionIds.includes(agent.context.sessionId),\n ) === true\n );\n };\n const fallbackAuthorization = (peerKey: string): boolean =>\n sessionService.canCommunicate?.(agent.context.sessionId, peerKey) === true || remotePeerIsGranted(peerKey);\n const groups = peerConfig\n ? createSessionGroupStore({ databasePath: path.join(sessionDirectory, 'groups.sqlite') })\n : undefined;\n const localHostId = peerConfig?.hostId;\n const selfReference = localHostId ? peerSessionReference(localHostId, agent.context.sessionId) : undefined;\n const groupAuthorization =\n groups && selfReference && localHostId\n ? createSessionGroupDeliveryAuthorizer({\n selfReference,\n groups,\n peerReference: (peerKey) =>\n parseRemoteSessionReference(peerKey) === undefined\n ? peerSessionReference(localHostId, peerKey)\n : peerKey,\n fallback: fallbackAuthorization,\n })\n : undefined;\n const closeDelivery = provideSessionDeliveryService(context, {\n databasePath: path.join(deliveryDirectory, `${agent.context.sessionId}.sqlite`),\n recipientKey: agent.context.sessionId,\n communication: peerCommunication,\n authorizePeer: (peerKey, metadata) => groupAuthorization?.(peerKey, metadata) ?? fallbackAuthorization(peerKey),\n admitPrompt: (prompt, delivery) => session.admitPrompt!(prompt, delivery),\n });\n const service = readDoomSessionDelivery(context);\n if (!service?.receive) throw new Error('Session peer delivery receiver was not installed.');\n const unprovide: (() => void)[] = [];\n if (groups && selfReference && peerConfig) {\n const directory = createSessionDirectory({\n authorizeDiscovery: (caller, subject) => {\n const reference = peerSessionReference(subject.hostId, subject.sessionId);\n const permitted = groups.groupsFor(caller).some((group) => group.members.includes(reference));\n return permitted ? { capabilities: ['message'] } : undefined;\n },\n });\n for (const peer of peerConfig.peers)\n for (const sessionId of peer.allowedSessionIds)\n directory.observe({\n hostId: peer.hostId,\n sessionId,\n hostIncarnation: 'unknown',\n sessionIncarnation: 'unknown',\n sequence: 0,\n observedAt: 0,\n staleAfterMs: 0,\n deliveryTarget: peerSessionReference(peer.hostId, sessionId),\n reachability: 'unknown',\n runtime: 'unknown',\n activity: 'unknown',\n voice: { eligible: 'unknown', readiness: 'unknown' },\n });\n unprovide.push(\n context.provide(\n DOOM_SESSION_INTERCOM_SERVICE,\n createSessionIntercom({ selfReference, directory, groups, delivery: service }),\n ),\n );\n }\n const unregister = registerSessionPeerInbox(agent.context.sessionId, (sourceKey, kind, payload) =>\n service.receive?.(sourceKey, kind, payload),\n );\n return async () => {\n unregister();\n for (const release of unprovide.reverse()) release();\n await closeDelivery();\n groups?.close();\n };\n },\n ],\n}));\n"],"mappings":"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"}
|