{"_id":"@akalsey/openclaw-goals","_rev":"4-e4d35647caf0a0c6a59b65418c66da46","name":"@akalsey/openclaw-goals","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@akalsey/openclaw-goals","version":"0.1.0","_id":"@akalsey/openclaw-goals@0.1.0","maintainers":[{"name":"akalsey","email":"adam@kalsey.com"}],"dist":{"shasum":"66f55586513e3b7f5800fbe698c7b5b03400a71c","tarball":"https://registry.npmjs.org/@akalsey/openclaw-goals/-/openclaw-goals-0.1.0.tgz","fileCount":11,"integrity":"sha512-i8oGCwjLu9wtnxB/3Lduumy/7KrooykRwLnDVitzu0uJNTz1Z16SlvRLP5iU2C6xPG24gvOKBA+V1nXrNbZC2w==","signatures":[{"sig":"MEUCIQCRx/jwUOd4tcJ/dgKVS+EccgR3j5SdSjV2bsXEFQXujAIgZJTdEkfFaCTSGU47F1++tLHb/ieU2atMdmYyVEhgx2k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21175},"main":"./dist/index.js","type":"module","exports":{".":"./dist/index.js"},"gitHead":"f1b1febcca21adfba5d6ba11efc67803d1b445ca","scripts":{"test":"vitest run","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"akalsey","email":"adam@kalsey.com"},"openclaw":{"compat":{"pluginApi":">=2026.3.24-beta.2","minGatewayVersion":"2026.3.24-beta.2"},"install":{"localPath":"."},"extensions":["./dist/index.js"]},"_npmVersion":"11.13.0","description":"Some things worth doing aren't tasks. They're directions — fuzzy, long-running, and valuable even when the path isn't clear. \"Our teams aren't scoring OKRs regularly\" is a goal, not a ticket.","directories":{},"_nodeVersion":"26.0.0","_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","openclaw":"latest","typescript":"^5.5.0","@types/node":"^22.0.0"},"peerDependencies":{"openclaw":">=2026.3.24-beta.2"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-goals_0.1.0_1779425077025_0.16230389323662853","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Renamed to @akalsey/sapience-goals"},"0.1.1":{"name":"@akalsey/openclaw-goals","version":"0.1.1","_id":"@akalsey/openclaw-goals@0.1.1","maintainers":[{"name":"akalsey","email":"adam@kalsey.com"}],"dist":{"shasum":"e9f5eefc9d91e2eaa452389cf4102f5d56de1689","tarball":"https://registry.npmjs.org/@akalsey/openclaw-goals/-/openclaw-goals-0.1.1.tgz","fileCount":11,"integrity":"sha512-MgxXwnzaAVuApn7l5Caefn9u0daVLBdffCJpuLcEdLp4Gt6pAc6Bija9gCS38pOU43PvfGH8ydJRP9P5kVG2Pw==","signatures":[{"sig":"MEUCIQCLMVmsSVAJ/i1gL+IeAj5kXixV1r1v393Wnh/bXpS4qwIgM8F0tJzvtxV8W2Wi2amuMCGbjfXOfpemqvu6VTBC8vA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21236},"main":"./dist/index.js","type":"module","exports":{".":"./dist/index.js"},"gitHead":"b70d59d46562e15bcf869902d2a8227a82ab834d","scripts":{"test":"vitest run","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"akalsey","email":"adam@kalsey.com"},"openclaw":{"compat":{"pluginApi":">=2026.3.24-beta.2","minGatewayVersion":"2026.3.24-beta.2"},"install":{"localPath":"."},"extensions":["./dist/index.js"]},"_npmVersion":"11.13.0","description":"Some things worth doing aren't tasks. They're directions — fuzzy, long-running, and valuable even when the path isn't clear. \"Our teams aren't scoring OKRs regularly\" is a goal, not a ticket.","directories":{},"_nodeVersion":"26.0.0","_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","openclaw":"latest","typescript":"^5.5.0","@types/node":"^22.0.0"},"peerDependencies":{"openclaw":">=2026.3.24-beta.2"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-goals_0.1.1_1779425651083_0.38453984816032816","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Renamed to @akalsey/sapience-goals"},"0.1.2":{"name":"@akalsey/openclaw-goals","version":"0.1.2","_id":"@akalsey/openclaw-goals@0.1.2","maintainers":[{"name":"akalsey","email":"adam@kalsey.com"}],"dist":{"shasum":"9873b32ca7b343354a5f8f90e01912f5322d8c9d","tarball":"https://registry.npmjs.org/@akalsey/openclaw-goals/-/openclaw-goals-0.1.2.tgz","fileCount":11,"integrity":"sha512-fywWLaJO0O5lhLa6wVZYqUtqLj0eM0LDU6aU2IwgbG22hhi4jY6Dkp0QOOZIlvjDIpyium9YU7rDcdZ+0z4NPA==","signatures":[{"sig":"MEYCIQCpLELLs5CwaQXihIMPaV0Eqzrzlm9yL72rg08UTNltBQIhALCZkIT2ScNetc4tfj7c3z3FlIDTPmsOenU9R87F3A23","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":20830},"main":"./dist/index.js","type":"module","exports":{".":"./dist/index.js"},"gitHead":"0e704f0d35d21e0aae46be298502da3b63985cb4","scripts":{"test":"vitest run","build":"tsc","typecheck":"tsc --noEmit","test:watch":"vitest","prepublishOnly":"npm run build"},"_npmUser":{"name":"akalsey","email":"adam@kalsey.com"},"openclaw":{"compat":{"pluginApi":">=2026.3.24-beta.2","minGatewayVersion":"2026.3.24-beta.2"},"install":{"localPath":"."},"extensions":["./dist/index.js"]},"_npmVersion":"11.13.0","description":"Some things worth doing aren't tasks. They're directions — fuzzy, long-running, and valuable even when the path isn't clear. \"Our teams aren't scoring OKRs regularly\" is a goal, not a ticket.","directories":{},"_nodeVersion":"26.0.0","_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","openclaw":"latest","typescript":"^5.5.0","@types/node":"^22.0.0"},"peerDependencies":{"openclaw":">=2026.3.24-beta.2"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-goals_0.1.2_1779461037534_0.574308157507543","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Renamed to @akalsey/sapience-goals"}},"time":{"created":"2026-05-22T04:44:36.846Z","modified":"2026-05-24T16:06:00.649Z","0.1.0":"2026-05-22T04:44:37.178Z","0.1.1":"2026-05-22T04:54:11.222Z","0.1.2":"2026-05-22T14:43:57.717Z"},"description":"Some things worth doing aren't tasks. They're directions — fuzzy, long-running, and valuable even when the path isn't clear. \"Our teams aren't scoring OKRs regularly\" is a goal, not a ticket.","maintainers":[{"name":"akalsey","email":"adam@kalsey.com"}],"readme":"# OpenClaw Goals\n\nSome things worth doing aren't tasks. They're directions — fuzzy, long-running, and valuable even when the path isn't clear. \"Our teams aren't scoring OKRs regularly\" is a goal, not a ticket.\n\nThis plugin accepts those kinds of objectives, decomposes them into candidate approaches, tracks incremental progress, and delivers a weekly status update. You stay oriented without managing the detail.\n\nThis plugin is part of the Sapience Suite that gives your OpenClaw agent genuine agency — not just the ability to execute tasks, but the judgment to know when to act, when to ask, when to propose, and when to say \"I'm not sure how you want me to handle this.\"\n\nThis plugin can be used without Sapience if all you want to do is track multi-step tasks.\n\n---\n\n## Setup\n\n### Install\n\n```bash\nopenclaw plugins install npm:@akalsey/openclaw-goals\n```\n\n### Configuration\n\n```json\n{\n  \"plugins\": {\n    \"sapience-goals\": {\n      \"weeklyCheckInDay\": \"monday\",\n      \"weeklyCheckInTime\": \"09:00\",\n      \"activeHours\": {\n        \"start\": \"08:00\",\n        \"end\": \"20:00\",\n        \"timezone\": \"America/Los_Angeles\"\n      },\n      \"inboxPath\": \"~/.openclaw/sapience/goals-inbox.md\"\n    }\n  }\n}\n```\n\nAll settings are optional — defaults above are used if omitted.\n\n### Create the inbox file\n\n```bash\ntouch ~/.openclaw/sapience/goals-inbox.md\n```\n\nThe plugin won't error if the file is missing, but you need it to submit goals.\n\n### Output files\n\n| File | Purpose |\n|------|---------|\n| `~/.openclaw/sapience/goals.json` | All goals with status, approaches, progress, blockers |\n| `~/.openclaw/sapience/goals-inbox.md` | Where you write new goals |\n| `~/.openclaw/sapience/goals-inbox-position.json` | Byte offset tracking — don't edit this |\n\n---\n\n## Submitting a goal\n\nJust tell the agent in conversation:\n\n> \"I want to improve our OKR scoring rate\"\n> \"Figure out why PostHog costs keep spiking\"\n> \"Help me build a habit of writing weekly team updates\"\n\nThe agent recognizes long-running objectives and calls `goal_submit` automatically. A `[GOALS: DECOMPOSE]` prompt arrives within seconds with concrete approaches to choose from.\n\n### Via the inbox file (scripting/external use)\n\nYou can also append goals directly to the inbox file for use from scripts or other tools:\n\n```bash\necho \"Our teams aren't scoring OKRs regularly — improve that\" >> ~/.openclaw/sapience/goals-inbox.md\n```\n\nThe next cron pass (within 15 minutes) picks it up.\n\n---\n\n## Decomposition\n\nWhen a new goal is detected, the agent delivers a `[GOALS: DECOMPOSE]` prompt to your active session:\n\n> \"I noticed this goal: 'Our teams aren't scoring OKRs regularly.' Here are 3 approaches I could take…\"\n\nIt presents 2–4 concrete approaches, explains what each would accomplish and what it would need from you, and asks you to pick one (or none).\n\nYour selection is recorded as the `active_approach`. Goals without a selected approach stay in `decomposing` status and don't receive weekly updates until you pick one.\n\n---\n\n## Tracking progress\n\nProgress is tracked through the weekly status loop — the agent notes what it did toward the goal and what it plans next. You can also add progress notes manually:\n\n```bash\n# Not yet a built-in command — edit goals.json directly for now\n```\n\nTo mark a goal complete or pause it, update the `status` field in `~/.openclaw/sapience/goals.json`:\n\n```json\n{ \"status\": \"completed\" }\n```\n\nValid statuses: `decomposing` | `active` | `paused` | `completed` | `abandoned`\n\n---\n\n## Weekly status\n\nEvery Monday at 9am (or your configured day/time), active goals get a `[GOALS: WEEKLY STATUS]` prompt delivered to your session:\n\n> \"Weekly status for 'Improve OKR scoring rates':\n> - What happened this week: …\n> - What's blocked: …\n> - What I plan next week: …\"\n\nEach goal gets its own delivery. If nothing happened and nothing is blocked, the agent says so briefly and doesn't pad.\n\nThe next delivery date is stored per-goal in `goals.json` and rolls forward automatically after each delivery.\n\n---\n\n## Troubleshooting\n\n**Goal submitted but no decomposition prompt**\nThe cron fires every 15 minutes. Wait for the next pass, or trigger manually:\n```bash\nopenclaw cron run sapience-goals-check-pass\n```\nAlso confirm the inbox path matches your config and that the file is readable.\n\n**Same goals showing up again after re-install**\nThe byte-position tracker (`goals-inbox-position.json`) tracks what's been read. If it's missing, the inbox is read from the beginning. Delete old content from the inbox file, or manually set the position to the file's current byte length.\n\n**Weekly status not delivering**\nCheck `goals.json` — the goal must have `status: \"active\"` and `next_status_delivery` must be a past date. If `active_approach` is empty, the goal is still in `decomposing` status and won't get weekly updates.\n\n**Too many goals with no progress**\nGoals without active approaches accumulate in the store. Periodically review `goals.json` and mark stale goals as `paused` or `abandoned` to keep the weekly status meaningful.\n\n**Goal decomposition is generic / not useful**\nThe quality of decomposition depends on how specific the goal statement is. \"Improve things\" is hard to decompose. \"Get weekly OKR scoring rates above 80% by end of Q3\" gives the agent something concrete to work with.\n","readmeFilename":"README.md"}