@nexus-aethra/dshell-conversation 0.1.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/lib/client/index.js +83 -0
- package/lib/client/index.js.map +1 -0
- package/lib/client.js +77 -0
- package/lib/client.js.map +1 -0
- package/lib/index.js +16 -0
- package/lib/index.js.map +1 -0
- package/lib/types/client/index.d.ts +26 -0
- package/lib/types/client/index.d.ts.map +1 -0
- package/lib/types/index.d.ts +18 -0
- package/lib/types/index.d.ts.map +1 -0
- package/package.json +59 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Nexus Aethra
|
|
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.
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* dshell-conversation browser face — Phase 4 (activity marker).
|
|
3
|
+
*
|
|
4
|
+
* The single registration here is an always-active ConversationView
|
|
5
|
+
* Definition on the `terminal` target with no renderer. Its only job is
|
|
6
|
+
* to count the Session as active conversation activity so the framework
|
|
7
|
+
* skips the centered hero layout and engages the docked composer (the
|
|
8
|
+
* terminal-style dock lives in `dshell-mode` and shadows
|
|
9
|
+
* `conversation.composer.bar`). The dock itself is the visible content
|
|
10
|
+
* surface — no separate view tab — keeping PTY output and the input
|
|
11
|
+
* line fused in one column.
|
|
12
|
+
*
|
|
13
|
+
* The plugin also auto-activates `terminal` whenever a new Session
|
|
14
|
+
* becomes current. The stock view-restore path falls back to `chat` when
|
|
15
|
+
* no preference exists, which would put the conversation back in `hero`
|
|
16
|
+
* phase; activating `terminal` first forces `active` phase immediately.
|
|
17
|
+
* A subsequent `selectView('chat')` from the user (the header still
|
|
18
|
+
* shows the chat tab in the view ledger for advanced use) takes
|
|
19
|
+
* precedence via the stock selectView path — we only steer the default.
|
|
20
|
+
*/
|
|
21
|
+
export const name = '@nexus-aethra/dshell-conversation/client';
|
|
22
|
+
export const inject = ['uiConversation', 'sessions', 'slots'];
|
|
23
|
+
class TerminalViewBuilder {
|
|
24
|
+
empty = { rows: [] };
|
|
25
|
+
replace() {
|
|
26
|
+
return this.empty;
|
|
27
|
+
}
|
|
28
|
+
apply() {
|
|
29
|
+
return this.empty;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
const viewDefinition = {
|
|
33
|
+
target: 'terminal',
|
|
34
|
+
create: () => new TerminalViewBuilder(),
|
|
35
|
+
// The terminal surface IS dshell's content (design 4.1): it counts as
|
|
36
|
+
// visible activity even in a blank session, so the conversation renders
|
|
37
|
+
// its docked composer instead of the centered hero.
|
|
38
|
+
isActive: () => true,
|
|
39
|
+
};
|
|
40
|
+
/** Register the always-active `terminal` target and auto-activate it per current session. */
|
|
41
|
+
export function apply(ctx) {
|
|
42
|
+
// Cast through unknown: the 'sessions' key collides across faces in one
|
|
43
|
+
// tsc program (host SessionStore vs client ISessions); see terminal-bridge.
|
|
44
|
+
const sessions = ctx.get('sessions');
|
|
45
|
+
ctx.effect(() => ctx.uiConversation.views.register(viewDefinition));
|
|
46
|
+
// The terminal target must be the active view or the shell renders the
|
|
47
|
+
// (empty) chat transcript instead: ui-conversation resolves the shell
|
|
48
|
+
// phase from active targets, and its own restore path falls back to the
|
|
49
|
+
// `chat` view whenever the preference is unset. Re-assert on every
|
|
50
|
+
// session-list and view-slot change — our subscriptions are registered
|
|
51
|
+
// after ui-conversation's, so our activation runs last and wins the
|
|
52
|
+
// tick. `activate` is idempotent (the assembler ignores a target already
|
|
53
|
+
// active).
|
|
54
|
+
//
|
|
55
|
+
// This asserts the terminal *target* (which snapshots the conversation
|
|
56
|
+
// assembles), not the user's tab choice — the strip's selection is a
|
|
57
|
+
// separate per-session preference the store owns, and `activate` never
|
|
58
|
+
// touches it. So the strip can offer `会话` / `轨迹` and a click on
|
|
59
|
+
// `轨迹` stays put: it writes the preference through the stock
|
|
60
|
+
// selectView path, and the reconcile that follows a session switch only
|
|
61
|
+
// re-adds `terminal` to a monotonic active set.
|
|
62
|
+
ctx.effect(() => {
|
|
63
|
+
const reconcile = () => {
|
|
64
|
+
const current = sessions.list.getSnapshot().current;
|
|
65
|
+
if (current === undefined)
|
|
66
|
+
return;
|
|
67
|
+
try {
|
|
68
|
+
ctx.uiConversation.binding(current).activate('terminal');
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
// Session scope not materialized yet; retry on the next change.
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
const disposeList = sessions.list.subscribe(reconcile);
|
|
75
|
+
const disposeViews = ctx.slots.subscribe('conversation.view', reconcile);
|
|
76
|
+
reconcile();
|
|
77
|
+
return () => {
|
|
78
|
+
disposeList();
|
|
79
|
+
disposeViews();
|
|
80
|
+
};
|
|
81
|
+
}, 'dshell-conversation: open into terminal view');
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAaH,MAAM,CAAC,MAAM,IAAI,GAAG,0CAA0C,CAAA;AAE9D,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,gBAAgB,EAAE,UAAU,EAAE,OAAO,CAAU,CAAA;AAMtE,MAAM,mBAAmB;IACd,KAAK,GAAqB,EAAE,IAAI,EAAE,EAAE,EAAE,CAAA;IAE/C,OAAO;QACL,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;IAED,KAAK;QACH,OAAO,IAAI,CAAC,KAAK,CAAA;IACnB,CAAC;CACF;AAED,MAAM,cAAc,GAAwD;IAC1E,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,mBAAmB,EAAE;IACvC,sEAAsE;IACtE,wEAAwE;IACxE,oDAAoD;IACpD,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI;CACrB,CAAA;AAED,6FAA6F;AAC7F,MAAM,UAAU,KAAK,CAAC,GAAY;IAChC,wEAAwE;IACxE,4EAA4E;IAC5E,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,CAAyB,CAAA;IAE5D,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAA;IAEnE,uEAAuE;IACvE,sEAAsE;IACtE,wEAAwE;IACxE,mEAAmE;IACnE,uEAAuE;IACvE,oEAAoE;IACpE,yEAAyE;IACzE,WAAW;IACX,EAAE;IACF,uEAAuE;IACvE,qEAAqE;IACrE,uEAAuE;IACvE,gEAAgE;IAChE,6DAA6D;IAC7D,wEAAwE;IACxE,gDAAgD;IAChD,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE;QACd,MAAM,SAAS,GAAG,GAAS,EAAE;YAC3B,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAA;YACnD,IAAI,OAAO,KAAK,SAAS;gBAAE,OAAM;YACjC,IAAI,CAAC;gBACH,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;YAC1D,CAAC;YAAC,MAAM,CAAC;gBACP,gEAAgE;YAClE,CAAC;QACH,CAAC,CAAA;QACD,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;QACtD,MAAM,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAA;QACxE,SAAS,EAAE,CAAA;QACX,OAAO,GAAG,EAAE;YACV,WAAW,EAAE,CAAA;YACb,YAAY,EAAE,CAAA;QAChB,CAAC,CAAA;IACH,CAAC,EAAE,8CAA8C,CAAC,CAAA;AACpD,CAAC"}
|
package/lib/client.js
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
window.__ModuleLoader__.load({
|
|
2
|
+
id: "@nexus-aethra/dshell-conversation",
|
|
3
|
+
factory: (require) => {
|
|
4
|
+
var module = { exports: {} };
|
|
5
|
+
var exports = module.exports;
|
|
6
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
7
|
+
//#region lib/client/index.js
|
|
8
|
+
/**
|
|
9
|
+
* dshell-conversation browser face — Phase 4 (activity marker).
|
|
10
|
+
*
|
|
11
|
+
* The single registration here is an always-active ConversationView
|
|
12
|
+
* Definition on the `terminal` target with no renderer. Its only job is
|
|
13
|
+
* to count the Session as active conversation activity so the framework
|
|
14
|
+
* skips the centered hero layout and engages the docked composer (the
|
|
15
|
+
* terminal-style dock lives in `dshell-mode` and shadows
|
|
16
|
+
* `conversation.composer.bar`). The dock itself is the visible content
|
|
17
|
+
* surface — no separate view tab — keeping PTY output and the input
|
|
18
|
+
* line fused in one column.
|
|
19
|
+
*
|
|
20
|
+
* The plugin also auto-activates `terminal` whenever a new Session
|
|
21
|
+
* becomes current. The stock view-restore path falls back to `chat` when
|
|
22
|
+
* no preference exists, which would put the conversation back in `hero`
|
|
23
|
+
* phase; activating `terminal` first forces `active` phase immediately.
|
|
24
|
+
* A subsequent `selectView('chat')` from the user (the header still
|
|
25
|
+
* shows the chat tab in the view ledger for advanced use) takes
|
|
26
|
+
* precedence via the stock selectView path — we only steer the default.
|
|
27
|
+
*/
|
|
28
|
+
const name = "@nexus-aethra/dshell-conversation/client";
|
|
29
|
+
const inject = [
|
|
30
|
+
"uiConversation",
|
|
31
|
+
"sessions",
|
|
32
|
+
"slots"
|
|
33
|
+
];
|
|
34
|
+
var TerminalViewBuilder = class {
|
|
35
|
+
empty = { rows: [] };
|
|
36
|
+
replace() {
|
|
37
|
+
return this.empty;
|
|
38
|
+
}
|
|
39
|
+
apply() {
|
|
40
|
+
return this.empty;
|
|
41
|
+
}
|
|
42
|
+
};
|
|
43
|
+
const viewDefinition = {
|
|
44
|
+
target: "terminal",
|
|
45
|
+
create: () => new TerminalViewBuilder(),
|
|
46
|
+
isActive: () => true
|
|
47
|
+
};
|
|
48
|
+
/** Register the always-active `terminal` target and auto-activate it per current session. */
|
|
49
|
+
function apply(ctx) {
|
|
50
|
+
const sessions = ctx.get("sessions");
|
|
51
|
+
ctx.effect(() => ctx.uiConversation.views.register(viewDefinition));
|
|
52
|
+
ctx.effect(() => {
|
|
53
|
+
const reconcile = () => {
|
|
54
|
+
const current = sessions.list.getSnapshot().current;
|
|
55
|
+
if (current === void 0) return;
|
|
56
|
+
try {
|
|
57
|
+
ctx.uiConversation.binding(current).activate("terminal");
|
|
58
|
+
} catch {}
|
|
59
|
+
};
|
|
60
|
+
const disposeList = sessions.list.subscribe(reconcile);
|
|
61
|
+
const disposeViews = ctx.slots.subscribe("conversation.view", reconcile);
|
|
62
|
+
reconcile();
|
|
63
|
+
return () => {
|
|
64
|
+
disposeList();
|
|
65
|
+
disposeViews();
|
|
66
|
+
};
|
|
67
|
+
}, "dshell-conversation: open into terminal view");
|
|
68
|
+
}
|
|
69
|
+
//#endregion
|
|
70
|
+
exports.apply = apply;
|
|
71
|
+
exports.inject = inject;
|
|
72
|
+
exports.name = name;
|
|
73
|
+
return module.exports;
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","names":[],"sources":["client/index.js"],"sourcesContent":["/**\n * dshell-conversation browser face — Phase 4 (activity marker).\n *\n * The single registration here is an always-active ConversationView\n * Definition on the `terminal` target with no renderer. Its only job is\n * to count the Session as active conversation activity so the framework\n * skips the centered hero layout and engages the docked composer (the\n * terminal-style dock lives in `dshell-mode` and shadows\n * `conversation.composer.bar`). The dock itself is the visible content\n * surface — no separate view tab — keeping PTY output and the input\n * line fused in one column.\n *\n * The plugin also auto-activates `terminal` whenever a new Session\n * becomes current. The stock view-restore path falls back to `chat` when\n * no preference exists, which would put the conversation back in `hero`\n * phase; activating `terminal` first forces `active` phase immediately.\n * A subsequent `selectView('chat')` from the user (the header still\n * shows the chat tab in the view ledger for advanced use) takes\n * precedence via the stock selectView path — we only steer the default.\n */\nexport const name = '@nexus-aethra/dshell-conversation/client';\nexport const inject = ['uiConversation', 'sessions', 'slots'];\nclass TerminalViewBuilder {\n empty = { rows: [] };\n replace() {\n return this.empty;\n }\n apply() {\n return this.empty;\n }\n}\nconst viewDefinition = {\n target: 'terminal',\n create: () => new TerminalViewBuilder(),\n // The terminal surface IS dshell's content (design 4.1): it counts as\n // visible activity even in a blank session, so the conversation renders\n // its docked composer instead of the centered hero.\n isActive: () => true,\n};\n/** Register the always-active `terminal` target and auto-activate it per current session. */\nexport function apply(ctx) {\n // Cast through unknown: the 'sessions' key collides across faces in one\n // tsc program (host SessionStore vs client ISessions); see terminal-bridge.\n const sessions = ctx.get('sessions');\n ctx.effect(() => ctx.uiConversation.views.register(viewDefinition));\n // The terminal target must be the active view or the shell renders the\n // (empty) chat transcript instead: ui-conversation resolves the shell\n // phase from active targets, and its own restore path falls back to the\n // `chat` view whenever the preference is unset. Re-assert on every\n // session-list and view-slot change — our subscriptions are registered\n // after ui-conversation's, so our activation runs last and wins the\n // tick. `activate` is idempotent (the assembler ignores a target already\n // active).\n //\n // This asserts the terminal *target* (which snapshots the conversation\n // assembles), not the user's tab choice — the strip's selection is a\n // separate per-session preference the store owns, and `activate` never\n // touches it. So the strip can offer `会话` / `轨迹` and a click on\n // `轨迹` stays put: it writes the preference through the stock\n // selectView path, and the reconcile that follows a session switch only\n // re-adds `terminal` to a monotonic active set.\n ctx.effect(() => {\n const reconcile = () => {\n const current = sessions.list.getSnapshot().current;\n if (current === undefined)\n return;\n try {\n ctx.uiConversation.binding(current).activate('terminal');\n }\n catch {\n // Session scope not materialized yet; retry on the next change.\n }\n };\n const disposeList = sessions.list.subscribe(reconcile);\n const disposeViews = ctx.slots.subscribe('conversation.view', reconcile);\n reconcile();\n return () => {\n disposeList();\n disposeViews();\n };\n }, 'dshell-conversation: open into terminal view');\n}\n//# sourceMappingURL=index.js.map"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBA,MAAa,OAAO;EACpB,MAAa,SAAS;GAAC;GAAkB;GAAY;EAAO;EAC5D,IAAM,sBAAN,MAA0B;GACtB,QAAQ,EAAE,MAAM,CAAC,EAAE;GACnB,UAAU;IACN,OAAO,KAAK;GAChB;GACA,QAAQ;IACJ,OAAO,KAAK;GAChB;EACJ;EACA,MAAM,iBAAiB;GACnB,QAAQ;GACR,cAAc,IAAI,oBAAoB;GAItC,gBAAgB;EACpB;;EAEA,SAAgB,MAAM,KAAK;GAGvB,MAAM,WAAW,IAAI,IAAI,UAAU;GACnC,IAAI,aAAa,IAAI,eAAe,MAAM,SAAS,cAAc,CAAC;GAiBlE,IAAI,aAAa;IACb,MAAM,kBAAkB;KACpB,MAAM,UAAU,SAAS,KAAK,YAAY,CAAC,CAAC;KAC5C,IAAI,YAAY,KAAA,GACZ;KACJ,IAAI;MACA,IAAI,eAAe,QAAQ,OAAO,CAAC,CAAC,SAAS,UAAU;KAC3D,QACM,CAEN;IACJ;IACA,MAAM,cAAc,SAAS,KAAK,UAAU,SAAS;IACrD,MAAM,eAAe,IAAI,MAAM,UAAU,qBAAqB,SAAS;IACvE,UAAU;IACV,aAAa;KACT,YAAY;KACZ,aAAa;IACjB;GACJ,GAAG,8CAA8C;EACrD"}
|
package/lib/index.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* dshell-conversation host face — Phase 1 stub.
|
|
3
|
+
*
|
|
4
|
+
* The `terminal` target registration lives in src/client/index.ts (the
|
|
5
|
+
* browser face) because `ctx.uiConversation` is a browser-only service.
|
|
6
|
+
* This host-side entry exists only to satisfy the bundle's module-table
|
|
7
|
+
* row so dsh loads the package's host face alongside the four other
|
|
8
|
+
* dshell-* packages in the active profile.
|
|
9
|
+
*/
|
|
10
|
+
export const name = '@nexus-aethra/dshell-conversation/host';
|
|
11
|
+
export function apply(_ctx) {
|
|
12
|
+
// Reserved for future host-side concerns; target registration is in
|
|
13
|
+
// src/client/index.ts where `ctx.uiConversation` is available.
|
|
14
|
+
}
|
|
15
|
+
export default { name, apply };
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,CAAC,MAAM,IAAI,GAAG,wCAAwC,CAAA;AAE5D,MAAM,UAAU,KAAK,CAAC,IAAa;IACjC,oEAAoE;IACpE,+DAA+D;AACjE,CAAC;AAED,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* dshell-conversation browser face — Phase 4 (activity marker).
|
|
3
|
+
*
|
|
4
|
+
* The single registration here is an always-active ConversationView
|
|
5
|
+
* Definition on the `terminal` target with no renderer. Its only job is
|
|
6
|
+
* to count the Session as active conversation activity so the framework
|
|
7
|
+
* skips the centered hero layout and engages the docked composer (the
|
|
8
|
+
* terminal-style dock lives in `dshell-mode` and shadows
|
|
9
|
+
* `conversation.composer.bar`). The dock itself is the visible content
|
|
10
|
+
* surface — no separate view tab — keeping PTY output and the input
|
|
11
|
+
* line fused in one column.
|
|
12
|
+
*
|
|
13
|
+
* The plugin also auto-activates `terminal` whenever a new Session
|
|
14
|
+
* becomes current. The stock view-restore path falls back to `chat` when
|
|
15
|
+
* no preference exists, which would put the conversation back in `hero`
|
|
16
|
+
* phase; activating `terminal` first forces `active` phase immediately.
|
|
17
|
+
* A subsequent `selectView('chat')` from the user (the header still
|
|
18
|
+
* shows the chat tab in the view ledger for advanced use) takes
|
|
19
|
+
* precedence via the stock selectView path — we only steer the default.
|
|
20
|
+
*/
|
|
21
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
22
|
+
export declare const name = "@nexus-aethra/dshell-conversation/client";
|
|
23
|
+
export declare const inject: readonly ["uiConversation", "sessions", "slots"];
|
|
24
|
+
/** Register the always-active `terminal` target and auto-activate it per current session. */
|
|
25
|
+
export declare function apply(ctx: Context): void;
|
|
26
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAWlD,eAAO,MAAM,IAAI,6CAA6C,CAAA;AAE9D,eAAO,MAAM,MAAM,kDAAmD,CAAA;AA2BtE,6FAA6F;AAC7F,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI,CAyCxC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* dshell-conversation host face — Phase 1 stub.
|
|
3
|
+
*
|
|
4
|
+
* The `terminal` target registration lives in src/client/index.ts (the
|
|
5
|
+
* browser face) because `ctx.uiConversation` is a browser-only service.
|
|
6
|
+
* This host-side entry exists only to satisfy the bundle's module-table
|
|
7
|
+
* row so dsh loads the package's host face alongside the four other
|
|
8
|
+
* dshell-* packages in the active profile.
|
|
9
|
+
*/
|
|
10
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
11
|
+
export declare const name = "@nexus-aethra/dshell-conversation/host";
|
|
12
|
+
export declare function apply(_ctx: Context): void;
|
|
13
|
+
declare const _default: {
|
|
14
|
+
name: string;
|
|
15
|
+
apply: typeof apply;
|
|
16
|
+
};
|
|
17
|
+
export default _default;
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD,eAAO,MAAM,IAAI,2CAA2C,CAAA;AAE5D,wBAAgB,KAAK,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAGzC;;;;;AAED,wBAA8B"}
|
package/package.json
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@nexus-aethra/dshell-conversation",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "dshell Conversation activity marker: registers an always-active `terminal` view target so the conversation stays in active phase and the docked terminal surface renders instead of the centered hero.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"repository": {
|
|
7
|
+
"type": "git",
|
|
8
|
+
"url": "git+https://github.com/Nexus-Aethra/Nexus-Terminal.git",
|
|
9
|
+
"directory": "packages/dshell/conversation"
|
|
10
|
+
},
|
|
11
|
+
"type": "module",
|
|
12
|
+
"main": "lib/index.js",
|
|
13
|
+
"types": "lib/types/index.d.ts",
|
|
14
|
+
"exports": {
|
|
15
|
+
".": {
|
|
16
|
+
"types": "./lib/types/index.d.ts",
|
|
17
|
+
"default": "./lib/index.js"
|
|
18
|
+
},
|
|
19
|
+
"./client": {
|
|
20
|
+
"types": "./lib/types/client/index.d.ts",
|
|
21
|
+
"default": "./lib/client.js"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"dsh": {
|
|
25
|
+
"client": {
|
|
26
|
+
"platform": "web"
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
"files": [
|
|
30
|
+
"lib"
|
|
31
|
+
],
|
|
32
|
+
"publishConfig": {
|
|
33
|
+
"access": "public"
|
|
34
|
+
},
|
|
35
|
+
"dependencies": {},
|
|
36
|
+
"peerDependencies": {
|
|
37
|
+
"@deepseek-ai/cordis": "^4.0.2",
|
|
38
|
+
"@deepseek-ai/dsh-api-session-controller": "0.1.5-rc.2",
|
|
39
|
+
"@deepseek-ai/dsh-client-ui-conversation": "0.1.5-rc.2",
|
|
40
|
+
"@deepseek-ai/dsh-client-ui-renderer": "0.1.5-rc.2"
|
|
41
|
+
},
|
|
42
|
+
"devDependencies": {
|
|
43
|
+
"@deepseek-ai/cordis": "^4.0.2",
|
|
44
|
+
"@deepseek-ai/dsh-api-session-controller": "0.1.5-rc.2",
|
|
45
|
+
"@deepseek-ai/dsh-client-ui-conversation": "0.1.5-rc.2",
|
|
46
|
+
"@deepseek-ai/dsh-client-ui-renderer": "0.1.5-rc.2",
|
|
47
|
+
"@types/react": "~18.3.1",
|
|
48
|
+
"@types/react-dom": "~18.3.0",
|
|
49
|
+
"react": "^18.2.0",
|
|
50
|
+
"react-dom": "^18.2.0",
|
|
51
|
+
"tsdown": "^0.22.14",
|
|
52
|
+
"typescript": "^6.0.3"
|
|
53
|
+
},
|
|
54
|
+
"scripts": {
|
|
55
|
+
"build": "tsc -p tsconfig.json --emitDeclarationOnly false && tsdown --config-loader tsx",
|
|
56
|
+
"build:host": "tsc -p tsconfig.json --emitDeclarationOnly false",
|
|
57
|
+
"build:client": "tsdown --config-loader tsx"
|
|
58
|
+
}
|
|
59
|
+
}
|