@agimon-ai/doompi-profile 0.0.1-alpha.5 → 0.0.1-alpha.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +62 -10
- 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/persona.cjs +13 -0
- package/dist/extensions/persona.cjs.map +1 -0
- package/dist/extensions/persona.d.cts +6 -0
- package/dist/extensions/persona.d.cts.map +1 -0
- package/dist/extensions/persona.d.mts +6 -0
- package/dist/extensions/persona.d.mts.map +1 -0
- package/dist/extensions/persona.mjs +9 -0
- package/dist/extensions/persona.mjs.map +1 -0
- package/dist/extensions/pi.cjs +35 -0
- package/dist/extensions/pi.cjs.map +1 -0
- package/dist/extensions/pi.d.cts +7 -0
- package/dist/extensions/pi.d.cts.map +1 -0
- package/dist/extensions/pi.d.mts +7 -0
- package/dist/extensions/pi.d.mts.map +1 -0
- package/dist/extensions/pi.mjs +30 -0
- package/dist/extensions/pi.mjs.map +1 -0
- package/dist/extensions/server.cjs +36 -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 +31 -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.cts +4 -0
- package/dist/index.d.mts +4 -0
- package/dist/index.mjs +4 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/identityEntry.cjs +31 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/identityEntry.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/identityEntry.mjs +31 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/identityEntry.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/profileCommand.cjs +141 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/profileCommand.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/profileCommand.mjs +141 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/profileCommand.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/profileRuntime.cjs +76 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/profileRuntime.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/profileRuntime.mjs +76 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/profileRuntime.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/profileServer.cjs +59 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/profileServer.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/profileServer.mjs +57 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/profileServer.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/voiceTool.cjs +89 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/voiceTool.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/voiceTool.mjs +89 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/_lib/voiceTool.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/command/profile.cli.cjs +6 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/command/profile.cli.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/command/profile.cli.mjs +7 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/command/profile.cli.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/command/profile.server.cjs +7 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/command/profile.server.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/command/profile.server.mjs +8 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/command/profile.server.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/sessionStart.cli.cjs +6 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/sessionStart.cli.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/sessionStart.cli.mjs +7 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/sessionStart.cli.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/sessionStart.server.cjs +7 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/sessionStart.server.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/sessionStart.server.mjs +8 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/hook/sessionStart.server.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompiAuthorProfile.cli.cjs +12 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompiAuthorProfile.cli.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompiAuthorProfile.cli.mjs +13 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompiAuthorProfile.cli.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompiAuthorProfile.server.cjs +12 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompiAuthorProfile.server.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompiAuthorProfile.server.mjs +12 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/doompiAuthorProfile.server.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/profileConfig.server.cjs +11 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/profileConfig.server.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/profileConfig.server.mjs +12 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/resource/profileConfig.server.mjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.cjs +19 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.cjs.map +1 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.mjs +20 -0
- package/dist/src/extensions/workspaces/sessions/(backend)/root.cli.mjs.map +1 -0
- package/dist/src/schemas/apiContracts.cjs +13 -0
- package/dist/src/schemas/apiContracts.cjs.map +1 -0
- package/dist/src/schemas/apiContracts.d.cts +53 -0
- package/dist/src/schemas/apiContracts.d.cts.map +1 -0
- package/dist/src/schemas/apiContracts.d.mts +53 -0
- package/dist/src/schemas/apiContracts.d.mts.map +1 -0
- package/dist/src/schemas/apiContracts.mjs +13 -0
- package/dist/src/schemas/apiContracts.mjs.map +1 -0
- package/dist/src/schemas/profileVoiceTools.cjs +45 -0
- package/dist/src/schemas/profileVoiceTools.cjs.map +1 -0
- package/dist/src/schemas/profileVoiceTools.mjs +43 -0
- package/dist/src/schemas/profileVoiceTools.mjs.map +1 -0
- package/dist/src/services/logSinkTelemetry/index.cjs +25 -0
- package/dist/src/services/logSinkTelemetry/index.cjs.map +1 -0
- package/dist/src/services/logSinkTelemetry/index.d.cts +13 -0
- package/dist/src/services/logSinkTelemetry/index.d.cts.map +1 -0
- package/dist/src/services/logSinkTelemetry/index.d.mts +13 -0
- package/dist/src/services/logSinkTelemetry/index.d.mts.map +1 -0
- package/dist/src/services/logSinkTelemetry/index.mjs +25 -0
- package/dist/src/services/logSinkTelemetry/index.mjs.map +1 -0
- package/dist/src/services/personaExtension/runtime.cjs +55 -0
- package/dist/src/services/personaExtension/runtime.cjs.map +1 -0
- package/dist/src/services/personaExtension/runtime.mjs +52 -0
- package/dist/src/services/personaExtension/runtime.mjs.map +1 -0
- package/dist/src/services/profileText/index.cjs +73 -0
- package/dist/src/services/profileText/index.cjs.map +1 -0
- package/dist/src/services/profileText/index.d.cts +19 -0
- package/dist/src/services/profileText/index.d.cts.map +1 -0
- package/dist/src/services/profileText/index.d.mts +19 -0
- package/dist/src/services/profileText/index.d.mts.map +1 -0
- package/dist/src/services/profileText/index.mjs +63 -0
- package/dist/src/services/profileText/index.mjs.map +1 -0
- package/dist/src/types/telemetry.cjs +11 -0
- package/dist/src/types/telemetry.cjs.map +1 -0
- package/dist/src/types/telemetry.d.cts +15 -0
- package/dist/src/types/telemetry.d.cts.map +1 -0
- package/dist/src/types/telemetry.d.mts +15 -0
- package/dist/src/types/telemetry.d.mts.map +1 -0
- package/dist/src/types/telemetry.mjs +11 -0
- package/dist/src/types/telemetry.mjs.map +1 -0
- package/llms.txt +8 -3
- package/package.json +70 -19
- package/src/prompts/doompi-author-profile/SKILL.md +20 -0
- package/src/prompts/doompi-author-profile/references/profiles-contract.md +155 -0
package/README.md
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
Persona and environment profile switching for [DoomPi](https://www.npmjs.com/package/@agimon-ai/doompi)
|
|
4
4
|
sessions.
|
|
5
5
|
|
|
6
|
-
A **profile** is one of the four axes of a DoomPi selection, alongside domains, the major mode
|
|
7
|
-
the minor modes. It names a persona directory and a set of environment defaults:
|
|
6
|
+
A **profile** is one of the four axes of a DoomPi selection, alongside domains, the major mode,
|
|
7
|
+
and the minor modes. It names a persona directory and a set of environment defaults:
|
|
8
8
|
|
|
9
9
|
```yaml
|
|
10
10
|
# .doom/profiles.yaml
|
|
@@ -17,21 +17,48 @@ profiles:
|
|
|
17
17
|
REVIEW_STRICTNESS: high
|
|
18
18
|
```
|
|
19
19
|
|
|
20
|
-
The persona is `profile.md`, `SOUL.md
|
|
20
|
+
The persona is `profile.md`, `SOUL.md`, and `AGENTS.md` concatenated from the named directory. The
|
|
21
21
|
harness assembles them into one file in the run directory and records its path; the persona entry
|
|
22
22
|
appends that file to the system prompt on every agent start, so the repository's own `AGENTS.md`
|
|
23
23
|
keeps applying underneath it.
|
|
24
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/doompi-author-profile/references/profiles-contract.md)
|
|
50
|
+
for the icon rules and the exact precedence.
|
|
51
|
+
|
|
25
52
|
## What it registers
|
|
26
53
|
|
|
27
|
-
| Entry | Surface
|
|
28
|
-
| ---------------------- |
|
|
29
|
-
| `./extensions/pi` | the `/profile` command
|
|
30
|
-
| `./extensions/persona` | a `before_agent_start` hook that appends the active persona to the system prompt
|
|
54
|
+
| Entry | Surface |
|
|
55
|
+
| ---------------------- | -------------------------------------------------------------------------------------------- |
|
|
56
|
+
| `./extensions/pi` | the `/profile` command, which lists profiles, switches persona and environment, then reloads |
|
|
57
|
+
| `./extensions/persona` | a `before_agent_start` hook that appends the active persona to the system prompt |
|
|
31
58
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
59
|
+
DoomPi uses two entries because a detached child session needs the persona but has no transition
|
|
60
|
+
coordinator to run a switch through. DoomPi activates `./extensions/pi` in the parent and
|
|
61
|
+
`./extensions/persona` in both.
|
|
35
62
|
|
|
36
63
|
## Switching
|
|
37
64
|
|
|
@@ -40,6 +67,29 @@ A profile change is always a `pi-reload`: the extension set does not change, but
|
|
|
40
67
|
have to be dropped so every extension re-reads the environment. Active minor modes are captured
|
|
41
68
|
before the reload and restored after it.
|
|
42
69
|
|
|
70
|
+
## Configuration
|
|
71
|
+
|
|
72
|
+
Personal profiles load from `~/.pi/.doom/profiles.yaml`, then repository profiles load from
|
|
73
|
+
`.doom/profiles.yaml`. Roots discover either one persona folder or direct-child persona folders.
|
|
74
|
+
Explicit entries provide a persona path and optional string environment defaults. `defaultProfile`
|
|
75
|
+
names the persona a run starts on when nothing else does, mirroring `defaultMajorMode` in
|
|
76
|
+
`modes.yaml` and `defaultDomains` in `domains.yaml`; `--profile` and an inherited `DOOMPI_PROFILE`
|
|
77
|
+
both override it. Resolution runs
|
|
78
|
+
from personal discovery to repository discovery, then personal explicit entries to repository
|
|
79
|
+
explicit entries. A later profile replaces an earlier profile with the same name.
|
|
80
|
+
|
|
81
|
+
Persona paths must stay inside the declaring config's `agents/` directory or a profile root from
|
|
82
|
+
that same file. Directory and persona-file symlinks cannot escape those boundaries. See the
|
|
83
|
+
shipped [profiles contract](./src/prompts/doompi-author-profile/references/profiles-contract.md) for
|
|
84
|
+
the full configuration model and verification steps.
|
|
85
|
+
|
|
86
|
+
## Help
|
|
87
|
+
|
|
88
|
+
The package registers `doompi-author-profile` with the session's `doom/help` Cordis service. Its
|
|
89
|
+
package guidance becomes visible to the AI only while the parent Help minor mode is active. The
|
|
90
|
+
registration follows the Help provider lifecycle and is withdrawn when this package or the provider
|
|
91
|
+
is disposed.
|
|
92
|
+
|
|
43
93
|
## Installation
|
|
44
94
|
|
|
45
95
|
DoomPi depends on this package and activates it as fixed host core, so a DoomPi install already has
|
|
@@ -48,3 +98,5 @@ it. It is not selectable from `.doom/modes.yaml`.
|
|
|
48
98
|
## License
|
|
49
99
|
|
|
50
100
|
MIT
|
|
101
|
+
|
|
102
|
+
Plugin entries live in `src/extensions`. Controllers connect host events and commands to services, while `src/exports` contains public helpers and types. Pi service bindings are owned by `definePiExtension`; startup mounts services before publishing commands and events, and disposal releases those bindings. The separate persona entry supports child sessions without a transition coordinator.
|
|
@@ -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,13 @@
|
|
|
1
|
+
Object.defineProperties(exports, {
|
|
2
|
+
__esModule: { value: true },
|
|
3
|
+
[Symbol.toStringTag]: { value: "Module" }
|
|
4
|
+
});
|
|
5
|
+
const require_index = require("../src/services/logSinkTelemetry/index.cjs");
|
|
6
|
+
const require_runtime = require("../src/services/personaExtension/runtime.cjs");
|
|
7
|
+
//#region src/services/personaExtension/index.ts
|
|
8
|
+
const personaExtension = (0, require("@agimon-ai/doompi-core/pi-extension").definePiExtension)("@agimon-ai/doompi-profile/persona", ({ options }) => require_runtime.createPersonaRuntime(options ?? require_index.createProfileTelemetry()));
|
|
9
|
+
//#endregion
|
|
10
|
+
exports.default = personaExtension;
|
|
11
|
+
exports.personaExtension = personaExtension;
|
|
12
|
+
|
|
13
|
+
//# sourceMappingURL=persona.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persona.cjs","names":["definePiExtension","createPersonaRuntime","createProfileTelemetry"],"sources":["../../src/services/personaExtension/index.ts"],"sourcesContent":["import { definePiExtension } from '@agimon-ai/doompi-core/pi-extension';\n\nimport type { ProfileTelemetry } from '../../types/telemetry';\nimport { createProfileTelemetry } from '../logSinkTelemetry';\nimport { createPersonaRuntime } from './runtime';\nexport const personaExtension = definePiExtension<ProfileTelemetry>(\n '@agimon-ai/doompi-profile/persona',\n ({ options }) => createPersonaRuntime(options ?? createProfileTelemetry()),\n);\nexport default personaExtension;\n"],"mappings":";;;;;;;AAKA,MAAa,oBAAA,gDAAmBA,CAAAA,CAAAA,kBAAAA,CAC9B,sCACC,EAAE,cAAcC,gBAAAA,qBAAqB,WAAWC,cAAAA,uBAAuB,CAAC,CAC3E"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ProfileTelemetry } from "../src/types/telemetry.cjs";
|
|
2
|
+
//#region src/services/personaExtension/index.d.ts
|
|
3
|
+
export declare const personaExtension: import("@agimon-ai/doompi-core/runtime-pi-extension").DefinedPiExtension<ProfileTelemetry>;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { personaExtension as default };
|
|
6
|
+
//# sourceMappingURL=persona.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persona.d.cts","names":[],"sources":["../../src/services/personaExtension/index.ts"],"mappings":";;qBAKa,wEAAgB,mBAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ProfileTelemetry } from "../src/types/telemetry.mjs";
|
|
2
|
+
//#region src/services/personaExtension/index.d.ts
|
|
3
|
+
export declare const personaExtension: import("@agimon-ai/doompi-core/runtime-pi-extension").DefinedPiExtension<ProfileTelemetry>;
|
|
4
|
+
//#endregion
|
|
5
|
+
export { personaExtension as default };
|
|
6
|
+
//# sourceMappingURL=persona.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persona.d.mts","names":[],"sources":["../../src/services/personaExtension/index.ts"],"mappings":";;qBAKa,wEAAgB,mBAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { createProfileTelemetry } from "../src/services/logSinkTelemetry/index.mjs";
|
|
2
|
+
import { createPersonaRuntime } from "../src/services/personaExtension/runtime.mjs";
|
|
3
|
+
import { definePiExtension } from "@agimon-ai/doompi-core/pi-extension";
|
|
4
|
+
//#region src/services/personaExtension/index.ts
|
|
5
|
+
const personaExtension = definePiExtension("@agimon-ai/doompi-profile/persona", ({ options }) => createPersonaRuntime(options ?? createProfileTelemetry()));
|
|
6
|
+
//#endregion
|
|
7
|
+
export { personaExtension as default, personaExtension };
|
|
8
|
+
|
|
9
|
+
//# sourceMappingURL=persona.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persona.mjs","names":[],"sources":["../../src/services/personaExtension/index.ts"],"sourcesContent":["import { definePiExtension } from '@agimon-ai/doompi-core/pi-extension';\n\nimport type { ProfileTelemetry } from '../../types/telemetry';\nimport { createProfileTelemetry } from '../logSinkTelemetry';\nimport { createPersonaRuntime } from './runtime';\nexport const personaExtension = definePiExtension<ProfileTelemetry>(\n '@agimon-ai/doompi-profile/persona',\n ({ options }) => createPersonaRuntime(options ?? createProfileTelemetry()),\n);\nexport default personaExtension;\n"],"mappings":";;;;AAKA,MAAa,mBAAmB,kBAC9B,sCACC,EAAE,cAAc,qBAAqB,WAAW,uBAAuB,CAAC,CAC3E"}
|
|
@@ -0,0 +1,35 @@
|
|
|
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
|
+
const require_profile_cli = require("../src/extensions/workspaces/sessions/(backend)/command/profile.cli.cjs");
|
|
7
|
+
const require_sessionStart_cli = require("../src/extensions/workspaces/sessions/(backend)/hook/sessionStart.cli.cjs");
|
|
8
|
+
const require_doompiAuthorProfile_cli = require("../src/extensions/workspaces/sessions/(backend)/resource/doompiAuthorProfile.cli.cjs");
|
|
9
|
+
let _agimon_ai_doompi_core_pi_extension = require("@agimon-ai/doompi-core/pi-extension");
|
|
10
|
+
let _agimon_ai_doompi_core_extension_file = require("@agimon-ai/doompi-core/extension-file");
|
|
11
|
+
//#region generated/pi.ts
|
|
12
|
+
const at = (value, context) => typeof value === "function" ? value(context) : value;
|
|
13
|
+
const extension = (0, _agimon_ai_doompi_core_pi_extension.definePiExtension)("@agimon-ai/doompi-profile", async (context) => {
|
|
14
|
+
const scopeSession = await require_root_cli.default(context);
|
|
15
|
+
const contextSession = {
|
|
16
|
+
...context,
|
|
17
|
+
root: scopeSession.value
|
|
18
|
+
};
|
|
19
|
+
return {
|
|
20
|
+
...(0, _agimon_ai_doompi_core_extension_file.composeRootHooks)(scopeSession),
|
|
21
|
+
get commands() {
|
|
22
|
+
return [at(require_profile_cli.default, contextSession)];
|
|
23
|
+
},
|
|
24
|
+
events: { session_start: at(require_sessionStart_cli.default, contextSession) },
|
|
25
|
+
get resources() {
|
|
26
|
+
return [at(require_doompiAuthorProfile_cli.default, contextSession)];
|
|
27
|
+
},
|
|
28
|
+
services: [...scopeSession.services ?? []]
|
|
29
|
+
};
|
|
30
|
+
});
|
|
31
|
+
//#endregion
|
|
32
|
+
exports.default = extension;
|
|
33
|
+
exports.extension = extension;
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=pi.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pi.cjs","names":["definePiExtension","rootSession","composeRootHooks","commandProfile","hookSessionStart","resourceDoompiAuthorProfile"],"sources":["../../generated/pi.ts"],"sourcesContent":["// Generated by @agimon-ai/doompi-build. Do not edit by hand.\nimport { definePiExtension, type PiPluginContext, type PiPluginContributions } 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';\nimport commandProfile from '../src/extensions/workspaces/sessions/(backend)/command/profile.cli';\nimport hookSessionStart from '../src/extensions/workspaces/sessions/(backend)/hook/sessionStart.cli';\nimport resourceDoompiAuthorProfile from '../src/extensions/workspaces/sessions/(backend)/resource/doompiAuthorProfile.cli';\n\ntype OptionsOf<T> = T extends (context: PiPluginContext<infer Options>) => unknown ? Options : never;\ntype InferredOptions = Exclude<OptionsOf<typeof rootSession> | OptionsOf<typeof commandProfile> | OptionsOf<typeof hookSessionStart> | OptionsOf<typeof resourceDoompiAuthorProfile>, 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\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 extension = definePiExtension<ExtensionOptions>('@agimon-ai/doompi-profile', async (context) => {\n const scopeSession = await rootSession(context);\n const contextSession = { ...context, root: scopeSession.value };\n return {\n ...composeRootHooks(scopeSession),\n get commands(): PiPluginContributions['commands'] { return [at(commandProfile, contextSession)]; },\n events: {\n session_start: at(hookSessionStart, contextSession) as NonNullable<PiPluginContributions['events']>['session_start'],\n },\n get resources(): PiPluginContributions['resources'] { return [at(resourceDoompiAuthorProfile, contextSession)]; },\n services: [...(scopeSession.services ?? [])],\n };\n});\n\nexport default extension;\n"],"mappings":";;;;;;;;;;;AAgBA,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;AAEpE,MAAa,aAAA,GAAYA,oCAAAA,kBAAAA,CAAoC,6BAA6B,OAAO,YAAY;CAC3G,MAAM,eAAe,MAAMC,iBAAAA,QAAY,OAAO;CAC9C,MAAM,iBAAiB;EAAE,GAAG;EAAS,MAAM,aAAa;CAAM;CAC9D,OAAO;EACL,IAAA,GAAGC,sCAAAA,iBAAAA,CAAiB,YAAY;EAChC,IAAI,WAA8C;GAAE,OAAO,CAAC,GAAGC,oBAAAA,SAAgB,cAAc,CAAC;EAAG;EACjG,QAAQ,EACN,eAAe,GAAGC,yBAAAA,SAAkB,cAAc,EACpD;EACA,IAAI,YAAgD;GAAE,OAAO,CAAC,GAAGC,gCAAAA,SAA6B,cAAc,CAAC;EAAG;EAChH,UAAU,CAAC,GAAI,aAAa,YAAY,CAAC,CAAE;CAC7C;AACF,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ProfileTelemetry } from "../src/types/telemetry.cjs";
|
|
2
|
+
import "../index.cjs";
|
|
3
|
+
//#region generated/pi.d.ts
|
|
4
|
+
export declare const extension: import("@agimon-ai/doompi-core/runtime-pi-extension").DefinedPiExtension<ProfileTelemetry>;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { extension as default };
|
|
7
|
+
//# sourceMappingURL=pi.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pi.d.cts","names":[],"sources":["../../generated/pi.ts"],"mappings":";;;qBAmBa,iEAAS,mBAAT"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ProfileTelemetry } from "../src/types/telemetry.mjs";
|
|
2
|
+
import "../index.mjs";
|
|
3
|
+
//#region generated/pi.d.ts
|
|
4
|
+
export declare const extension: import("@agimon-ai/doompi-core/runtime-pi-extension").DefinedPiExtension<ProfileTelemetry>;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { extension as default };
|
|
7
|
+
//# sourceMappingURL=pi.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pi.d.mts","names":[],"sources":["../../generated/pi.ts"],"mappings":";;;qBAmBa,iEAAS,mBAAT"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import root_cli_default from "../src/extensions/workspaces/sessions/(backend)/root.cli.mjs";
|
|
2
|
+
import profile_cli_default from "../src/extensions/workspaces/sessions/(backend)/command/profile.cli.mjs";
|
|
3
|
+
import sessionStart_cli_default from "../src/extensions/workspaces/sessions/(backend)/hook/sessionStart.cli.mjs";
|
|
4
|
+
import doompiAuthorProfile_cli_default from "../src/extensions/workspaces/sessions/(backend)/resource/doompiAuthorProfile.cli.mjs";
|
|
5
|
+
import { definePiExtension } from "@agimon-ai/doompi-core/pi-extension";
|
|
6
|
+
import { composeRootHooks } from "@agimon-ai/doompi-core/extension-file";
|
|
7
|
+
//#region generated/pi.ts
|
|
8
|
+
const at = (value, context) => typeof value === "function" ? value(context) : value;
|
|
9
|
+
const extension = definePiExtension("@agimon-ai/doompi-profile", async (context) => {
|
|
10
|
+
const scopeSession = await root_cli_default(context);
|
|
11
|
+
const contextSession = {
|
|
12
|
+
...context,
|
|
13
|
+
root: scopeSession.value
|
|
14
|
+
};
|
|
15
|
+
return {
|
|
16
|
+
...composeRootHooks(scopeSession),
|
|
17
|
+
get commands() {
|
|
18
|
+
return [at(profile_cli_default, contextSession)];
|
|
19
|
+
},
|
|
20
|
+
events: { session_start: at(sessionStart_cli_default, contextSession) },
|
|
21
|
+
get resources() {
|
|
22
|
+
return [at(doompiAuthorProfile_cli_default, contextSession)];
|
|
23
|
+
},
|
|
24
|
+
services: [...scopeSession.services ?? []]
|
|
25
|
+
};
|
|
26
|
+
});
|
|
27
|
+
//#endregion
|
|
28
|
+
export { extension as default, extension };
|
|
29
|
+
|
|
30
|
+
//# sourceMappingURL=pi.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pi.mjs","names":["rootSession","commandProfile","hookSessionStart","resourceDoompiAuthorProfile"],"sources":["../../generated/pi.ts"],"sourcesContent":["// Generated by @agimon-ai/doompi-build. Do not edit by hand.\nimport { definePiExtension, type PiPluginContext, type PiPluginContributions } 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';\nimport commandProfile from '../src/extensions/workspaces/sessions/(backend)/command/profile.cli';\nimport hookSessionStart from '../src/extensions/workspaces/sessions/(backend)/hook/sessionStart.cli';\nimport resourceDoompiAuthorProfile from '../src/extensions/workspaces/sessions/(backend)/resource/doompiAuthorProfile.cli';\n\ntype OptionsOf<T> = T extends (context: PiPluginContext<infer Options>) => unknown ? Options : never;\ntype InferredOptions = Exclude<OptionsOf<typeof rootSession> | OptionsOf<typeof commandProfile> | OptionsOf<typeof hookSessionStart> | OptionsOf<typeof resourceDoompiAuthorProfile>, 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\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 extension = definePiExtension<ExtensionOptions>('@agimon-ai/doompi-profile', async (context) => {\n const scopeSession = await rootSession(context);\n const contextSession = { ...context, root: scopeSession.value };\n return {\n ...composeRootHooks(scopeSession),\n get commands(): PiPluginContributions['commands'] { return [at(commandProfile, contextSession)]; },\n events: {\n session_start: at(hookSessionStart, contextSession) as NonNullable<PiPluginContributions['events']>['session_start'],\n },\n get resources(): PiPluginContributions['resources'] { return [at(resourceDoompiAuthorProfile, contextSession)]; },\n services: [...(scopeSession.services ?? [])],\n };\n});\n\nexport default extension;\n"],"mappings":";;;;;;;AAgBA,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;AAEpE,MAAa,YAAY,kBAAoC,6BAA6B,OAAO,YAAY;CAC3G,MAAM,eAAe,MAAMA,iBAAY,OAAO;CAC9C,MAAM,iBAAiB;EAAE,GAAG;EAAS,MAAM,aAAa;CAAM;CAC9D,OAAO;EACL,GAAG,iBAAiB,YAAY;EAChC,IAAI,WAA8C;GAAE,OAAO,CAAC,GAAGC,qBAAgB,cAAc,CAAC;EAAG;EACjG,QAAQ,EACN,eAAe,GAAGC,0BAAkB,cAAc,EACpD;EACA,IAAI,YAAgD;GAAE,OAAO,CAAC,GAAGC,iCAA6B,cAAc,CAAC;EAAG;EAChH,UAAU,CAAC,GAAI,aAAa,YAAY,CAAC,CAAE;CAC7C;AACF,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
Object.defineProperties(exports, {
|
|
2
|
+
__esModule: { value: true },
|
|
3
|
+
[Symbol.toStringTag]: { value: "Module" }
|
|
4
|
+
});
|
|
5
|
+
const require_profile_server = require("../src/extensions/workspaces/sessions/(backend)/command/profile.server.cjs");
|
|
6
|
+
const require_sessionStart_server = require("../src/extensions/workspaces/sessions/(backend)/hook/sessionStart.server.cjs");
|
|
7
|
+
const require_doompiAuthorProfile_server = require("../src/extensions/workspaces/sessions/(backend)/resource/doompiAuthorProfile.server.cjs");
|
|
8
|
+
const require_profileConfig_server = require("../src/extensions/workspaces/sessions/(backend)/resource/profileConfig.server.cjs");
|
|
9
|
+
let _agimon_ai_doompi_core_server_facet = require("@agimon-ai/doompi-core/server-facet");
|
|
10
|
+
//#region generated/server.ts
|
|
11
|
+
const at = (value, context) => typeof value === "function" ? value(context) : value;
|
|
12
|
+
/* v8 ignore next -- generated normalization branch */
|
|
13
|
+
const defined = (values) => values.filter((value) => value !== void 0);
|
|
14
|
+
const via = (identity, value) => ({
|
|
15
|
+
...identity,
|
|
16
|
+
...value
|
|
17
|
+
});
|
|
18
|
+
const facet = (0, _agimon_ai_doompi_core_server_facet.defineServerPlugin)({
|
|
19
|
+
name: "@agimon-ai/doompi-profile",
|
|
20
|
+
session: (context) => ({
|
|
21
|
+
get commands() {
|
|
22
|
+
return defined([via({ name: "profile" }, at(require_profile_server.default, context))]);
|
|
23
|
+
},
|
|
24
|
+
get hooks() {
|
|
25
|
+
return [via({ event: "session_start" }, at(require_sessionStart_server.default, context))];
|
|
26
|
+
},
|
|
27
|
+
get resources() {
|
|
28
|
+
return [at(require_doompiAuthorProfile_server.default, context), at(require_profileConfig_server.default, context)];
|
|
29
|
+
}
|
|
30
|
+
})
|
|
31
|
+
});
|
|
32
|
+
//#endregion
|
|
33
|
+
exports.default = facet;
|
|
34
|
+
exports.facet = facet;
|
|
35
|
+
|
|
36
|
+
//# sourceMappingURL=server.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.cjs","names":["defineServerPlugin","commandProfile","hookSessionStart","resourceDoompiAuthorProfile","resourceProfileConfig"],"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';\n\nimport commandProfile from '../src/extensions/workspaces/sessions/(backend)/command/profile.server';\nimport hookSessionStart from '../src/extensions/workspaces/sessions/(backend)/hook/sessionStart.server';\nimport resourceDoompiAuthorProfile from '../src/extensions/workspaces/sessions/(backend)/resource/doompiAuthorProfile.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 => ({ ...identity, ...(value as object) }) as T;\n\nexport const facet = defineServerPlugin({\n name: '@agimon-ai/doompi-profile',\n session: (context) => ({\n get commands(): DoomServerSessionPlugin['commands'] { return defined([via({ name: 'profile' }, at(commandProfile, context))]); },\n get hooks(): DoomServerSessionPlugin['hooks'] { return [via({ event: 'session_start' }, at(hookSessionStart, context))]; },\n get resources(): DoomServerSessionPlugin['resources'] { return [at(resourceDoompiAuthorProfile, context), at(resourceProfileConfig, context)]; },\n }),\n});\n\nexport default facet;\n"],"mappings":";;;;;;;;;;AASA,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;;AAEpE,MAAM,WAAc,WAClB,OAAO,QAAQ,UAAsB,UAAU,KAAA,CAAS;AAC1D,MAAM,OAAU,UAAmC,WAAuB;CAAE,GAAG;CAAU,GAAI;AAAiB;AAE9G,MAAa,SAAA,GAAQA,oCAAAA,mBAAAA,CAAmB;CACtC,MAAM;CACN,UAAU,aAAa;EACrB,IAAI,WAAgD;GAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,MAAM,UAAU,GAAG,GAAGC,uBAAAA,SAAgB,OAAO,CAAC,CAAC,CAAC;EAAG;EAC/H,IAAI,QAA0C;GAAE,OAAO,CAAC,IAAI,EAAE,OAAO,gBAAgB,GAAG,GAAGC,4BAAAA,SAAkB,OAAO,CAAC,CAAC;EAAG;EACzH,IAAI,YAAkD;GAAE,OAAO,CAAC,GAAGC,mCAAAA,SAA6B,OAAO,GAAG,GAAGC,6BAAAA,SAAuB,OAAO,CAAC;EAAG;CACjJ;AACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.cts","names":[],"sources":["../../generated/server.ts"],"mappings":";qBAgBa,qDAAK"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.mts","names":[],"sources":["../../generated/server.ts"],"mappings":";qBAgBa,qDAAK"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import profile_server_default from "../src/extensions/workspaces/sessions/(backend)/command/profile.server.mjs";
|
|
2
|
+
import sessionStart_server_default from "../src/extensions/workspaces/sessions/(backend)/hook/sessionStart.server.mjs";
|
|
3
|
+
import doompiAuthorProfile_server_default from "../src/extensions/workspaces/sessions/(backend)/resource/doompiAuthorProfile.server.mjs";
|
|
4
|
+
import profileConfig_server_default from "../src/extensions/workspaces/sessions/(backend)/resource/profileConfig.server.mjs";
|
|
5
|
+
import { defineServerPlugin } from "@agimon-ai/doompi-core/server-facet";
|
|
6
|
+
//#region generated/server.ts
|
|
7
|
+
const at = (value, context) => typeof value === "function" ? value(context) : value;
|
|
8
|
+
/* v8 ignore next -- generated normalization branch */
|
|
9
|
+
const defined = (values) => values.filter((value) => value !== void 0);
|
|
10
|
+
const via = (identity, value) => ({
|
|
11
|
+
...identity,
|
|
12
|
+
...value
|
|
13
|
+
});
|
|
14
|
+
const facet = defineServerPlugin({
|
|
15
|
+
name: "@agimon-ai/doompi-profile",
|
|
16
|
+
session: (context) => ({
|
|
17
|
+
get commands() {
|
|
18
|
+
return defined([via({ name: "profile" }, at(profile_server_default, context))]);
|
|
19
|
+
},
|
|
20
|
+
get hooks() {
|
|
21
|
+
return [via({ event: "session_start" }, at(sessionStart_server_default, context))];
|
|
22
|
+
},
|
|
23
|
+
get resources() {
|
|
24
|
+
return [at(doompiAuthorProfile_server_default, context), at(profileConfig_server_default, context)];
|
|
25
|
+
}
|
|
26
|
+
})
|
|
27
|
+
});
|
|
28
|
+
//#endregion
|
|
29
|
+
export { facet as default, facet };
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=server.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.mjs","names":["commandProfile","hookSessionStart","resourceDoompiAuthorProfile","resourceProfileConfig"],"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';\n\nimport commandProfile from '../src/extensions/workspaces/sessions/(backend)/command/profile.server';\nimport hookSessionStart from '../src/extensions/workspaces/sessions/(backend)/hook/sessionStart.server';\nimport resourceDoompiAuthorProfile from '../src/extensions/workspaces/sessions/(backend)/resource/doompiAuthorProfile.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 => ({ ...identity, ...(value as object) }) as T;\n\nexport const facet = defineServerPlugin({\n name: '@agimon-ai/doompi-profile',\n session: (context) => ({\n get commands(): DoomServerSessionPlugin['commands'] { return defined([via({ name: 'profile' }, at(commandProfile, context))]); },\n get hooks(): DoomServerSessionPlugin['hooks'] { return [via({ event: 'session_start' }, at(hookSessionStart, context))]; },\n get resources(): DoomServerSessionPlugin['resources'] { return [at(resourceDoompiAuthorProfile, context), at(resourceProfileConfig, context)]; },\n }),\n});\n\nexport default facet;\n"],"mappings":";;;;;;AASA,MAAM,MAAY,OAA0B,YAC1C,OAAO,UAAU,aAAc,MAAwB,OAAO,IAAI;;AAEpE,MAAM,WAAc,WAClB,OAAO,QAAQ,UAAsB,UAAU,KAAA,CAAS;AAC1D,MAAM,OAAU,UAAmC,WAAuB;CAAE,GAAG;CAAU,GAAI;AAAiB;AAE9G,MAAa,QAAQ,mBAAmB;CACtC,MAAM;CACN,UAAU,aAAa;EACrB,IAAI,WAAgD;GAAE,OAAO,QAAQ,CAAC,IAAI,EAAE,MAAM,UAAU,GAAG,GAAGA,wBAAgB,OAAO,CAAC,CAAC,CAAC;EAAG;EAC/H,IAAI,QAA0C;GAAE,OAAO,CAAC,IAAI,EAAE,OAAO,gBAAgB,GAAG,GAAGC,6BAAkB,OAAO,CAAC,CAAC;EAAG;EACzH,IAAI,YAAkD;GAAE,OAAO,CAAC,GAAGC,oCAA6B,OAAO,GAAG,GAAGC,8BAAuB,OAAO,CAAC;EAAG;CACjJ;AACF,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { defineSelectionAxis, defineWebPlugin } from "@agimon-ai/doompi-core/web";
|
|
2
|
+
//#region src/extensions/workspaces/sessions/(frontend)/selection-axis/profile.web.ts
|
|
3
|
+
var profile_web_default = defineSelectionAxis({
|
|
4
|
+
name: "profile",
|
|
5
|
+
command: "profile",
|
|
6
|
+
statusKey: "doom-profile",
|
|
7
|
+
emptyLabel: "no profile",
|
|
8
|
+
order: 10
|
|
9
|
+
});
|
|
10
|
+
//#endregion
|
|
11
|
+
//#region generated/web.ts
|
|
12
|
+
const via = (identity, value) => ({
|
|
13
|
+
...identity,
|
|
14
|
+
...value
|
|
15
|
+
});
|
|
16
|
+
const webPlugin = defineWebPlugin({
|
|
17
|
+
id: "profile",
|
|
18
|
+
session: { get selectionAxes() {
|
|
19
|
+
return [via({ name: "profile" }, profile_web_default)];
|
|
20
|
+
} }
|
|
21
|
+
});
|
|
22
|
+
//#endregion
|
|
23
|
+
export { webPlugin };
|
|
24
|
+
|
|
25
|
+
//# sourceMappingURL=web.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web.mjs","names":["selectionAxisProfile"],"sources":["../../src/extensions/workspaces/sessions/(frontend)/selection-axis/profile.web.ts","../../generated/web.ts"],"sourcesContent":["import { defineSelectionAxis } from '@agimon-ai/doompi-core/web';\nexport default defineSelectionAxis({\n name: 'profile',\n command: 'profile',\n statusKey: 'doom-profile',\n emptyLabel: 'no profile',\n order: 10,\n});\n","// Generated by @agimon-ai/doompi-build. Do not edit by hand.\nimport { defineWebPlugin, type WebPluginContributions } from '@agimon-ai/doompi-core/web';\n\nimport selectionAxisProfile from '../src/extensions/workspaces/sessions/(frontend)/selection-axis/profile.web';\n\nconst via = <T>(identity: Record<string, unknown>, value: unknown): T => ({ ...identity, ...(value as object) }) as T;\n\nexport const webPlugin = defineWebPlugin({\n id: 'profile',\n session: {\n get selectionAxes(): WebPluginContributions['selectionAxes'] { return [via({ name: 'profile' }, selectionAxisProfile)]; },\n },\n});\n"],"mappings":";;AACA,IAAA,sBAAe,oBAAoB;CACjC,MAAM;CACN,SAAS;CACT,WAAW;CACX,YAAY;CACZ,OAAO;AACT,CAAC;;;ACFD,MAAM,OAAU,UAAmC,WAAuB;CAAE,GAAG;CAAU,GAAI;AAAiB;AAE9G,MAAa,YAAY,gBAAgB;CACvC,IAAI;CACJ,SAAS,EACP,IAAI,gBAAyD;EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,UAAU,GAAGA,mBAAoB,CAAC;CAAG,EAC1H;AACF,CAAC"}
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_index = require("./src/services/logSinkTelemetry/index.cjs");
|
|
3
|
+
const require_index$1 = require("./src/services/profileText/index.cjs");
|
|
4
|
+
const require_telemetry = require("./src/types/telemetry.cjs");
|
|
5
|
+
exports.PROFILE_EVENT = require_telemetry.PROFILE_EVENT;
|
|
6
|
+
exports.PROFILE_STATUS_KEY = require_index$1.PROFILE_STATUS_KEY;
|
|
7
|
+
exports.createProfileTelemetry = require_index.createProfileTelemetry;
|
|
8
|
+
exports.profileDescription = require_index$1.profileDescription;
|
|
9
|
+
exports.profileItems = require_index$1.profileItems;
|
|
10
|
+
exports.profileStatus = require_index$1.profileStatus;
|
|
11
|
+
exports.profileSummary = require_index$1.profileSummary;
|
|
12
|
+
exports.profileTitle = require_index$1.profileTitle;
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { PROFILE_EVENT, ProfileEventAttributes, ProfileEventName, ProfileTelemetry } from "./src/types/telemetry.cjs";
|
|
2
|
+
import { ProfileTelemetryOptions, createProfileTelemetry } from "./src/services/logSinkTelemetry/index.cjs";
|
|
3
|
+
import { PROFILE_STATUS_KEY, profileDescription, profileItems, profileStatus, profileSummary, profileTitle } from "./src/services/profileText/index.cjs";
|
|
4
|
+
export { PROFILE_EVENT, PROFILE_STATUS_KEY, type ProfileEventAttributes, type ProfileEventName, type ProfileTelemetry, type ProfileTelemetryOptions, createProfileTelemetry, profileDescription, profileItems, profileStatus, profileSummary, profileTitle };
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { PROFILE_EVENT, ProfileEventAttributes, ProfileEventName, ProfileTelemetry } from "./src/types/telemetry.mjs";
|
|
2
|
+
import { ProfileTelemetryOptions, createProfileTelemetry } from "./src/services/logSinkTelemetry/index.mjs";
|
|
3
|
+
import { PROFILE_STATUS_KEY, profileDescription, profileItems, profileStatus, profileSummary, profileTitle } from "./src/services/profileText/index.mjs";
|
|
4
|
+
export { PROFILE_EVENT, PROFILE_STATUS_KEY, type ProfileEventAttributes, type ProfileEventName, type ProfileTelemetry, type ProfileTelemetryOptions, createProfileTelemetry, profileDescription, profileItems, profileStatus, profileSummary, profileTitle };
|
package/dist/index.mjs
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { createProfileTelemetry } from "./src/services/logSinkTelemetry/index.mjs";
|
|
2
|
+
import { PROFILE_STATUS_KEY, profileDescription, profileItems, profileStatus, profileSummary, profileTitle } from "./src/services/profileText/index.mjs";
|
|
3
|
+
import { PROFILE_EVENT } from "./src/types/telemetry.mjs";
|
|
4
|
+
export { PROFILE_EVENT, PROFILE_STATUS_KEY, createProfileTelemetry, profileDescription, profileItems, profileStatus, profileSummary, profileTitle };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
let _agimon_ai_doompi_core_profile_identity = require("@agimon-ai/doompi-core/profile-identity");
|
|
2
|
+
//#region src/extensions/workspaces/sessions/(backend)/_lib/identityEntry.ts
|
|
3
|
+
/**
|
|
4
|
+
* Journals the persona the session is speaking as.
|
|
5
|
+
*
|
|
6
|
+
* A profile switch reloads the session, so each activation publishes once on
|
|
7
|
+
* session start and the entries accumulate in journal order. That order is the
|
|
8
|
+
* whole mechanism: a cockpit folding the journal forward attributes every
|
|
9
|
+
* assistant message to the identity most recently published before it, which is
|
|
10
|
+
* how a message keeps the persona it was written under after a switch.
|
|
11
|
+
*
|
|
12
|
+
* For that to hold, the entry must not be treated as a projection. A projection
|
|
13
|
+
* keeps only the latest record and replays that one, which would repaint the
|
|
14
|
+
* entire transcript as the current persona.
|
|
15
|
+
*/
|
|
16
|
+
function publishProfileIdentity(pi, profile, identity, published) {
|
|
17
|
+
if (!profile) return published;
|
|
18
|
+
const projection = {
|
|
19
|
+
profile,
|
|
20
|
+
...identity?.name === void 0 ? {} : { name: identity.name },
|
|
21
|
+
...identity?.icon === void 0 ? {} : { icon: identity.icon }
|
|
22
|
+
};
|
|
23
|
+
const serialized = JSON.stringify(projection);
|
|
24
|
+
if (serialized === published) return published;
|
|
25
|
+
pi.appendEntry(_agimon_ai_doompi_core_profile_identity.DOOM_PROFILE_IDENTITY_ENTRY_TYPE, projection);
|
|
26
|
+
return serialized;
|
|
27
|
+
}
|
|
28
|
+
//#endregion
|
|
29
|
+
exports.publishProfileIdentity = publishProfileIdentity;
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=identityEntry.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identityEntry.cjs","names":["DOOM_PROFILE_IDENTITY_ENTRY_TYPE"],"sources":["../../../../../../../src/extensions/workspaces/sessions/(backend)/_lib/identityEntry.ts"],"sourcesContent":["import type { PersonaIdentity } from '@agimon-ai/doompi-config/profiles';\nimport {\n DOOM_PROFILE_IDENTITY_ENTRY_TYPE,\n type ProfileIdentityProjection,\n} from '@agimon-ai/doompi-core/profile-identity';\nimport type { ExtensionAPI } from '@earendil-works/pi-coding-agent';\n\n/**\n * Journals the persona the session is speaking as.\n *\n * A profile switch reloads the session, so each activation publishes once on\n * session start and the entries accumulate in journal order. That order is the\n * whole mechanism: a cockpit folding the journal forward attributes every\n * assistant message to the identity most recently published before it, which is\n * how a message keeps the persona it was written under after a switch.\n *\n * For that to hold, the entry must not be treated as a projection. A projection\n * keeps only the latest record and replays that one, which would repaint the\n * entire transcript as the current persona.\n */\nexport function publishProfileIdentity(\n pi: Pick<ExtensionAPI, 'appendEntry'>,\n profile: string | undefined,\n identity: PersonaIdentity | undefined,\n published: string | undefined,\n): string | undefined {\n if (!profile) return published;\n\n const projection: ProfileIdentityProjection = {\n profile,\n ...(identity?.name === undefined ? {} : { name: identity.name }),\n ...(identity?.icon === undefined ? {} : { icon: identity.icon }),\n };\n const serialized = JSON.stringify(projection);\n // Reload republishes on every session start. Re-announcing an identity the\n // transcript already carries would add a seam where nothing changed.\n if (serialized === published) return published;\n pi.appendEntry(DOOM_PROFILE_IDENTITY_ENTRY_TYPE, projection);\n return serialized;\n}\n"],"mappings":";;;;;;;;;;;;;;;AAoBA,SAAgB,uBACd,IACA,SACA,UACA,WACoB;CACpB,IAAI,CAAC,SAAS,OAAO;CAErB,MAAM,aAAwC;EAC5C;EACA,GAAI,UAAU,SAAS,KAAA,IAAY,CAAC,IAAI,EAAE,MAAM,SAAS,KAAK;EAC9D,GAAI,UAAU,SAAS,KAAA,IAAY,CAAC,IAAI,EAAE,MAAM,SAAS,KAAK;CAChE;CACA,MAAM,aAAa,KAAK,UAAU,UAAU;CAG5C,IAAI,eAAe,WAAW,OAAO;CACrC,GAAG,YAAYA,wCAAAA,kCAAkC,UAAU;CAC3D,OAAO;AACT"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { DOOM_PROFILE_IDENTITY_ENTRY_TYPE } from "@agimon-ai/doompi-core/profile-identity";
|
|
2
|
+
//#region src/extensions/workspaces/sessions/(backend)/_lib/identityEntry.ts
|
|
3
|
+
/**
|
|
4
|
+
* Journals the persona the session is speaking as.
|
|
5
|
+
*
|
|
6
|
+
* A profile switch reloads the session, so each activation publishes once on
|
|
7
|
+
* session start and the entries accumulate in journal order. That order is the
|
|
8
|
+
* whole mechanism: a cockpit folding the journal forward attributes every
|
|
9
|
+
* assistant message to the identity most recently published before it, which is
|
|
10
|
+
* how a message keeps the persona it was written under after a switch.
|
|
11
|
+
*
|
|
12
|
+
* For that to hold, the entry must not be treated as a projection. A projection
|
|
13
|
+
* keeps only the latest record and replays that one, which would repaint the
|
|
14
|
+
* entire transcript as the current persona.
|
|
15
|
+
*/
|
|
16
|
+
function publishProfileIdentity(pi, profile, identity, published) {
|
|
17
|
+
if (!profile) return published;
|
|
18
|
+
const projection = {
|
|
19
|
+
profile,
|
|
20
|
+
...identity?.name === void 0 ? {} : { name: identity.name },
|
|
21
|
+
...identity?.icon === void 0 ? {} : { icon: identity.icon }
|
|
22
|
+
};
|
|
23
|
+
const serialized = JSON.stringify(projection);
|
|
24
|
+
if (serialized === published) return published;
|
|
25
|
+
pi.appendEntry(DOOM_PROFILE_IDENTITY_ENTRY_TYPE, projection);
|
|
26
|
+
return serialized;
|
|
27
|
+
}
|
|
28
|
+
//#endregion
|
|
29
|
+
export { publishProfileIdentity };
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=identityEntry.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identityEntry.mjs","names":[],"sources":["../../../../../../../src/extensions/workspaces/sessions/(backend)/_lib/identityEntry.ts"],"sourcesContent":["import type { PersonaIdentity } from '@agimon-ai/doompi-config/profiles';\nimport {\n DOOM_PROFILE_IDENTITY_ENTRY_TYPE,\n type ProfileIdentityProjection,\n} from '@agimon-ai/doompi-core/profile-identity';\nimport type { ExtensionAPI } from '@earendil-works/pi-coding-agent';\n\n/**\n * Journals the persona the session is speaking as.\n *\n * A profile switch reloads the session, so each activation publishes once on\n * session start and the entries accumulate in journal order. That order is the\n * whole mechanism: a cockpit folding the journal forward attributes every\n * assistant message to the identity most recently published before it, which is\n * how a message keeps the persona it was written under after a switch.\n *\n * For that to hold, the entry must not be treated as a projection. A projection\n * keeps only the latest record and replays that one, which would repaint the\n * entire transcript as the current persona.\n */\nexport function publishProfileIdentity(\n pi: Pick<ExtensionAPI, 'appendEntry'>,\n profile: string | undefined,\n identity: PersonaIdentity | undefined,\n published: string | undefined,\n): string | undefined {\n if (!profile) return published;\n\n const projection: ProfileIdentityProjection = {\n profile,\n ...(identity?.name === undefined ? {} : { name: identity.name }),\n ...(identity?.icon === undefined ? {} : { icon: identity.icon }),\n };\n const serialized = JSON.stringify(projection);\n // Reload republishes on every session start. Re-announcing an identity the\n // transcript already carries would add a seam where nothing changed.\n if (serialized === published) return published;\n pi.appendEntry(DOOM_PROFILE_IDENTITY_ENTRY_TYPE, projection);\n return serialized;\n}\n"],"mappings":";;;;;;;;;;;;;;;AAoBA,SAAgB,uBACd,IACA,SACA,UACA,WACoB;CACpB,IAAI,CAAC,SAAS,OAAO;CAErB,MAAM,aAAwC;EAC5C;EACA,GAAI,UAAU,SAAS,KAAA,IAAY,CAAC,IAAI,EAAE,MAAM,SAAS,KAAK;EAC9D,GAAI,UAAU,SAAS,KAAA,IAAY,CAAC,IAAI,EAAE,MAAM,SAAS,KAAK;CAChE;CACA,MAAM,aAAa,KAAK,UAAU,UAAU;CAG5C,IAAI,eAAe,WAAW,OAAO;CACrC,GAAG,YAAY,kCAAkC,UAAU;CAC3D,OAAO;AACT"}
|