@trygentic/agentloop 0.5.0-alpha.5 → 0.7.0-alpha.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 (3) hide show
  1. package/README.md +26 -35
  2. package/bin/agentloop +60 -83
  3. package/package.json +4 -4
package/README.md CHANGED
@@ -63,14 +63,33 @@ npm run build
63
63
  ```bash
64
64
  # Start interactive mode
65
65
  agentloop
66
+ ```
66
67
 
67
- # Run the orchestrator
68
- agentloop orchestrator
68
+ ### First-Time Setup
69
+
70
+ On first launch, AgentLoop opens the **Model Selection** screen. Choose how you want to connect:
71
+
72
+ 1. **AgentLoop Subscription** - Use subscription credits for premium models
73
+ 2. **Free Models** - Provided by OpenCode, no API key required
74
+ 3. **Bring Your Own API Key** - Connect your preferred provider:
75
+ - **Anthropic** - Direct API key or Claude Code CLI (recommended for Pro/Max subscribers)
76
+ - **OpenAI** - Direct API key
77
+ - **Google Gemini** - Direct API key
78
+ - **OpenRouter** - Access 100+ models
69
79
 
70
- # Send a single query
71
- agentloop query "Analyze the architecture of this project"
80
+ For Claude models with your Pro/Max subscription:
81
+ ```bash
82
+ # Install Claude Code CLI
83
+ npm install -g @anthropic-ai/claude-code
84
+
85
+ # Authenticate
86
+ claude
72
87
  ```
73
88
 
89
+ Then restart AgentLoop—your Claude models will appear automatically.
90
+
91
+ To change models later, use the `/models` command.
92
+
74
93
  ### Interacting with AgentLoop
75
94
 
76
95
  In interactive mode, you can communicate with agents using natural language—just type your message and press Enter. No slash commands required for conversations. AgentLoop uses tool calls behind the scenes to update the kanban board, manage tasks and dependencies in the DAG, and delegate work to specialized agents like Engineer and QA.
@@ -604,7 +623,7 @@ agentloop config
604
623
 
605
624
  ## Requirements
606
625
 
607
- - Node.js >= 18.0.0
626
+ - Node.js >= 22.0.0
608
627
  - npm or yarn
609
628
  - Podman (optional, for container sandboxing)
610
629
 
@@ -626,13 +645,9 @@ AgentLoop uses [OpenCode](https://github.com/anthropics/opencode) as a git submo
626
645
  ### Supported Providers
627
646
 
628
647
  All providers supported by OpenCode (via Vercel AI SDK):
629
- - **Anthropic** - Claude 4, Claude Sonnet, Claude Haiku
630
- - **OpenAI** - GPT-4o, o1, o3
631
- - **Google** - Gemini Pro, Gemini Flash
632
- - **xAI** - Grok
633
- - **DeepSeek** - DeepSeek Chat, DeepSeek Coder
648
+ - **Anthropic** - Claude Opus, Claude Sonnet, Claude Haiku
649
+ - **OpenAI** - Codex models
634
650
  - **OpenCode Zen** - Free tier for getting started
635
- - And many more through OpenRouter
636
651
 
637
652
 
638
653
  ## MCP Servers
@@ -690,30 +705,6 @@ For more MCP integration examples, see [docs/mcp/GITHUB_MCP_INTEGRATION.md](./do
690
705
 
691
706
  Built-in agent templates are distributed as part of the npm package in the `.claude/agents/` directory. When you install AgentLoop, these templates are automatically available and loaded by the agent system.
692
707
 
693
- ## Migration Notes
694
-
695
- This project recently migrated from a Single Executable Application (SEA) binary distribution to a standard npm package. See [docs/SEA_MIGRATION.md](./docs/SEA_MIGRATION.md) for details about the changes and benefits.
696
-
697
- ## Contributing
698
-
699
- Contributions are welcome! Please ensure:
700
-
701
- 1. Code follows the existing style (run `npm run format`)
702
- 2. TypeScript compiles without errors (`npm run typecheck`)
703
- 3. Linting passes (`npm run lint`)
704
- 4. Tests pass (`npm test`)
705
-
706
- ## Additional Documentation
707
-
708
- For more detailed information about specific features:
709
-
710
- - **[Architecture Overview](docs/architecture/overview.md)**: OpenCode integration and system architecture
711
- - **[Project-Scoped Tasks](docs/PROJECT_SCOPED_TASKS.md)**: How tasks are isolated by project directory
712
- - **[Project Metadata](docs/PROJECT_METADATA.md)**: Understanding project_name and project_id fields for remote syncing
713
- - **[Authentication](docs/auth/IMPLEMENTATION.md)**: Authentication flow and credential management
714
- - **[Mixpanel Integration](docs/MIXPANEL_IMPLEMENTATION.md)**: Telemetry and analytics
715
- - **[Other Documentation](docs/)**: Additional implementation details and guides
716
-
717
708
  ## License
718
709
 
719
710
  See [License](./license)
package/bin/agentloop CHANGED
@@ -1,83 +1,60 @@
1
- #!/usr/bin/env node
2
-
3
- /**
4
- * AgentLoop npm shim
5
- *
6
- * This thin wrapper finds and executes the platform-specific binary.
7
- * The binary is installed via optionalDependencies during npm install.
8
- */
9
-
10
- import { execSync, spawn } from "child_process";
11
- import fs from "fs";
12
- import os from "os";
13
- import path from "path";
14
- import { fileURLToPath } from "url";
15
-
16
- const __dirname = path.dirname(fileURLToPath(import.meta.url));
17
-
18
- function isMusl() {
19
- if (os.platform() !== "linux") return false;
20
- try {
21
- const output = execSync("ldd --version 2>&1", { encoding: "utf8" });
22
- return output.includes("musl");
23
- } catch {
24
- try {
25
- const release = fs.readFileSync("/etc/os-release", "utf8");
26
- return release.includes("Alpine");
27
- } catch {
28
- return false;
29
- }
30
- }
31
- }
32
-
33
- function findBinary() {
34
- const platform = os.platform() === "win32" ? "windows" : os.platform();
35
- const arch = os.arch() === "arm64" ? "arm64" : "x64";
36
- const suffix = isMusl() ? "-musl" : "";
37
- const packageName = `@trygentic/agentloop-${platform}-${arch}${suffix}`;
38
- const executableName = platform === "windows" ? "agentloop-cli.exe" : "agentloop-cli";
39
-
40
- // Check for symlinked binary in same directory (created by postinstall)
41
- const localBinary = path.join(__dirname, executableName);
42
- if (fs.existsSync(localBinary)) {
43
- return localBinary;
44
- }
45
-
46
- // Find in node_modules
47
- const nodeModules = path.resolve(__dirname, "..", "node_modules");
48
- const packageBinary = path.join(nodeModules, packageName, "bin", executableName);
49
- if (fs.existsSync(packageBinary)) {
50
- return packageBinary;
51
- }
52
-
53
- // Try global node_modules
54
- const globalNodeModules = path.resolve(__dirname, "..", "..", "..");
55
- const globalBinary = path.join(globalNodeModules, packageName, "bin", executableName);
56
- if (fs.existsSync(globalBinary)) {
57
- return globalBinary;
58
- }
59
-
60
- console.error(`Error: Could not find agentloop binary for ${platform}-${arch}${suffix}`);
61
- console.error(`Expected package: ${packageName}`);
62
- console.error(`\nTry reinstalling: npm install -g @trygentic/agentloop`);
63
- process.exit(1);
64
- }
65
-
66
- const binary = findBinary();
67
- const child = spawn(binary, process.argv.slice(2), {
68
- stdio: "inherit",
69
- env: process.env,
70
- });
71
-
72
- child.on("error", (err) => {
73
- console.error(`Failed to start agentloop: ${err.message}`);
74
- process.exit(1);
75
- });
76
-
77
- child.on("exit", (code, signal) => {
78
- if (signal) {
79
- process.kill(process.pid, signal);
80
- } else {
81
- process.exit(code ?? 0);
82
- }
83
- });
1
+ #!/usr/bin/env bash
2
+ # Shim script for agentloop
3
+ # This file is auto-generated by build-binary.mjs. Do not edit manually.
4
+ #
5
+ # Handles multiple scenarios:
6
+ # 1. Local development (npm link) - uses agentloop-cli in the same directory
7
+ # 2. npm install fallback - finds platform binary in node_modules if postinstall symlink failed
8
+
9
+ set -e
10
+
11
+ # Resolve symlinks to find the actual script location
12
+ SOURCE="${BASH_SOURCE[0]}"
13
+ while [ -h "$SOURCE" ]; do
14
+ DIR="$(cd -P "$(dirname "$SOURCE")" && pwd)"
15
+ SOURCE="$(readlink "$SOURCE")"
16
+ [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE"
17
+ done
18
+ DIR="$(cd -P "$(dirname "$SOURCE")" && pwd)"
19
+
20
+ # Option 1: Local development - agentloop-cli exists in same directory
21
+ if [ -x "$DIR/agentloop-cli" ]; then
22
+ exec "$DIR/agentloop-cli" "$@"
23
+ fi
24
+
25
+ # Option 2: npm install fallback - find platform-specific binary
26
+ PLATFORM="$(uname -s | tr '[:upper:]' '[:lower:]')"
27
+ ARCH="$(uname -m)"
28
+
29
+ case "$PLATFORM" in
30
+ darwin) PLATFORM="darwin" ;;
31
+ linux) PLATFORM="linux" ;;
32
+ mingw*|msys*|cygwin*) PLATFORM="windows" ;;
33
+ esac
34
+
35
+ case "$ARCH" in
36
+ x86_64|amd64) ARCH="x64" ;;
37
+ arm64|aarch64) ARCH="arm64" ;;
38
+ esac
39
+
40
+ # Check for musl on Linux
41
+ SUFFIX=""
42
+ if [ "$PLATFORM" = "linux" ]; then
43
+ if ldd --version 2>&1 | grep -q musl || [ -f /etc/alpine-release ]; then
44
+ SUFFIX="-musl"
45
+ fi
46
+ fi
47
+
48
+ PACKAGE_NAME="@trygentic/agentloop-${PLATFORM}-${ARCH}${SUFFIX}"
49
+ NODE_MODULES="$DIR/../node_modules"
50
+ PLATFORM_BIN="$NODE_MODULES/$PACKAGE_NAME/bin/agentloop"
51
+
52
+ if [ -x "$PLATFORM_BIN" ]; then
53
+ exec "$PLATFORM_BIN" "$@"
54
+ fi
55
+
56
+ echo "Error: Could not find agentloop executable" >&2
57
+ echo "Tried:" >&2
58
+ echo " - $DIR/agentloop-cli (local development)" >&2
59
+ echo " - $PLATFORM_BIN (npm package)" >&2
60
+ exit 1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@trygentic/agentloop",
3
- "version": "0.5.0-alpha.5",
3
+ "version": "0.7.0-alpha.6",
4
4
  "description": "AI-powered autonomous coding agent",
5
5
  "bin": {
6
6
  "agentloop": "./bin/agentloop"
@@ -9,9 +9,9 @@
9
9
  "postinstall": "node ./scripts/postinstall.mjs"
10
10
  },
11
11
  "optionalDependencies": {
12
- "@trygentic/agentloop-darwin-arm64": "0.5.0-alpha.5",
13
- "@trygentic/agentloop-linux-x64": "0.5.0-alpha.5",
14
- "@trygentic/agentloop-windows-x64": "0.5.0-alpha.5"
12
+ "@trygentic/agentloop-darwin-arm64": "0.7.0-alpha.6",
13
+ "@trygentic/agentloop-linux-x64": "0.7.0-alpha.6",
14
+ "@trygentic/agentloop-windows-x64": "0.7.0-alpha.6"
15
15
  },
16
16
  "engines": {
17
17
  "node": ">=18.0.0"