Repository navigation
v0.19.0
Added
-
mureo_state_getnames the file it read (#767).mureo_state_get
now carriespath— the file the answer came from — which
mureo_strategy_getalready did, and both read tools now also carry the
runtime'sworkspace_idand, when the runtime provides any,notices.
A scheduled run whose cwd is one workspace and an operator terminal
opened in another read differentSTATE.jsonfiles, and "the last check
was 11 days ago" was uncheckable because nothing said which file that
came from. Likeserver_nowthese are response fields only and are never
persisted.RuntimeContext.noticesis new (default empty) so an alternate
runtime can put a warning in front of the agent instead of on stderr.
/daily-checknow opens its report with aWorkspace:line and names
the file when it declares the previous summary missing or stale, and
stops at step 0 whennoticesis non-empty instead of diagnosing the
wrongSTATE.json. -
Dispatcher-level journal (#758, phase 1). Every MCP tool call that
enters the dispatcher now leaves exactly one append-only JSON line in
JOURNAL.jsonl— every family (built-in Google / Meta / Search Console /
analysis / context / learning / creative studio / rollback / batch /
change-import, and every plugin) and every outcome:ok, a platform
error envelope, an exception, a policy denial, an exclusion-preflight
refusal, invalid arguments. Until now only plugin calls were recorded
(plugin_audit.jsonl) andSTATE.json'saction_logreceived a small
allow-list of native mutations, so the calls an operator most wants to
see after the fact — the ones that were refused or that failed — were
the ones nothing kept. The journal is the complete record;action_log
keeps its job as the curated, strategy-aware summary of what actually
changed, andplugin_audit.jsonlis untouched. Each record carries the
tool, family, whether it was a mutation, the masked arguments, the
outcome and its scrubbed reason, the duration, the openbatch_id, the
MCP client, and the mureo version — never a result body and never a
credential: arguments go through the same masker and reasons through
the same scrubber as the plugin audit log. The file is written0600
besideSTATE.json/STRATEGY.mdso the record travels with the
workspace (a directory that is not a workspace falls back to
~/.mureo/journal.jsonlrather than being littered with a file nobody
asked for); commit the workspace to git and you should add
JOURNAL.jsonlto.gitignore. Read it with the newmureo journal
(--last/--tool/--since/--failures/--mutations/
--json/--path), and switch the whole thing off with
MUREO_DISABLE_JOURNAL=1. No behaviour change for any caller: the
dispatcher returns and raises exactly what it did before.
Fixed
-
Raw
GoogleAdsExceptiontext in read-path error results.
api_error_handlerreturnedstr(exc)for a failing read (*_list,
*_report, …), which for a Google Ads error is the gRPC call repr —
request metadata included. Mutation paths already curated the message
(#603); reads now do too, through one sharedexception_text, and the
plugin-audit / journal scrubber additionally masksdeveloper-tokenand
authorizationvalues. -
docs/native-vs-official.mdclaimed Yahoo / LINE / Logly (and GA4) as
native families (#762). Only Google Ads, Meta Ads and Search Console ship
in this repository; the rest are provider-registry plugins or the official
GA4 driver. Tool counts and the official-MCP sections re-verified against
0.18.0, English and Japanese pages;architecture.mddraws GA4 outside the
native boxes. -
mureo configurere-asked for Google OAuth on every run and could switch
mureo-native off behind an unreadable service-account path (#761). The
Google Ads auth slot is now skipped when a Google refresh token is already
on disk (as the Search Console slot already was), with a Re-authorize
Google button, and the "already authorized" note no longer vanishes when
another auth slot follows it. AGOOGLE_APPLICATION_CREDENTIALSvalue must
be an absolute path to a readable file before the official Google Ads
provider counts as credentialed, so a mistyped path keeps mureo-native on
and reaches the wizard'sstill_needs_credentialsmessage. -
Stale developer-token copy after the 0.18.0 sunset changes (#756). The
mureo configureofficial-Google-Ads install hint no longer says a Developer
Token is required — the service-account JSON path is the only credential the
official server needs — thecredentials.jsonsamples in the authentication
and Docker docs list the token last and mark it optional, and the
plugin-authoring guide, the Amazon Ads docs and the code comments describe
the shared Google credential as the OAuth client with the token as optional
legacy. No behaviour change.