@tyvm/knowhow 0.0.82 ā 0.0.84
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/package.json +4 -2
- package/src/agents/base/base.ts +72 -62
- package/src/agents/index.ts +30 -14
- package/src/agents/tools/startAgentTask.ts +3 -1
- package/src/chat/CliChatService.ts +20 -4
- package/src/chat/modules/AgentModule.ts +399 -357
- package/src/chat/modules/CustomCommandsModule.ts +0 -1
- package/src/chat/modules/InternalChatModule.ts +18 -2
- package/src/chat/modules/RendererModule.ts +109 -0
- package/src/chat/modules/SessionsModule.ts +854 -0
- package/src/chat/modules/SetupModule.ts +6 -8
- package/src/chat/modules/index.ts +1 -0
- package/src/chat/renderer/CompactRenderer.ts +209 -0
- package/src/chat/renderer/ConsoleRenderer.ts +141 -0
- package/src/chat/renderer/FancyRenderer.ts +421 -0
- package/src/chat/renderer/index.ts +5 -0
- package/src/chat/renderer/loadRenderer.ts +314 -0
- package/src/chat/renderer/messagesToRenderEvents.ts +96 -0
- package/src/chat/renderer/types.ts +88 -0
- package/src/chat/types.ts +5 -0
- package/src/chat.ts +69 -5
- package/src/cli.ts +24 -5
- package/src/config.ts +15 -0
- package/src/plugins/AgentsMdPlugin.ts +1 -1
- package/src/plugins/GitPlugin.ts +20 -20
- package/src/plugins/PluginBase.ts +11 -0
- package/src/plugins/SkillsPlugin.ts +150 -0
- package/src/plugins/asana.ts +4 -4
- package/src/plugins/embedding.ts +3 -5
- package/src/plugins/exec.ts +3 -3
- package/src/plugins/figma.ts +3 -7
- package/src/plugins/github.ts +18 -29
- package/src/plugins/jira.ts +2 -2
- package/src/plugins/language.ts +4 -4
- package/src/plugins/linear.ts +4 -4
- package/src/plugins/notion.ts +6 -8
- package/src/plugins/plugins.ts +30 -4
- package/src/plugins/url.ts +2 -2
- package/src/plugins/vim.ts +4 -3
- package/src/services/AgentService.ts +17 -0
- package/src/services/AgentSyncFs.ts +3 -0
- package/src/services/EventService.ts +168 -27
- package/src/services/KnowhowClient.ts +1 -0
- package/src/services/SessionManager.ts +51 -1
- package/src/services/SyncedAgentWatcher.ts +397 -0
- package/src/services/SyncerService.ts +147 -0
- package/src/services/index.ts +2 -0
- package/src/services/modules/index.ts +14 -3
- package/src/types.ts +25 -0
- package/src/worker.ts +80 -2
- package/src/workers/auth/PasskeySetup.ts +185 -0
- package/src/workers/auth/WorkerPasskeyAuth.ts +190 -0
- package/src/workers/auth/types.ts +58 -0
- package/src/workers/tools/getChallenge.ts +33 -0
- package/src/workers/tools/index.ts +8 -0
- package/src/workers/tools/lock.ts +31 -0
- package/src/workers/tools/unlock.ts +116 -0
- package/tests/unit/modules/moduleLoading.test.ts +226 -0
- package/tests/unit/plugins/pluginLoading.test.ts +151 -0
- package/ts_build/package.json +4 -2
- package/ts_build/src/agents/base/base.d.ts +4 -3
- package/ts_build/src/agents/base/base.js +54 -30
- package/ts_build/src/agents/base/base.js.map +1 -1
- package/ts_build/src/agents/index.d.ts +3 -0
- package/ts_build/src/agents/index.js +21 -11
- package/ts_build/src/agents/index.js.map +1 -1
- package/ts_build/src/agents/tools/startAgentTask.js +2 -1
- package/ts_build/src/agents/tools/startAgentTask.js.map +1 -1
- package/ts_build/src/chat/CliChatService.js +16 -5
- package/ts_build/src/chat/CliChatService.js.map +1 -1
- package/ts_build/src/chat/modules/AgentModule.d.ts +34 -17
- package/ts_build/src/chat/modules/AgentModule.js +248 -258
- package/ts_build/src/chat/modules/AgentModule.js.map +1 -1
- package/ts_build/src/chat/modules/CustomCommandsModule.js.map +1 -1
- package/ts_build/src/chat/modules/InternalChatModule.d.ts +3 -0
- package/ts_build/src/chat/modules/InternalChatModule.js +16 -1
- package/ts_build/src/chat/modules/InternalChatModule.js.map +1 -1
- package/ts_build/src/chat/modules/RendererModule.d.ts +16 -0
- package/ts_build/src/chat/modules/RendererModule.js +76 -0
- package/ts_build/src/chat/modules/RendererModule.js.map +1 -0
- package/ts_build/src/chat/modules/SessionsModule.d.ts +33 -0
- package/ts_build/src/chat/modules/SessionsModule.js +582 -0
- package/ts_build/src/chat/modules/SessionsModule.js.map +1 -0
- package/ts_build/src/chat/modules/SetupModule.d.ts +3 -3
- package/ts_build/src/chat/modules/SetupModule.js +4 -6
- package/ts_build/src/chat/modules/SetupModule.js.map +1 -1
- package/ts_build/src/chat/modules/index.d.ts +1 -0
- package/ts_build/src/chat/modules/index.js +3 -1
- package/ts_build/src/chat/modules/index.js.map +1 -1
- package/ts_build/src/chat/renderer/CompactRenderer.d.ts +23 -0
- package/ts_build/src/chat/renderer/CompactRenderer.js +167 -0
- package/ts_build/src/chat/renderer/CompactRenderer.js.map +1 -0
- package/ts_build/src/chat/renderer/ConsoleRenderer.d.ts +22 -0
- package/ts_build/src/chat/renderer/ConsoleRenderer.js +110 -0
- package/ts_build/src/chat/renderer/ConsoleRenderer.js.map +1 -0
- package/ts_build/src/chat/renderer/FancyRenderer.d.ts +23 -0
- package/ts_build/src/chat/renderer/FancyRenderer.js +328 -0
- package/ts_build/src/chat/renderer/FancyRenderer.js.map +1 -0
- package/ts_build/src/chat/renderer/index.d.ts +5 -0
- package/ts_build/src/chat/renderer/index.js +29 -0
- package/ts_build/src/chat/renderer/index.js.map +1 -0
- package/ts_build/src/chat/renderer/loadRenderer.d.ts +4 -0
- package/ts_build/src/chat/renderer/loadRenderer.js +246 -0
- package/ts_build/src/chat/renderer/loadRenderer.js.map +1 -0
- package/ts_build/src/chat/renderer/messagesToRenderEvents.d.ts +15 -0
- package/ts_build/src/chat/renderer/messagesToRenderEvents.js +72 -0
- package/ts_build/src/chat/renderer/messagesToRenderEvents.js.map +1 -0
- package/ts_build/src/chat/renderer/types.d.ts +75 -0
- package/ts_build/src/chat/renderer/types.js +3 -0
- package/ts_build/src/chat/renderer/types.js.map +1 -0
- package/ts_build/src/chat/types.d.ts +5 -0
- package/ts_build/src/chat.js +46 -4
- package/ts_build/src/chat.js.map +1 -1
- package/ts_build/src/cli.js +18 -5
- package/ts_build/src/cli.js.map +1 -1
- package/ts_build/src/config.d.ts +1 -0
- package/ts_build/src/config.js +17 -1
- package/ts_build/src/config.js.map +1 -1
- package/ts_build/src/plugins/AgentsMdPlugin.js +1 -1
- package/ts_build/src/plugins/AgentsMdPlugin.js.map +1 -1
- package/ts_build/src/plugins/GitPlugin.js +20 -20
- package/ts_build/src/plugins/GitPlugin.js.map +1 -1
- package/ts_build/src/plugins/PluginBase.d.ts +1 -0
- package/ts_build/src/plugins/PluginBase.js +13 -0
- package/ts_build/src/plugins/PluginBase.js.map +1 -1
- package/ts_build/src/plugins/SkillsPlugin.d.ts +13 -0
- package/ts_build/src/plugins/SkillsPlugin.js +149 -0
- package/ts_build/src/plugins/SkillsPlugin.js.map +1 -0
- package/ts_build/src/plugins/asana.js +4 -4
- package/ts_build/src/plugins/asana.js.map +1 -1
- package/ts_build/src/plugins/embedding.js +3 -3
- package/ts_build/src/plugins/embedding.js.map +1 -1
- package/ts_build/src/plugins/exec.js +3 -3
- package/ts_build/src/plugins/exec.js.map +1 -1
- package/ts_build/src/plugins/figma.js +3 -3
- package/ts_build/src/plugins/figma.js.map +1 -1
- package/ts_build/src/plugins/github.js +18 -18
- package/ts_build/src/plugins/github.js.map +1 -1
- package/ts_build/src/plugins/jira.js +2 -2
- package/ts_build/src/plugins/jira.js.map +1 -1
- package/ts_build/src/plugins/language.js +4 -4
- package/ts_build/src/plugins/language.js.map +1 -1
- package/ts_build/src/plugins/linear.js +4 -4
- package/ts_build/src/plugins/linear.js.map +1 -1
- package/ts_build/src/plugins/notion.js +6 -6
- package/ts_build/src/plugins/notion.js.map +1 -1
- package/ts_build/src/plugins/plugins.d.ts +3 -0
- package/ts_build/src/plugins/plugins.js +19 -4
- package/ts_build/src/plugins/plugins.js.map +1 -1
- package/ts_build/src/plugins/url.js +2 -2
- package/ts_build/src/plugins/url.js.map +1 -1
- package/ts_build/src/plugins/vim.js +2 -2
- package/ts_build/src/plugins/vim.js.map +1 -1
- package/ts_build/src/services/AgentService.d.ts +3 -0
- package/ts_build/src/services/AgentService.js +7 -0
- package/ts_build/src/services/AgentService.js.map +1 -1
- package/ts_build/src/services/AgentSyncFs.d.ts +1 -0
- package/ts_build/src/services/AgentSyncFs.js +2 -0
- package/ts_build/src/services/AgentSyncFs.js.map +1 -1
- package/ts_build/src/services/EventService.d.ts +25 -2
- package/ts_build/src/services/EventService.js +92 -14
- package/ts_build/src/services/EventService.js.map +1 -1
- package/ts_build/src/services/KnowhowClient.d.ts +1 -0
- package/ts_build/src/services/KnowhowClient.js.map +1 -1
- package/ts_build/src/services/SessionManager.d.ts +6 -0
- package/ts_build/src/services/SessionManager.js +39 -1
- package/ts_build/src/services/SessionManager.js.map +1 -1
- package/ts_build/src/services/SyncedAgentWatcher.d.ts +101 -0
- package/ts_build/src/services/SyncedAgentWatcher.js +312 -0
- package/ts_build/src/services/SyncedAgentWatcher.js.map +1 -0
- package/ts_build/src/services/SyncerService.d.ts +30 -0
- package/ts_build/src/services/SyncerService.js +72 -0
- package/ts_build/src/services/SyncerService.js.map +1 -0
- package/ts_build/src/services/index.d.ts +2 -0
- package/ts_build/src/services/index.js +2 -0
- package/ts_build/src/services/index.js.map +1 -1
- package/ts_build/src/services/modules/index.js +10 -2
- package/ts_build/src/services/modules/index.js.map +1 -1
- package/ts_build/src/types.d.ts +19 -0
- package/ts_build/src/types.js.map +1 -1
- package/ts_build/src/worker.d.ts +2 -0
- package/ts_build/src/worker.js +59 -4
- package/ts_build/src/worker.js.map +1 -1
- package/ts_build/src/workers/auth/PasskeySetup.d.ts +10 -0
- package/ts_build/src/workers/auth/PasskeySetup.js +131 -0
- package/ts_build/src/workers/auth/PasskeySetup.js.map +1 -0
- package/ts_build/src/workers/auth/WorkerPasskeyAuth.d.ts +35 -0
- package/ts_build/src/workers/auth/WorkerPasskeyAuth.js +129 -0
- package/ts_build/src/workers/auth/WorkerPasskeyAuth.js.map +1 -0
- package/ts_build/src/workers/auth/types.d.ts +36 -0
- package/ts_build/src/workers/auth/types.js +3 -0
- package/ts_build/src/workers/auth/types.js.map +1 -0
- package/ts_build/src/workers/tools/getChallenge.d.ts +9 -0
- package/ts_build/src/workers/tools/getChallenge.js +27 -0
- package/ts_build/src/workers/tools/getChallenge.js.map +1 -0
- package/ts_build/src/workers/tools/index.d.ts +6 -0
- package/ts_build/src/workers/tools/index.js +10 -0
- package/ts_build/src/workers/tools/index.js.map +1 -1
- package/ts_build/src/workers/tools/lock.d.ts +9 -0
- package/ts_build/src/workers/tools/lock.js +27 -0
- package/ts_build/src/workers/tools/lock.js.map +1 -0
- package/ts_build/src/workers/tools/unlock.d.ts +18 -0
- package/ts_build/src/workers/tools/unlock.js +78 -0
- package/ts_build/src/workers/tools/unlock.js.map +1 -0
- package/ts_build/tests/unit/modules/moduleLoading.test.d.ts +1 -0
- package/ts_build/tests/unit/modules/moduleLoading.test.js +187 -0
- package/ts_build/tests/unit/modules/moduleLoading.test.js.map +1 -0
- package/ts_build/tests/unit/plugins/pluginLoading.test.d.ts +1 -0
- package/ts_build/tests/unit/plugins/pluginLoading.test.js +123 -0
- package/ts_build/tests/unit/plugins/pluginLoading.test.js.map +1 -0
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { BaseChatModule } from "./BaseChatModule";
|
|
2
2
|
import { ChatCommand, ChatService, CommandResult } from "../types";
|
|
3
3
|
import { getLanguageConfig } from "../../config";
|
|
4
|
-
import { services } from "../../services";
|
|
5
4
|
|
|
6
5
|
/**
|
|
7
6
|
* CustomCommandsModule - Loads `/command`-style keys from the language config
|
|
@@ -9,6 +9,8 @@ import { SystemModule } from "./SystemModule";
|
|
|
9
9
|
import { SetupModule } from "./SetupModule";
|
|
10
10
|
import { CustomCommandsModule } from "./CustomCommandsModule";
|
|
11
11
|
import { ShellCommandModule } from "./ShellCommandModule";
|
|
12
|
+
import { RendererModule } from "./RendererModule";
|
|
13
|
+
import { SessionsModule } from "./SessionsModule";
|
|
12
14
|
|
|
13
15
|
export class InternalChatModule implements ChatModule {
|
|
14
16
|
private chatService?: CliChatService;
|
|
@@ -19,11 +21,19 @@ export class InternalChatModule implements ChatModule {
|
|
|
19
21
|
private agentModule = new AgentModule();
|
|
20
22
|
private askModule = new AskModule();
|
|
21
23
|
private searchModule = new SearchModule();
|
|
24
|
+
private sessionsModule: SessionsModule;
|
|
22
25
|
private voiceModule = new VoiceModule();
|
|
23
26
|
private systemModule = new SystemModule();
|
|
24
|
-
private setupModule
|
|
27
|
+
private setupModule: SetupModule;
|
|
25
28
|
private customCommandsModule = new CustomCommandsModule();
|
|
26
29
|
private shellCommandModule = new ShellCommandModule();
|
|
30
|
+
private rendererModule: RendererModule;
|
|
31
|
+
|
|
32
|
+
constructor() {
|
|
33
|
+
this.rendererModule = new RendererModule(this.agentModule);
|
|
34
|
+
this.setupModule = new SetupModule(this.agentModule);
|
|
35
|
+
this.sessionsModule = new SessionsModule(this.agentModule);
|
|
36
|
+
}
|
|
27
37
|
|
|
28
38
|
async initialize(chatService: CliChatService): Promise<void> {
|
|
29
39
|
this.chatService = chatService;
|
|
@@ -31,8 +41,10 @@ export class InternalChatModule implements ChatModule {
|
|
|
31
41
|
// Register this module first so it gets called for input handling
|
|
32
42
|
chatService.registerModule(this);
|
|
33
43
|
|
|
34
|
-
// Initialize
|
|
44
|
+
// Initialize renderer first so context.renderer is set before other modules use it
|
|
45
|
+
await this.rendererModule.initialize(chatService);
|
|
35
46
|
await this.agentModule.initialize(chatService);
|
|
47
|
+
await this.sessionsModule.initialize(chatService);
|
|
36
48
|
await this.askModule.initialize(chatService);
|
|
37
49
|
await this.searchModule.initialize(chatService);
|
|
38
50
|
await this.voiceModule.initialize(chatService);
|
|
@@ -63,6 +75,7 @@ export class InternalChatModule implements ChatModule {
|
|
|
63
75
|
getCommands(): ChatCommand[] {
|
|
64
76
|
const commands: ChatCommand[] = [
|
|
65
77
|
...this.agentModule.getCommands(),
|
|
78
|
+
...this.sessionsModule.getCommands(),
|
|
66
79
|
...this.askModule.getCommands(),
|
|
67
80
|
...this.searchModule.getCommands(),
|
|
68
81
|
...this.voiceModule.getCommands(),
|
|
@@ -70,6 +83,7 @@ export class InternalChatModule implements ChatModule {
|
|
|
70
83
|
...this.setupModule.getCommands(),
|
|
71
84
|
...this.customCommandsModule.getCommands(),
|
|
72
85
|
...this.shellCommandModule.getCommands(),
|
|
86
|
+
...this.rendererModule.getCommands(),
|
|
73
87
|
{
|
|
74
88
|
name: "exit",
|
|
75
89
|
description: "Exit the chat",
|
|
@@ -87,6 +101,7 @@ export class InternalChatModule implements ChatModule {
|
|
|
87
101
|
getModes(): ChatMode[] {
|
|
88
102
|
return [
|
|
89
103
|
...this.agentModule.getModes(),
|
|
104
|
+
...this.sessionsModule.getModes(),
|
|
90
105
|
...this.askModule.getModes(),
|
|
91
106
|
...this.searchModule.getModes(),
|
|
92
107
|
...this.voiceModule.getModes(),
|
|
@@ -94,6 +109,7 @@ export class InternalChatModule implements ChatModule {
|
|
|
94
109
|
...this.setupModule.getModes(),
|
|
95
110
|
...this.customCommandsModule.getModes(),
|
|
96
111
|
...this.shellCommandModule.getModes(),
|
|
112
|
+
...this.rendererModule.getModes(),
|
|
97
113
|
];
|
|
98
114
|
}
|
|
99
115
|
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RendererModule - Allows switching the active renderer mid-session via /render command
|
|
3
|
+
*/
|
|
4
|
+
import { BaseChatModule } from "./BaseChatModule";
|
|
5
|
+
import { ChatCommand, ChatMode, ChatContext, ChatService } from "../types";
|
|
6
|
+
import { loadRenderer } from "../renderer/loadRenderer";
|
|
7
|
+
import { ConsoleRenderer } from "../renderer";
|
|
8
|
+
import { AgentModule } from "./AgentModule";
|
|
9
|
+
|
|
10
|
+
const BUILTIN_RENDERERS = ["basic", "compact", "fancy"];
|
|
11
|
+
|
|
12
|
+
export class RendererModule extends BaseChatModule {
|
|
13
|
+
name = "renderer";
|
|
14
|
+
description = "Renderer switching functionality";
|
|
15
|
+
|
|
16
|
+
/** Track the current renderer name for display */
|
|
17
|
+
private currentRendererName: string = "basic";
|
|
18
|
+
|
|
19
|
+
/** Optional reference to AgentModule for rewiring rendering on renderer switch */
|
|
20
|
+
private agentModule: AgentModule | undefined;
|
|
21
|
+
|
|
22
|
+
constructor(agentModule?: AgentModule) {
|
|
23
|
+
super();
|
|
24
|
+
this.agentModule = agentModule;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
async initialize(service: ChatService): Promise<void> {
|
|
28
|
+
await super.initialize(service);
|
|
29
|
+
|
|
30
|
+
// Initialize context.renderer with a default ConsoleRenderer if not already set
|
|
31
|
+
const context = service.getContext();
|
|
32
|
+
if (!context.renderer) {
|
|
33
|
+
service.setContext({ renderer: new ConsoleRenderer() });
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
getCommands(): ChatCommand[] {
|
|
38
|
+
return [
|
|
39
|
+
{
|
|
40
|
+
name: "render",
|
|
41
|
+
description: "Switch the active renderer or show current renderer info",
|
|
42
|
+
handler: this.handleRenderCommand.bind(this),
|
|
43
|
+
},
|
|
44
|
+
];
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
getModes(): ChatMode[] {
|
|
48
|
+
return [];
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
async handleRenderCommand(args: string[]): Promise<void> {
|
|
52
|
+
const specifier = args[0]?.trim();
|
|
53
|
+
|
|
54
|
+
if (!specifier) {
|
|
55
|
+
// No args ā show current renderer and list built-ins
|
|
56
|
+
console.log(`\nšØ Current renderer: ${this.currentRendererName}`);
|
|
57
|
+
console.log("\nAvailable built-in renderers:");
|
|
58
|
+
for (const name of BUILTIN_RENDERERS) {
|
|
59
|
+
const marker = name === this.currentRendererName ? " ā active" : "";
|
|
60
|
+
console.log(` ${name}${marker}`);
|
|
61
|
+
}
|
|
62
|
+
console.log(
|
|
63
|
+
"\nUsage: /render <name> (e.g. /render fancy, /render compact, /render basic)"
|
|
64
|
+
);
|
|
65
|
+
console.log(
|
|
66
|
+
" /render <path> (e.g. /render ./my-renderer.js)"
|
|
67
|
+
);
|
|
68
|
+
console.log(
|
|
69
|
+
" /render <pkg> (e.g. /render @my-org/knowhow-renderer)"
|
|
70
|
+
);
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
try {
|
|
75
|
+
console.log(`š Loading renderer: ${specifier}...`);
|
|
76
|
+
const newRenderer = await loadRenderer(specifier);
|
|
77
|
+
|
|
78
|
+
// Preserve active task ID when swapping renderers
|
|
79
|
+
const currentRenderer = this.chatService?.getContext()?.renderer;
|
|
80
|
+
const activeTaskId = currentRenderer?.getActiveTaskId();
|
|
81
|
+
if (activeTaskId) {
|
|
82
|
+
newRenderer.setActiveTaskId(activeTaskId);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
this.chatService?.setContext({ renderer: newRenderer });
|
|
86
|
+
this.currentRendererName = specifier;
|
|
87
|
+
|
|
88
|
+
// Rewire agent rendering event listeners to the new renderer so live
|
|
89
|
+
// events are forwarded correctly even mid-session.
|
|
90
|
+
// This works because wireAgentRendering() always reads `this.renderer`
|
|
91
|
+
// (which resolves from context), and re-registering replaces the old handlers.
|
|
92
|
+
if (this.agentModule && activeTaskId) {
|
|
93
|
+
this.agentModule.rewireAgentRendering();
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
console.log(`ā
Renderer switched to: ${specifier}`);
|
|
97
|
+
} catch (err: any) {
|
|
98
|
+
console.error(`ā Failed to load renderer "${specifier}": ${err.message}`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
async handleInput(input: string, context: ChatContext): Promise<boolean> {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
async cleanup(): Promise<void> {
|
|
107
|
+
// No cleanup needed
|
|
108
|
+
}
|
|
109
|
+
}
|