heyio 1.1.3 → 1.1.5

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.
@@ -25,6 +25,7 @@ You are IO, a personal AI assistant daemon. You run 24/7 on the user's machine,
25
25
  - Always delegate to the team lead, never to a specific agent (unless explicitly named by the user)
26
26
  - Never delegate unless explicitly asked — creating an issue ≠ request to start work
27
27
  - When creating squads, research the universe dynamically — never use hardcoded character lists
28
+ - **Always use the gh CLI** for all GitHub interactions (repos, issues, PRs, releases, actions, etc.). Only fall back to the GitHub API or other methods if gh is unavailable or cannot accomplish the task.
28
29
 
29
30
  ## Squad Coverage Requirements
30
31
  Every squad MUST have:
@@ -36,9 +37,9 @@ Every squad MUST have:
36
37
  All squad agents share the repo owner's gh identity. GitHub blocks self-approval. Veto reviewers use --comment with "LGTM" instead of --approve. Merge criteria: all veto-capable members have posted approving comments + CI passes + no conflicts.
37
38
  ${selfEditBlock}
38
39
  ## Source Code Convention
39
- - All repositories are cloned to ~/source/{owner}/{repo}
40
+ - All repositories are cloned to ~/.io/source/{owner}/{repo}
40
41
  - When creating a squad with a repo_url, the repo is automatically cloned there
41
- - When working with a squad's code, always use ~/source/{owner}/{repo} as the working directory
42
+ - When working with a squad's code, always use ~/.io/source/{owner}/{repo} as the working directory
42
43
 
43
44
  ## Environment
44
45
  - OS: ${process.platform}
@@ -70,16 +70,16 @@ export function createTools() {
70
70
  let cloneMsg = "";
71
71
  if (repo_url) {
72
72
  const { execSync } = await import("node:child_process");
73
- const { homedir } = await import("node:os");
74
73
  const { existsSync, mkdirSync } = await import("node:fs");
75
74
  const { join } = await import("node:path");
75
+ const { PATHS } = await import("../paths.js");
76
76
  // Extract owner/repo from URL (supports https and git@ formats)
77
77
  const match = repo_url.match(/[/:]([^/]+)\/([^/.]+?)(?:\.git)?$/);
78
78
  if (match) {
79
79
  const [, owner, repo] = match;
80
- const sourceDir = join(homedir(), "source", owner, repo);
80
+ const sourceDir = join(PATHS.source, owner, repo);
81
81
  if (!existsSync(sourceDir)) {
82
- const parentDir = join(homedir(), "source", owner);
82
+ const parentDir = join(PATHS.source, owner);
83
83
  if (!existsSync(parentDir))
84
84
  mkdirSync(parentDir, { recursive: true });
85
85
  try {
@@ -87,14 +87,14 @@ export function createTools() {
87
87
  encoding: "utf-8",
88
88
  timeout: 120_000,
89
89
  });
90
- cloneMsg = ` Repo cloned to ~/source/${owner}/${repo}.`;
90
+ cloneMsg = ` Repo cloned to ~/.io/source/${owner}/${repo}.`;
91
91
  }
92
92
  catch (err) {
93
93
  cloneMsg = ` (Clone failed: ${err.stderr?.trim() || err.message})`;
94
94
  }
95
95
  }
96
96
  else {
97
- cloneMsg = ` Repo already exists at ~/source/${owner}/${repo}.`;
97
+ cloneMsg = ` Repo already exists at ~/.io/source/${owner}/${repo}.`;
98
98
  }
99
99
  }
100
100
  }
package/dist/paths.js CHANGED
@@ -10,5 +10,6 @@ export const PATHS = {
10
10
  skills: join(IO_HOME, "skills"),
11
11
  mcpConfig: join(IO_HOME, "mcp.json"),
12
12
  sessions: join(IO_HOME, "sessions"),
13
+ source: join(IO_HOME, "source"),
13
14
  };
14
15
  //# sourceMappingURL=paths.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "heyio",
3
- "version": "1.1.3",
3
+ "version": "1.1.5",
4
4
  "description": "IO — a personal AI assistant daemon built on the GitHub Copilot SDK",
5
5
  "bin": {
6
6
  "io": "dist/index.js"