jowork 0.2.1 → 0.2.2
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/dist/cli.js +91 -140
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -2388,138 +2388,92 @@ import { existsSync as existsSync15, mkdirSync as mkdirSync4, writeFileSync as w
|
|
|
2388
2388
|
import { join as join10 } from "path";
|
|
2389
2389
|
import { execSync } from "child_process";
|
|
2390
2390
|
var HOME3 = process.env["HOME"] ?? process.env["USERPROFILE"] ?? "";
|
|
2391
|
-
var
|
|
2392
|
-
|
|
2393
|
-
|
|
2394
|
-
|
|
2395
|
-
|
|
2396
|
-
|
|
2397
|
-
|
|
2398
|
-
|
|
2399
|
-
|
|
2400
|
-
|
|
2401
|
-
|
|
2402
|
-
|
|
2403
|
-
|
|
2404
|
-
|
|
2405
|
-
|
|
2406
|
-
|
|
2407
|
-
|
|
2408
|
-
|
|
2409
|
-
|
|
2410
|
-
|
|
2411
|
-
|
|
2412
|
-
|
|
2413
|
-
|
|
2414
|
-
|
|
2415
|
-
|
|
2416
|
-
|
|
2417
|
-
|
|
2418
|
-
|
|
2419
|
-
|
|
2420
|
-
|
|
2421
|
-
|
|
2422
|
-
|
|
2423
|
-
|
|
2424
|
-
|
|
2425
|
-
|
|
2426
|
-
|
|
2427
|
-
|
|
2428
|
-
|
|
2429
|
-
|
|
2430
|
-
|
|
2431
|
-
|
|
2432
|
-
|
|
2433
|
-
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
|
|
2437
|
-
|
|
2438
|
-
|
|
2439
|
-
|
|
2440
|
-
|
|
2441
|
-
|
|
2442
|
-
|
|
2443
|
-
|
|
2444
|
-
|
|
2445
|
-
|
|
2446
|
-
|
|
2447
|
-
|
|
2448
|
-
|
|
2449
|
-
|
|
2450
|
-
|
|
2451
|
-
|
|
2452
|
-
|
|
2453
|
-
|
|
2454
|
-
|
|
2455
|
-
|
|
2456
|
-
|
|
2457
|
-
|
|
2458
|
-
|
|
2459
|
-
|
|
2460
|
-
|
|
2461
|
-
|
|
2462
|
-
|
|
2463
|
-
|
|
2464
|
-
|
|
2465
|
-
|
|
2466
|
-
|
|
2467
|
-
|
|
2468
|
-
|
|
2469
|
-
|
|
2470
|
-
|
|
2471
|
-
|
|
2472
|
-
|
|
2473
|
-
|
|
2474
|
-
|
|
2475
|
-
|
|
2476
|
-
|
|
2477
|
-
"```",
|
|
2478
|
-
"Report which sources synced and how many new objects."
|
|
2479
|
-
].join("\n"),
|
|
2480
|
-
"jowork-dashboard/SKILL.md": [
|
|
2481
|
-
"---",
|
|
2482
|
-
"name: jowork-dashboard",
|
|
2483
|
-
"version: 0.1.0",
|
|
2484
|
-
"description: Open the JoWork companion dashboard in your browser.",
|
|
2485
|
-
"allowed-tools:",
|
|
2486
|
-
" - Bash",
|
|
2487
|
-
"---",
|
|
2488
|
-
"",
|
|
2489
|
-
"# /jowork-dashboard",
|
|
2490
|
-
"",
|
|
2491
|
-
"```bash",
|
|
2492
|
-
"PORT=$(cat ~/.jowork/dashboard.port 2>/dev/null || echo 18801)",
|
|
2493
|
-
'if curl -s --max-time 1 "http://127.0.0.1:$PORT/api/status" >/dev/null 2>&1; then',
|
|
2494
|
-
' open "http://127.0.0.1:$PORT" 2>/dev/null || echo "Open http://127.0.0.1:$PORT"',
|
|
2495
|
-
"else",
|
|
2496
|
-
" jowork dashboard &",
|
|
2497
|
-
"fi",
|
|
2498
|
-
"```"
|
|
2499
|
-
].join("\n"),
|
|
2500
|
-
"jowork-context/SKILL.md": [
|
|
2501
|
-
"---",
|
|
2502
|
-
"name: jowork-context",
|
|
2503
|
-
"version: 0.1.0",
|
|
2504
|
-
"description: Index a local directory so your agent can search its files.",
|
|
2505
|
-
"allowed-tools:",
|
|
2506
|
-
" - Bash",
|
|
2507
|
-
" - AskUserQuestion",
|
|
2508
|
-
"---",
|
|
2509
|
-
"",
|
|
2510
|
-
"# /jowork-context",
|
|
2511
|
-
"",
|
|
2512
|
-
"Ask which directory to index, then:",
|
|
2513
|
-
"```bash",
|
|
2514
|
-
"PORT=$(cat ~/.jowork/dashboard.port 2>/dev/null || echo 18801)",
|
|
2515
|
-
`CSRF=$(curl -s "http://127.0.0.1:$PORT/" | grep csrf-token | sed 's/.*content="\\([^"]*\\)".*/\\1/')`,
|
|
2516
|
-
'curl -s -X POST "http://127.0.0.1:$PORT/api/context" \\',
|
|
2517
|
-
' -H "Content-Type: application/json" -H "X-CSRF-Token: $CSRF" \\',
|
|
2518
|
-
' -d "{\\"type\\":\\"directory\\",\\"value\\":\\"$DIR\\",\\"label\\":\\"$(basename $DIR)\\"}"',
|
|
2519
|
-
"```",
|
|
2520
|
-
"If dashboard not running, start it first with `jowork dashboard &`."
|
|
2521
|
-
].join("\n")
|
|
2522
|
-
};
|
|
2391
|
+
var SKILL_CONTENT = `---
|
|
2392
|
+
name: jowork
|
|
2393
|
+
version: 0.2.0
|
|
2394
|
+
description: |
|
|
2395
|
+
AI Agent companion \u2014 connect data sources, manage sessions, drag files into
|
|
2396
|
+
context, track goals. Works with Claude Code, Codex, and OpenClaw.
|
|
2397
|
+
Use /jowork for status, or just ask naturally ("connect my GitHub", "sync data",
|
|
2398
|
+
"open dashboard", "search PRs").
|
|
2399
|
+
allowed-tools:
|
|
2400
|
+
- Bash
|
|
2401
|
+
- Read
|
|
2402
|
+
- AskUserQuestion
|
|
2403
|
+
---
|
|
2404
|
+
|
|
2405
|
+
# JoWork \u2014 Agent Infrastructure
|
|
2406
|
+
|
|
2407
|
+
JoWork gives your AI agent data awareness (connectors), memory (cross-session),
|
|
2408
|
+
goal tracking, and a companion dashboard. All data stays local.
|
|
2409
|
+
|
|
2410
|
+
## How it works
|
|
2411
|
+
|
|
2412
|
+
JoWork runs as an MCP server. Your agent already has these tools available:
|
|
2413
|
+
- **search_data** \u2014 search across all synced data
|
|
2414
|
+
- **read_memory / write_memory** \u2014 cross-session memory
|
|
2415
|
+
- **search_memory** \u2014 time-weighted memory search
|
|
2416
|
+
- **get_goals / get_metrics** \u2014 goal progress
|
|
2417
|
+
- **get_hot_context** \u2014 recent 24-72h activity summary
|
|
2418
|
+
- **get_briefing** \u2014 daily briefing
|
|
2419
|
+
- **sync_now** \u2014 trigger data sync
|
|
2420
|
+
- **push_to_channel** \u2014 send messages to connected channels
|
|
2421
|
+
|
|
2422
|
+
Use these MCP tools directly. No slash commands needed for data queries.
|
|
2423
|
+
|
|
2424
|
+
## When the user asks to connect a data source
|
|
2425
|
+
|
|
2426
|
+
Run the appropriate bash command. Ask for credentials via AskUserQuestion
|
|
2427
|
+
if not in environment. Never display tokens in output.
|
|
2428
|
+
|
|
2429
|
+
\`\`\`
|
|
2430
|
+
GitHub: jowork connect github --token "$GITHUB_PERSONAL_ACCESS_TOKEN"
|
|
2431
|
+
GitLab: jowork connect gitlab --token "<token>"
|
|
2432
|
+
Linear: jowork connect linear --api-key "<key>"
|
|
2433
|
+
PostHog: jowork connect posthog --api-key "<key>" --project-id "<id>"
|
|
2434
|
+
Feishu: jowork connect feishu --app-id "<id>" --app-secret "<secret>"
|
|
2435
|
+
\`\`\`
|
|
2436
|
+
|
|
2437
|
+
After connecting, call the \`sync_now\` MCP tool or run \`jowork sync\`.
|
|
2438
|
+
|
|
2439
|
+
## When the user asks to open the dashboard
|
|
2440
|
+
|
|
2441
|
+
\`\`\`bash
|
|
2442
|
+
PORT=$(cat ~/.jowork/dashboard.port 2>/dev/null || echo 18801)
|
|
2443
|
+
if curl -s --max-time 1 "http://127.0.0.1:$PORT/api/status" >/dev/null 2>&1; then
|
|
2444
|
+
open "http://127.0.0.1:$PORT" 2>/dev/null || echo "Open http://127.0.0.1:$PORT"
|
|
2445
|
+
else
|
|
2446
|
+
jowork dashboard &
|
|
2447
|
+
sleep 2
|
|
2448
|
+
open "http://127.0.0.1:$(cat ~/.jowork/dashboard.port 2>/dev/null || echo 18801)"
|
|
2449
|
+
fi
|
|
2450
|
+
\`\`\`
|
|
2451
|
+
|
|
2452
|
+
## When the user asks to index a folder
|
|
2453
|
+
|
|
2454
|
+
\`\`\`bash
|
|
2455
|
+
jowork context add "<directory_path>"
|
|
2456
|
+
\`\`\`
|
|
2457
|
+
|
|
2458
|
+
Or if dashboard is running, use its API for progress feedback.
|
|
2459
|
+
|
|
2460
|
+
## Proactive behavior
|
|
2461
|
+
|
|
2462
|
+
When you notice these patterns, act without being asked:
|
|
2463
|
+
- User asks about team discussions \u2192 call \`search_data\` or \`get_hot_context\`
|
|
2464
|
+
- User mentions connecting a service \u2192 guide through connection (see above)
|
|
2465
|
+
- User asks "what's new" or wants a briefing \u2192 call \`get_briefing\`
|
|
2466
|
+
- User mentions a folder to index \u2192 offer to index it
|
|
2467
|
+
- User wants to track a metric \u2192 guide through \`jowork goal add\`
|
|
2468
|
+
|
|
2469
|
+
## Status check (when invoked as /jowork)
|
|
2470
|
+
|
|
2471
|
+
\`\`\`bash
|
|
2472
|
+
jowork status 2>/dev/null || echo "Not initialized. Run: npx jowork@latest setup"
|
|
2473
|
+
\`\`\`
|
|
2474
|
+
|
|
2475
|
+
Show results and suggest next action based on state.
|
|
2476
|
+
`;
|
|
2523
2477
|
function setupSkillCommand(program2) {
|
|
2524
2478
|
program2.command("setup").description("One-command setup: install skills + init DB + register with AI agents").action(async () => {
|
|
2525
2479
|
console.log("");
|
|
@@ -2527,14 +2481,11 @@ function setupSkillCommand(program2) {
|
|
|
2527
2481
|
console.log(" ============");
|
|
2528
2482
|
console.log("");
|
|
2529
2483
|
const skillDir = join10(HOME3, ".claude", "skills", "jowork");
|
|
2530
|
-
console.log(" Installing
|
|
2531
|
-
|
|
2532
|
-
|
|
2533
|
-
|
|
2534
|
-
|
|
2535
|
-
}
|
|
2536
|
-
writeFileSync7(join10(skillDir, "VERSION"), "0.1.0\n");
|
|
2537
|
-
console.log(" \u2713 5 skills installed");
|
|
2484
|
+
console.log(" Installing skill to ~/.claude/skills/jowork/ ...");
|
|
2485
|
+
mkdirSync4(skillDir, { recursive: true });
|
|
2486
|
+
writeFileSync7(join10(skillDir, "SKILL.md"), SKILL_CONTENT);
|
|
2487
|
+
writeFileSync7(join10(skillDir, "VERSION"), "0.2.0\n");
|
|
2488
|
+
console.log(" \u2713 Skill installed (/jowork)");
|
|
2538
2489
|
const jDir = joworkDir();
|
|
2539
2490
|
if (existsSync15(join10(jDir, "config.json"))) {
|
|
2540
2491
|
console.log(" \u2713 Database already initialized");
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jowork",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.2",
|
|
4
4
|
"description": "AI Agent Infrastructure — let AI agents truly understand your work. Connect data sources, give agents awareness and goals. Local-first, one command.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "AGPL-3.0",
|