@polka-codes/core 0.6.5 → 0.6.6

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.
Files changed (2) hide show
  1. package/dist/index.js +78 -55
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -8237,6 +8237,25 @@ __export(exports_allTools, {
8237
8237
  askFollowupQuestion: () => askFollowupQuestion_default
8238
8238
  });
8239
8239
 
8240
+ // src/tool.ts
8241
+ var PermissionLevel;
8242
+ ((PermissionLevel2) => {
8243
+ PermissionLevel2[PermissionLevel2["None"] = 0] = "None";
8244
+ PermissionLevel2[PermissionLevel2["Read"] = 1] = "Read";
8245
+ PermissionLevel2[PermissionLevel2["Write"] = 2] = "Write";
8246
+ PermissionLevel2[PermissionLevel2["Arbitrary"] = 3] = "Arbitrary";
8247
+ })(PermissionLevel ||= {});
8248
+ var ToolResponseType;
8249
+ ((ToolResponseType2) => {
8250
+ ToolResponseType2["Reply"] = "Reply";
8251
+ ToolResponseType2["Exit"] = "Exit";
8252
+ ToolResponseType2["Invalid"] = "Invalid";
8253
+ ToolResponseType2["Error"] = "Error";
8254
+ ToolResponseType2["Interrupted"] = "Interrupted";
8255
+ ToolResponseType2["HandOver"] = "HandOver";
8256
+ ToolResponseType2["Delegate"] = "Delegate";
8257
+ })(ToolResponseType ||= {});
8258
+
8240
8259
  // src/tools/utils/replaceInFile.ts
8241
8260
  var replaceInFile = async (fileContent, diff) => {
8242
8261
  const blockPattern = /<<<<<+ SEARCH\s*\r?\n([\s\S]*?)\r?\n=======[ \t]*\r?\n([\s\S]*?)\r?\n?>>>>>+ REPLACE/g;
@@ -8385,7 +8404,8 @@ var toolInfo = {
8385
8404
  }
8386
8405
  ]
8387
8406
  }
8388
- ]
8407
+ ],
8408
+ permissionLevel: 0 /* None */
8389
8409
  };
8390
8410
  var handler = async (provider, args) => {
8391
8411
  if (!provider.askFollowupQuestion) {
@@ -8433,7 +8453,8 @@ var toolInfo2 = {
8433
8453
  }
8434
8454
  ]
8435
8455
  }
8436
- ]
8456
+ ],
8457
+ permissionLevel: 0 /* None */
8437
8458
  };
8438
8459
  var handler2 = async (provider, args) => {
8439
8460
  const result = getString(args, "result");
@@ -8509,7 +8530,8 @@ var toolInfo3 = {
8509
8530
  }
8510
8531
  ]
8511
8532
  }
8512
- ]
8533
+ ],
8534
+ permissionLevel: 0 /* None */
8513
8535
  };
8514
8536
  var handler3 = async (_provider, args) => {
8515
8537
  const agentName = getString(args, "agent_name");
@@ -8564,7 +8586,8 @@ var toolInfo4 = {
8564
8586
  }
8565
8587
  ]
8566
8588
  }
8567
- ]
8589
+ ],
8590
+ permissionLevel: 3 /* Arbitrary */
8568
8591
  };
8569
8592
  var handler4 = async (provider, args) => {
8570
8593
  if (!provider.executeCommand) {
@@ -8606,7 +8629,7 @@ var executeCommand_default = {
8606
8629
  // src/tools/listCodeDefinitionNames.ts
8607
8630
  var toolInfo5 = {
8608
8631
  name: "list_code_definition_names",
8609
- description: "Request to list definition names (classes, functions, methods, etc.) used in a file. This tool provides insights into the codebase structure and important constructs, encapsulating high-level concepts and relationships that are crucial for understanding the overall architecture.",
8632
+ description: "Request to list definition names (classes, functions, methods, etc.) used for all files in a directory. This tool provides insights into the codebase structure and important constructs, encapsulating high-level concepts and relationships that are crucial for understanding the overall architecture.",
8610
8633
  parameters: [
8611
8634
  {
8612
8635
  name: "path",
@@ -8614,7 +8637,19 @@ var toolInfo5 = {
8614
8637
  required: true,
8615
8638
  usageValue: "Directory path here"
8616
8639
  }
8617
- ]
8640
+ ],
8641
+ examples: [
8642
+ {
8643
+ description: "Request to list code definition names in a directory",
8644
+ parameters: [
8645
+ {
8646
+ name: "path",
8647
+ value: "src/utils"
8648
+ }
8649
+ ]
8650
+ }
8651
+ ],
8652
+ permissionLevel: 1 /* Read */
8618
8653
  };
8619
8654
  var handler5 = async (provider, args) => {
8620
8655
  if (!provider.listCodeDefinitionNames) {
@@ -8679,7 +8714,8 @@ var toolInfo6 = {
8679
8714
  }
8680
8715
  ]
8681
8716
  }
8682
- ]
8717
+ ],
8718
+ permissionLevel: 1 /* Read */
8683
8719
  };
8684
8720
  var handler6 = async (provider, args) => {
8685
8721
  if (!provider.listFiles) {
@@ -8741,7 +8777,8 @@ var toolInfo7 = {
8741
8777
  }
8742
8778
  ]
8743
8779
  }
8744
- ]
8780
+ ],
8781
+ permissionLevel: 1 /* Read */
8745
8782
  };
8746
8783
  var handler7 = async (provider, args) => {
8747
8784
  if (!provider.readFile) {
@@ -8858,7 +8895,8 @@ return (
8858
8895
  }
8859
8896
  ]
8860
8897
  }
8861
- ]
8898
+ ],
8899
+ permissionLevel: 2 /* Write */
8862
8900
  };
8863
8901
  var handler8 = async (provider, args) => {
8864
8902
  if (!provider.readFile || !provider.writeFile) {
@@ -8927,7 +8965,8 @@ var toolInfo9 = {
8927
8965
  }
8928
8966
  ]
8929
8967
  }
8930
- ]
8968
+ ],
8969
+ permissionLevel: 1 /* Read */
8931
8970
  };
8932
8971
  var handler9 = async (provider, args) => {
8933
8972
  if (!provider.searchFiles) {
@@ -9003,7 +9042,8 @@ export default App;
9003
9042
  }
9004
9043
  ]
9005
9044
  }
9006
- ]
9045
+ ],
9046
+ permissionLevel: 2 /* Write */
9007
9047
  };
9008
9048
  var handler10 = async (provider, args) => {
9009
9049
  if (!provider.writeFile) {
@@ -9080,7 +9120,8 @@ var toolInfo11 = {
9080
9120
  }
9081
9121
  ]
9082
9122
  }
9083
- ]
9123
+ ],
9124
+ permissionLevel: 0 /* None */
9084
9125
  };
9085
9126
  var handler11 = async (_provider, args) => {
9086
9127
  const agentName = getString(args, "agent_name");
@@ -9125,7 +9166,8 @@ var toolInfo12 = {
9125
9166
  }
9126
9167
  ]
9127
9168
  }
9128
- ]
9169
+ ],
9170
+ permissionLevel: 2 /* Write */
9129
9171
  };
9130
9172
  var handler12 = async (provider, args) => {
9131
9173
  if (!provider.removeFile) {
@@ -9181,7 +9223,8 @@ var toolInfo13 = {
9181
9223
  }
9182
9224
  ]
9183
9225
  }
9184
- ]
9226
+ ],
9227
+ permissionLevel: 2 /* Write */
9185
9228
  };
9186
9229
  var handler13 = async (provider, args) => {
9187
9230
  if (!provider.renameFile) {
@@ -9206,18 +9249,8 @@ var renameFile_default = {
9206
9249
  handler: handler13,
9207
9250
  isAvailable: isAvailable13
9208
9251
  };
9209
- // src/tool.ts
9210
- var ToolResponseType;
9211
- ((ToolResponseType2) => {
9212
- ToolResponseType2["Reply"] = "Reply";
9213
- ToolResponseType2["Exit"] = "Exit";
9214
- ToolResponseType2["Invalid"] = "Invalid";
9215
- ToolResponseType2["Error"] = "Error";
9216
- ToolResponseType2["Interrupted"] = "Interrupted";
9217
- ToolResponseType2["HandOver"] = "HandOver";
9218
- ToolResponseType2["Delegate"] = "Delegate";
9219
- })(ToolResponseType ||= {});
9220
- var getAvailableTools = (provider2, allTools2, hasAgent) => {
9252
+ // src/getAvailableTools.ts
9253
+ var getAvailableTools = (provider2, allTools2, hasAgent, permissionLevel) => {
9221
9254
  const tools = [];
9222
9255
  for (const tool of allTools2) {
9223
9256
  if (!hasAgent) {
@@ -9227,7 +9260,7 @@ var getAvailableTools = (provider2, allTools2, hasAgent) => {
9227
9260
  continue;
9228
9261
  }
9229
9262
  }
9230
- if (tool.isAvailable(provider2)) {
9263
+ if (tool.isAvailable(provider2) && tool.permissionLevel <= permissionLevel) {
9231
9264
  tools.push(tool);
9232
9265
  }
9233
9266
  }
@@ -9561,6 +9594,9 @@ ${agents}`;
9561
9594
  return await this.#processLoop(userMessage);
9562
9595
  }
9563
9596
  async#request(userMessage) {
9597
+ if (!userMessage) {
9598
+ throw new Error("userMessage is missing");
9599
+ }
9564
9600
  await this.#callback({ kind: "StartRequest" /* StartRequest */, agent: this, userMessage });
9565
9601
  this.messages.push({
9566
9602
  role: "user",
@@ -9609,6 +9645,12 @@ ${agents}`;
9609
9645
  case "text":
9610
9646
  break;
9611
9647
  case "tool_use": {
9648
+ if (toolReponses.length > 0) {
9649
+ const toolLevel = this.handlers[content.name].permissionLevel;
9650
+ if (toolLevel > 1 /* Read */) {
9651
+ break outer;
9652
+ }
9653
+ }
9612
9654
  await this.#callback({ kind: "ToolUse" /* ToolUse */, agent: this, tool: content.name });
9613
9655
  const toolResp = await this.#invokeTool(content.name, content.params);
9614
9656
  switch (toolResp.type) {
@@ -9631,7 +9673,7 @@ ${agents}`;
9631
9673
  return { exit: toolResp };
9632
9674
  case "HandOver" /* HandOver */:
9633
9675
  if (toolReponses.length > 0) {
9634
- continue;
9676
+ break outer;
9635
9677
  }
9636
9678
  await this.#callback({
9637
9679
  kind: "ToolHandOver" /* ToolHandOver */,
@@ -9662,7 +9704,7 @@ ${agents}`;
9662
9704
  }
9663
9705
  }
9664
9706
  }
9665
- if (toolReponses.length === 0 && !this.config.interactive) {
9707
+ if (toolReponses.length === 0) {
9666
9708
  return { replay: responsePrompts.requireUseTool };
9667
9709
  }
9668
9710
  const finalResp = toolReponses.map(({ tool, response: response2 }) => responsePrompts.toolResults(tool, response2)).join(`
@@ -9734,18 +9776,8 @@ ${interactiveMode(interactive)}
9734
9776
  // src/Agent/AnalyzerAgent/index.ts
9735
9777
  class AnalyzerAgent extends AgentBase {
9736
9778
  constructor(options) {
9737
- const agentTools = [
9738
- ...options.additionalTools ?? [],
9739
- askFollowupQuestion_default,
9740
- attemptCompletion_default,
9741
- handOver_default,
9742
- delegate_default,
9743
- listCodeDefinitionNames_default,
9744
- listFiles_default,
9745
- readFile_default,
9746
- searchFiles_default
9747
- ];
9748
- const tools = getAvailableTools(options.provider, agentTools, (options.agents?.length ?? 0) > 0);
9779
+ const combinedTools = [...options.additionalTools ?? [], ...Object.values(exports_allTools)];
9780
+ const tools = getAvailableTools(options.provider, combinedTools, (options.agents?.length ?? 0) > 0, 1 /* Read */);
9749
9781
  const toolNamePrefix = "tool_";
9750
9782
  const systemPrompt = fullSystemPrompt({
9751
9783
  os: options.os
@@ -9834,18 +9866,8 @@ ${interactiveMode(interactive)}
9834
9866
  // src/Agent/ArchitectAgent/index.ts
9835
9867
  class ArchitectAgent extends AgentBase {
9836
9868
  constructor(options) {
9837
- const agentTools = [
9838
- ...options.additionalTools ?? [],
9839
- askFollowupQuestion_default,
9840
- attemptCompletion_default,
9841
- handOver_default,
9842
- delegate_default,
9843
- listCodeDefinitionNames_default,
9844
- listFiles_default,
9845
- readFile_default,
9846
- searchFiles_default
9847
- ];
9848
- const tools = getAvailableTools(options.provider, agentTools, (options.agents?.length ?? 0) > 0);
9869
+ const combinedTools = [...options.additionalTools ?? [], ...Object.values(exports_allTools)];
9870
+ const tools = getAvailableTools(options.provider, combinedTools, (options.agents?.length ?? 0) > 0, 1 /* Read */);
9849
9871
  const toolNamePrefix = "tool_";
9850
9872
  const systemPrompt = fullSystemPrompt2({
9851
9873
  os: options.os
@@ -9958,7 +9980,7 @@ class CodeFixerAgent extends AgentBase {
9958
9980
  #retryCount = 0;
9959
9981
  constructor(options) {
9960
9982
  const combinedTools = [...options.additionalTools ?? [], ...Object.values(exports_allTools)];
9961
- const tools = getAvailableTools(options.provider, combinedTools, (options.agents?.length ?? 0) > 0);
9983
+ const tools = getAvailableTools(options.provider, combinedTools, (options.agents?.length ?? 0) > 0, 3 /* Arbitrary */);
9962
9984
  const toolNamePrefix = "tool_";
9963
9985
  const systemPrompt = fullSystemPrompt3({
9964
9986
  os: options.os
@@ -10146,7 +10168,7 @@ ${interactiveMode(interactive)}
10146
10168
  class CoderAgent extends AgentBase {
10147
10169
  constructor(options) {
10148
10170
  const combinedTools = [...options.additionalTools ?? [], ...Object.values(exports_allTools)];
10149
- const tools = getAvailableTools(options.provider, combinedTools, (options.agents?.length ?? 0) > 0);
10171
+ const tools = getAvailableTools(options.provider, combinedTools, (options.agents?.length ?? 0) > 0, 3 /* Arbitrary */);
10150
10172
  const toolNamePrefix = "tool_";
10151
10173
  const systemPrompt = fullSystemPrompt4({
10152
10174
  os: options.os
@@ -10685,6 +10707,7 @@ export {
10685
10707
  UsageMeter,
10686
10708
  ToolResponseType,
10687
10709
  TaskEventKind,
10710
+ PermissionLevel,
10688
10711
  MultiAgent,
10689
10712
  MockProvider,
10690
10713
  CoderAgent,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polka-codes/core",
3
- "version": "0.6.5",
3
+ "version": "0.6.6",
4
4
  "license": "AGPL-3.0",
5
5
  "author": "github@polka.codes",
6
6
  "type": "module",