@pulsarinteractive/geniustasker 0.1.0-beta.3 → 0.1.0-beta.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.
Files changed (38) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +55 -63
  3. package/docs/ARCHITECTURE.md +40 -0
  4. package/docs/CLI.md +26 -2
  5. package/docs/DOCUMENTATION_SYNC.md +144 -0
  6. package/docs/INTEGRATIONS.md +2 -2
  7. package/docs/LIMITS.md +49 -0
  8. package/docs/MEMORY.md +38 -0
  9. package/docs/RELEASING.md +7 -0
  10. package/examples/codex.toml +1 -1
  11. package/examples/mcp.json +1 -1
  12. package/mcp.json +1 -1
  13. package/package.json +1 -1
  14. package/plugin.json +1 -1
  15. package/skills/geniustasker/SKILL.md +3 -0
  16. package/skills/geniustasker/references/project-reads.md +43 -0
  17. package/skills/geniustasker-documentation/SKILL.md +39 -0
  18. package/skills/geniustasker-documentation/agents/openai.yaml +4 -0
  19. package/skills/geniustasker-documentation/references/structure.md +29 -0
  20. package/skills/geniustasker-graph/SKILL.md +31 -0
  21. package/skills/geniustasker-graph/agents/openai.yaml +4 -0
  22. package/skills/geniustasker-media/SKILL.md +33 -0
  23. package/skills/geniustasker-media/agents/openai.yaml +4 -0
  24. package/skills/geniustasker-memory/SKILL.md +75 -7
  25. package/skills/geniustasker-memory/references/knowledge-workflows.md +57 -0
  26. package/src/cli.mjs +151 -0
  27. package/src/client.mjs +54 -2
  28. package/src/command-catalog.mjs +109 -5
  29. package/src/commands.mjs +15 -2
  30. package/src/documentation-graph.mjs +251 -0
  31. package/src/documentation-store.mjs +589 -0
  32. package/src/documentation-sync.mjs +517 -0
  33. package/src/documentation.mjs +136 -0
  34. package/src/knowledge.mjs +109 -0
  35. package/src/mcp.mjs +122 -3
  36. package/src/media.mjs +307 -0
  37. package/src/read-cache.mjs +111 -0
  38. package/src/transport.mjs +33 -10
package/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.1.0-beta.5 — 2026-10-02
4
+
5
+ - Incremental repository documentation from selected Memory folders and Graphs,
6
+ with generated Markdown provenance and optional digest-verified local media.
7
+ - Safe staged exports, local-edit detection, access revalidation, revocation
8
+ cleanup and account isolation; large Graphs use bounded portable chunks.
9
+ - Tree and Markdown read tools, documentation sync/status and media comparison.
10
+ - Focused documentation, resource and Graph skills with daily/post-work refresh.
11
+
12
+ Requires the service's `documentationSync` and `protectedMemoryAssets`
13
+ capabilities as appropriate.
14
+
15
+ ## 0.1.0-beta.4 — 2026-10-02
16
+
17
+ - Short npm overview, focused Memory guide and account usage tables.
18
+ - Explain the UUID v4 identity required for Memory creation before sending an invalid request.
19
+ - Private Memory attachments through resumable MCP/CLI uploads, bounded binary transport and explicit downloads.
20
+ - Memory full-text search, bounded Graph neighborhoods and permission-aware references.
21
+ - Graph node/edge commands and richer document metadata from the API contract.
22
+ - Seven additional MCP tools and matching CLI commands; independent node content survives unavailable references.
23
+ - Shared request size bounds for rich documents, with immutable write retries preserved.
24
+
25
+ These additions require the corresponding service capabilities.
26
+
3
27
  ## 0.1.0-beta.3 — 2026-09-30
4
28
 
5
29
  - MIT license for the client, skills and documentation; third-party license notices.
package/README.md CHANGED
@@ -1,17 +1,13 @@
1
- # GeniusTasker agent tools
1
+ # GeniusTasker CLI & MCP
2
2
 
3
- Keep project progress, collaborators and your own AI agents in one place.
4
- This repository contains the public **CLI, local MCP server and agent skills**.
5
- The GeniusTasker application and service implementation are separate.
6
- Canonical repository: [PulsarInteractive/geniustasker-agent-tools](https://github.com/PulsarInteractive/geniustasker-agent-tools).
3
+ Manage projects, tasks and knowledge from your terminal or AI assistant.
4
+ Connect once in your browser, choose what your agent can access, and stay in control.
7
5
 
8
- [Install](#install-and-connect) · [Codex and Claude](docs/INTEGRATIONS.md) ·
9
- [CLI reference](docs/CLI.md) · [OpenAI plugin](docs/OPENAI.md) · [Releases](CHANGELOG.md)
6
+ [Get started](#get-started) · [Agent setup](https://github.com/PulsarInteractive/geniustasker-agent-tools/blob/main/docs/INTEGRATIONS.md) · [Commands](https://github.com/PulsarInteractive/geniustasker-agent-tools/blob/main/docs/CLI.md) · [Usage limits](https://github.com/PulsarInteractive/geniustasker-agent-tools/blob/main/docs/LIMITS.md)
10
7
 
11
- ## Install and connect
8
+ ## Get started
12
9
 
13
- Requires **Node.js 22.13+** and an account admitted to the development beta.
14
- Installing the client does not enable access to the service.
10
+ Requires **Node.js 22.13+** and an approved GeniusTasker account.
15
11
 
16
12
  ```sh
17
13
  npm install -g @pulsarinteractive/geniustasker@beta
@@ -19,63 +15,59 @@ geniustasker auth login --context work
19
15
  geniustasker projects list --context work --json
20
16
  ```
21
17
 
22
- A browser opens: sign in, select projects and independent memories, choose
23
- permissions, then approve. The terminal finishes automatically. No token to copy.
24
- For Chrome use `--browser chrome`; remote shells can use `--flow device --no-browser`.
25
- Production agent access is not open in this beta.
26
-
27
- ## Connect an agent
28
-
29
- After logging in with the `work` context:
30
-
31
- ```sh
32
- codex mcp add geniustasker -- npx -y @pulsarinteractive/geniustasker@0.1.0-beta.3 mcp --context work
33
- ```
34
-
35
- Other stdio MCP hosts can use [examples/mcp.json](examples/mcp.json).
36
- The MCP exposes 16 tools for identity, capabilities, projects, memories, bounded
37
- reads, profiles and journaled changes. It uses the session you explicitly approved.
38
- GeniusTasker records work; your agent chooses and executes its own workflow.
39
-
40
- ## Skills
41
-
42
- - [GeniusTasker](skills/geniustasker/SKILL.md): project work, tickets and useful handoffs.
43
- - [GeniusTasker Memory](skills/geniustasker-memory/SKILL.md): independent knowledge,
44
- focused reads, stable blocks and resumable imports.
45
-
46
- Install the skill folders in your agent's supported skill directory, or use the
47
- plugin bundle described in [Integrations](docs/INTEGRATIONS.md). npm installation
48
- alone does not register skills or MCP servers in your agent host.
49
-
50
- ## Plugin readiness
51
-
52
- `plugin.json`, `mcp.json`, `skills/` and the local marketplace catalog form a
53
- portable **local plugin bundle**. This is not an approved public ChatGPT-directory
54
- plugin. The hosted HTTPS MCP/OAuth integration remains a separate milestone in
55
- [OpenAI integration](docs/OPENAI.md).
56
-
57
- ## Development
58
-
59
- ```sh
60
- npm ci
61
- npm run verify
18
+ Sign in in the browser, select your projects or memories, then approve the requested
19
+ permissions. The terminal connects automatically. No token to copy.
20
+ Installing the package does not grant application access.
21
+
22
+ ## What you can do
23
+
24
+ | Area | Features |
25
+ | ------------------- | -------------------------------------------------------------- |
26
+ | Projects & tasks | Browse work, update tickets, record progress and read comments |
27
+ | Agent collaboration | Ask for decisions, track replies and keep useful handoffs |
28
+ | Memory | Search documents and read the pages you need |
29
+ | Graph | Explore connected ideas and resolve links to Memory content |
30
+ | Files | Upload approved attachments and download selected files |
31
+ | Permissions | Choose scopes, restrict agent profiles and revoke connections |
32
+
33
+ Availability follows your account, the permissions you approve and the service's
34
+ current capabilities. [Memory & Graph guide](https://github.com/PulsarInteractive/geniustasker-agent-tools/blob/main/docs/MEMORY.md).
35
+
36
+ ## Connect your AI assistant
37
+
38
+ For a stdio MCP host, use this after signing in:
39
+
40
+ ```json
41
+ {
42
+ "mcpServers": {
43
+ "geniustasker": {
44
+ "command": "npx",
45
+ "args": ["-y", "@pulsarinteractive/geniustasker@0.1.0-beta.5", "mcp", "--context", "work"]
46
+ }
47
+ }
48
+ }
62
49
  ```
63
50
 
64
- Tests use synthetic fixtures and local mock servers. CI has no production credentials.
65
- `npm run check` checks the public file boundary, package contents and plugin schema.
66
- See [Contributing](CONTRIBUTING.md), [Architecture](docs/ARCHITECTURE.md),
67
- [Testing](docs/TESTING.md) and [Release process](docs/RELEASING.md).
51
+ See [Codex, Claude and skills setup](https://github.com/PulsarInteractive/geniustasker-agent-tools/blob/main/docs/INTEGRATIONS.md).
52
+ Your AI assistant uses its own model subscription; this package does not run or
53
+ bill the model. The [OpenAI integration guide](https://github.com/PulsarInteractive/geniustasker-agent-tools/blob/main/docs/OPENAI.md)
54
+ explains the available local integration and hosted integration status.
68
55
 
69
- ## Privacy and source boundary
56
+ ## Documentation
70
57
 
71
- No application source, backend, account exports, infrastructure credentials or
72
- private product documents belong here. Only the agent client and its public
73
- interface contract are included. Credentials stay in the user's private local
74
- store; never paste them into an issue. See [Security](SECURITY.md).
58
+ | Guide | Use it for |
59
+ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------- |
60
+ | [CLI reference](https://github.com/PulsarInteractive/geniustasker-agent-tools/blob/main/docs/CLI.md) | Commands, browser login, remote terminals and troubleshooting |
61
+ | [Usage limits](https://github.com/PulsarInteractive/geniustasker-agent-tools/blob/main/docs/LIMITS.md) | Plan limits, shared account quotas and safe retries |
62
+ | [Memory & Graph](https://github.com/PulsarInteractive/geniustasker-agent-tools/blob/main/docs/MEMORY.md) | Documents, links, attachments and access changes |
63
+ | [Repository documentation](https://github.com/PulsarInteractive/geniustasker-agent-tools/blob/main/docs/DOCUMENTATION_SYNC.md) | Source selection, Markdown snapshots and freshness |
64
+ | [Security](https://github.com/PulsarInteractive/geniustasker-agent-tools/blob/main/SECURITY.md) | Credential handling and reporting a vulnerability |
65
+ | [Contributing](https://github.com/PulsarInteractive/geniustasker-agent-tools/blob/main/CONTRIBUTING.md) | Local development, tests and contribution guidelines |
66
+ | [Changelog](https://github.com/PulsarInteractive/geniustasker-agent-tools/blob/main/CHANGELOG.md) | Changes in each release |
75
67
 
76
68
  ## License
77
69
 
78
- The CLI, MCP server, skills and documentation are available under the
79
- [MIT license](LICENSE). See [third-party notices](THIRD_PARTY_NOTICES.md) for
80
- vendor components. The separately hosted GeniusTasker application and backend
81
- are not part of this repository.
70
+ [MIT](https://github.com/PulsarInteractive/geniustasker-agent-tools/blob/main/LICENSE)
71
+ for this CLI, MCP server, skills and documentation.
72
+ [Third-party notices](https://github.com/PulsarInteractive/geniustasker-agent-tools/blob/main/THIRD_PARTY_NOTICES.md)
73
+ cover included components. The GeniusTasker application and backend are separate.
@@ -102,3 +102,43 @@ client operation, CLI/MCP adapter, failure tests and user documentation together
102
102
  Prefer existing transport and storage primitives. A future remote MCP adapter is
103
103
  a separate integration described in [OpenAI integration](OPENAI.md); the current
104
104
  local plugin manifest must not imply that endpoint already exists.
105
+
106
+ ## Focused knowledge reads
107
+
108
+ `knowledge.mjs` validates bounded search, Graph neighborhood and reference inputs
109
+ for both CLI and MCP. It checks response scope/shape, never follows cursors
110
+ automatically and never persists linked Memory content. `truncated` is an explicit
111
+ partial graph, not evidence that omitted nodes or relations do not exist. Target
112
+ permissions remain server-owned and independent of access to the referring graph.
113
+
114
+ ## Conditional resource cache
115
+
116
+ `read-cache.mjs` keeps at most 64 responses and 8 MiB in process memory, with
117
+ 15-minute idle eviction. Exact query keys include a hashed origin/credential
118
+ realm. Every hit makes an authenticated conditional request; no cache entry can
119
+ bypass current server permissions, quotas or source versions. Servers without
120
+ validators remain compatible and receive ordinary reads.
121
+
122
+ Concurrent identical reads share one request. Generation fences prevent late
123
+ responses from repopulating a cache after account/profile changes, failures or
124
+ MCP writes. Failed validation clears cached private bodies; there is no stale
125
+ success fallback and no persistent resource cache. Returned values are cloned so
126
+ one tool call cannot mutate another caller's cached result.
127
+
128
+ ## Explicit repository snapshots
129
+
130
+ `documentation.mjs` validates the bounded tree and Markdown APIs. The sync
131
+ orchestrator keeps the selection independent of projects, compares descendant
132
+ versions, retrieves changed documents, verifies media and rechecks source
133
+ contexts before commit. `documentation-graph.mjs` maintains qualified Graph
134
+ records through incremental cursors and portable chunks of at most 100 records.
135
+ References do not materialize another Memory's private source bodies.
136
+
137
+ `documentation-store.mjs` owns only the configured destination's `content/`
138
+ subdirectory. A manifest records hashes and provenance. Local edits, unknown
139
+ files, symlinks and account/environment mismatches fail explicitly. A process
140
+ lock, staged tree and rename journal protect concurrent or interrupted exports.
141
+ Network failures leave the previous dated snapshot; current authorization is
142
+ never inferred from a local file. Confirmed scope revocation removes managed
143
+ source content at the next successful check, but cannot retract Git history or
144
+ copies elsewhere. The explicit export is separate from the process read cache.
package/docs/CLI.md CHANGED
@@ -51,7 +51,7 @@ launching stdio servers with this entry (adjust environment/context as needed):
51
51
  "mcpServers": {
52
52
  "geniustasker": {
53
53
  "command": "npx",
54
- "args": ["-y", "@pulsarinteractive/geniustasker@0.1.0-beta.2", "mcp", "--context", "work"]
54
+ "args": ["-y", "@pulsarinteractive/geniustasker@0.1.0-beta.5", "mcp", "--context", "work"]
55
55
  }
56
56
  }
57
57
  }
@@ -389,7 +389,31 @@ source provenance. Preserve IDs when editing; do not relabel a proposal as a
389
389
  verified fact. `pages --id ID` also reads one page. A targeted read has no change
390
390
  cursor; obtain one from a complete collection inventory when watching updates.
391
391
  Commands `memory.create/update/delete` and `memory.page.create/update/delete`
392
- require `memory:write`. For a new space, choose one UUID for its root ID, scope
392
+ require `memory:write`. For a new space, choose one UUID v4 for its root ID, scope
393
393
  suffix and initial epoch, then use the returned epoch/revision for later writes.
394
394
  All edits use the same local command journal and optimistic revision checks as
395
395
  project commands. Never copy private source files into this npm package.
396
+
397
+ ## Page access and visual Graph levels
398
+
399
+ A memory can define `contentRoles` (stable IDs and display names). Membership
400
+ assignments are managed in the application. Page `visibility` is `inherit`,
401
+ `restricted`, or `private`; `readRoles` selects defined roles for a restricted
402
+ page. Restrictions apply through parent folders and to attached files. Content
403
+ roles never grant editing rights. Only memory administrators can change page
404
+ restrictions or move existing pages between parents. Never change sharing as a
405
+ workaround for denied reads.
406
+
407
+ Resources, search, references and media reads enforce current page access.
408
+ After permission changes, discard cached results and restart incremental reads
409
+ when `reset_required` is returned. An offline copy cannot establish current
410
+ access. Keep Graph nodes and their own notes when a linked page is unavailable.
411
+
412
+ Nodes accept `imageAssetId` for an image uploaded to the same memory and
413
+ `detailLevel`: `auto`, `overview`, `identity`, or `detail`. The node `kind` is its content type. Overview shows products, projects and brands;
414
+ Identities shows characters, people and entities (never places or scenes). Details
415
+ shows every type and supports type/status filters. Prefer `auto`; an explicit
416
+ `overview` can highlight another type there. Display level is not authorization.
417
+ Upload only approved imagery. Attaching a private image to a shared Graph makes
418
+ it visible to that Graph's readers and requires the user's authorization.
419
+ Read the full current record before editing and preserve its revision.
@@ -0,0 +1,144 @@
1
+ # Keep product documentation beside your code
2
+
3
+ Choose the Memory libraries and Graphs relevant to a repository. GeniusTasker is
4
+ the editable source; the CLI produces a dated Markdown snapshot in your chosen
5
+ directory. Memory remains independent of projects.
6
+
7
+ This workflow requires `documentationSync: true` in `geniustasker capabilities`
8
+ and the `docs sync` command in your installed client. All reads use your current
9
+ account, connection, profile and page permissions.
10
+
11
+ ## Configure a repository
12
+
13
+ Create a small configuration file, for example `geniustasker-docs.json`:
14
+
15
+ ```json
16
+ {
17
+ "formatVersion": 1,
18
+ "sources": [
19
+ { "scope": "memory:PRODUCT_ID", "pages": true, "graph": true },
20
+ { "scope": "memory:DESIGN_ID", "parentId": "VISUALS_FOLDER_ID", "pages": true }
21
+ ],
22
+ "media": "local"
23
+ }
24
+ ```
25
+
26
+ Use IDs discovered through your own account. Omit `parentId` for a whole library.
27
+ `graph` includes that scope’s Graph, independently of its document subtree.
28
+ `media: "references"` keeps resource IDs without downloading bytes; `local`
29
+ downloads only media used by the selected pages and Graph thumbnails and needs
30
+ `media:read`. Choose up to 50 scopes, with one subtree per scope.
31
+
32
+ ```sh
33
+ geniustasker docs sync --context work --directory docs/geniustasker --file geniustasker-docs.json --json
34
+ geniustasker docs status --directory docs/geniustasker --json
35
+ geniustasker docs sync --context work --directory docs/geniustasker --json
36
+ ```
37
+
38
+ The first call saves the selection. Later calls reuse it; supplying another
39
+ configuration explicitly changes the selection. The recommended destination is
40
+ `docs/geniustasker/`, but choose a path that fits your repository. Exporting private
41
+ knowledge does not publish it or authorize committing it to a public repository.
42
+
43
+ ## What appears locally
44
+
45
+ All generated files live in the destination’s **`content/`** subdirectory.
46
+ Keep handwritten files alongside `content/`, rather than inside it.
47
+
48
+ ```text
49
+ docs/geniustasker/
50
+ content/
51
+ .geniustasker-manifest.json
52
+ memory-PRODUCT_ID/
53
+ index.md
54
+ pages/
55
+ overview--stable-suffix/index.md
56
+ visuals--stable-suffix/
57
+ interface--stable-suffix/index.md
58
+ resources/RESOURCE_ID.png
59
+ graph.md
60
+ graph.json
61
+ graph/nodes-0000.md
62
+ graph/nodes-0000.json
63
+ graph/edges-0000.md
64
+ graph/edges-0000.json
65
+ ```
66
+
67
+ Pages keep Markdown headings, tables, lists, code and Mermaid blocks. Each starts
68
+ with an automatic-generation notice and ends with source ID, revision, edit time,
69
+ creator/editor and source epoch. Older imported records can have an unknown
70
+ editor; the exporter does not invent one. View diagrams in a Mermaid-capable
71
+ Markdown reader.
72
+
73
+ Shared resources have one local file per asset ID within the selected Memory.
74
+ The server’s verified SHA-256 is checked when available; unchanged immutable
75
+ assets reuse the previously verified local bytes. Generated files contain no
76
+ bearer tokens or signed download URLs.
77
+
78
+ Graph JSON is split into chunks of at most 100 records, with a small `graph.json`
79
+ index. The Markdown companions preserve node notes and qualified relations.
80
+ References to another Memory remain source identities: access to a Graph does
81
+ not grant access to linked content, and a missing reference does not erase nodes.
82
+
83
+ ## Efficient updates
84
+
85
+ The exporter checks current access and folder versions first. It skips unchanged
86
+ branches, retrieves changed Markdown pages individually, and uses Graph change
87
+ cursors after the first inventory. Moves, non-latest-child deletions and restored
88
+ sources are detected. A continuation cannot silently mix source revisions.
89
+
90
+ An interrupted first export keeps completed downloads in a private cache beside
91
+ the CLI credentials, outside the repository. The next attempt checks access and
92
+ the current tree again before reusing a page with the same revision. Graph and
93
+ media downloads also resume when their source checkpoint still matches. A quota
94
+ reset therefore does not require downloading the same first pages repeatedly.
95
+ Changed or inaccessible entries are discarded. The temporary cache is bounded
96
+ to twice the selected byte budget and is removed after a successful sync.
97
+
98
+ Use `memory tree --scope memory:ID` to inspect a bounded folder. Continue with
99
+ `--after`, `--epoch` and `--checkpoint`. Use `memory markdown --scope memory:ID
100
+ --page PAGE_ID` for one page, optionally with its expected `--revision`.
101
+
102
+ There is no background polling. For a repository using generated knowledge:
103
+
104
+ 1. At the beginning of a working day, check `docs status`; sync before relying on
105
+ a snapshot whose freshness has not been checked that day.
106
+ 2. Read local files for the task. Fetch only missing source details through MCP.
107
+ 3. Apply relevant documentation changes to GeniusTasker using MCP, preserving
108
+ IDs, hierarchy, source authority and expected revisions.
109
+ 4. Sync again after finishing work that changes the documented product or Graph.
110
+
111
+ An offline or refused check never advances the successful check time. Local
112
+ files remain dated snapshots, not evidence of present authorization.
113
+
114
+ ## Failure and recovery
115
+
116
+ | Situation | Result and next step |
117
+ | --------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
118
+ | Network error or interrupted download | The previous complete snapshot remains. Rerun sync; completed downloads resume after fresh authorization and version checks. |
119
+ | Source changed during export | No mixed snapshot is installed. Reread and rerun. |
120
+ | Confirmed scope denial | Its managed snapshot is removed and marked unavailable. Regrant permits a fresh export. This cannot retract Git history or other copies. |
121
+ | Local edits/additions inside `content/` | Sync stops without overwriting them. Apply edits through MCP and preserve handwritten files outside the managed directory. |
122
+ | Account/environment changed | Use a separate destination; the exporter refuses to merge identities. |
123
+ | Another exporter is running | Wait for it. A crashed process can be released with `docs unlock --directory ...`; a living or foreign-host process is never unlocked. |
124
+ | Interrupted directory replacement | The next sync restores the previous snapshot when necessary, then revalidates. It does not publish unchecked staged data. |
125
+ | Quota or rate limit | Follow the returned reset/retry guidance. Do not create profiles to bypass account limits. |
126
+
127
+ Symlink destinations, path traversal and conflicting generated paths are refused.
128
+ The default budget is 20,000 files and 256 MiB. Explicit `--max-files` (up to
129
+ 100,000) and `--max-bytes` (up to 4 GiB) can raise it for a reviewed selection;
130
+ individual files remain bounded. These local budgets do not increase server
131
+ quotas. Narrow the selection if exporting everything is unnecessary.
132
+
133
+ ## Agent tools
134
+
135
+ | Tool | Purpose |
136
+ | ------------------------ | --------------------------------------------------------------- |
137
+ | `tasker_memory_tree` | Inspect a folder and descendant versions without loading bodies |
138
+ | `tasker_memory_markdown` | Fetch one source page with provenance |
139
+ | `tasker_docs_status` | Inspect the saved date and selections locally |
140
+ | `tasker_docs_sync` | Refresh the explicit selection in a local directory |
141
+ | `tasker_media_compare` | Compare a local file with an existing resource before upload |
142
+
143
+ The documentation, media and Graph skills describe the corresponding workflows.
144
+ They do not authorize account changes or publication outside the user’s task.
@@ -7,8 +7,8 @@ are selected in the browser and enforced by the service on every request.
7
7
  ## Codex: direct MCP
8
8
 
9
9
  ```sh
10
- npx -y @pulsarinteractive/geniustasker@0.1.0-beta.3 auth login --context work
11
- codex mcp add geniustasker -- npx -y @pulsarinteractive/geniustasker@0.1.0-beta.3 mcp --context work
10
+ npx -y @pulsarinteractive/geniustasker@0.1.0-beta.5 auth login --context work
11
+ codex mcp add geniustasker -- npx -y @pulsarinteractive/geniustasker@0.1.0-beta.5 mcp --context work
12
12
  ```
13
13
 
14
14
  Restart the host as needed, then inspect its MCP list. Ask the agent to read its
package/docs/LIMITS.md ADDED
@@ -0,0 +1,49 @@
1
+ # Usage limits
2
+
3
+ CLI and MCP share your GeniusTasker account limits. Creating more agent profiles,
4
+ opening more terminals or changing devices does not give additional allowance.
5
+ The service reports current limits through `geniustasker capabilities --json`.
6
+
7
+ ## Agent requests
8
+
9
+ | Allowance | Free | Premium | Pro |
10
+ | ----------------------------- | ----: | -----------------: | -----------------: |
11
+ | Requests per 60 seconds | 30 | 120 | 300 |
12
+ | Write requests per 60 seconds | 5 | 20 | 60 |
13
+ | Monthly request credits | 5,000 | No monthly ceiling | No monthly ceiling |
14
+ | Monthly write requests | 500 | No monthly ceiling | No monthly ceiling |
15
+
16
+ Write requests also count toward the request limit. For Free accounts, a read
17
+ costs one monthly credit and a write costs five; both monthly limits must have
18
+ capacity. Monthly counters reset at the beginning of the next calendar month
19
+ in UTC. Premium appears as `Starter` in API responses; Pro appears as `Pro`.
20
+
21
+ These are the current service settings, not a pricing commitment. Short-window
22
+ limits provide traffic protection and can apply approximately by location;
23
+ clients must follow the service response. Resource limits for projects, members,
24
+ Memory, storage and attachments are separate and still apply. Availability also
25
+ requires account approval and an explicitly granted agent connection.
26
+
27
+ ## When a limit is reached
28
+
29
+ | Response | Next step |
30
+ | -------------------------------- | --------------------------------------------------------------------- |
31
+ | Temporary rate limit (`429`) | Wait for the reported retry time; do not loop or open another context |
32
+ | Free monthly allowance exhausted | Wait for the reported reset or change plan when available |
33
+ | Resource capacity reached | Free capacity or change plan before creating more data |
34
+ | Permission refused (`403`) | Ask the account or resource owner to review access |
35
+ | Interrupted write | Keep its operation ID and retry that same operation |
36
+
37
+ The client preserves a write's immutable journal for safe retries. A timeout is
38
+ not proof that the write failed. Read the latest record after a revision conflict
39
+ before preparing a new operation.
40
+
41
+ ## Keep reads focused
42
+
43
+ - List one page of spaces or resources at a time and follow its cursor as needed.
44
+ - Use Memory search and its page index before downloading document bodies.
45
+ - Explore a bounded Graph neighborhood instead of loading every node.
46
+ - Reuse checkpoints for change reads; honor `restart_read` when the service asks.
47
+ - Local cache hits revalidate access. Revoked permissions never become an offline grant.
48
+
49
+ See [CLI reference](CLI.md) for commands and [Memory & Graph](MEMORY.md) for examples.
package/docs/MEMORY.md ADDED
@@ -0,0 +1,38 @@
1
+ # Memory and Graph
2
+
3
+ Memory stores structured documents independently of projects. Graph connects
4
+ nodes and links them to a page or a stable document block. These commands require
5
+ the matching deployed service capabilities; check `geniustasker capabilities --json` before using them.
6
+
7
+ ```sh
8
+ geniustasker memory search --scope memory:ID --query "release checklist" --json
9
+ geniustasker graph explore --scope memory:ID --center NODE_ID --depth 2 --json
10
+ geniustasker memory resolve --scope memory:ID --page PAGE_ID --block BLOCK_ID --json
11
+ ```
12
+
13
+ The matching MCP tools are `tasker_search`, `tasker_graph` and `tasker_reference`.
14
+ Search is paginated; Graph returns a bounded neighborhood and reports truncation.
15
+ Use `resources list` for complete selected records and `commands describe` for
16
+ contract-derived node/edge write fields. Writes keep the same immutable journal.
17
+
18
+ References recheck current access. If a friend withdraws access, the content
19
+ becomes unavailable while the node and its own text remain intact. A new grant
20
+ restores resolution; a link never grants access by itself. The client does not
21
+ cache resolved content. Discover capabilities before selecting a workflow.
22
+
23
+ ## Attachments
24
+
25
+ Discover `mediaUploadAvailable` and `maxUploadBytes` first. Prepare one explicitly
26
+ selected file with `media prepare --scope memory:ID --epoch EPOCH --file diagram.png
27
+ --content-type image/png`, then `media upload --operation UUID`. Keep that operation
28
+ ID after a timeout: retries verify the same bytes and do not create a second file.
29
+ Use the returned `assetId` in an image or attachment block. Images, PDF and plain
30
+ text are supported up to 15 MB; storage is charged to the Memory owner.
31
+
32
+ MCP equivalents are `tasker_media_prepare`, `tasker_media_upload`,
33
+ `tasker_media_action` and `tasker_media_download`. Downloads require an explicit
34
+ new local path and fresh read access. Removal leaves document blocks in place
35
+ so people can see and repair the unavailable attachment. No credentials, URLs
36
+ with public access tokens or file bytes are embedded in documents.
37
+
38
+ See the [CLI reference](CLI.md) for document blocks, page roles, node types, images and detailed command examples.
package/docs/RELEASING.md CHANGED
@@ -14,3 +14,10 @@ committing an npm token; it is not configured by this repository.
14
14
  Published npm versions are immutable. Use a new version for package changes.
15
15
 
16
16
  Canonical repository: https://github.com/PulsarInteractive/geniustasker-agent-tools
17
+
18
+ The npm package page and unqualified installs use the `latest` tag. After verifying
19
+ the release archive, explicitly update both the intended channel and the default
20
+ version; do not leave `latest` pointing at a superseded license or README. Verify
21
+ `npm view @pulsarinteractive/geniustasker dist-tags license repository.url --json`
22
+ and inspect the actual npm page. An old published archive is immutable; tags do
23
+ not rewrite its contents.
@@ -1,3 +1,3 @@
1
1
  [mcp_servers.geniustasker]
2
2
  command = "npx"
3
- args = ["-y", "@pulsarinteractive/geniustasker@0.1.0-beta.3", "mcp", "--context", "work"]
3
+ args = ["-y", "@pulsarinteractive/geniustasker@0.1.0-beta.5", "mcp", "--context", "work"]
package/examples/mcp.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "mcpServers": {
3
3
  "geniustasker": {
4
4
  "command": "npx",
5
- "args": ["-y", "@pulsarinteractive/geniustasker@0.1.0-beta.3", "mcp", "--context", "work"]
5
+ "args": ["-y", "@pulsarinteractive/geniustasker@0.1.0-beta.5", "mcp", "--context", "work"]
6
6
  }
7
7
  }
8
8
  }
package/mcp.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "geniustasker": {
5
5
  "type": "stdio",
6
6
  "command": "npx",
7
- "args": ["-y", "@pulsarinteractive/geniustasker@0.1.0-beta.3", "mcp", "--context", "work"]
7
+ "args": ["-y", "@pulsarinteractive/geniustasker@0.1.0-beta.5", "mcp", "--context", "work"]
8
8
  }
9
9
  }
10
10
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pulsarinteractive/geniustasker",
3
- "version": "0.1.0-beta.3",
3
+ "version": "0.1.0-beta.5",
4
4
  "private": false,
5
5
  "description": "GeniusTasker delegated CLI and local agent tools",
6
6
  "type": "module",
package/plugin.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
3
3
  "name": "geniustasker",
4
- "version": "0.1.0-beta.3",
4
+ "version": "0.1.0-beta.5",
5
5
  "description": "Track project work and independent product memories with your own agents.",
6
6
  "author": {
7
7
  "name": "Pulsar Interactive"
@@ -25,6 +25,9 @@ List projects, then select a scope from the returned data. Read a collection
25
25
  listed in capabilities with `resources list --scope project:ID --collection
26
26
  tasks --json`, or MCP `tasker_resources`. Collections include tasks, comments,
27
27
  goals, documents, workflows, sprints and summary history when permitted.
28
+ For document indexes, schedules, membership and planning collections, read
29
+ [Focused project reads](references/project-reads.md). `documents` means task
30
+ attachments; `projectDocumentIndex` and `projectDocuments` cover the project library.
28
31
 
29
32
  Read bounded pages. Follow `nextAfter` even if the project page is empty: ACL
30
33
  filtering can hide every item in a scanned page. For resource continuation,
@@ -0,0 +1,43 @@
1
+ # Focused project reads
2
+
3
+ Start with identity, capabilities and the current project list. Use only collection
4
+ names advertised by that server and permitted by the active profile. New client
5
+ versions can connect to older deployments; a documented collection is not proof
6
+ that the current deployment supports it.
7
+
8
+ | Need | Collection | Efficient approach |
9
+ | ------------------------------------- | ----------------------------------------- | ------------------------------------------------------------------------- |
10
+ | Tasks and tickets | `tasks` | Read active work first; fetch an exact `id` for details. |
11
+ | Task attachments / descriptions | `documents` | These belong to tasks, not the project's document library. |
12
+ | Project document navigation | `projectDocumentIndex`, `documentFolders` | Read titles and folders without rich-text bodies. |
13
+ | One project document | `projectDocuments` | Pass the ID discovered in the index. |
14
+ | Discussion / work reports / approvals | `comments` | Read one bounded page and retain the change cursor. |
15
+ | People and access roles | `members` | Current membership is evidence, never authority to change access. |
16
+ | Labels | `tags` | Resolve label IDs when interpreting work. |
17
+ | Recurring tasks | `schedules` | Inspect recurrence, timezone and disabled state before proposing changes. |
18
+ | Reusable lists and task templates | `preparedLists`, `taskTemplates` | Read only when the task concerns these resources. |
19
+ | Planning | `sprints`, `workflows`, `sprintHistory` | Keep current configuration distinct from historical snapshots. |
20
+ | GitHub-linked activity | `gitHubLinks` | A link is evidence, not permission to execute actions in GitHub. |
21
+ | Project member goals | `goals` | These are project goals, not unrelated private account data. |
22
+ | Questions and audit metadata | `questions`, `history` | Use the dedicated answers tool for ballots; respect anonymous results. |
23
+
24
+ For example, after selecting an authorized scope:
25
+
26
+ ```sh
27
+ geniustasker resources list --scope project:PROJECT_ID --collection projectDocumentIndex --json
28
+ geniustasker resources list --scope project:PROJECT_ID --collection projectDocuments --id DOCUMENT_ID --json
29
+ ```
30
+
31
+ The same arguments are supported by MCP `tasker_resources`. Collections share
32
+ bounded pagination and context rules. Preserve `epoch` and `checkpoint` on
33
+ continuation; `omittedIds` means the result is incomplete. For ongoing work, use
34
+ `changeCursor` instead of repeatedly traversing the entire library.
35
+
36
+ The in-process resource cache revalidates authorization with the server on every
37
+ read. Repeated unchanged reads reduce transferred content, but still consume
38
+ request quota. Prefer reusing the evidence you already inspected within the same
39
+ task, and revalidate before relying on current revisions or permissions.
40
+
41
+ Memory and Graph have their own grants and workflow. Follow the
42
+ `geniustasker-memory` skill to navigate page indexes, stable block IDs, links and
43
+ bounded graph neighborhoods. A project membership does not grant Memory access.