ultimate-brain 0.3.0 → 0.3.1

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.
@@ -40,7 +40,7 @@ Run CLI commands as `brain <command> --brain <brain> --json`. If `brain` is not
40
40
  - **Don't fix anything in Notion.** Structure changes go through the `brain-notion-change` skill (decision 0022).
41
41
  4. **Store the ids.** For each database found, run `brain config set notion.databases.<key> '"<database id>"'`. Store the **database** id, not the data source id; skills resolve the data source when they query.
42
42
  5. **Tasks** (decision 0018):
43
- - **The default Tasks database on Brain Data:** set `notion.tasks.database` to its id, and `notion.tasks.properties.source` to `"Source"` when it has that relation (built from 0.3.0 on, or after migration 0005). The rest of the template's mapping (Name, Status, Due, Project, Area, Meeting, Brain ID) already matches it.
43
+ - **The default Tasks database on Brain Data:** set `notion.tasks.database` to its id. The template's mapping (Name, Status, Due, Project, Area, Meeting, Source, Brain ID) already matches it; check `notion.tasks.properties.source` is `"Source"` when the database has that relation (built from 0.3.0 on, or after migration 0005), and set it to `""` when it doesn't, so sync never writes to a missing property.
44
44
  - **The user's own tasks database:** ask which one, read its properties, and propose a mapping for `title` (required), `status`, `due`, `project`, `area`, `owner`, either `meeting` (a relation to Meetings, preferred) or `meeting_url` (a URL property), and `source` (a relation to the Inbox, optional: the backlink for the owner's tasks from documents and emails).
45
45
  - Show the mapping and get a yes before running `brain config set notion.tasks '<json>'`.
46
46
  - Also set `new_task_status` to the status option new tasks should get.
@@ -21,7 +21,7 @@ The navigation on the left of every page lists the Spaces. Each one has tabs tha
21
21
  | **Projects** | Keep projects moving | Active · By area · Deadlines · Gone quiet |
22
22
  | **Plan** | Check that your work serves your goals | Goals · Key results · Areas · Projects by goal |
23
23
  | **Review** | Decide on the changes the brain proposes | Needs my decision · Sources disagree · Approved recently · Rejected |
24
- | **Knowledge** | Find what the brain knows, and everything that came in | Decisions · Questions · Concepts · People · Orgs · Inbox (Inbox: new captures · History: everything ingested, with what it produced) |
24
+ | **Knowledge** | Find what the brain knows, and everything that came in | Decisions · Questions · Concepts · People · Orgs · Inbox (What's in my inbox?: new captures · What came in?: everything ingested, with what it produced) |
25
25
  | **Archive** (under System) | Find finished and archived records | One tab per database |
26
26
 
27
27
  **Area pages** collect everything for one area: its goals, projects, tasks, meetings, decisions and open questions in views, and its people and clients as lists at the top. Open one from Plan → Areas.
@@ -182,4 +182,4 @@ Run these in Claude Code or Codex, from your brain's folder.
182
182
  | A record shows Draft | You haven't reviewed it yet | Read it; set **Reviewed**, or **Disputed** if it's wrong |
183
183
  | An Area page doesn't list a decision | A decision's Area comes from its project | Link the decision's project to the area, then "sync with Notion" |
184
184
  | A Review row with a Note is still pending | The agent couldn't tell what the Note meant, or it described a different change | Answer the agent's question, or look for the new row it proposed |
185
- | You want to see what the brain made from a document | Every input has a row in Knowledge → Inbox → History | Open the row: Decisions, Questions, Concepts and People list what it produced |
185
+ | You want to see what the brain made from a document | Every input has a row in Knowledge → Inbox → What came in? | Open the row: Decisions, Questions, Concepts and People list what it produced |
package/dist/cli.js CHANGED
@@ -18,6 +18,7 @@ import { syncApplyCommand, syncPlanCommand, syncRecordCommand, syncRenderCommand
18
18
  import { viewsCommand } from "./commands/views.js";
19
19
  import { runCommand } from "./lib/command.js";
20
20
  import { exitCodeFor } from "./lib/errors.js";
21
+ import { installedProduct } from "./lib/skills.js";
21
22
  /** Registered commands, in help order. */
22
23
  export const COMMANDS = [
23
24
  initCommand, statusCommand, configGetCommand, configSetCommand, idNewCommand, indexCommand, lintCommand, logCommand, noteNewCommand, proposalNewCommand, proposalListCommand, applyCommand,
@@ -32,6 +33,7 @@ Global options:
32
33
  --json Print one JSON document on stdout
33
34
  --now <time> Use this ISO 8601 UTC time as "now"
34
35
  -h, --help Show help
36
+ --version Print the installed version
35
37
 
36
38
  Commands:
37
39
  ${COMMANDS.map((command) => ` ${command.name.padEnd(16)}${command.summary.split(". ")[0].replace(/\.$/, "")}`).join("\n")}
@@ -47,6 +49,14 @@ export async function runCli(args, options = {}) {
47
49
  io.stdout.write(HELP_TEXT);
48
50
  return 0;
49
51
  }
52
+ // spec/cli.md §3.1: --version ignores any command and every other option but --json.
53
+ if (args.includes("--version")) {
54
+ const { version } = installedProduct();
55
+ io.stdout.write(args.includes("--json")
56
+ ? `${JSON.stringify({ ok: true, command: "version", brain: null, data: { version }, warnings: [] })}\n`
57
+ : `${version}\n`);
58
+ return 0;
59
+ }
50
60
  const handlers = new Map();
51
61
  for (const command of COMMANDS) {
52
62
  handlers.set(command.name, (rest, commandIo) => runCommand(command, rest, commandIo, options));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ultimate-brain",
3
- "version": "0.3.0",
3
+ "version": "0.3.1",
4
4
  "description": "CLI for an AI-assisted Markdown and Git second brain",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -29,6 +29,7 @@
29
29
  "scripts": {
30
30
  "build": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\" && tsc --project tsconfig.build.json",
31
31
  "prepack": "npm run build",
32
+ "skills": "node --experimental-strip-types scripts/build-skills.ts && node --experimental-strip-types --test tests/skills.test.ts",
32
33
  "test:package": "node scripts/test-package.mjs",
33
34
  "test:scripts": "node --test tests/release-scripts.test.mjs",
34
35
  "test": "node --experimental-strip-types --test tests/*.test.ts tests/*.test.mjs",
@@ -29,7 +29,7 @@
29
29
  "owner": "",
30
30
  "meeting": "Meeting",
31
31
  "meeting_url": "",
32
- "source": "",
32
+ "source": "Source",
33
33
  "brain_id": "Brain ID"
34
34
  },
35
35
  "new_task_status": "To Do"