heyio 0.1.11 → 0.1.13

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.
@@ -133,6 +133,7 @@ Log important decisions with squad_log_decision so they persist.`,
133
133
  function buildAgentTools(squadSlug) {
134
134
  const shell = defineTool("shell", {
135
135
  description: "Run a shell command. Use for git, build tools, file operations, etc.",
136
+ skipPermission: true,
136
137
  parameters: z.object({
137
138
  command: z.string().describe("The command to run"),
138
139
  timeout_secs: z
@@ -172,6 +173,7 @@ function buildAgentTools(squadSlug) {
172
173
  });
173
174
  const fileOps = defineTool("file_ops", {
174
175
  description: "Read, write, or list files on the local filesystem.",
176
+ skipPermission: true,
175
177
  parameters: z.object({
176
178
  operation: z
177
179
  .enum(["read", "write", "list"])
@@ -230,6 +232,7 @@ function buildAgentTools(squadSlug) {
230
232
  });
231
233
  const squadLogDecision = defineTool("squad_log_decision", {
232
234
  description: "Log an important decision for this squad so it persists across sessions.",
235
+ skipPermission: true,
233
236
  parameters: z.object({
234
237
  decision: z.string().describe("The decision made"),
235
238
  context: z.string().optional().describe("Context or reasoning"),
@@ -76,7 +76,7 @@ Squads are persistent project teams. When a user works on a codebase:
76
76
  - \`squad_log_decision\`: Log a decision for a squad.
77
77
 
78
78
  ### System
79
- - \`shell\`: Run a shell command. You have full system access — you can create directories, install packages, clone repos, etc.
79
+ - \`shell\`: Run a shell command. You have full system access — you can create directories, install packages, clone repos, etc. **Always use this instead of the built-in \`bash\` tool.**
80
80
  - \`file_ops\`: Read, write, or list files anywhere on the filesystem. Can create directories automatically.
81
81
  - \`web_fetch\`: (built-in) Fetch a URL and return content.
82
82
 
@@ -90,6 +90,7 @@ Squads are persistent project teams. When a user works on a codebase:
90
90
  6. **Always try before refusing.** You run as a privileged daemon with full root access. Never assume a command will fail due to permissions — call the tool and report the actual result. Do not say "I can't" or "I don't have permission" without first attempting the operation. If a tool call returns an error, report the ACTUAL error message.
91
91
  7. **Use your tools proactively.** When a task requires shell or file operations, call the appropriate tool immediately. Do not describe what command you *would* run — just run it. For git operations, use the \`shell\` tool. For file operations, use \`file_ops\` or \`shell\`.
92
92
  8. **Never fabricate errors.** Only report errors that a tool actually returned. If you haven't called a tool, you don't know whether it will succeed or fail.
93
+ 9. **Prefer your custom tools over built-in tools.** Always use \`shell\` instead of \`bash\`. Always use \`file_ops\` instead of built-in file tools like \`str_replace_editor\` or \`read_file\`.
93
94
  ${selfEditBlock}${memoryBlock}`;
94
95
  }
95
96
  //# sourceMappingURL=system-message.js.map
@@ -6,6 +6,7 @@ import { join, dirname, resolve } from "path";
6
6
  export function createTools(deps) {
7
7
  const wikiRead = defineTool("wiki_read", {
8
8
  description: "Read a page from IO's knowledge base wiki. Path is relative to the wiki root (e.g., 'pages/preferences/editor.md').",
9
+ skipPermission: true,
9
10
  parameters: z.object({
10
11
  path: z.string().describe("Relative path to the wiki page"),
11
12
  }),
@@ -18,6 +19,7 @@ export function createTools(deps) {
18
19
  });
19
20
  const wikiWrite = defineTool("wiki_write", {
20
21
  description: "Write or update a page in IO's knowledge base. Use this to remember preferences, project details, and important facts. Path must be under pages/ and end in .md.",
22
+ skipPermission: true,
21
23
  parameters: z.object({
22
24
  path: z.string().describe("Relative path under pages/ (e.g., 'pages/preferences/clone-location.md')"),
23
25
  content: z.string().describe("Markdown content to write"),
@@ -35,6 +37,7 @@ export function createTools(deps) {
35
37
  });
36
38
  const wikiSearch = defineTool("wiki_search", {
37
39
  description: "Search IO's knowledge base for matching pages.",
40
+ skipPermission: true,
38
41
  parameters: z.object({
39
42
  query: z.string().describe("Search query"),
40
43
  }),
@@ -49,6 +52,7 @@ export function createTools(deps) {
49
52
  });
50
53
  const squadCreate = defineTool("squad_create", {
51
54
  description: "Create a persistent project squad. Squads remember decisions and context for a specific codebase.",
55
+ skipPermission: true,
52
56
  parameters: z.object({
53
57
  slug: z.string().describe("Unique identifier (e.g., 'michaeljolley-io')"),
54
58
  name: z.string().describe("Display name (e.g., 'IO Assistant')"),
@@ -66,6 +70,7 @@ export function createTools(deps) {
66
70
  });
67
71
  const squadRecall = defineTool("squad_recall", {
68
72
  description: "Recall a squad's context and past decisions. Use this before working on a project to load relevant history.",
73
+ skipPermission: true,
69
74
  parameters: z.object({
70
75
  slug: z.string().describe("Squad slug"),
71
76
  }),
@@ -79,6 +84,7 @@ export function createTools(deps) {
79
84
  });
80
85
  const squadStatus = defineTool("squad_status", {
81
86
  description: "List all squads and their status.",
87
+ skipPermission: true,
82
88
  parameters: z.object({}),
83
89
  handler: async () => {
84
90
  const squads = deps.listSquads();
@@ -91,6 +97,7 @@ export function createTools(deps) {
91
97
  });
92
98
  const squadLogDecision = defineTool("squad_log_decision", {
93
99
  description: "Log a decision for a squad. Use this to record important choices made during project work.",
100
+ skipPermission: true,
94
101
  parameters: z.object({
95
102
  slug: z.string().describe("Squad slug"),
96
103
  decision: z.string().describe("The decision made"),
@@ -108,6 +115,7 @@ export function createTools(deps) {
108
115
  });
109
116
  const shell = defineTool("shell", {
110
117
  description: "Run a shell command on the host machine. You have FULL ROOT ACCESS. Use for git, apt, npm, build tools, system administration, or anything else. There are NO permission restrictions — all commands are allowed and pre-approved.",
118
+ skipPermission: true,
111
119
  parameters: z.object({
112
120
  command: z.string().describe("The command to run"),
113
121
  timeout_secs: z.number().optional().describe("Timeout in seconds (default: 60)"),
@@ -142,6 +150,7 @@ export function createTools(deps) {
142
150
  });
143
151
  const fileOps = defineTool("file_ops", {
144
152
  description: "Read, write, list, or mkdir on the local filesystem. Full access to all paths.",
153
+ skipPermission: true,
145
154
  parameters: z.object({
146
155
  operation: z.enum(["read", "write", "list", "mkdir"]).describe("Operation to perform"),
147
156
  path: z.string().describe("File or directory path"),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "heyio",
3
- "version": "0.1.11",
3
+ "version": "0.1.13",
4
4
  "description": "IO — a personal AI assistant built on the GitHub Copilot SDK",
5
5
  "bin": {
6
6
  "io": "dist/index.js"