Skip to content

feat(lua-agent-builder): App Viewers as shipped (App mode, chat, branding, link names, pane); 1.19.0 - #33

Merged
selcuk-lua merged 3 commits into
mainfrom
selcuk/app-viewer-features
Nov 3, 2026
Merged

selcuk-lua merged 3 commits into
mainfrom
selcuk/app-viewer-features

Conversation

@selcuk-lua

Copy link
Copy Markdown
Contributor

LUA-1986 (under LUA-1892). The plugin now teaches the App Viewer features as they shipped, so a builder asking "let reps sign in and save their own data" gets the right pieces, and /lua-audit knows the App Viewer access rules.

What changed

  • lib/knowledge/web-apps.md §3: viewers (write, chat, mode). App mode with Apps.viewers.add / .remove: adds come only from a write route by a full-access person; removes also work from a job or webhook; the app removes only people its code added; someone an admin removed is excluded until an admin invites them again. Also the outcomes and AppViewersError codes, App Viewer chat with Lua.request.appAccess, branding (accent, logo, branding.icon from 3.65.0), and the /a/<link name> sign-in link with its link name in App access. It notes that lua compile refuses a write route that never reads auth. §4: lua.pane.open/close/ask/setContext and lua.chat.available(). Four troubleshooting rows. The "not available yet" notes for chat and App mode are gone.
  • decision-trees.md, commands/lua-new.md, agents/lua-skill-builder.md: "people outside the team sign in and keep their own records" now leads to App Viewers, a roster and the ownership check.
  • primitives.md: Lua.request.appAccess.
  • agents/lua-auditor.md: the gateway paragraph now names App Viewers (it said every caller has access to the agent). It lists Apps.viewers calls and appAccess branches, and reads the agent's tools when the app asks for chat. Two new findings: 15, App Viewer chat through unscoped tools (always HIGH), and 16, App mode call that cannot work (LOW).
  • 1.19.0: version bump and changelog.

Checked against

lua-core-services main b47e9c43e1 (lua-cli 3.65.0: src/api-exports.ts Apps, src/interfaces/lua.ts LuaAppAccess, src/types/web-app.ts, web-app.plugin.ts; shared-types app-viewers.types.ts, web-route-contract.ts; lua-api app-viewer-rules.service.ts, web-app-entry.service.ts; lua-core web-app-access.service.ts, app-viewer-turn-tools), lua-ui main (app-client 0.1.1 pane.ts, chat.ts), and lua-desktop main (App access "Link name").

npm run lint passes. npm test: 2561 of 2562 pass. The failure is test/lib/qa/isolation.test.mjs, a 30 s timeout under local Node 26; it does not touch these files. CI on Node 18/20 decides.

🤖 Generated with Claude Code

…ding, link names, pane); 1.19.0

web-apps.md §3: App mode with Apps.viewers.add/remove (full-access adds from a
write route only, removes also from a job or webhook, only people the app
added, admin exclusions and the re-invite that lifts them, outcomes and error
codes), App Viewer chat and Lua.request.appAccess, branding (accent, logo,
icon) and the /a/<link name> sign-in link. §4: lua.pane and
lua.chat.available(). Drops the "not available yet" notes for chat and App
mode. Routing in decision-trees, lua-new and lua-skill-builder; the auditor's
gateway paragraph names App Viewers and gains findings 15 and 16.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@selcuk-lua
selcuk-lua requested review from richard-lua and removed request for richard-lua November 3, 2026 07:47
@selcuk-lua selcuk-lua closed this Nov 3, 2026
@selcuk-lua selcuk-lua reopened this Nov 3, 2026
- App mode example guards on accessLevel === 'use' (absent locally means full)
- auditor greps all of src/ for Apps.viewers and reads every tool when chat is on
- finding 15 covers outside APIs and User/Orders/Baskets, notes org memory + KB
- finding 16 covers remove outside a write route, job, webhook or trigger
- App Viewers keep org memory tools and searchKnowledgeBase: say so
- skill builder asks write only when needed; team-only write routes refuse 'use'
- decision tree scopes reads; previews refuse Apps.viewers (test_session_write_refused)
- Lua.request heading lists userId/appAccess; audit Limits names App access switches

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@selcuk-lua
selcuk-lua merged commit ba7e8be into main Nov 3, 2026
7 checks passed
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.

1 participant