@agimon-ai/po-profile 0.0.0-alpha.0
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 +89 -0
- package/dist/apiContracts.cjs +17 -0
- package/dist/apiContracts.cjs.map +1 -0
- package/dist/apiContracts.d.mts +53 -0
- package/dist/apiContracts.d.mts.map +1 -0
- package/dist/apiContracts.mjs +13 -0
- package/dist/apiContracts.mjs.map +1 -0
- package/dist/extensions/mcp.cjs +26 -0
- package/dist/extensions/mcp.cjs.map +1 -0
- package/dist/extensions/mcp.d.mts +5 -0
- package/dist/extensions/mcp.d.mts.map +1 -0
- package/dist/extensions/mcp.mjs +21 -0
- package/dist/extensions/mcp.mjs.map +1 -0
- package/dist/extensions/server.cjs +207 -0
- package/dist/extensions/server.cjs.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 +179 -0
- package/dist/extensions/server.mjs.map +1 -0
- package/dist/extensions/web.mjs +25 -0
- package/dist/extensions/web.mjs.map +1 -0
- package/dist/index.cjs +12 -0
- package/dist/index.d.mts +80 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +2 -0
- package/dist/profileText-B1dz_9lS.mjs +227 -0
- package/dist/profileText-B1dz_9lS.mjs.map +1 -0
- package/dist/profileText-BkeG0Ulo.cjs +292 -0
- package/dist/profileText-BkeG0Ulo.cjs.map +1 -0
- package/llms.txt +12 -0
- package/package.json +135 -0
- package/src/prompts/po-author-profile/SKILL.md +20 -0
- package/src/prompts/po-author-profile/references/profiles-contract.md +203 -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,89 @@
|
|
|
1
|
+
# @agimon-ai/po-profile
|
|
2
|
+
|
|
3
|
+
Persona and environment profile switching for [Po](https://www.npmjs.com/package/@agimon-ai/po)
|
|
4
|
+
sessions.
|
|
5
|
+
|
|
6
|
+
A **profile** is one of the four axes of a Po selection, alongside domains, the major mode,
|
|
7
|
+
and the minor modes. It names a persona directory and a set of environment defaults:
|
|
8
|
+
|
|
9
|
+
```yaml
|
|
10
|
+
# .po/profiles.yaml
|
|
11
|
+
profiles:
|
|
12
|
+
roots: [agents]
|
|
13
|
+
entries:
|
|
14
|
+
reviewer:
|
|
15
|
+
persona: agents/reviewer
|
|
16
|
+
env:
|
|
17
|
+
REVIEW_STRICTNESS: high
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
The persona is `profile.md`, `SOUL.md`, and `AGENTS.md` concatenated from the named directory. The
|
|
21
|
+
harness assembles them into one file in the run directory and records its path; the persona entry
|
|
22
|
+
appends that file to the system prompt on every agent start, so the repository's own `AGENTS.md`
|
|
23
|
+
keeps applying underneath it.
|
|
24
|
+
|
|
25
|
+
## Persona identity
|
|
26
|
+
|
|
27
|
+
A persona can say who it is in YAML front-matter at the top of its `profile.md`:
|
|
28
|
+
|
|
29
|
+
```markdown
|
|
30
|
+
---
|
|
31
|
+
name: Rhea
|
|
32
|
+
icon: avatar.png
|
|
33
|
+
voice:
|
|
34
|
+
voice: Karen
|
|
35
|
+
rate: 175
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
You are Rhea, a blunt systems architect.
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
The cockpit shows `name` and `icon` beside each assistant message, and `voice` shadows the spoken
|
|
42
|
+
voice from `config.yaml` for this persona only. Every field is optional, front-matter is stripped
|
|
43
|
+
from the prompt, and a persona that declares none behaves exactly as before. Identity lives in the
|
|
44
|
+
persona folder rather than in `profiles.yaml`, so discovered profiles get it too.
|
|
45
|
+
|
|
46
|
+
Because a message keeps the identity it was written under, switching profiles mid-conversation
|
|
47
|
+
leaves earlier replies attributed to the persona that produced them.
|
|
48
|
+
|
|
49
|
+
See the [profiles contract](./src/prompts/po-author-profile/references/profiles-contract.md)
|
|
50
|
+
for the icon rules and the exact precedence.
|
|
51
|
+
|
|
52
|
+
## Configuration
|
|
53
|
+
|
|
54
|
+
Personal profiles load from `~/.po/profiles.yaml`, then repository profiles load from
|
|
55
|
+
`.po/profiles.yaml`. Roots discover either one persona folder or direct-child persona folders.
|
|
56
|
+
Explicit entries provide a persona path, optional nonsecret string environment defaults, and optional
|
|
57
|
+
`integration` metadata binding a mailbox, existing credential aliases, and a browser profile. The
|
|
58
|
+
session-owned `po/profile-runtime` service initializes concrete providers and invalidates old secret
|
|
59
|
+
operations on profile change or shutdown. Resolved secret values never enter profile configuration or prompts.
|
|
60
|
+
See the [integration contract](./src/prompts/po-author-profile/references/profiles-contract.md#nonsecret-integration-bindings).
|
|
61
|
+
`defaultProfile`
|
|
62
|
+
names the persona a run starts on when nothing else does, mirroring `defaultMajorMode` in
|
|
63
|
+
`modes.yaml` and `defaultDomains` in `domains.yaml`; `--profile` and an inherited `PO_PROFILE`
|
|
64
|
+
both override it. Resolution runs
|
|
65
|
+
from personal discovery to repository discovery, then personal explicit entries to repository
|
|
66
|
+
explicit entries. A later profile replaces an earlier profile with the same name.
|
|
67
|
+
|
|
68
|
+
Persona paths must stay inside the declaring config's `agents/` directory or a profile root from
|
|
69
|
+
that same file. Directory and persona-file symlinks cannot escape those boundaries. See the
|
|
70
|
+
shipped [profiles contract](./src/prompts/po-author-profile/references/profiles-contract.md) for
|
|
71
|
+
the full configuration model and verification steps.
|
|
72
|
+
|
|
73
|
+
## Help
|
|
74
|
+
|
|
75
|
+
The package registers `po-author-profile` with the session's `doom/help` Cordis service. Its
|
|
76
|
+
package guidance becomes visible to the AI only while the parent Help minor mode is active. The
|
|
77
|
+
registration follows the Help provider lifecycle and is withdrawn when this package or the provider
|
|
78
|
+
is disposed.
|
|
79
|
+
|
|
80
|
+
## Installation
|
|
81
|
+
|
|
82
|
+
Po depends on this package and activates it as fixed host core, so a Po install already has
|
|
83
|
+
it. It is not selectable from `.po/modes.yaml`.
|
|
84
|
+
|
|
85
|
+
## License
|
|
86
|
+
|
|
87
|
+
MIT
|
|
88
|
+
|
|
89
|
+
Plugin entries live in `src/extensions`. Controllers connect host events and commands to services, while `src/exports` contains public helpers and types.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
Object.defineProperties(exports, {
|
|
2
|
+
__esModule: { value: true },
|
|
3
|
+
[Symbol.toStringTag]: { value: "Module" }
|
|
4
|
+
});
|
|
5
|
+
//#region src/schemas/apiContracts.ts
|
|
6
|
+
/** This facet contributes agent tools, commands or lifecycle only, with no separate HTTP or socket surface. */
|
|
7
|
+
const apiContracts = (0, require("@agimon-ai/po-core/apiContracts").defineApiContract)({
|
|
8
|
+
version: 1,
|
|
9
|
+
http: [],
|
|
10
|
+
sockets: [],
|
|
11
|
+
dynamic: []
|
|
12
|
+
});
|
|
13
|
+
//#endregion
|
|
14
|
+
exports.apiContracts = apiContracts;
|
|
15
|
+
exports.default = apiContracts;
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=apiContracts.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiContracts.cjs","names":["defineApiContract"],"sources":["../src/schemas/apiContracts.ts"],"sourcesContent":["import { defineApiContract } from '@agimon-ai/po-core/apiContracts';\n\n/** This facet contributes agent tools, commands or lifecycle only, with no separate HTTP or socket surface. */\nexport const apiContracts = defineApiContract({ version: 1, http: [], sockets: [], dynamic: [] });\nexport default apiContracts;\n"],"mappings":";;;;;;AAGA,MAAa,gBAAA,4CAAeA,CAAAA,CAAAA,kBAAAA,CAAkB;CAAE,SAAS;CAAG,MAAM,CAAC;CAAG,SAAS,CAAC;CAAG,SAAS,CAAC;AAAE,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
//#region src/schemas/apiContracts.d.ts
|
|
2
|
+
/** This facet contributes agent tools, commands or lifecycle only, with no separate HTTP or socket surface. */
|
|
3
|
+
export declare const apiContracts: {
|
|
4
|
+
version: 1;
|
|
5
|
+
protocols?: Record<string, string> | undefined;
|
|
6
|
+
schemas?: Record<string, boolean | object> | undefined;
|
|
7
|
+
http: {
|
|
8
|
+
id: string;
|
|
9
|
+
scope: "global" | "session" | "workspace";
|
|
10
|
+
basePath?: string | undefined;
|
|
11
|
+
path: string;
|
|
12
|
+
method: "DELETE" | "GET" | "HEAD" | "OPTIONS" | "PATCH" | "POST" | "PUT";
|
|
13
|
+
description: string;
|
|
14
|
+
availability?: string | undefined;
|
|
15
|
+
authentication: "device" | "none" | "owner";
|
|
16
|
+
parameters?: {
|
|
17
|
+
name: string;
|
|
18
|
+
in: "header" | "path" | "query";
|
|
19
|
+
required: boolean;
|
|
20
|
+
schema: boolean | object;
|
|
21
|
+
}[] | undefined;
|
|
22
|
+
body?: {
|
|
23
|
+
contentType: string;
|
|
24
|
+
contentTypes?: string[] | undefined;
|
|
25
|
+
required: boolean;
|
|
26
|
+
schema: boolean | object;
|
|
27
|
+
} | undefined;
|
|
28
|
+
responses: Record<string, {
|
|
29
|
+
description: string;
|
|
30
|
+
contentType?: string | undefined;
|
|
31
|
+
schema?: boolean | object | undefined;
|
|
32
|
+
events?: Record<string, boolean | object> | undefined;
|
|
33
|
+
}>;
|
|
34
|
+
}[];
|
|
35
|
+
sockets: {
|
|
36
|
+
id: string;
|
|
37
|
+
scope: "global" | "session" | "workspace";
|
|
38
|
+
description: string;
|
|
39
|
+
availability?: string | undefined;
|
|
40
|
+
service: string;
|
|
41
|
+
member: string;
|
|
42
|
+
direction: "client-to-server" | "server-to-client";
|
|
43
|
+
kind: "channel" | "method" | "state";
|
|
44
|
+
input: boolean | object;
|
|
45
|
+
output?: boolean | object | undefined;
|
|
46
|
+
errors?: boolean | object | undefined;
|
|
47
|
+
}[];
|
|
48
|
+
dynamic: string[];
|
|
49
|
+
gaps?: string[] | undefined;
|
|
50
|
+
};
|
|
51
|
+
//#endregion
|
|
52
|
+
export { apiContracts as default };
|
|
53
|
+
//# sourceMappingURL=apiContracts.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiContracts.d.mts","names":[],"sources":["../src/schemas/apiContracts.ts"],"mappings":";;qBAGa"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { defineApiContract } from "@agimon-ai/po-core/apiContracts";
|
|
2
|
+
//#region src/schemas/apiContracts.ts
|
|
3
|
+
/** This facet contributes agent tools, commands or lifecycle only, with no separate HTTP or socket surface. */
|
|
4
|
+
const apiContracts = defineApiContract({
|
|
5
|
+
version: 1,
|
|
6
|
+
http: [],
|
|
7
|
+
sockets: [],
|
|
8
|
+
dynamic: []
|
|
9
|
+
});
|
|
10
|
+
//#endregion
|
|
11
|
+
export { apiContracts, apiContracts as default };
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=apiContracts.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiContracts.mjs","names":[],"sources":["../src/schemas/apiContracts.ts"],"sourcesContent":["import { defineApiContract } from '@agimon-ai/po-core/apiContracts';\n\n/** This facet contributes agent tools, commands or lifecycle only, with no separate HTTP or socket surface. */\nexport const apiContracts = defineApiContract({ version: 1, http: [], sockets: [], dynamic: [] });\nexport default apiContracts;\n"],"mappings":";;;AAGA,MAAa,eAAe,kBAAkB;CAAE,SAAS;CAAG,MAAM,CAAC;CAAG,SAAS,CAAC;CAAG,SAAS,CAAC;AAAE,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
Object.defineProperties(exports, {
|
|
2
|
+
__esModule: { value: true },
|
|
3
|
+
[Symbol.toStringTag]: { value: "Module" }
|
|
4
|
+
});
|
|
5
|
+
let _agimon_ai_po_core_mcpFacet = require("@agimon-ai/po-core/mcpFacet");
|
|
6
|
+
let _agimon_ai_po_core_serverFacet = require("@agimon-ai/po-core/serverFacet");
|
|
7
|
+
//#region src/extensions/workspaces/sessions/(backend)/skill/po-author-profile.mcp.ts
|
|
8
|
+
var po_author_profile_mcp_default = (0, _agimon_ai_po_core_mcpFacet.defineMcpSkill)({
|
|
9
|
+
name: "po-author-profile",
|
|
10
|
+
description: "Configure Po profile discovery, personas, environment defaults, and precedence in profiles.yaml. Use when creating or changing personal or repository profiles. Do not use for config.yaml runtime settings, modes.yaml, or domains.yaml.",
|
|
11
|
+
read: () => (0, _agimon_ai_po_core_serverFacet.readPackageResource)(require("url").pathToFileURL(__filename).href, "src/prompts/po-author-profile/SKILL.md")
|
|
12
|
+
});
|
|
13
|
+
//#endregion
|
|
14
|
+
//#region generated/mcp.ts
|
|
15
|
+
const at = (value, context) => typeof value === "function" ? value(context) : value;
|
|
16
|
+
const mcp = (0, _agimon_ai_po_core_mcpFacet.defineMcpPlugin)({
|
|
17
|
+
name: "@agimon-ai/po-profile",
|
|
18
|
+
session: (context) => ({ get skills() {
|
|
19
|
+
return [at(po_author_profile_mcp_default, context)];
|
|
20
|
+
} })
|
|
21
|
+
});
|
|
22
|
+
//#endregion
|
|
23
|
+
exports.default = mcp;
|
|
24
|
+
exports.mcp = mcp;
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=mcp.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.cjs","names":["defineMcpSkill","readPackageResource","defineMcpPlugin","skillPoAuthorProfile"],"sources":["../../src/extensions/workspaces/sessions/(backend)/skill/po-author-profile.mcp.ts","../../generated/mcp.ts"],"sourcesContent":["import { defineMcpSkill } from '@agimon-ai/po-core/mcpFacet';\nimport { readPackageResource } from '@agimon-ai/po-core/serverFacet';\n\nexport default defineMcpSkill({\n name: 'po-author-profile',\n description:\n 'Configure Po profile discovery, personas, environment defaults, and precedence in profiles.yaml. Use when creating or changing personal or repository profiles. Do not use for config.yaml runtime settings, modes.yaml, or domains.yaml.',\n read: () => readPackageResource(import.meta.url, 'src/prompts/po-author-profile/SKILL.md'),\n});\n","// Generated by @agimon-ai/po-build. Do not edit by hand.\nimport { defineMcpPlugin, type DoomMcpSessionPlugin } from '@agimon-ai/po-core/mcpFacet';\n\nimport skillPoAuthorProfile from '../src/extensions/workspaces/sessions/(backend)/skill/po-author-profile.mcp';\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 mcp = defineMcpPlugin({\n name: '@agimon-ai/po-profile',\n session: (context) => ({\n get skills(): DoomMcpSessionPlugin['skills'] { return [at(skillPoAuthorProfile, context)]; },\n }) satisfies DoomMcpSessionPlugin,\n});\n\nexport default mcp;\n"],"mappings":";;;;;;;AAGA,IAAA,iCAAA,GAAeA,4BAAAA,eAAAA,CAAe;CAC5B,MAAM;CACN,aACE;CACF,aAAA,GAAYC,+BAAAA,oBAAAA,CAAAA,QAAAA,KAAAA,CAAAA,CAAAA,cAAAA,UAAAA,CAAAA,CAAAA,MAAqC,wCAAwC;AAC3F,CAAC;;;ACFD,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;AAEpE,MAAa,OAAA,GAAMC,4BAAAA,gBAAAA,CAAgB;CACjC,MAAM;CACN,UAAU,aAAa,EACrB,IAAI,SAAyC;EAAE,OAAO,CAAC,GAAGC,+BAAsB,OAAO,CAAC;CAAG,EAC7F;AACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.d.mts","names":[],"sources":["../../generated/mcp.ts"],"mappings":";qBASa,2CAAG"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { defineMcpPlugin, defineMcpSkill } from "@agimon-ai/po-core/mcpFacet";
|
|
2
|
+
import { readPackageResource } from "@agimon-ai/po-core/serverFacet";
|
|
3
|
+
//#region src/extensions/workspaces/sessions/(backend)/skill/po-author-profile.mcp.ts
|
|
4
|
+
var po_author_profile_mcp_default = defineMcpSkill({
|
|
5
|
+
name: "po-author-profile",
|
|
6
|
+
description: "Configure Po profile discovery, personas, environment defaults, and precedence in profiles.yaml. Use when creating or changing personal or repository profiles. Do not use for config.yaml runtime settings, modes.yaml, or domains.yaml.",
|
|
7
|
+
read: () => readPackageResource(import.meta.url, "src/prompts/po-author-profile/SKILL.md")
|
|
8
|
+
});
|
|
9
|
+
//#endregion
|
|
10
|
+
//#region generated/mcp.ts
|
|
11
|
+
const at = (value, context) => typeof value === "function" ? value(context) : value;
|
|
12
|
+
const mcp = defineMcpPlugin({
|
|
13
|
+
name: "@agimon-ai/po-profile",
|
|
14
|
+
session: (context) => ({ get skills() {
|
|
15
|
+
return [at(po_author_profile_mcp_default, context)];
|
|
16
|
+
} })
|
|
17
|
+
});
|
|
18
|
+
//#endregion
|
|
19
|
+
export { mcp as default, mcp };
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=mcp.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.mjs","names":["skillPoAuthorProfile"],"sources":["../../src/extensions/workspaces/sessions/(backend)/skill/po-author-profile.mcp.ts","../../generated/mcp.ts"],"sourcesContent":["import { defineMcpSkill } from '@agimon-ai/po-core/mcpFacet';\nimport { readPackageResource } from '@agimon-ai/po-core/serverFacet';\n\nexport default defineMcpSkill({\n name: 'po-author-profile',\n description:\n 'Configure Po profile discovery, personas, environment defaults, and precedence in profiles.yaml. Use when creating or changing personal or repository profiles. Do not use for config.yaml runtime settings, modes.yaml, or domains.yaml.',\n read: () => readPackageResource(import.meta.url, 'src/prompts/po-author-profile/SKILL.md'),\n});\n","// Generated by @agimon-ai/po-build. Do not edit by hand.\nimport { defineMcpPlugin, type DoomMcpSessionPlugin } from '@agimon-ai/po-core/mcpFacet';\n\nimport skillPoAuthorProfile from '../src/extensions/workspaces/sessions/(backend)/skill/po-author-profile.mcp';\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 mcp = defineMcpPlugin({\n name: '@agimon-ai/po-profile',\n session: (context) => ({\n get skills(): DoomMcpSessionPlugin['skills'] { return [at(skillPoAuthorProfile, context)]; },\n }) satisfies DoomMcpSessionPlugin,\n});\n\nexport default mcp;\n"],"mappings":";;;AAGA,IAAA,gCAAe,eAAe;CAC5B,MAAM;CACN,aACE;CACF,YAAY,oBAAoB,YAAY,KAAK,wCAAwC;AAC3F,CAAC;;;ACFD,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;AAEpE,MAAa,MAAM,gBAAgB;CACjC,MAAM;CACN,UAAU,aAAa,EACrB,IAAI,SAAyC;EAAE,OAAO,CAAC,GAAGA,+BAAsB,OAAO,CAAC;CAAG,EAC7F;AACF,CAAC"}
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
Object.defineProperties(exports, {
|
|
2
|
+
__esModule: { value: true },
|
|
3
|
+
[Symbol.toStringTag]: { value: "Module" }
|
|
4
|
+
});
|
|
5
|
+
//#region \0rolldown/runtime.js
|
|
6
|
+
var __create = Object.create;
|
|
7
|
+
var __defProp = Object.defineProperty;
|
|
8
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
9
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
10
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
11
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
14
|
+
key = keys[i];
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
|
|
16
|
+
get: ((k) => from[k]).bind(null, key),
|
|
17
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule || !__hasOwnProp.call(mod, "default") ? __defProp(target, "default", {
|
|
23
|
+
value: mod,
|
|
24
|
+
enumerable: true
|
|
25
|
+
}) : target, mod));
|
|
26
|
+
//#endregion
|
|
27
|
+
const require_profileText = require("../profileText-BkeG0Ulo.cjs");
|
|
28
|
+
let _agimon_ai_po_config_profiles = require("@agimon-ai/po-config/profiles");
|
|
29
|
+
let _agimon_ai_po_core_serverFacet = require("@agimon-ai/po-core/serverFacet");
|
|
30
|
+
let _agimon_ai_po_core_extensionFile = require("@agimon-ai/po-core/extensionFile");
|
|
31
|
+
let node_os = require("node:os");
|
|
32
|
+
node_os = __toESM(node_os, 1);
|
|
33
|
+
let _agimon_ai_po_core_headless = require("@agimon-ai/po-core/headless");
|
|
34
|
+
let _agimon_ai_po_core_profileIdentity = require("@agimon-ai/po-core/profileIdentity");
|
|
35
|
+
//#region src/extensions/workspaces/sessions/(backend)/root.server.ts
|
|
36
|
+
var root_server_default = (0, _agimon_ai_po_core_extensionFile.defineRoot)(({ agent, signal }) => {
|
|
37
|
+
if (!agent) return { value: void 0 };
|
|
38
|
+
const execution = agent.context;
|
|
39
|
+
const runtime = require_profileText.createProfileRuntime({
|
|
40
|
+
profileName: execution.selection.profile,
|
|
41
|
+
readBinding: (profileName) => (0, _agimon_ai_po_config_profiles.resolveProfile)(execution.repoRoot, profileName, execution.environment.HOME ?? node_os.default.homedir()).integration
|
|
42
|
+
});
|
|
43
|
+
const unsubscribe = agent.subscribeSelection(async (selection) => {
|
|
44
|
+
try {
|
|
45
|
+
await runtime.select(selection.profile);
|
|
46
|
+
} catch (error) {
|
|
47
|
+
throw new _agimon_ai_po_core_headless.DoomHeadlessPromptAdmissionError(error);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
const invalidate = () => runtime.invalidate();
|
|
51
|
+
signal.addEventListener("abort", invalidate, { once: true });
|
|
52
|
+
if (signal.aborted) runtime.invalidate();
|
|
53
|
+
return {
|
|
54
|
+
value: runtime,
|
|
55
|
+
services: [require_profileText.createProfileRuntimePlugin(runtime)],
|
|
56
|
+
async onDispose() {
|
|
57
|
+
unsubscribe();
|
|
58
|
+
signal.removeEventListener("abort", invalidate);
|
|
59
|
+
await runtime.dispose();
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
});
|
|
63
|
+
//#endregion
|
|
64
|
+
//#region src/extensions/workspaces/sessions/(backend)/_lib/profileServer.ts
|
|
65
|
+
async function readSelectedPersona(execution) {
|
|
66
|
+
const name = execution.selection.profile;
|
|
67
|
+
if (!name) return "(no active profile)";
|
|
68
|
+
const profile = (0, _agimon_ai_po_config_profiles.resolveProfile)(execution.repoRoot, name, execution.environment?.HOME);
|
|
69
|
+
const prompt = (0, _agimon_ai_po_config_profiles.buildPersonaPrompt)(profile.personaRoot, profile.persona);
|
|
70
|
+
if (!prompt) throw new Error(`Profile "${name}" has no readable persona text`);
|
|
71
|
+
return prompt;
|
|
72
|
+
}
|
|
73
|
+
async function publishSelectedIdentity(execution, profile) {
|
|
74
|
+
const identity = (0, _agimon_ai_po_config_profiles.resolveProfile)(execution.repoRoot, profile, execution.environment.HOME).identity;
|
|
75
|
+
await execution.session.appendCustomEntry(_agimon_ai_po_core_profileIdentity.DOOM_PROFILE_IDENTITY_ENTRY_TYPE, {
|
|
76
|
+
profile,
|
|
77
|
+
...identity?.name === void 0 ? {} : { name: identity.name },
|
|
78
|
+
...identity?.icon === void 0 ? {} : { icon: identity.icon }
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
function createProfileServerCommand(host) {
|
|
82
|
+
return {
|
|
83
|
+
name: require_profileText.PROFILE_COMMAND,
|
|
84
|
+
description: "Show or change the active Po profile.",
|
|
85
|
+
selectionRecovery: true,
|
|
86
|
+
async execute(args, execution) {
|
|
87
|
+
const profiles = (0, _agimon_ai_po_config_profiles.loadProfiles)(execution.repoRoot, execution.environment.HOME);
|
|
88
|
+
let requested = args.trim();
|
|
89
|
+
if (!requested) {
|
|
90
|
+
const selected = await execution.client.request({
|
|
91
|
+
kind: "select",
|
|
92
|
+
title: require_profileText.profileTitle(execution.selection.profile),
|
|
93
|
+
options: require_profileText.profileItems(profiles)
|
|
94
|
+
});
|
|
95
|
+
if (typeof selected !== "string" || !selected) return;
|
|
96
|
+
requested = selected;
|
|
97
|
+
}
|
|
98
|
+
if (!profiles.some(({ name }) => name === requested)) throw new Error(`Unknown profile: ${requested}`);
|
|
99
|
+
if (requested === execution.selection.profile && host.inspectCapabilities().ready) return;
|
|
100
|
+
try {
|
|
101
|
+
await host.changeSelection({
|
|
102
|
+
axis: "profile",
|
|
103
|
+
profile: requested
|
|
104
|
+
});
|
|
105
|
+
} catch (error) {
|
|
106
|
+
if ((0, _agimon_ai_po_core_headless.isDoomHeadlessPromptAdmissionError)(error)) throw new _agimon_ai_po_core_headless.DoomSessionSetupError("Profile integration is unavailable. Restore its credential or choose another profile.");
|
|
107
|
+
throw error;
|
|
108
|
+
}
|
|
109
|
+
await publishSelectedIdentity(execution, requested);
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
async function assertProfileReady(runtime) {
|
|
114
|
+
try {
|
|
115
|
+
await runtime?.ready();
|
|
116
|
+
} catch (error) {
|
|
117
|
+
throw new _agimon_ai_po_core_headless.DoomHeadlessPromptAdmissionError(error);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
const profileIdentityHook = {
|
|
121
|
+
event: "session_start",
|
|
122
|
+
async handle(_event, execution) {
|
|
123
|
+
const profile = execution.selection.profile;
|
|
124
|
+
if (profile !== void 0) await publishSelectedIdentity(execution, profile);
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
//#endregion
|
|
128
|
+
//#region src/extensions/workspaces/sessions/(backend)/command/profile.server.ts
|
|
129
|
+
var profile_server_default = (0, _agimon_ai_po_core_extensionFile.defineRoutedContribution)(({ agent }) => agent ? createProfileServerCommand(agent) : void 0, { cardinality: "optional" });
|
|
130
|
+
//#endregion
|
|
131
|
+
//#region src/extensions/workspaces/sessions/(backend)/hook/beforeAgentStart.server.ts
|
|
132
|
+
var beforeAgentStart_server_default = (0, _agimon_ai_po_core_extensionFile.defineHook)(({ root }) => ({ async handle() {
|
|
133
|
+
await assertProfileReady(root);
|
|
134
|
+
} }));
|
|
135
|
+
//#endregion
|
|
136
|
+
//#region src/extensions/workspaces/sessions/(backend)/hook/sessionStart.server.ts
|
|
137
|
+
var sessionStart_server_default = (0, _agimon_ai_po_core_extensionFile.defineHook)(({ root }) => ({
|
|
138
|
+
...profileIdentityHook,
|
|
139
|
+
async handle(event, execution) {
|
|
140
|
+
await assertProfileReady(root);
|
|
141
|
+
await profileIdentityHook.handle(event, execution);
|
|
142
|
+
}
|
|
143
|
+
}));
|
|
144
|
+
//#endregion
|
|
145
|
+
//#region src/extensions/workspaces/sessions/(backend)/resource/poAuthorProfile.server.ts
|
|
146
|
+
var poAuthorProfile_server_default = (0, _agimon_ai_po_core_extensionFile.defineResource)({
|
|
147
|
+
name: "po-author-profile",
|
|
148
|
+
description: "Configure Po profile discovery, personas, environment defaults, and precedence in profiles.yaml. Use when creating or changing personal or repository profiles. Do not use for config.yaml runtime settings, modes.yaml, or domains.yaml.",
|
|
149
|
+
when: {
|
|
150
|
+
state: { "minor-mode": "help" },
|
|
151
|
+
attribution: {
|
|
152
|
+
kind: "minor",
|
|
153
|
+
mode: "help"
|
|
154
|
+
}
|
|
155
|
+
},
|
|
156
|
+
kind: "skill",
|
|
157
|
+
path: (0, _agimon_ai_po_core_serverFacet.packageResourcePath)(require("url").pathToFileURL(__filename).href, "src/prompts/po-author-profile/SKILL.md"),
|
|
158
|
+
read: () => (0, _agimon_ai_po_core_serverFacet.readPackageResource)(require("url").pathToFileURL(__filename).href, "src/prompts/po-author-profile/SKILL.md")
|
|
159
|
+
});
|
|
160
|
+
//#endregion
|
|
161
|
+
//#region src/extensions/workspaces/sessions/(backend)/resource/profileConfig.server.ts
|
|
162
|
+
var profileConfig_server_default = (0, _agimon_ai_po_core_extensionFile.defineResource)({
|
|
163
|
+
name: "po/profile-config",
|
|
164
|
+
kind: "context",
|
|
165
|
+
read: readSelectedPersona
|
|
166
|
+
});
|
|
167
|
+
//#endregion
|
|
168
|
+
//#region generated/server.ts
|
|
169
|
+
const at = (value, context) => typeof value === "function" ? value(context) : value;
|
|
170
|
+
/* v8 ignore next -- generated normalization branch */
|
|
171
|
+
const defined = (values) => values.filter((value) => value !== void 0);
|
|
172
|
+
const via = (identity, value) => value === void 0 ? void 0 : {
|
|
173
|
+
...identity,
|
|
174
|
+
...value
|
|
175
|
+
};
|
|
176
|
+
const facet = (0, _agimon_ai_po_core_serverFacet.defineServerPlugin)({
|
|
177
|
+
name: "@agimon-ai/po-profile",
|
|
178
|
+
providerOverrides: (0, _agimon_ai_po_core_serverFacet.composeServerProviderOverrides)(root_server_default),
|
|
179
|
+
session: async (context) => {
|
|
180
|
+
const scopeSession = await root_server_default(context);
|
|
181
|
+
const contextSession = {
|
|
182
|
+
...context,
|
|
183
|
+
root: scopeSession.value
|
|
184
|
+
};
|
|
185
|
+
return {
|
|
186
|
+
...(0, _agimon_ai_po_core_extensionFile.composeRootHooks)(scopeSession),
|
|
187
|
+
get commands() {
|
|
188
|
+
return defined([via({ name: "profile" }, at(profile_server_default, contextSession))]);
|
|
189
|
+
},
|
|
190
|
+
get hooks() {
|
|
191
|
+
return [via({ event: "before_agent_start" }, at(beforeAgentStart_server_default, contextSession)), via({ event: "session_start" }, at(sessionStart_server_default, contextSession))];
|
|
192
|
+
},
|
|
193
|
+
get resources() {
|
|
194
|
+
return [at(poAuthorProfile_server_default, contextSession), at(profileConfig_server_default, contextSession)];
|
|
195
|
+
},
|
|
196
|
+
services: [...scopeSession.services ?? []],
|
|
197
|
+
get activities() {
|
|
198
|
+
return [...scopeSession.activities ?? []];
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
});
|
|
203
|
+
//#endregion
|
|
204
|
+
exports.default = facet;
|
|
205
|
+
exports.facet = facet;
|
|
206
|
+
|
|
207
|
+
//# sourceMappingURL=server.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.cjs","names":["defineRoot","createProfileRuntime","resolveProfile","os","DoomHeadlessPromptAdmissionError","createProfileRuntimePlugin","resolveProfile","buildPersonaPrompt","DOOM_PROFILE_IDENTITY_ENTRY_TYPE","PROFILE_COMMAND","loadProfiles","profileTitle","profileItems","isDoomHeadlessPromptAdmissionError","DoomSessionSetupError","DoomHeadlessPromptAdmissionError","defineRoutedContribution","defineHook","defineHook","defineResource","packageResourcePath","readPackageResource","defineResource","defineServerPlugin","composeServerProviderOverrides","rootSession","composeRootHooks","commandProfile","hookBeforeAgentStart","hookSessionStart","resourcePoAuthorProfile","resourceProfileConfig"],"sources":["../../src/extensions/workspaces/sessions/(backend)/root.server.ts","../../src/extensions/workspaces/sessions/(backend)/_lib/profileServer.ts","../../src/extensions/workspaces/sessions/(backend)/command/profile.server.ts","../../src/extensions/workspaces/sessions/(backend)/hook/beforeAgentStart.server.ts","../../src/extensions/workspaces/sessions/(backend)/hook/sessionStart.server.ts","../../src/extensions/workspaces/sessions/(backend)/resource/poAuthorProfile.server.ts","../../src/extensions/workspaces/sessions/(backend)/resource/profileConfig.server.ts","../../generated/server.ts"],"sourcesContent":["import os from 'node:os';\n\nimport { resolveProfile } from '@agimon-ai/po-config/profiles';\nimport { defineRoot } from '@agimon-ai/po-core/extensionFile';\nimport { DoomHeadlessPromptAdmissionError } from '@agimon-ai/po-core/headless';\nimport type { DoomServerPluginContext } from '@agimon-ai/po-core/serverFacet';\n\nimport { createProfileRuntime, createProfileRuntimePlugin } from '../../../../services/profileRuntime';\n\nexport default defineRoot(({ agent, signal }: DoomServerPluginContext) => {\n if (!agent) return { value: undefined };\n const execution = agent.context;\n const runtime = createProfileRuntime({\n profileName: execution.selection.profile,\n readBinding: (profileName) =>\n resolveProfile(execution.repoRoot, profileName, execution.environment.HOME ?? os.homedir()).integration,\n });\n const unsubscribe = agent.subscribeSelection(async (selection) => {\n try {\n await runtime.select(selection.profile);\n } catch (error) {\n throw new DoomHeadlessPromptAdmissionError(error);\n }\n });\n const invalidate = () => runtime.invalidate();\n signal.addEventListener('abort', invalidate, { once: true });\n if (signal.aborted) runtime.invalidate();\n return {\n value: runtime,\n services: [createProfileRuntimePlugin(runtime)],\n async onDispose() {\n unsubscribe();\n signal.removeEventListener('abort', invalidate);\n await runtime.dispose();\n },\n };\n});\n","import { buildPersonaPrompt, loadProfiles, resolveProfile } from '@agimon-ai/po-config/profiles';\nimport {\n DoomHeadlessPromptAdmissionError,\n DoomSessionSetupError,\n isDoomHeadlessPromptAdmissionError,\n type DoomHeadlessCommand,\n type DoomHeadlessExecutionContext,\n type DoomHeadlessHostService,\n type DoomHeadlessHook,\n} from '@agimon-ai/po-core/headless';\nimport { DOOM_PROFILE_IDENTITY_ENTRY_TYPE } from '@agimon-ai/po-core/profileIdentity';\n\nimport type { ProfileRuntime } from '../../../../../services/profileRuntime/type';\nimport { PROFILE_COMMAND, profileItems, profileTitle } from '../../../../../services/profileText';\n\nexport async function readSelectedPersona(execution: {\n readonly repoRoot: string;\n readonly selection: { readonly profile?: string };\n readonly environment?: Readonly<Record<string, string | undefined>>;\n}): Promise<string> {\n const name = execution.selection.profile;\n if (!name) return '(no active profile)';\n const profile = resolveProfile(execution.repoRoot, name, execution.environment?.HOME);\n const prompt = buildPersonaPrompt(profile.personaRoot, profile.persona);\n if (!prompt) throw new Error(`Profile \"${name}\" has no readable persona text`);\n return prompt;\n}\n\nasync function publishSelectedIdentity(execution: DoomHeadlessExecutionContext, profile: string): Promise<void> {\n const identity = resolveProfile(execution.repoRoot, profile, execution.environment.HOME).identity;\n await execution.session.appendCustomEntry(DOOM_PROFILE_IDENTITY_ENTRY_TYPE, {\n profile,\n ...(identity?.name === undefined ? {} : { name: identity.name }),\n ...(identity?.icon === undefined ? {} : { icon: identity.icon }),\n });\n}\n\nexport function createProfileServerCommand(host: DoomHeadlessHostService): DoomHeadlessCommand {\n return {\n name: PROFILE_COMMAND,\n description: 'Show or change the active Po profile.',\n selectionRecovery: true,\n async execute(args, execution) {\n const profiles = loadProfiles(execution.repoRoot, execution.environment.HOME);\n let requested = args.trim();\n if (!requested) {\n const selected = await execution.client.request({\n kind: 'select',\n title: profileTitle(execution.selection.profile),\n options: profileItems(profiles),\n });\n if (typeof selected !== 'string' || !selected) return;\n requested = selected;\n }\n if (!profiles.some(({ name }) => name === requested)) throw new Error(`Unknown profile: ${requested}`);\n if (requested === execution.selection.profile && host.inspectCapabilities().ready) return;\n try {\n await host.changeSelection({ axis: 'profile', profile: requested });\n } catch (error) {\n if (isDoomHeadlessPromptAdmissionError(error))\n throw new DoomSessionSetupError(\n 'Profile integration is unavailable. Restore its credential or choose another profile.',\n );\n throw error;\n }\n await publishSelectedIdentity(execution, requested);\n },\n };\n}\nexport async function assertProfileReady(runtime: ProfileRuntime | undefined): Promise<void> {\n try {\n await runtime?.ready();\n } catch (error) {\n // Ordinary hook failures are advisory. This is a fail-closed admission boundary.\n throw new DoomHeadlessPromptAdmissionError(error);\n }\n}\n\nexport const profileIdentityHook: DoomHeadlessHook<'session_start'> = {\n event: 'session_start',\n async handle(_event, execution) {\n const profile = execution.selection.profile;\n if (profile !== undefined) await publishSelectedIdentity(execution, profile);\n },\n};\n","import { defineRoutedContribution } from '@agimon-ai/po-core/extensionFile';\nimport type { DoomServerPluginContext } from '@agimon-ai/po-core/serverFacet';\n\nimport { createProfileServerCommand } from '../_lib/profileServer';\nexport default defineRoutedContribution(\n ({ agent }: DoomServerPluginContext) => (agent ? createProfileServerCommand(agent) : undefined),\n { cardinality: 'optional' },\n);\n","import { defineHook, type WithRoot } from '@agimon-ai/po-core/extensionFile';\nimport type { DoomServerPluginContext } from '@agimon-ai/po-core/serverFacet';\n\nimport type { ProfileRuntime } from '../../../../../services/profileRuntime/type';\nimport { assertProfileReady } from '../_lib/profileServer';\n\nexport default defineHook(({ root }: WithRoot<DoomServerPluginContext, ProfileRuntime | undefined>) => ({\n async handle() {\n await assertProfileReady(root);\n },\n}));\n","import { defineHook, type WithRoot } from '@agimon-ai/po-core/extensionFile';\nimport type { DoomHeadlessExecutionContext } from '@agimon-ai/po-core/headless';\nimport type { DoomServerPluginContext } from '@agimon-ai/po-core/serverFacet';\n\nimport type { ProfileRuntime } from '../../../../../services/profileRuntime/type';\nimport { assertProfileReady, profileIdentityHook } from '../_lib/profileServer';\n\nexport default defineHook(({ root }: WithRoot<DoomServerPluginContext, ProfileRuntime | undefined>) => ({\n ...profileIdentityHook,\n async handle(event: Readonly<Record<string, unknown>>, execution: DoomHeadlessExecutionContext) {\n await assertProfileReady(root);\n await profileIdentityHook.handle(event, execution);\n },\n}));\n","import { defineResource } from '@agimon-ai/po-core/extensionFile';\nimport { packageResourcePath, readPackageResource } from '@agimon-ai/po-core/serverFacet';\n\nexport default defineResource({\n name: 'po-author-profile',\n description:\n 'Configure Po profile discovery, personas, environment defaults, and precedence in profiles.yaml. Use when creating or changing personal or repository profiles. Do not use for config.yaml runtime settings, modes.yaml, or domains.yaml.',\n when: { state: { 'minor-mode': 'help' }, attribution: { kind: 'minor' as const, mode: 'help' } },\n kind: 'skill' as const,\n path: packageResourcePath(import.meta.url, 'src/prompts/po-author-profile/SKILL.md'),\n read: () => readPackageResource(import.meta.url, 'src/prompts/po-author-profile/SKILL.md'),\n});\n","import { defineResource } from '@agimon-ai/po-core/extensionFile';\n\nimport { readSelectedPersona } from '../_lib/profileServer';\nexport default defineResource({ name: 'po/profile-config', kind: 'context' as const, read: readSelectedPersona });\n","// Generated by @agimon-ai/po-build. Do not edit by hand.\nimport { defineServerPlugin, type DoomServerSessionPlugin } from '@agimon-ai/po-core/serverFacet';\nimport { composeServerProviderOverrides } from '@agimon-ai/po-core/serverFacet';\nimport { composeRootHooks } from '@agimon-ai/po-core/extensionFile';\n\nimport rootSession from '../src/extensions/workspaces/sessions/(backend)/root.server';\nimport commandProfile from '../src/extensions/workspaces/sessions/(backend)/command/profile.server';\nimport hookBeforeAgentStart from '../src/extensions/workspaces/sessions/(backend)/hook/beforeAgentStart.server';\nimport hookSessionStart from '../src/extensions/workspaces/sessions/(backend)/hook/sessionStart.server';\nimport resourcePoAuthorProfile from '../src/extensions/workspaces/sessions/(backend)/resource/poAuthorProfile.server';\nimport resourceProfileConfig from '../src/extensions/workspaces/sessions/(backend)/resource/profileConfig.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/* v8 ignore next -- generated normalization branch */\nconst defined = <T>(values: readonly (T | undefined)[]): T[] =>\n values.filter((value): value is T => value !== undefined);\nconst via = <T>(identity: Record<string, unknown>, value: unknown): T =>\n (value === undefined ? undefined : { ...identity, ...(value as object) }) as T;\n\nexport const facet = defineServerPlugin({\n name: '@agimon-ai/po-profile',\n providerOverrides: composeServerProviderOverrides(rootSession),\n session: async (context) => {\n const scopeSession = await rootSession(context);\n const contextSession = { ...context, root: scopeSession.value };\n return {\n ...composeRootHooks(scopeSession),\n get commands(): DoomServerSessionPlugin['commands'] { return defined([via({ name: 'profile' }, at(commandProfile, contextSession))]); },\n get hooks(): DoomServerSessionPlugin['hooks'] { return [via({ event: 'before_agent_start' }, at(hookBeforeAgentStart, contextSession)), via({ event: 'session_start' }, at(hookSessionStart, contextSession))]; },\n get resources(): DoomServerSessionPlugin['resources'] { return [at(resourcePoAuthorProfile, contextSession), at(resourceProfileConfig, contextSession)]; },\n services: [...(scopeSession.services ?? [])],\n get activities(): DoomServerSessionPlugin['activities'] { return [...(scopeSession.activities ?? [])]; },\n };\n },\n});\n\nexport default facet;\n"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.mts","names":[],"sources":["../../generated/server.ts"],"mappings":";qBAqBa,gDAAK"}
|