Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion packages/hermes-tlon-adapter/adapter.py
Original file line number Diff line number Diff line change
Expand Up @@ -4993,7 +4993,10 @@ def register(ctx) -> None:
"and /tlon (version, status storage, status telemetry, status "
"binary — debug info). Point the owner at those commands when asked "
"rather than changing configuration yourself. "
"Use concise plain text and basic markdown."
"Use concise plain text and basic markdown. Never use LaTeX math "
"delimiters ($...$, $$...$$, \\(...\\), \\[...\\]) in note bodies "
"or message text — Tlon renders no math; write math as plain "
"text/Unicode or in code blocks."
+ _reaction_platform_hint(TlonConfig.from_env().reaction_level)
),
)
37 changes: 37 additions & 0 deletions packages/hermes-tlon-adapter/test_tlon_tool.py
Original file line number Diff line number Diff line change
Expand Up @@ -345,6 +345,43 @@ def register_platform(self, **kwargs):
self.assertIn("--parent <post-id>", platform_hint)
self.assertIn("posts delete heap/~host/name <post-id>", platform_hint)

def test_tool_description_includes_latex_guidance(self):
description = tlon_tool.TLON_TOOL_DESCRIPTION

self.assertIn("Never use LaTeX math delimiters", description)
self.assertIn("$$...$$", description)
self.assertIn("\\(...\\)", description)
self.assertIn("\\[...\\]", description)
self.assertIn("plain text/Unicode", description)
self.assertIn("code blocks", description)

class RecordingContext:
def __init__(self):
self.platform = None

def register_hook(self, *_args):
pass

def register_tool(self, **_kwargs):
pass

def register_skill(self, *_args, **_kwargs):
pass

def register_platform(self, **kwargs):
self.platform = kwargs

context = RecordingContext()
adapter_mod.register(context)
platform_hint = context.platform["platform_hint"]

self.assertIn("Never use LaTeX math delimiters", platform_hint)
self.assertIn("$$...$$", platform_hint)
self.assertIn("\\(...\\)", platform_hint)
self.assertIn("\\[...\\]", platform_hint)
self.assertIn("plain text/Unicode", platform_hint)
self.assertIn("code blocks", platform_hint)

def test_blocks_notebook(self):
args, error = tlon_tool.split_tlon_command('notebook diary/~zod/notes "Title"')
self.assertIsNone(error)
Expand Down
3 changes: 3 additions & 0 deletions packages/hermes-tlon-adapter/tlon_tool.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,9 @@ class _DiaryMigrationNotificationRegistration:
"notes/~host/name nests). For notes bodies, use --body <file> "
"(note-create also accepts --markdown <file>); --stdin is blocked because "
"Hermes cannot pipe stdin into the CLI process. "
"Never use LaTeX math delimiters ($...$, $$...$$, \\(...\\), \\[...\\]) — "
"Tlon renders no math; write math as plain text/Unicode or in code "
"blocks. "
"%diary channels are deprecated and unsupported by this tool. Ask the "
"owner to type `/migrate <diary-nest>` to move one to %notes. Hermes "
"delivery uses `tlon posts send`, which refuses diary/ targets. "
Expand Down
1 change: 1 addition & 0 deletions packages/openclaw/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
onInternalDiagnosticEvent,
} from 'openclaw/plugin-sdk/diagnostic-runtime';

import { tlonPlugin } from './src/channel.js';

Check warning on line 11 in packages/openclaw/index.ts

View workflow job for this annotation

GitHub Actions / Bot Package Checks

'tlonPlugin' is defined but never used
import { publishContextLensEvent } from './src/context-lens-events.js';
import { registerContextLensRoutes } from './src/context-lens-routes.js';
import { initContextLensShipSync } from './src/context-lens-ship-sync.js';
Expand Down Expand Up @@ -42,7 +42,7 @@
import { resolveBridgeForCommand } from './src/monitor/command-auth.js';
import { isRouteDebugEnabled } from './src/monitor/session-routing.js';
import { handleOwnerListenCommand } from './src/owner-listen-command.js';
import { setTlonRuntime } from './src/runtime.js';

Check warning on line 45 in packages/openclaw/index.ts

View workflow job for this annotation

GitHub Actions / Bot Package Checks

'setTlonRuntime' is defined but never used
import { getSessionRole } from './src/session-roles.js';
import { parseTlonTarget } from './src/targets.js';
import {
Expand Down Expand Up @@ -972,6 +972,7 @@
'DO NOT use this tool to send messages — use the `message` tool instead. ' +
'%diary channels are deprecated and unsupported by this CLI tool; ask the owner to type `/migrate <diary-nest>` to move one to %notes. ' +
'OpenClaw message delivery still accepts diary/ targets, including writable archives. ' +
'Never use LaTeX math delimiters ($...$, $$...$$, \\(...\\), \\[...\\]) in note bodies or message text — Tlon renders no math; write math as plain text/Unicode or in code blocks. ' +
"Examples: 'activity mentions --limit 10', 'channels groups', 'contacts self', 'groups list', 'notes list'",
parameters: {
type: 'object',
Expand Down
10 changes: 9 additions & 1 deletion packages/tlon-skill/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -476,13 +476,21 @@ explanatory error). Deprecated diary channels are unmanaged by the CLI except
through the owner-run `tlon notes migrate-plan <diary-nest>` and
`tlon notes migrate-apply <diary-nest> --yes` paths.

Message text supports Markdown lists, task lists, blockquotes, code, links, and ship mentions; raw HTML blocks and reference-style links are not supported.
Message text supports Markdown lists, task lists, blockquotes, code, links, and ship mentions; raw HTML blocks and reference-style links are not supported. Never use LaTeX math delimiters ($...$, $$...$$, \(...\), \[...\]) — Tlon renders no math; write math as plain text/Unicode or in code blocks.

### Notes

Manage %notes notebooks (Markdown-first). Notebooks are nests of the form
`notes/~host/name`; note bodies are plain Markdown (not Tlon Story).

Do not use LaTeX math delimiters (`$...$`, `$$...$$`, `\(...\)`, `\[...\]`) in
note bodies or message text. No Tlon surface renders math: the delimiters
display literally or get mangled (Markdown emphasis, mentions, and escaping can
corrupt the text inside and around them), and in a note body the backslashes in
`\(` and `\[` are silently eaten by Markdown escaping, so those delimiters
vanish. Write math as plain text/Unicode (`x²`, `E = mc²`, `θ ∈ [0, 2π)`) and
use code blocks or inline code for complex formulas.

```bash
tlon notes status # Check %notes reachability
tlon notes request 0vabc # Check a pending write request
Expand Down
3 changes: 3 additions & 0 deletions packages/tlon-skill/scripts/commands/notes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,9 @@ Content sources (Markdown):
--markdown <file> Alias for --body
--stdin Read the note body from stdin

Note bodies are plain Markdown. LaTeX math delimiters ($...$, $$...$$,
\\(...\\), \\[...\\]) do not render; use plain text/Unicode or code blocks.

Examples:
tlon notes list
tlon notes request 0vabc
Expand Down
Loading