@zhijiewang/openharness 0.5.0 → 0.6.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 +1 -5
- package/dist/commands/cybergotchi.d.ts.map +1 -1
- package/dist/commands/cybergotchi.js +22 -19
- package/dist/commands/cybergotchi.js.map +1 -1
- package/dist/components/App.d.ts +1 -1
- package/dist/components/App.d.ts.map +1 -1
- package/dist/components/App.js +58 -2
- package/dist/components/App.js.map +1 -1
- package/dist/components/CompanionFooter.d.ts +9 -0
- package/dist/components/CompanionFooter.d.ts.map +1 -0
- package/dist/components/CompanionFooter.js +13 -0
- package/dist/components/CompanionFooter.js.map +1 -0
- package/dist/components/CybergotchiBubble.d.ts +2 -1
- package/dist/components/CybergotchiBubble.d.ts.map +1 -1
- package/dist/components/CybergotchiBubble.js +4 -5
- package/dist/components/CybergotchiBubble.js.map +1 -1
- package/dist/components/CybergotchiPanel.d.ts +5 -4
- package/dist/components/CybergotchiPanel.d.ts.map +1 -1
- package/dist/components/CybergotchiPanel.js +4 -2
- package/dist/components/CybergotchiPanel.js.map +1 -1
- package/dist/components/CybergotchiPanelConnected.js +4 -4
- package/dist/components/CybergotchiPanelConnected.js.map +1 -1
- package/dist/components/CybergotchiSetup.d.ts.map +1 -1
- package/dist/components/CybergotchiSetup.js +25 -61
- package/dist/components/CybergotchiSetup.js.map +1 -1
- package/dist/components/CybergotchiSprite.d.ts +5 -4
- package/dist/components/CybergotchiSprite.d.ts.map +1 -1
- package/dist/components/CybergotchiSprite.js +16 -9
- package/dist/components/CybergotchiSprite.js.map +1 -1
- package/dist/components/DiffView.d.ts +27 -0
- package/dist/components/DiffView.d.ts.map +1 -0
- package/dist/components/DiffView.js +74 -0
- package/dist/components/DiffView.js.map +1 -0
- package/dist/components/Messages.js +1 -1
- package/dist/components/Messages.js.map +1 -1
- package/dist/components/PermissionPrompt.d.ts.map +1 -1
- package/dist/components/PermissionPrompt.js +61 -8
- package/dist/components/PermissionPrompt.js.map +1 -1
- package/dist/components/REPL.d.ts.map +1 -1
- package/dist/components/REPL.js +75 -21
- package/dist/components/REPL.js.map +1 -1
- package/dist/components/TextInput.d.ts +2 -1
- package/dist/components/TextInput.d.ts.map +1 -1
- package/dist/components/TextInput.js +110 -6
- package/dist/components/TextInput.js.map +1 -1
- package/dist/cybergotchi/bones.d.ts +12 -0
- package/dist/cybergotchi/bones.d.ts.map +1 -0
- package/dist/cybergotchi/bones.js +89 -0
- package/dist/cybergotchi/bones.js.map +1 -0
- package/dist/cybergotchi/config.d.ts +14 -4
- package/dist/cybergotchi/config.d.ts.map +1 -1
- package/dist/cybergotchi/config.js +62 -9
- package/dist/cybergotchi/config.js.map +1 -1
- package/dist/cybergotchi/needs.d.ts +4 -4
- package/dist/cybergotchi/needs.d.ts.map +1 -1
- package/dist/cybergotchi/needs.js.map +1 -1
- package/dist/cybergotchi/personality.d.ts +11 -0
- package/dist/cybergotchi/personality.d.ts.map +1 -0
- package/dist/cybergotchi/personality.js +26 -0
- package/dist/cybergotchi/personality.js.map +1 -0
- package/dist/cybergotchi/species.d.ts +0 -1
- package/dist/cybergotchi/species.d.ts.map +1 -1
- package/dist/cybergotchi/species.js +253 -229
- package/dist/cybergotchi/species.js.map +1 -1
- package/dist/cybergotchi/types.d.ts +45 -7
- package/dist/cybergotchi/types.d.ts.map +1 -1
- package/dist/cybergotchi/types.js +36 -5
- package/dist/cybergotchi/types.js.map +1 -1
- package/dist/cybergotchi/useCybergotchi.d.ts +7 -5
- package/dist/cybergotchi/useCybergotchi.d.ts.map +1 -1
- package/dist/cybergotchi/useCybergotchi.js +27 -16
- package/dist/cybergotchi/useCybergotchi.js.map +1 -1
- package/dist/git/index.d.ts +9 -0
- package/dist/git/index.d.ts.map +1 -1
- package/dist/git/index.js +31 -0
- package/dist/git/index.js.map +1 -1
- package/dist/harness/config.d.ts +5 -0
- package/dist/harness/config.d.ts.map +1 -1
- package/dist/harness/config.js.map +1 -1
- package/dist/harness/credentials.d.ts +24 -0
- package/dist/harness/credentials.d.ts.map +1 -0
- package/dist/harness/credentials.js +104 -0
- package/dist/harness/credentials.js.map +1 -0
- package/dist/harness/hooks.d.ts +8 -0
- package/dist/harness/hooks.d.ts.map +1 -1
- package/dist/harness/hooks.js +98 -22
- package/dist/harness/hooks.js.map +1 -1
- package/dist/harness/keybindings.d.ts +37 -0
- package/dist/harness/keybindings.d.ts.map +1 -0
- package/dist/harness/keybindings.js +134 -0
- package/dist/harness/keybindings.js.map +1 -0
- package/dist/harness/memory.d.ts +35 -0
- package/dist/harness/memory.d.ts.map +1 -0
- package/dist/harness/memory.js +115 -0
- package/dist/harness/memory.js.map +1 -0
- package/dist/harness/plugins.d.ts +57 -0
- package/dist/harness/plugins.d.ts.map +1 -0
- package/dist/harness/plugins.js +142 -0
- package/dist/harness/plugins.js.map +1 -0
- package/dist/harness/session.d.ts +5 -0
- package/dist/harness/session.d.ts.map +1 -1
- package/dist/harness/session.js +39 -1
- package/dist/harness/session.js.map +1 -1
- package/dist/lsp/client.d.ts +58 -0
- package/dist/lsp/client.d.ts.map +1 -0
- package/dist/lsp/client.js +174 -0
- package/dist/lsp/client.js.map +1 -0
- package/dist/main.js +161 -1
- package/dist/main.js.map +1 -1
- package/dist/mcp/DeferredMcpTool.d.ts +30 -0
- package/dist/mcp/DeferredMcpTool.d.ts.map +1 -0
- package/dist/mcp/DeferredMcpTool.js +75 -0
- package/dist/mcp/DeferredMcpTool.js.map +1 -0
- package/dist/mcp/client.d.ts +7 -0
- package/dist/mcp/client.d.ts.map +1 -1
- package/dist/mcp/client.js +56 -8
- package/dist/mcp/client.js.map +1 -1
- package/dist/mcp/loader.d.ts +9 -0
- package/dist/mcp/loader.d.ts.map +1 -1
- package/dist/mcp/loader.js +43 -2
- package/dist/mcp/loader.js.map +1 -1
- package/dist/mcp/schema.d.ts +7 -0
- package/dist/mcp/schema.d.ts.map +1 -0
- package/dist/mcp/schema.js +41 -0
- package/dist/mcp/schema.js.map +1 -0
- package/dist/mcp/server.d.ts +16 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +94 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/providers/anthropic.d.ts +1 -1
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/base.d.ts +15 -0
- package/dist/providers/base.d.ts.map +1 -1
- package/dist/providers/base.js +13 -1
- package/dist/providers/base.js.map +1 -1
- package/dist/providers/openai.d.ts +1 -1
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js.map +1 -1
- package/dist/query.d.ts.map +1 -1
- package/dist/query.js +91 -14
- package/dist/query.js.map +1 -1
- package/dist/remote/server.d.ts +31 -0
- package/dist/remote/server.d.ts.map +1 -0
- package/dist/remote/server.js +163 -0
- package/dist/remote/server.js.map +1 -0
- package/dist/services/AgentDispatcher.d.ts +42 -0
- package/dist/services/AgentDispatcher.d.ts.map +1 -0
- package/dist/services/AgentDispatcher.js +181 -0
- package/dist/services/AgentDispatcher.js.map +1 -0
- package/dist/services/StreamingToolExecutor.d.ts +2 -1
- package/dist/services/StreamingToolExecutor.d.ts.map +1 -1
- package/dist/services/StreamingToolExecutor.js +11 -2
- package/dist/services/StreamingToolExecutor.js.map +1 -1
- package/dist/tools/AgentTool/index.d.ts +3 -0
- package/dist/tools/AgentTool/index.d.ts.map +1 -1
- package/dist/tools/AgentTool/index.js +54 -16
- package/dist/tools/AgentTool/index.js.map +1 -1
- package/dist/tools/DiagnosticsTool/index.d.ts +21 -0
- package/dist/tools/DiagnosticsTool/index.d.ts.map +1 -0
- package/dist/tools/DiagnosticsTool/index.js +108 -0
- package/dist/tools/DiagnosticsTool/index.js.map +1 -0
- package/dist/tools/GrepTool/index.d.ts +2 -2
- package/dist/tools/ParallelAgentTool/index.d.ts +37 -0
- package/dist/tools/ParallelAgentTool/index.d.ts.map +1 -0
- package/dist/tools/ParallelAgentTool/index.js +53 -0
- package/dist/tools/ParallelAgentTool/index.js.map +1 -0
- package/dist/tools/SkillTool/index.d.ts.map +1 -1
- package/dist/tools/SkillTool/index.js +22 -27
- package/dist/tools/SkillTool/index.js.map +1 -1
- package/dist/tools/ToolSearchTool/index.d.ts +15 -0
- package/dist/tools/ToolSearchTool/index.d.ts.map +1 -0
- package/dist/tools/ToolSearchTool/index.js +50 -0
- package/dist/tools/ToolSearchTool/index.js.map +1 -0
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +9 -0
- package/dist/tools.js.map +1 -1
- package/dist/types/message.d.ts +2 -0
- package/dist/types/message.d.ts.map +1 -1
- package/dist/types/message.js +3 -0
- package/dist/types/message.js.map +1 -1
- package/dist/types/permissions.d.ts +2 -0
- package/dist/types/permissions.d.ts.map +1 -1
- package/dist/types/permissions.js +30 -0
- package/dist/types/permissions.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/types/message.ts"],"names":[],"mappings":"AAAA;;GAEG;AA2BH,MAAM,UAAU,aAAa,CAC3B,IAAU,EACV,OAAe,EACf,KAAoE;IAEpE,OAAO;QACL,IAAI;QACJ,OAAO;QACP,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE;QACzB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,GAAG,KAAK;KACT,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,OAAO,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,OAAO,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,OAAe,EACf,SAA+B;IAE/B,OAAO,aAAa,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAkB;IACxD,OAAO,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACzE,CAAC"}
|
|
1
|
+
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/types/message.ts"],"names":[],"mappings":"AAAA;;GAEG;AA2BH,MAAM,UAAU,aAAa,CAC3B,IAAU,EACV,OAAe,EACf,KAAoE;IAEpE,OAAO;QACL,IAAI;QACJ,OAAO;QACP,IAAI,EAAE,MAAM,CAAC,UAAU,EAAE;QACzB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,GAAG,KAAK;KACT,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,OAAO,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,OAAO,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;AACpF,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAe;IAC/C,OAAO,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,OAAe,EACf,SAA+B;IAE/B,OAAO,aAAa,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAkB;IACxD,OAAO,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACzE,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Permission types — tool permission context and risk-based gating.
|
|
3
3
|
*/
|
|
4
|
+
import type { ToolPermissionRule } from "../harness/config.js";
|
|
4
5
|
export type PermissionMode = "ask" | "trust" | "deny" | "acceptEdits" | "plan";
|
|
5
6
|
export type RiskLevel = "low" | "medium" | "high";
|
|
6
7
|
export type PermissionResult = {
|
|
@@ -9,5 +10,6 @@ export type PermissionResult = {
|
|
|
9
10
|
readonly riskLevel: RiskLevel;
|
|
10
11
|
};
|
|
11
12
|
export type AskUserFn = (toolName: string, description: string, riskLevel?: RiskLevel) => Promise<boolean>;
|
|
13
|
+
export declare function setToolPermissionRules(rules: ToolPermissionRule[] | undefined): void;
|
|
12
14
|
export declare function checkPermission(mode: PermissionMode, riskLevel: RiskLevel, isReadOnly: boolean, toolName?: string): PermissionResult;
|
|
13
15
|
//# sourceMappingURL=permissions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/types/permissions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,aAAa,GAAG,MAAM,CAAC;AAE/E,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAElD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,CACtB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,SAAS,KAClB,OAAO,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/types/permissions.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,aAAa,GAAG,MAAM,CAAC;AAE/E,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAElD,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;CAC/B,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,CACtB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,SAAS,KAClB,OAAO,CAAC,OAAO,CAAC,CAAC;AAyBtB,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,SAAS,GAAG,IAAI,CAEpF;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,cAAc,EACpB,SAAS,EAAE,SAAS,EACpB,UAAU,EAAE,OAAO,EACnB,QAAQ,CAAC,EAAE,MAAM,GAChB,gBAAgB,CAwClB"}
|
|
@@ -6,7 +6,37 @@ const EDIT_SAFE_TOOLS = new Set([
|
|
|
6
6
|
"FileRead", "FileWrite", "FileEdit", "Glob", "Grep", "LS",
|
|
7
7
|
"ImageRead", "NotebookEdit",
|
|
8
8
|
]);
|
|
9
|
+
/** Match a tool name against a pattern (supports trailing * for prefix matching) */
|
|
10
|
+
function matchToolPattern(pattern, toolName) {
|
|
11
|
+
if (pattern.endsWith("*")) {
|
|
12
|
+
return toolName.startsWith(pattern.slice(0, -1));
|
|
13
|
+
}
|
|
14
|
+
return pattern === toolName;
|
|
15
|
+
}
|
|
16
|
+
/** Find the first matching tool permission rule */
|
|
17
|
+
function findToolRule(rules, toolName) {
|
|
18
|
+
if (!rules || rules.length === 0)
|
|
19
|
+
return undefined;
|
|
20
|
+
return rules.find(r => matchToolPattern(r.tool, toolName));
|
|
21
|
+
}
|
|
22
|
+
/** Cached tool permission rules — set by the REPL at startup */
|
|
23
|
+
let toolPermissionRules;
|
|
24
|
+
export function setToolPermissionRules(rules) {
|
|
25
|
+
toolPermissionRules = rules;
|
|
26
|
+
}
|
|
9
27
|
export function checkPermission(mode, riskLevel, isReadOnly, toolName) {
|
|
28
|
+
// Check per-tool permission rules first (highest priority)
|
|
29
|
+
if (toolName) {
|
|
30
|
+
const rule = findToolRule(toolPermissionRules, toolName);
|
|
31
|
+
if (rule) {
|
|
32
|
+
if (rule.action === "allow")
|
|
33
|
+
return { allowed: true, reason: "tool-rule-allow", riskLevel };
|
|
34
|
+
if (rule.action === "deny")
|
|
35
|
+
return { allowed: false, reason: "tool-rule-deny", riskLevel };
|
|
36
|
+
if (rule.action === "ask")
|
|
37
|
+
return { allowed: false, reason: "needs-approval", riskLevel };
|
|
38
|
+
}
|
|
39
|
+
}
|
|
10
40
|
// Always allow low-risk read-only
|
|
11
41
|
if (riskLevel === "low" && isReadOnly) {
|
|
12
42
|
return { allowed: true, reason: "auto-approved", riskLevel };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/types/permissions.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/types/permissions.ts"],"names":[],"mappings":"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"}
|