@autonav/core 1.0.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/README.md +115 -0
- package/dist/adapter/claude-adapter.d.ts +136 -0
- package/dist/adapter/claude-adapter.d.ts.map +1 -0
- package/dist/adapter/claude-adapter.js +340 -0
- package/dist/adapter/claude-adapter.js.map +1 -0
- package/dist/adapter/index.d.ts +7 -0
- package/dist/adapter/index.d.ts.map +1 -0
- package/dist/adapter/index.js +7 -0
- package/dist/adapter/index.js.map +1 -0
- package/dist/cli/autonav.d.ts +11 -0
- package/dist/cli/autonav.d.ts.map +1 -0
- package/dist/cli/autonav.js +79 -0
- package/dist/cli/autonav.js.map +1 -0
- package/dist/cli/nav-chat.d.ts +3 -0
- package/dist/cli/nav-chat.d.ts.map +1 -0
- package/dist/cli/nav-chat.js +151 -0
- package/dist/cli/nav-chat.js.map +1 -0
- package/dist/cli/nav-init.d.ts +3 -0
- package/dist/cli/nav-init.d.ts.map +1 -0
- package/dist/cli/nav-init.js +366 -0
- package/dist/cli/nav-init.js.map +1 -0
- package/dist/cli/nav-query.d.ts +3 -0
- package/dist/cli/nav-query.d.ts.map +1 -0
- package/dist/cli/nav-query.js +217 -0
- package/dist/cli/nav-query.js.map +1 -0
- package/dist/conversation/App.d.ts +14 -0
- package/dist/conversation/App.d.ts.map +1 -0
- package/dist/conversation/App.js +229 -0
- package/dist/conversation/App.js.map +1 -0
- package/dist/conversation/index.d.ts +29 -0
- package/dist/conversation/index.d.ts.map +1 -0
- package/dist/conversation/index.js +44 -0
- package/dist/conversation/index.js.map +1 -0
- package/dist/conversation/prompts.d.ts +9 -0
- package/dist/conversation/prompts.d.ts.map +1 -0
- package/dist/conversation/prompts.js +47 -0
- package/dist/conversation/prompts.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/interview/App.d.ts +14 -0
- package/dist/interview/App.d.ts.map +1 -0
- package/dist/interview/App.js +159 -0
- package/dist/interview/App.js.map +1 -0
- package/dist/interview/index.d.ts +30 -0
- package/dist/interview/index.d.ts.map +1 -0
- package/dist/interview/index.js +52 -0
- package/dist/interview/index.js.map +1 -0
- package/dist/interview/prompts.d.ts +36 -0
- package/dist/interview/prompts.d.ts.map +1 -0
- package/dist/interview/prompts.js +116 -0
- package/dist/interview/prompts.js.map +1 -0
- package/dist/pack-installer/github.d.ts +41 -0
- package/dist/pack-installer/github.d.ts.map +1 -0
- package/dist/pack-installer/github.js +294 -0
- package/dist/pack-installer/github.js.map +1 -0
- package/dist/pack-installer/index.d.ts +57 -0
- package/dist/pack-installer/index.d.ts.map +1 -0
- package/dist/pack-installer/index.js +257 -0
- package/dist/pack-installer/index.js.map +1 -0
- package/dist/plugins/config-schema.d.ts +32 -0
- package/dist/plugins/config-schema.d.ts.map +1 -0
- package/dist/plugins/config-schema.js +26 -0
- package/dist/plugins/config-schema.js.map +1 -0
- package/dist/plugins/implementations/file-watcher/index.d.ts +110 -0
- package/dist/plugins/implementations/file-watcher/index.d.ts.map +1 -0
- package/dist/plugins/implementations/file-watcher/index.js +212 -0
- package/dist/plugins/implementations/file-watcher/index.js.map +1 -0
- package/dist/plugins/implementations/github/index.d.ts +201 -0
- package/dist/plugins/implementations/github/index.d.ts.map +1 -0
- package/dist/plugins/implementations/github/index.js +337 -0
- package/dist/plugins/implementations/github/index.js.map +1 -0
- package/dist/plugins/implementations/slack/index.d.ts +153 -0
- package/dist/plugins/implementations/slack/index.d.ts.map +1 -0
- package/dist/plugins/implementations/slack/index.js +221 -0
- package/dist/plugins/implementations/slack/index.js.map +1 -0
- package/dist/plugins/index.d.ts +23 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +35 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/plugin-manager.d.ts +66 -0
- package/dist/plugins/plugin-manager.d.ts.map +1 -0
- package/dist/plugins/plugin-manager.js +198 -0
- package/dist/plugins/plugin-manager.js.map +1 -0
- package/dist/plugins/types.d.ts +102 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +38 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/plugins/utils/security.d.ts +43 -0
- package/dist/plugins/utils/security.d.ts.map +1 -0
- package/dist/plugins/utils/security.js +115 -0
- package/dist/plugins/utils/security.js.map +1 -0
- package/dist/query-engine/index.d.ts +10 -0
- package/dist/query-engine/index.d.ts.map +1 -0
- package/dist/query-engine/index.js +10 -0
- package/dist/query-engine/index.js.map +1 -0
- package/dist/query-engine/navigator-loader.d.ts +37 -0
- package/dist/query-engine/navigator-loader.d.ts.map +1 -0
- package/dist/query-engine/navigator-loader.js +167 -0
- package/dist/query-engine/navigator-loader.js.map +1 -0
- package/dist/query-engine/output-formatter.d.ts +55 -0
- package/dist/query-engine/output-formatter.d.ts.map +1 -0
- package/dist/query-engine/output-formatter.js +165 -0
- package/dist/query-engine/output-formatter.js.map +1 -0
- package/dist/query-engine/response-validator.d.ts +55 -0
- package/dist/query-engine/response-validator.d.ts.map +1 -0
- package/dist/query-engine/response-validator.js +92 -0
- package/dist/query-engine/response-validator.js.map +1 -0
- package/dist/templates/.gitignore.template +23 -0
- package/dist/templates/CLAUDE-pack.md.template +32 -0
- package/dist/templates/CLAUDE.md.template +128 -0
- package/dist/templates/README.md.template +174 -0
- package/dist/templates/config-pack.json.template +16 -0
- package/dist/templates/config.json.template +11 -0
- package/dist/templates/index.d.ts +22 -0
- package/dist/templates/index.d.ts.map +1 -0
- package/dist/templates/index.js +32 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/templates/plugins.json.template +33 -0
- package/dist/templates/system-configuration.md.template +66 -0
- package/dist/tools/handler.d.ts +20 -0
- package/dist/tools/handler.d.ts.map +1 -0
- package/dist/tools/handler.js +202 -0
- package/dist/tools/handler.js.map +1 -0
- package/dist/tools/index.d.ts +10 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +10 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/response.d.ts +30 -0
- package/dist/tools/response.d.ts.map +1 -0
- package/dist/tools/response.js +68 -0
- package/dist/tools/response.js.map +1 -0
- package/dist/tools/self-config.d.ts +54 -0
- package/dist/tools/self-config.d.ts.map +1 -0
- package/dist/tools/self-config.js +84 -0
- package/dist/tools/self-config.js.map +1 -0
- package/dist/validation/index.d.ts +19 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +91 -0
- package/dist/validation/index.js.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Schema for .claude/plugins.json
|
|
4
|
+
*
|
|
5
|
+
* Example:
|
|
6
|
+
* {
|
|
7
|
+
* "slack": {
|
|
8
|
+
* "enabled": true,
|
|
9
|
+
* "config": {
|
|
10
|
+
* "token": "xoxb-...",
|
|
11
|
+
* "channels": ["#general"],
|
|
12
|
+
* "threadNotifications": true
|
|
13
|
+
* }
|
|
14
|
+
* },
|
|
15
|
+
* "github": {
|
|
16
|
+
* "enabled": false,
|
|
17
|
+
* "config": {}
|
|
18
|
+
* }
|
|
19
|
+
* }
|
|
20
|
+
*/
|
|
21
|
+
export declare const PluginConfigFileSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
22
|
+
enabled: z.ZodBoolean;
|
|
23
|
+
config: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
24
|
+
}, "strip", z.ZodTypeAny, {
|
|
25
|
+
enabled: boolean;
|
|
26
|
+
config?: Record<string, unknown> | undefined;
|
|
27
|
+
}, {
|
|
28
|
+
enabled: boolean;
|
|
29
|
+
config?: Record<string, unknown> | undefined;
|
|
30
|
+
}>>;
|
|
31
|
+
export type PluginConfigFile = z.infer<typeof PluginConfigFileSchema>;
|
|
32
|
+
//# sourceMappingURL=config-schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-schema.d.ts","sourceRoot":"","sources":["../../src/plugins/config-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;GAMlC,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Schema for .claude/plugins.json
|
|
4
|
+
*
|
|
5
|
+
* Example:
|
|
6
|
+
* {
|
|
7
|
+
* "slack": {
|
|
8
|
+
* "enabled": true,
|
|
9
|
+
* "config": {
|
|
10
|
+
* "token": "xoxb-...",
|
|
11
|
+
* "channels": ["#general"],
|
|
12
|
+
* "threadNotifications": true
|
|
13
|
+
* }
|
|
14
|
+
* },
|
|
15
|
+
* "github": {
|
|
16
|
+
* "enabled": false,
|
|
17
|
+
* "config": {}
|
|
18
|
+
* }
|
|
19
|
+
* }
|
|
20
|
+
*/
|
|
21
|
+
export const PluginConfigFileSchema = z.record(z.string(), // Plugin name
|
|
22
|
+
z.object({
|
|
23
|
+
enabled: z.boolean(),
|
|
24
|
+
config: z.record(z.unknown()).optional(),
|
|
25
|
+
}));
|
|
26
|
+
//# sourceMappingURL=config-schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../../src/plugins/config-schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAC5C,CAAC,CAAC,MAAM,EAAE,EAAE,cAAc;AAC1B,CAAC,CAAC,MAAM,CAAC;IACP,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CACzC,CAAC,CACH,CAAC"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { Plugin, PluginHealthStatus } from '../../types.js';
|
|
3
|
+
export declare const FileWatcherConfigSchema: z.ZodObject<{
|
|
4
|
+
paths: z.ZodArray<z.ZodString, "many">;
|
|
5
|
+
patterns: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
6
|
+
ignorePatterns: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
7
|
+
pollInterval: z.ZodDefault<z.ZodNumber>;
|
|
8
|
+
}, "strip", z.ZodTypeAny, {
|
|
9
|
+
paths: string[];
|
|
10
|
+
patterns: string[];
|
|
11
|
+
ignorePatterns: string[];
|
|
12
|
+
pollInterval: number;
|
|
13
|
+
}, {
|
|
14
|
+
paths: string[];
|
|
15
|
+
patterns?: string[] | undefined;
|
|
16
|
+
ignorePatterns?: string[] | undefined;
|
|
17
|
+
pollInterval?: number | undefined;
|
|
18
|
+
}>;
|
|
19
|
+
export type FileWatcherConfig = z.infer<typeof FileWatcherConfigSchema>;
|
|
20
|
+
export declare const FileWatcherEventSchema: z.ZodObject<{
|
|
21
|
+
type: z.ZodEnum<["added", "changed", "removed"]>;
|
|
22
|
+
path: z.ZodString;
|
|
23
|
+
timestamp: z.ZodString;
|
|
24
|
+
size: z.ZodOptional<z.ZodNumber>;
|
|
25
|
+
}, "strip", z.ZodTypeAny, {
|
|
26
|
+
path: string;
|
|
27
|
+
type: "added" | "changed" | "removed";
|
|
28
|
+
timestamp: string;
|
|
29
|
+
size?: number | undefined;
|
|
30
|
+
}, {
|
|
31
|
+
path: string;
|
|
32
|
+
type: "added" | "changed" | "removed";
|
|
33
|
+
timestamp: string;
|
|
34
|
+
size?: number | undefined;
|
|
35
|
+
}>;
|
|
36
|
+
export type FileWatcherEvent = z.infer<typeof FileWatcherEventSchema>;
|
|
37
|
+
export declare const FileWatcherActionSchema: z.ZodObject<{
|
|
38
|
+
type: z.ZodEnum<["refresh", "clear"]>;
|
|
39
|
+
}, "strip", z.ZodTypeAny, {
|
|
40
|
+
type: "refresh" | "clear";
|
|
41
|
+
}, {
|
|
42
|
+
type: "refresh" | "clear";
|
|
43
|
+
}>;
|
|
44
|
+
export type FileWatcherAction = z.infer<typeof FileWatcherActionSchema>;
|
|
45
|
+
/**
|
|
46
|
+
* File System Watcher Plugin
|
|
47
|
+
*
|
|
48
|
+
* Monitors knowledge base files for changes and reports them as events.
|
|
49
|
+
* Useful for keeping navigators aware of documentation updates.
|
|
50
|
+
*
|
|
51
|
+
* Security: Only watches directories within the project scope,
|
|
52
|
+
* prevents watching sensitive system directories.
|
|
53
|
+
*/
|
|
54
|
+
export declare class FileWatcherPlugin implements Plugin<FileWatcherConfig, FileWatcherEvent, FileWatcherAction> {
|
|
55
|
+
readonly name = "file-watcher";
|
|
56
|
+
readonly version = "1.0.0";
|
|
57
|
+
readonly description = "Monitor file system changes in knowledge base";
|
|
58
|
+
readonly configSchema: z.ZodObject<{
|
|
59
|
+
paths: z.ZodArray<z.ZodString, "many">;
|
|
60
|
+
patterns: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
61
|
+
ignorePatterns: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
62
|
+
pollInterval: z.ZodDefault<z.ZodNumber>;
|
|
63
|
+
}, "strip", z.ZodTypeAny, {
|
|
64
|
+
paths: string[];
|
|
65
|
+
patterns: string[];
|
|
66
|
+
ignorePatterns: string[];
|
|
67
|
+
pollInterval: number;
|
|
68
|
+
}, {
|
|
69
|
+
paths: string[];
|
|
70
|
+
patterns?: string[] | undefined;
|
|
71
|
+
ignorePatterns?: string[] | undefined;
|
|
72
|
+
pollInterval?: number | undefined;
|
|
73
|
+
}>;
|
|
74
|
+
readonly eventSchema: z.ZodObject<{
|
|
75
|
+
type: z.ZodEnum<["added", "changed", "removed"]>;
|
|
76
|
+
path: z.ZodString;
|
|
77
|
+
timestamp: z.ZodString;
|
|
78
|
+
size: z.ZodOptional<z.ZodNumber>;
|
|
79
|
+
}, "strip", z.ZodTypeAny, {
|
|
80
|
+
path: string;
|
|
81
|
+
type: "added" | "changed" | "removed";
|
|
82
|
+
timestamp: string;
|
|
83
|
+
size?: number | undefined;
|
|
84
|
+
}, {
|
|
85
|
+
path: string;
|
|
86
|
+
type: "added" | "changed" | "removed";
|
|
87
|
+
timestamp: string;
|
|
88
|
+
size?: number | undefined;
|
|
89
|
+
}>;
|
|
90
|
+
readonly actionSchema: z.ZodObject<{
|
|
91
|
+
type: z.ZodEnum<["refresh", "clear"]>;
|
|
92
|
+
}, "strip", z.ZodTypeAny, {
|
|
93
|
+
type: "refresh" | "clear";
|
|
94
|
+
}, {
|
|
95
|
+
type: "refresh" | "clear";
|
|
96
|
+
}>;
|
|
97
|
+
private config?;
|
|
98
|
+
private watcher?;
|
|
99
|
+
private pendingEvents;
|
|
100
|
+
initialize(config: FileWatcherConfig): Promise<void>;
|
|
101
|
+
private handleEvent;
|
|
102
|
+
private matchesPatterns;
|
|
103
|
+
listen(): Promise<FileWatcherEvent[]>;
|
|
104
|
+
execute(action: FileWatcherAction): Promise<void>;
|
|
105
|
+
updateConfig(updates: Partial<FileWatcherConfig>): Promise<FileWatcherConfig>;
|
|
106
|
+
getConfig(): FileWatcherConfig;
|
|
107
|
+
healthCheck(): Promise<PluginHealthStatus>;
|
|
108
|
+
shutdown(): Promise<void>;
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/implementations/file-watcher/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAK5D,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;EASlC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAGxE,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;EAKjC,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAGtE,eAAO,MAAM,uBAAuB;;;;;;EAElC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAoDxE;;;;;;;;GAQG;AACH,qBAAa,iBAAkB,YAAW,MAAM,CAC9C,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,CAClB;IACC,QAAQ,CAAC,IAAI,kBAAkB;IAC/B,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,WAAW,mDAAmD;IACvE,QAAQ,CAAC,YAAY;;;;;;;;;;;;;;;OAA2B;IAChD,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;OAA0B;IAC9C,QAAQ,CAAC,YAAY;;;;;;OAA2B;IAEhD,OAAO,CAAC,MAAM,CAAC,CAAoB;IACnC,OAAO,CAAC,OAAO,CAAC,CAAY;IAC5B,OAAO,CAAC,aAAa,CAA0B;IAEzC,UAAU,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;YAiC5C,WAAW;IAwBzB,OAAO,CAAC,eAAe;IAOjB,MAAM,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAMrC,OAAO,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAWjD,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAcnF,SAAS,IAAI,iBAAiB;IAOxB,WAAW,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAgC1C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAOhC"}
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import * as fs from 'fs/promises';
|
|
3
|
+
import * as path from 'path';
|
|
4
|
+
import { watch } from 'chokidar';
|
|
5
|
+
import micromatch from 'micromatch';
|
|
6
|
+
// Configuration schema
|
|
7
|
+
export const FileWatcherConfigSchema = z.object({
|
|
8
|
+
paths: z.array(z.string()).describe('Directories to watch'),
|
|
9
|
+
patterns: z.array(z.string()).default(['**/*.md']).describe('Glob patterns to match'),
|
|
10
|
+
ignorePatterns: z.array(z.string()).default([
|
|
11
|
+
'**/node_modules/**',
|
|
12
|
+
'**/.git/**',
|
|
13
|
+
'**/dist/**',
|
|
14
|
+
]).describe('Patterns to ignore'),
|
|
15
|
+
pollInterval: z.number().default(1000).describe('Polling interval in ms'),
|
|
16
|
+
});
|
|
17
|
+
// Event schema
|
|
18
|
+
export const FileWatcherEventSchema = z.object({
|
|
19
|
+
type: z.enum(['added', 'changed', 'removed']),
|
|
20
|
+
path: z.string(),
|
|
21
|
+
timestamp: z.string(),
|
|
22
|
+
size: z.number().optional(),
|
|
23
|
+
});
|
|
24
|
+
// Action schema (minimal for this plugin)
|
|
25
|
+
export const FileWatcherActionSchema = z.object({
|
|
26
|
+
type: z.enum(['refresh', 'clear']),
|
|
27
|
+
});
|
|
28
|
+
/**
|
|
29
|
+
* Sensitive directories that should never be watched
|
|
30
|
+
*/
|
|
31
|
+
const FORBIDDEN_PATHS = [
|
|
32
|
+
'/etc',
|
|
33
|
+
'/sys',
|
|
34
|
+
'/proc',
|
|
35
|
+
'/dev',
|
|
36
|
+
'/root',
|
|
37
|
+
'/boot',
|
|
38
|
+
'/var/log',
|
|
39
|
+
'/usr/bin',
|
|
40
|
+
'/usr/sbin',
|
|
41
|
+
'/bin',
|
|
42
|
+
'/sbin',
|
|
43
|
+
process.env.HOME + '/.ssh',
|
|
44
|
+
process.env.HOME + '/.aws',
|
|
45
|
+
process.env.HOME + '/.config',
|
|
46
|
+
'/Windows',
|
|
47
|
+
'/System',
|
|
48
|
+
'C:\\Windows',
|
|
49
|
+
'C:\\System',
|
|
50
|
+
];
|
|
51
|
+
/**
|
|
52
|
+
* Validate that a path is safe to watch
|
|
53
|
+
* Prevents watching sensitive system directories
|
|
54
|
+
*/
|
|
55
|
+
function validateSafePath(watchPath) {
|
|
56
|
+
const resolved = path.resolve(watchPath);
|
|
57
|
+
// Check if path starts with any forbidden path
|
|
58
|
+
for (const forbidden of FORBIDDEN_PATHS) {
|
|
59
|
+
if (forbidden && resolved.startsWith(forbidden)) {
|
|
60
|
+
throw new Error(`Security: Cannot watch sensitive directory '${watchPath}'. ` +
|
|
61
|
+
`File watcher is restricted to project directories only.`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// Warn if watching root or very high-level directories
|
|
65
|
+
if (resolved === '/' || resolved === 'C:\\' || resolved.split(path.sep).length <= 2) {
|
|
66
|
+
throw new Error(`Security: Cannot watch root or high-level directory '${watchPath}'. ` +
|
|
67
|
+
`Please specify a more specific directory within your project.`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* File System Watcher Plugin
|
|
72
|
+
*
|
|
73
|
+
* Monitors knowledge base files for changes and reports them as events.
|
|
74
|
+
* Useful for keeping navigators aware of documentation updates.
|
|
75
|
+
*
|
|
76
|
+
* Security: Only watches directories within the project scope,
|
|
77
|
+
* prevents watching sensitive system directories.
|
|
78
|
+
*/
|
|
79
|
+
export class FileWatcherPlugin {
|
|
80
|
+
name = 'file-watcher';
|
|
81
|
+
version = '1.0.0';
|
|
82
|
+
description = 'Monitor file system changes in knowledge base';
|
|
83
|
+
configSchema = FileWatcherConfigSchema;
|
|
84
|
+
eventSchema = FileWatcherEventSchema;
|
|
85
|
+
actionSchema = FileWatcherActionSchema;
|
|
86
|
+
config;
|
|
87
|
+
watcher;
|
|
88
|
+
pendingEvents = [];
|
|
89
|
+
async initialize(config) {
|
|
90
|
+
this.config = config;
|
|
91
|
+
// Validate paths exist and are safe to watch
|
|
92
|
+
for (const watchPath of config.paths) {
|
|
93
|
+
// Security: Validate path is not in sensitive directory
|
|
94
|
+
validateSafePath(watchPath);
|
|
95
|
+
try {
|
|
96
|
+
await fs.access(watchPath);
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
throw new Error(`Watch path does not exist: ${watchPath}`);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
// Initialize watcher
|
|
103
|
+
this.watcher = watch(config.paths, {
|
|
104
|
+
ignored: config.ignorePatterns,
|
|
105
|
+
persistent: true,
|
|
106
|
+
ignoreInitial: true,
|
|
107
|
+
awaitWriteFinish: {
|
|
108
|
+
stabilityThreshold: 500,
|
|
109
|
+
pollInterval: config.pollInterval,
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
// Set up event listeners
|
|
113
|
+
this.watcher
|
|
114
|
+
.on('add', (filePath) => this.handleEvent('added', filePath))
|
|
115
|
+
.on('change', (filePath) => this.handleEvent('changed', filePath))
|
|
116
|
+
.on('unlink', (filePath) => this.handleEvent('removed', filePath));
|
|
117
|
+
}
|
|
118
|
+
async handleEvent(type, filePath) {
|
|
119
|
+
// Check if matches patterns
|
|
120
|
+
if (!this.matchesPatterns(filePath)) {
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
let size;
|
|
124
|
+
if (type !== 'removed') {
|
|
125
|
+
try {
|
|
126
|
+
const stats = await fs.stat(filePath);
|
|
127
|
+
size = stats.size;
|
|
128
|
+
}
|
|
129
|
+
catch {
|
|
130
|
+
// File might have been deleted between event and stat
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
this.pendingEvents.push({
|
|
134
|
+
type,
|
|
135
|
+
path: filePath,
|
|
136
|
+
timestamp: new Date().toISOString(),
|
|
137
|
+
size,
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
matchesPatterns(filePath) {
|
|
141
|
+
if (!this.config)
|
|
142
|
+
return false;
|
|
143
|
+
// Use micromatch for efficient and accurate glob pattern matching
|
|
144
|
+
return micromatch.isMatch(filePath, this.config.patterns);
|
|
145
|
+
}
|
|
146
|
+
async listen() {
|
|
147
|
+
const events = [...this.pendingEvents];
|
|
148
|
+
this.pendingEvents = [];
|
|
149
|
+
return events;
|
|
150
|
+
}
|
|
151
|
+
async execute(action) {
|
|
152
|
+
switch (action.type) {
|
|
153
|
+
case 'clear':
|
|
154
|
+
this.pendingEvents = [];
|
|
155
|
+
break;
|
|
156
|
+
case 'refresh':
|
|
157
|
+
// Force re-scan (optional enhancement)
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
async updateConfig(updates) {
|
|
162
|
+
if (!this.config) {
|
|
163
|
+
throw new Error('Plugin not initialized');
|
|
164
|
+
}
|
|
165
|
+
const newConfig = { ...this.config, ...updates };
|
|
166
|
+
// Re-initialize with new config
|
|
167
|
+
await this.shutdown();
|
|
168
|
+
await this.initialize(newConfig);
|
|
169
|
+
return newConfig;
|
|
170
|
+
}
|
|
171
|
+
getConfig() {
|
|
172
|
+
if (!this.config) {
|
|
173
|
+
throw new Error('Plugin not initialized');
|
|
174
|
+
}
|
|
175
|
+
return { ...this.config };
|
|
176
|
+
}
|
|
177
|
+
async healthCheck() {
|
|
178
|
+
if (!this.watcher) {
|
|
179
|
+
return {
|
|
180
|
+
healthy: false,
|
|
181
|
+
message: 'Watcher not initialized',
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
// Check if watched paths still exist
|
|
185
|
+
const pathsExist = await Promise.all((this.config?.paths || []).map(async (p) => {
|
|
186
|
+
try {
|
|
187
|
+
await fs.access(p);
|
|
188
|
+
return true;
|
|
189
|
+
}
|
|
190
|
+
catch {
|
|
191
|
+
return false;
|
|
192
|
+
}
|
|
193
|
+
}));
|
|
194
|
+
const allPathsExist = pathsExist.every(exists => exists);
|
|
195
|
+
return {
|
|
196
|
+
healthy: allPathsExist,
|
|
197
|
+
message: allPathsExist ? 'All watched paths accessible' : 'Some watched paths missing',
|
|
198
|
+
metadata: {
|
|
199
|
+
watchedPaths: this.config?.paths,
|
|
200
|
+
pendingEvents: this.pendingEvents.length,
|
|
201
|
+
},
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
async shutdown() {
|
|
205
|
+
if (this.watcher) {
|
|
206
|
+
await this.watcher.close();
|
|
207
|
+
this.watcher = undefined;
|
|
208
|
+
}
|
|
209
|
+
this.pendingEvents = [];
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/implementations/file-watcher/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { Plugin, PluginHealthStatus } from '../../types.js';
|
|
3
|
+
export declare const GitHubConfigSchema: z.ZodObject<{
|
|
4
|
+
token: z.ZodString;
|
|
5
|
+
owner: z.ZodString;
|
|
6
|
+
repo: z.ZodString;
|
|
7
|
+
watchIssues: z.ZodDefault<z.ZodBoolean>;
|
|
8
|
+
watchPullRequests: z.ZodDefault<z.ZodBoolean>;
|
|
9
|
+
watchCommits: z.ZodDefault<z.ZodBoolean>;
|
|
10
|
+
pollIntervalMinutes: z.ZodDefault<z.ZodNumber>;
|
|
11
|
+
}, "strip", z.ZodTypeAny, {
|
|
12
|
+
token: string;
|
|
13
|
+
owner: string;
|
|
14
|
+
repo: string;
|
|
15
|
+
watchIssues: boolean;
|
|
16
|
+
watchPullRequests: boolean;
|
|
17
|
+
watchCommits: boolean;
|
|
18
|
+
pollIntervalMinutes: number;
|
|
19
|
+
}, {
|
|
20
|
+
token: string;
|
|
21
|
+
owner: string;
|
|
22
|
+
repo: string;
|
|
23
|
+
watchIssues?: boolean | undefined;
|
|
24
|
+
watchPullRequests?: boolean | undefined;
|
|
25
|
+
watchCommits?: boolean | undefined;
|
|
26
|
+
pollIntervalMinutes?: number | undefined;
|
|
27
|
+
}>;
|
|
28
|
+
export type GitHubConfig = z.infer<typeof GitHubConfigSchema>;
|
|
29
|
+
export declare const GitHubEventSchema: z.ZodObject<{
|
|
30
|
+
type: z.ZodEnum<["issue", "pull_request", "commit", "comment"]>;
|
|
31
|
+
action: z.ZodEnum<["opened", "closed", "updated", "commented"]>;
|
|
32
|
+
number: z.ZodOptional<z.ZodNumber>;
|
|
33
|
+
sha: z.ZodOptional<z.ZodString>;
|
|
34
|
+
title: z.ZodOptional<z.ZodString>;
|
|
35
|
+
body: z.ZodOptional<z.ZodString>;
|
|
36
|
+
author: z.ZodString;
|
|
37
|
+
url: z.ZodString;
|
|
38
|
+
timestamp: z.ZodString;
|
|
39
|
+
}, "strip", z.ZodTypeAny, {
|
|
40
|
+
type: "issue" | "pull_request" | "commit" | "comment";
|
|
41
|
+
timestamp: string;
|
|
42
|
+
action: "opened" | "closed" | "updated" | "commented";
|
|
43
|
+
author: string;
|
|
44
|
+
url: string;
|
|
45
|
+
number?: number | undefined;
|
|
46
|
+
sha?: string | undefined;
|
|
47
|
+
title?: string | undefined;
|
|
48
|
+
body?: string | undefined;
|
|
49
|
+
}, {
|
|
50
|
+
type: "issue" | "pull_request" | "commit" | "comment";
|
|
51
|
+
timestamp: string;
|
|
52
|
+
action: "opened" | "closed" | "updated" | "commented";
|
|
53
|
+
author: string;
|
|
54
|
+
url: string;
|
|
55
|
+
number?: number | undefined;
|
|
56
|
+
sha?: string | undefined;
|
|
57
|
+
title?: string | undefined;
|
|
58
|
+
body?: string | undefined;
|
|
59
|
+
}>;
|
|
60
|
+
export type GitHubEvent = z.infer<typeof GitHubEventSchema>;
|
|
61
|
+
export declare const GitHubActionSchema: z.ZodObject<{
|
|
62
|
+
type: z.ZodEnum<["create-issue", "comment-issue", "close-issue", "create-pr", "comment-pr", "merge-pr", "add-label"]>;
|
|
63
|
+
issueNumber: z.ZodOptional<z.ZodNumber>;
|
|
64
|
+
prNumber: z.ZodOptional<z.ZodNumber>;
|
|
65
|
+
title: z.ZodOptional<z.ZodString>;
|
|
66
|
+
body: z.ZodOptional<z.ZodString>;
|
|
67
|
+
comment: z.ZodOptional<z.ZodString>;
|
|
68
|
+
labels: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
69
|
+
head: z.ZodOptional<z.ZodString>;
|
|
70
|
+
base: z.ZodOptional<z.ZodString>;
|
|
71
|
+
}, "strip", z.ZodTypeAny, {
|
|
72
|
+
type: "create-issue" | "comment-issue" | "close-issue" | "create-pr" | "comment-pr" | "merge-pr" | "add-label";
|
|
73
|
+
comment?: string | undefined;
|
|
74
|
+
title?: string | undefined;
|
|
75
|
+
body?: string | undefined;
|
|
76
|
+
issueNumber?: number | undefined;
|
|
77
|
+
prNumber?: number | undefined;
|
|
78
|
+
labels?: string[] | undefined;
|
|
79
|
+
head?: string | undefined;
|
|
80
|
+
base?: string | undefined;
|
|
81
|
+
}, {
|
|
82
|
+
type: "create-issue" | "comment-issue" | "close-issue" | "create-pr" | "comment-pr" | "merge-pr" | "add-label";
|
|
83
|
+
comment?: string | undefined;
|
|
84
|
+
title?: string | undefined;
|
|
85
|
+
body?: string | undefined;
|
|
86
|
+
issueNumber?: number | undefined;
|
|
87
|
+
prNumber?: number | undefined;
|
|
88
|
+
labels?: string[] | undefined;
|
|
89
|
+
head?: string | undefined;
|
|
90
|
+
base?: string | undefined;
|
|
91
|
+
}>;
|
|
92
|
+
export type GitHubAction = z.infer<typeof GitHubActionSchema>;
|
|
93
|
+
/**
|
|
94
|
+
* GitHub Integration Plugin
|
|
95
|
+
*
|
|
96
|
+
* Enables navigators to monitor and interact with GitHub repositories.
|
|
97
|
+
* Supports issues, pull requests, commits, and comments.
|
|
98
|
+
*/
|
|
99
|
+
export declare class GitHubPlugin implements Plugin<GitHubConfig, GitHubEvent, GitHubAction> {
|
|
100
|
+
readonly name = "github";
|
|
101
|
+
readonly version = "1.0.0";
|
|
102
|
+
readonly description = "Monitor and interact with GitHub repositories";
|
|
103
|
+
readonly configSchema: z.ZodObject<{
|
|
104
|
+
token: z.ZodString;
|
|
105
|
+
owner: z.ZodString;
|
|
106
|
+
repo: z.ZodString;
|
|
107
|
+
watchIssues: z.ZodDefault<z.ZodBoolean>;
|
|
108
|
+
watchPullRequests: z.ZodDefault<z.ZodBoolean>;
|
|
109
|
+
watchCommits: z.ZodDefault<z.ZodBoolean>;
|
|
110
|
+
pollIntervalMinutes: z.ZodDefault<z.ZodNumber>;
|
|
111
|
+
}, "strip", z.ZodTypeAny, {
|
|
112
|
+
token: string;
|
|
113
|
+
owner: string;
|
|
114
|
+
repo: string;
|
|
115
|
+
watchIssues: boolean;
|
|
116
|
+
watchPullRequests: boolean;
|
|
117
|
+
watchCommits: boolean;
|
|
118
|
+
pollIntervalMinutes: number;
|
|
119
|
+
}, {
|
|
120
|
+
token: string;
|
|
121
|
+
owner: string;
|
|
122
|
+
repo: string;
|
|
123
|
+
watchIssues?: boolean | undefined;
|
|
124
|
+
watchPullRequests?: boolean | undefined;
|
|
125
|
+
watchCommits?: boolean | undefined;
|
|
126
|
+
pollIntervalMinutes?: number | undefined;
|
|
127
|
+
}>;
|
|
128
|
+
readonly eventSchema: z.ZodObject<{
|
|
129
|
+
type: z.ZodEnum<["issue", "pull_request", "commit", "comment"]>;
|
|
130
|
+
action: z.ZodEnum<["opened", "closed", "updated", "commented"]>;
|
|
131
|
+
number: z.ZodOptional<z.ZodNumber>;
|
|
132
|
+
sha: z.ZodOptional<z.ZodString>;
|
|
133
|
+
title: z.ZodOptional<z.ZodString>;
|
|
134
|
+
body: z.ZodOptional<z.ZodString>;
|
|
135
|
+
author: z.ZodString;
|
|
136
|
+
url: z.ZodString;
|
|
137
|
+
timestamp: z.ZodString;
|
|
138
|
+
}, "strip", z.ZodTypeAny, {
|
|
139
|
+
type: "issue" | "pull_request" | "commit" | "comment";
|
|
140
|
+
timestamp: string;
|
|
141
|
+
action: "opened" | "closed" | "updated" | "commented";
|
|
142
|
+
author: string;
|
|
143
|
+
url: string;
|
|
144
|
+
number?: number | undefined;
|
|
145
|
+
sha?: string | undefined;
|
|
146
|
+
title?: string | undefined;
|
|
147
|
+
body?: string | undefined;
|
|
148
|
+
}, {
|
|
149
|
+
type: "issue" | "pull_request" | "commit" | "comment";
|
|
150
|
+
timestamp: string;
|
|
151
|
+
action: "opened" | "closed" | "updated" | "commented";
|
|
152
|
+
author: string;
|
|
153
|
+
url: string;
|
|
154
|
+
number?: number | undefined;
|
|
155
|
+
sha?: string | undefined;
|
|
156
|
+
title?: string | undefined;
|
|
157
|
+
body?: string | undefined;
|
|
158
|
+
}>;
|
|
159
|
+
readonly actionSchema: z.ZodObject<{
|
|
160
|
+
type: z.ZodEnum<["create-issue", "comment-issue", "close-issue", "create-pr", "comment-pr", "merge-pr", "add-label"]>;
|
|
161
|
+
issueNumber: z.ZodOptional<z.ZodNumber>;
|
|
162
|
+
prNumber: z.ZodOptional<z.ZodNumber>;
|
|
163
|
+
title: z.ZodOptional<z.ZodString>;
|
|
164
|
+
body: z.ZodOptional<z.ZodString>;
|
|
165
|
+
comment: z.ZodOptional<z.ZodString>;
|
|
166
|
+
labels: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
167
|
+
head: z.ZodOptional<z.ZodString>;
|
|
168
|
+
base: z.ZodOptional<z.ZodString>;
|
|
169
|
+
}, "strip", z.ZodTypeAny, {
|
|
170
|
+
type: "create-issue" | "comment-issue" | "close-issue" | "create-pr" | "comment-pr" | "merge-pr" | "add-label";
|
|
171
|
+
comment?: string | undefined;
|
|
172
|
+
title?: string | undefined;
|
|
173
|
+
body?: string | undefined;
|
|
174
|
+
issueNumber?: number | undefined;
|
|
175
|
+
prNumber?: number | undefined;
|
|
176
|
+
labels?: string[] | undefined;
|
|
177
|
+
head?: string | undefined;
|
|
178
|
+
base?: string | undefined;
|
|
179
|
+
}, {
|
|
180
|
+
type: "create-issue" | "comment-issue" | "close-issue" | "create-pr" | "comment-pr" | "merge-pr" | "add-label";
|
|
181
|
+
comment?: string | undefined;
|
|
182
|
+
title?: string | undefined;
|
|
183
|
+
body?: string | undefined;
|
|
184
|
+
issueNumber?: number | undefined;
|
|
185
|
+
prNumber?: number | undefined;
|
|
186
|
+
labels?: string[] | undefined;
|
|
187
|
+
head?: string | undefined;
|
|
188
|
+
base?: string | undefined;
|
|
189
|
+
}>;
|
|
190
|
+
private config?;
|
|
191
|
+
private octokit?;
|
|
192
|
+
private lastCheckTime;
|
|
193
|
+
initialize(config: GitHubConfig): Promise<void>;
|
|
194
|
+
listen(): Promise<GitHubEvent[]>;
|
|
195
|
+
execute(action: GitHubAction): Promise<unknown>;
|
|
196
|
+
updateConfig(updates: Partial<GitHubConfig>): Promise<GitHubConfig>;
|
|
197
|
+
getConfig(): GitHubConfig;
|
|
198
|
+
healthCheck(): Promise<PluginHealthStatus>;
|
|
199
|
+
shutdown(): Promise<void>;
|
|
200
|
+
}
|
|
201
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/implementations/github/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAK5D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;EAQ7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAG9D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU5B,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAG5D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkB7B,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D;;;;;GAKG;AACH,qBAAa,YAAa,YAAW,MAAM,CAAC,YAAY,EAAE,WAAW,EAAE,YAAY,CAAC;IAClF,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,OAAO,WAAW;IAC3B,QAAQ,CAAC,WAAW,mDAAmD;IACvE,QAAQ,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;OAAsB;IAC3C,QAAQ,CAAC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAAqB;IACzC,QAAQ,CAAC,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAAsB;IAE3C,OAAO,CAAC,MAAM,CAAC,CAAe;IAC9B,OAAO,CAAC,OAAO,CAAC,CAAU;IAC1B,OAAO,CAAC,aAAa,CAAqB;IAEpC,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB/C,MAAM,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAuGhC,OAAO,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC;IAsI/C,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC;IAsBzE,SAAS,IAAI,YAAY;IAOnB,WAAW,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAiC1C,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;CAIhC"}
|