Skip to content

POWE-120: add Topic Memory dashboard - #1537

Open
frf12 wants to merge 3 commits into
masterfrom
agent/agent/6682e4b9037a
Open

POWE-120: add Topic Memory dashboard#1537
frf12 wants to merge 3 commits into
masterfrom
agent/agent/6682e4b9037a

Conversation

@frf12

@frf12 frf12 commented Sep 9, 2026

Copy link
Copy Markdown
Member

Implements the read-only Topic Memory Dashboard requested by POWE-120.

  • Adds /dashboard/topics with browse, search, exact revision detail, and source references.
  • Uses POST /v1/topic-memory/search with the strict API contract (scope_id, query).
  • Shows clear empty and no-match states.
  • Does not add Profile or Prompt configuration pages.

Validation: targeted dashboard tests (2 passed), Ruff, and git diff --check.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

license-eye has checked 1434 files.

Valid Invalid Ignored Fixed
1014 1 419 0
Click to see the invalid file list
  • src/powercontext/server/dashboard/templates/topics.html
Use this command to fix any missing license headers
```bash

docker run -it --rm -v $(pwd):/github/workspace apache/skywalking-eyes header fix

</details>

@@ -0,0 +1,27 @@
{% from 'components/page-heading.html' import page_heading %}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
{% from 'components/page-heading.html' import page_heading %}
<!--
~ Copyright (c) 2026 OceanBase.
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
{% from 'components/page-heading.html' import page_heading %}

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

license-eye has checked 1435 files.

Valid Invalid Ignored Fixed
1014 2 419 0
Click to see the invalid file list
  • src/powercontext/server/dashboard/templates/prompts.html
  • src/powercontext/server/dashboard/templates/topics.html
Use this command to fix any missing license headers
```bash

docker run -it --rm -v $(pwd):/github/workspace apache/skywalking-eyes header fix

</details>

@@ -0,0 +1,20 @@
{% from 'components/page-heading.html' import page_heading %}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
{% from 'components/page-heading.html' import page_heading %}
<!--
~ Copyright (c) 2026 OceanBase.
~
~ Licensed under the Apache License, Version 2.0 (the "License");
~ you may not use this file except in compliance with the License.
~ You may obtain a copy of the License at
~
~ http://www.apache.org/licenses/LICENSE-2.0
~
~ Unless required by applicable law or agreed to in writing, software
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
{% from 'components/page-heading.html' import page_heading %}

<section class="col-lg-7" aria-labelledby="topic-detail-heading"><div class="card"><div class="card-body">
{% if errors.get('topic_memory_selected') %}{{ read_error(errors.topic_memory_selected, t.topic_memory) }}
{% elif data.topic_memory_selected %}{% set topic = data.topic_memory_selected %}
<div class="d-flex justify-content-between gap-3"><div><h2 class="card-title mb-1" id="topic-detail-heading">{{ topic.title }}</h2><code>topic-memory/{{ topic.artifact.artifact_id }}@{{ topic.artifact.revision }}</code></div><span class="badge bg-green-lt">{{ t.current_revision }}</span></div>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P2] Check publication state before labeling a revision as current

This badge is unconditional, but the URL selects an exact revision. I reproduced this with SQLite and Firefox: after publishing revision 2, reopening the revision 1 link still shows the old content with “Current revision”, even though the Runtime reports is_current=False. A saved link can therefore present outdated guidance as current. Please distinguish historical revisions using the actual publication state and provide a link to the current revision.

}
for item in items
],
"next_cursor": None,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P2] Allow browsing beyond the first 50 topics

The browse call defaults to 50 items, but next_cursor is always None and the page has no pagination controls. With 51 published topics in one Scope, I confirmed that the browser shows only the newest 50. The omitted topic is still searchable, but users cannot discover it by browsing the inventory. Please pass through the existing after cursor support and add navigation to subsequent pages.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants