openryoko 2026.8.21 → 2026.8.28
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.
- package/dist/package.json +2 -2
- package/dist/src/cli/initial-config.d.ts +13 -0
- package/dist/src/cli/initial-config.d.ts.map +1 -0
- package/dist/src/cli/initial-config.js +39 -0
- package/dist/src/cli/initial-config.js.map +1 -0
- package/dist/src/cli/setup.d.ts.map +1 -1
- package/dist/src/cli/setup.js +4 -47
- package/dist/src/cli/setup.js.map +1 -1
- package/dist/src/cli/skills.d.ts +6 -0
- package/dist/src/cli/skills.d.ts.map +1 -1
- package/dist/src/cli/skills.js +96 -30
- package/dist/src/cli/skills.js.map +1 -1
- package/dist/src/gateway/api.d.ts.map +1 -1
- package/dist/src/gateway/api.js +40 -36
- package/dist/src/gateway/api.js.map +1 -1
- package/dist/src/gateway/onboarding-personalize.d.ts +15 -0
- package/dist/src/gateway/onboarding-personalize.d.ts.map +1 -0
- package/dist/src/gateway/onboarding-personalize.js +31 -0
- package/dist/src/gateway/onboarding-personalize.js.map +1 -0
- package/dist/src/gateway/portal-config.d.ts +14 -0
- package/dist/src/gateway/portal-config.d.ts.map +1 -0
- package/dist/src/gateway/portal-config.js +47 -0
- package/dist/src/gateway/portal-config.js.map +1 -0
- package/dist/src/sessions/context.d.ts +40 -0
- package/dist/src/sessions/context.d.ts.map +1 -1
- package/dist/src/sessions/context.js +142 -35
- package/dist/src/sessions/context.js.map +1 -1
- package/dist/src/shared/paths.d.ts +2 -0
- package/dist/src/shared/paths.d.ts.map +1 -1
- package/dist/src/shared/paths.js +9 -1
- package/dist/src/shared/paths.js.map +1 -1
- package/dist/src/shared/types.d.ts +10 -0
- package/dist/src/shared/types.d.ts.map +1 -1
- package/dist/web/404.html +1 -1
- package/dist/web/__next.__PAGE__.txt +1 -1
- package/dist/web/__next._full.txt +1 -1
- package/dist/web/__next._tree.txt +1 -1
- package/dist/web/_next/static/chunks/{0y5p4spyfs35l.js → 302onz3a3kflv.js} +1 -1
- package/dist/web/_not-found/__next._full.txt +1 -1
- package/dist/web/_not-found/__next._not-found.__PAGE__.txt +1 -1
- package/dist/web/_not-found/__next._tree.txt +1 -1
- package/dist/web/_not-found.html +1 -1
- package/dist/web/_not-found.txt +1 -1
- package/dist/web/chat/__next._full.txt +2 -2
- package/dist/web/chat/__next._tree.txt +1 -1
- package/dist/web/chat/__next.chat.__PAGE__.txt +2 -2
- package/dist/web/chat.html +1 -1
- package/dist/web/chat.txt +2 -2
- package/dist/web/cron/__next._full.txt +1 -1
- package/dist/web/cron/__next._tree.txt +1 -1
- package/dist/web/cron/__next.cron.__PAGE__.txt +1 -1
- package/dist/web/cron.html +1 -1
- package/dist/web/cron.txt +1 -1
- package/dist/web/index.html +1 -1
- package/dist/web/index.txt +1 -1
- package/dist/web/kanban/__next._full.txt +1 -1
- package/dist/web/kanban/__next._tree.txt +1 -1
- package/dist/web/kanban/__next.kanban.__PAGE__.txt +1 -1
- package/dist/web/kanban.html +1 -1
- package/dist/web/kanban.txt +1 -1
- package/dist/web/logs/__next._full.txt +1 -1
- package/dist/web/logs/__next._tree.txt +1 -1
- package/dist/web/logs/__next.logs.__PAGE__.txt +1 -1
- package/dist/web/logs.html +1 -1
- package/dist/web/logs.txt +1 -1
- package/dist/web/org/__next._full.txt +1 -1
- package/dist/web/org/__next._tree.txt +1 -1
- package/dist/web/org/__next.org.__PAGE__.txt +1 -1
- package/dist/web/org.html +1 -1
- package/dist/web/org.txt +1 -1
- package/dist/web/sessions/__next._full.txt +1 -1
- package/dist/web/sessions/__next._tree.txt +1 -1
- package/dist/web/sessions/__next.sessions.__PAGE__.txt +1 -1
- package/dist/web/sessions.html +1 -1
- package/dist/web/sessions.txt +1 -1
- package/dist/web/settings/__next._full.txt +1 -1
- package/dist/web/settings/__next._tree.txt +1 -1
- package/dist/web/settings/__next.settings.__PAGE__.txt +1 -1
- package/dist/web/settings.html +1 -1
- package/dist/web/settings.txt +1 -1
- package/dist/web/skills/__next._full.txt +1 -1
- package/dist/web/skills/__next._tree.txt +1 -1
- package/dist/web/skills/__next.skills.__PAGE__.txt +1 -1
- package/dist/web/skills.html +1 -1
- package/dist/web/skills.txt +1 -1
- package/package.json +2 -2
- package/template/AGENTS.md +6 -5
- package/template/BOOTSTRAP.md +5 -3
- package/template/CLAUDE.md +4 -5
- package/template/config.default.yaml +19 -4
- package/template/docs/architecture.md +2 -2
- package/template/docs/cron.md +5 -3
- package/template/docs/mcp.md +1 -1
- package/template/docs/org.md +17 -11
- package/template/docs/overview.md +4 -3
- package/template/docs/self-modification.md +7 -7
- package/template/docs/skills.md +11 -8
- package/template/migrations/2026.8.28/MIGRATION.md +34 -0
- package/template/skills/cron-manager/SKILL.md +7 -7
- package/template/skills/management/SKILL.md +1 -1
- package/template/skills/self-heal/SKILL.md +7 -7
- package/template/skills/skill-creator/SKILL.md +9 -9
- package/dist/web/__next._head.txt +0 -6
- package/dist/web/__next._index.txt +0 -6
- package/dist/web/_next/static/chunks/012aakl34ff5a.js +0 -5
- package/dist/web/_next/static/chunks/03~yq9q893hmn.js +0 -1
- package/dist/web/_next/static/chunks/0a2uy1kw.~j~c.js +0 -1
- package/dist/web/_next/static/chunks/0agxgztb0b~.7.js +0 -5
- package/dist/web/_next/static/chunks/0dtbl8648b3u9.js +0 -7
- package/dist/web/_next/static/chunks/0e3pdjkorr5zl.js +0 -2
- package/dist/web/_next/static/chunks/0ewpxy-mzj3j3.js +0 -1
- package/dist/web/_next/static/chunks/0g6xt.91k~0bc.js +0 -5
- package/dist/web/_next/static/chunks/0jm3e~uc~qd~p.js +0 -79
- package/dist/web/_next/static/chunks/0jzw1gpuag8bc.js +0 -5
- package/dist/web/_next/static/chunks/0lkp92-ovteta.js +0 -5
- package/dist/web/_next/static/chunks/0lt7kv1k1jla0.js +0 -1
- package/dist/web/_next/static/chunks/0msmlzd_~uk0y.js +0 -5
- package/dist/web/_next/static/chunks/0ru56x83x4rkk.js +0 -1
- package/dist/web/_next/static/chunks/0tcvgwr3rcw29.js +0 -1
- package/dist/web/_next/static/chunks/0tf9kpygstdls.js +0 -1
- package/dist/web/_next/static/chunks/0y3dnnq~kxyz_.js +0 -1
- package/dist/web/_next/static/chunks/0~6m1p5hnsx2f.js +0 -1
- package/dist/web/_next/static/chunks/10-liamt-ipcu.js +0 -1
- package/dist/web/_next/static/chunks/103zsy0q9psfj.css +0 -1
- package/dist/web/_next/static/chunks/10l08hq.acixl.js +0 -5
- package/dist/web/_next/static/chunks/11rbefjn.e-3-.js +0 -1
- package/dist/web/_next/static/chunks/11rodb4s1x4of.js +0 -1
- package/dist/web/_next/static/chunks/12_uxtnrqhoo1.js +0 -1
- package/dist/web/_next/static/chunks/12m97bwrg1tuu.js +0 -5
- package/dist/web/_next/static/chunks/13juizw904g.e.js +0 -1
- package/dist/web/_next/static/chunks/14ge_q22f0n.f.js +0 -1
- package/dist/web/_next/static/chunks/17-u9c_weg12-.js +0 -31
- package/dist/web/_next/static/chunks/17oc2l.ekcs8b.css +0 -1
- package/dist/web/_next/static/chunks/turbopack-0dt987bw_1nyf.js +0 -1
- package/dist/web/_next/static/media/apple-icon.0.wpl4.d-5bkf.jpg +0 -0
- package/dist/web/_next/static/media/icon.0.wpl4.d-5bkf.jpg +0 -0
- package/dist/web/_next/static/qeykWjfc1T7SjJSULdD7s/_buildManifest.js +0 -11
- package/dist/web/_next/static/qeykWjfc1T7SjJSULdD7s/_clientMiddlewareManifest.js +0 -1
- package/dist/web/_next/static/qeykWjfc1T7SjJSULdD7s/_ssgManifest.js +0 -1
- package/dist/web/_not-found/__next._head.txt +0 -6
- package/dist/web/_not-found/__next._index.txt +0 -6
- package/dist/web/_not-found/__next._not-found.txt +0 -5
- package/dist/web/chat/__next._head.txt +0 -6
- package/dist/web/chat/__next._index.txt +0 -6
- package/dist/web/chat/__next.chat.txt +0 -5
- package/dist/web/cron/__next._head.txt +0 -6
- package/dist/web/cron/__next._index.txt +0 -6
- package/dist/web/cron/__next.cron.txt +0 -5
- package/dist/web/kanban/__next._head.txt +0 -6
- package/dist/web/kanban/__next._index.txt +0 -6
- package/dist/web/kanban/__next.kanban.txt +0 -5
- package/dist/web/logs/__next._head.txt +0 -6
- package/dist/web/logs/__next._index.txt +0 -6
- package/dist/web/logs/__next.logs.txt +0 -5
- package/dist/web/org/__next._head.txt +0 -6
- package/dist/web/org/__next._index.txt +0 -6
- package/dist/web/org/__next.org.txt +0 -5
- package/dist/web/sessions/__next._head.txt +0 -6
- package/dist/web/sessions/__next._index.txt +0 -6
- package/dist/web/sessions/__next.sessions.txt +0 -5
- package/dist/web/settings/__next._head.txt +0 -6
- package/dist/web/settings/__next._index.txt +0 -6
- package/dist/web/settings/__next.settings.txt +0 -5
- package/dist/web/skills/__next._head.txt +0 -6
- package/dist/web/skills/__next._index.txt +0 -6
- package/dist/web/skills/__next.skills.txt +0 -5
- /package/dist/web/_next/static/{UDwWEfKiZ-eIOpfOIPKQr → ISh1Cwq_yjagxndTluTPc}/_buildManifest.js +0 -0
- /package/dist/web/_next/static/{UDwWEfKiZ-eIOpfOIPKQr → ISh1Cwq_yjagxndTluTPc}/_clientMiddlewareManifest.js +0 -0
- /package/dist/web/_next/static/{UDwWEfKiZ-eIOpfOIPKQr → ISh1Cwq_yjagxndTluTPc}/_ssgManifest.js +0 -0
|
@@ -13,7 +13,7 @@ f:I[85920,["/_next/static/chunks/39eyhhcdqji59.js","/_next/static/chunks/3tddjc7
|
|
|
13
13
|
a:X
|
|
14
14
|
12:X
|
|
15
15
|
12:C
|
|
16
|
-
0:{"buildId":"
|
|
16
|
+
0:{"buildId":"ISh1Cwq_yjagxndTluTPc","data":[{"rsc":["$","$1","c",{"children":[["$","$L2",null,{"Component":"$3","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@4","$@5"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/2qfwwz46jhx3z.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/0094rdygwixc5.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":"$@9","staleTime":"$a","varyParams":null},{"rsc":["$","$1","h",{"children":[null,["$","$Lb",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"}]]}],["$","div",null,{"hidden":true,"children":["$","$Lc",null,{"children":["$","$7",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"OpenRyoko"}],["$","meta","1",{"name":"description","content":"OpenRyoko — Slackで空気を読んで働くAIゲートウェイ"}],["$","link","2",{"rel":"icon","href":"/icon.jpg?icon.3fko7w33xarow.jpg","sizes":"800x800","type":"image/jpeg"}],["$","link","3",{"rel":"apple-touch-icon","href":"/apple-icon.jpg?apple-icon.3fko7w33xarow.jpg","sizes":"800x800","type":"image/jpeg"}],["$","$Ld","4",{}]]}]}]}],null]}],"isPartial":"$@e","staleTime":"$a","varyParams":null},{"rsc":["$","$1","c",{"children":[null,["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}]}]]}],"isPartial":"$@11","staleTime":"$a","varyParams":"$12"},{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/13onw-m8t1drh.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/39eyhhcdqji59.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/3tddjc7ntk5ue.js","async":true}]],["$","html",null,{"lang":"ja","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"dangerouslySetInnerHTML":{"__html":"(function(){try{var t=localStorage.getItem('openryoko-theme')||localStorage.getItem('jinn-theme')||'ryoko';if(t==='system'){t=window.matchMedia('(prefers-color-scheme:dark)').matches?'dark':'ryoko'}document.documentElement.setAttribute('data-theme',t)}catch(e){}})()"}}]}],["$","body",null,{"children":["$","$L13",null,{"children":["$","$Lf",null,{"parallelRouterKey":"children","template":["$","$L10",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}]}]}]]}]]}],"isPartial":"$@14","staleTime":"$a","varyParams":null}],"isUpgradeableISRFallback":false,"a":"$@15","rootVaryParams":null,"needsRuntimeRequest":"$@16"}
|
|
17
17
|
4:{}
|
|
18
18
|
5:"$0:data:0:rsc:props:children:0:props:serverProvidedParams:params"
|
|
19
19
|
8:null
|
package/dist/web/skills.html
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang="ja"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"/><link rel="stylesheet" href="/_next/static/chunks/13onw-m8t1drh.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/2q9pem30qccb2.js"/><script src="/_next/static/chunks/3m14pwz5rz7tl.js" async=""></script><script src="/_next/static/chunks/0y7lqjb424p1t.js" async=""></script><script src="/_next/static/chunks/turbopack-0my_el9wn34di.js" async=""></script><script src="/_next/static/chunks/39eyhhcdqji59.js" async="" crossorigin=""></script><script src="/_next/static/chunks/3tddjc7ntk5ue.js" async="" crossorigin=""></script><script src="/_next/static/chunks/2qfwwz46jhx3z.js" async="" crossorigin=""></script><script src="/_next/static/chunks/0094rdygwixc5.js" async="" crossorigin=""></script><title>OpenRyoko</title><meta name="description" content="OpenRyoko — Slackで空気を読んで働くAIゲートウェイ"/><link rel="icon" href="/icon.jpg?icon.3fko7w33xarow.jpg" sizes="800x800" type="image/jpeg"/><link rel="apple-touch-icon" href="/apple-icon.jpg?apple-icon.3fko7w33xarow.jpg" sizes="800x800" type="image/jpeg"/><script>(function(){try{var t=localStorage.getItem('openryoko-theme')||localStorage.getItem('jinn-theme')||'ryoko';if(t==='system'){t=window.matchMedia('(prefers-color-scheme:dark)').matches?'dark':'ryoko'}document.documentElement.setAttribute('data-theme',t)}catch(e){}})()</script><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div class="flex min-h-dvh items-center justify-center bg-[var(--bg)] text-sm text-[var(--text-tertiary)]">Checking gateway access…</div><script src="/_next/static/chunks/2q9pem30qccb2.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[38085,[\"/_next/static/chunks/39eyhhcdqji59.js\",\"/_next/static/chunks/3tddjc7ntk5ue.js\"],\"ClientProviders\"]\n3:I[85920,[\"/_next/static/chunks/39eyhhcdqji59.js\",\"/_next/static/chunks/3tddjc7ntk5ue.js\"],\"default\"]\n4:I[5370,[\"/_next/static/chunks/39eyhhcdqji59.js\",\"/_next/static/chunks/3tddjc7ntk5ue.js\"],\"default\"]\n5:I[1101,[\"/_next/static/chunks/39eyhhcdqji59.js\",\"/_next/static/chunks/3tddjc7ntk5ue.js\"],\"ClientPageRoot\"]\n6:I[53947,[\"/_next/static/chunks/39eyhhcdqji59.js\",\"/_next/static/chunks/3tddjc7ntk5ue.js\",\"/_next/static/chunks/2qfwwz46jhx3z.js\",\"/_next/static/chunks/0094rdygwixc5.js\"],\"default\"]\n9:I[5437,[\"/_next/static/chunks/39eyhhcdqji59.js\",\"/_next/static/chunks/3tddjc7ntk5ue.js\"],\"OutletBoundary\"]\na:\"$Sreact.suspense\"\nd:I[5437,[\"/_next/static/chunks/39eyhhcdqji59.js\",\"/_next/static/chunks/3tddjc7ntk5ue.js\"],\"ViewportBoundary\"]\nf:I[5437,[\"/_next/static/chunks/39eyhhcdqji59.js\",\"/_next/static/chunks/3tddjc7ntk5ue.js\"],\"MetadataBoundary\"]\n11:I[56753,[\"/_next/static/chunks/39eyhhcdqji59.js\",\"/_next/static/chunks/3tddjc7ntk5ue.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/13onw-m8t1drh.css\",\"style\"]\nc:X\n0:{\"P\":null,\"c\":[\"\",\"skills\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"skills\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/13onw-m8t1drh.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/39eyhhcdqji59.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/3tddjc7ntk5ue.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"ja\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"(function(){try{var t=localStorage.getItem('openryoko-theme')||localStorage.getItem('jinn-theme')||'ryoko';if(t==='system'){t=window.matchMedia('(prefers-color-scheme:dark)').matches?'dark':'ryoko'}document.documentElement.setAttribute('data-theme',t)}catch(e){}})()\"}}]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L5\",null,{\"Component\":\"$6\",\"serverProvidedParams\":{\"searchParams\":{},\"params\":{},\"promises\":[\"$@7\",\"$@8\"]}}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/2qfwwz46jhx3z.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0094rdygwixc5.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$a\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@b\"}]}]]}],{},null,false,null]},null,false,\"$c\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Ld\",null,{\"children\":\"$Le\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lf\",null,{\"children\":[\"$\",\"$a\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L10\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/13onw-m8t1drh.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"
|
|
1
|
+
<!DOCTYPE html><html lang="ja"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"/><link rel="stylesheet" href="/_next/static/chunks/13onw-m8t1drh.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/2q9pem30qccb2.js"/><script src="/_next/static/chunks/3m14pwz5rz7tl.js" async=""></script><script src="/_next/static/chunks/0y7lqjb424p1t.js" async=""></script><script src="/_next/static/chunks/turbopack-0my_el9wn34di.js" async=""></script><script src="/_next/static/chunks/39eyhhcdqji59.js" async="" crossorigin=""></script><script src="/_next/static/chunks/3tddjc7ntk5ue.js" async="" crossorigin=""></script><script src="/_next/static/chunks/2qfwwz46jhx3z.js" async="" crossorigin=""></script><script src="/_next/static/chunks/0094rdygwixc5.js" async="" crossorigin=""></script><title>OpenRyoko</title><meta name="description" content="OpenRyoko — Slackで空気を読んで働くAIゲートウェイ"/><link rel="icon" href="/icon.jpg?icon.3fko7w33xarow.jpg" sizes="800x800" type="image/jpeg"/><link rel="apple-touch-icon" href="/apple-icon.jpg?apple-icon.3fko7w33xarow.jpg" sizes="800x800" type="image/jpeg"/><script>(function(){try{var t=localStorage.getItem('openryoko-theme')||localStorage.getItem('jinn-theme')||'ryoko';if(t==='system'){t=window.matchMedia('(prefers-color-scheme:dark)').matches?'dark':'ryoko'}document.documentElement.setAttribute('data-theme',t)}catch(e){}})()</script><script src="/_next/static/chunks/0cz1d0mv5g_q7.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div class="flex min-h-dvh items-center justify-center bg-[var(--bg)] text-sm text-[var(--text-tertiary)]">Checking gateway access…</div><script src="/_next/static/chunks/2q9pem30qccb2.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[38085,[\"/_next/static/chunks/39eyhhcdqji59.js\",\"/_next/static/chunks/3tddjc7ntk5ue.js\"],\"ClientProviders\"]\n3:I[85920,[\"/_next/static/chunks/39eyhhcdqji59.js\",\"/_next/static/chunks/3tddjc7ntk5ue.js\"],\"default\"]\n4:I[5370,[\"/_next/static/chunks/39eyhhcdqji59.js\",\"/_next/static/chunks/3tddjc7ntk5ue.js\"],\"default\"]\n5:I[1101,[\"/_next/static/chunks/39eyhhcdqji59.js\",\"/_next/static/chunks/3tddjc7ntk5ue.js\"],\"ClientPageRoot\"]\n6:I[53947,[\"/_next/static/chunks/39eyhhcdqji59.js\",\"/_next/static/chunks/3tddjc7ntk5ue.js\",\"/_next/static/chunks/2qfwwz46jhx3z.js\",\"/_next/static/chunks/0094rdygwixc5.js\"],\"default\"]\n9:I[5437,[\"/_next/static/chunks/39eyhhcdqji59.js\",\"/_next/static/chunks/3tddjc7ntk5ue.js\"],\"OutletBoundary\"]\na:\"$Sreact.suspense\"\nd:I[5437,[\"/_next/static/chunks/39eyhhcdqji59.js\",\"/_next/static/chunks/3tddjc7ntk5ue.js\"],\"ViewportBoundary\"]\nf:I[5437,[\"/_next/static/chunks/39eyhhcdqji59.js\",\"/_next/static/chunks/3tddjc7ntk5ue.js\"],\"MetadataBoundary\"]\n11:I[56753,[\"/_next/static/chunks/39eyhhcdqji59.js\",\"/_next/static/chunks/3tddjc7ntk5ue.js\"],\"default\",1]\n:HL[\"/_next/static/chunks/13onw-m8t1drh.css\",\"style\"]\nc:X\n0:{\"P\":null,\"c\":[\"\",\"skills\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"skills\",{\"children\":[\"__PAGE__\",{},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4608]},\"$undefined\",\"$undefined\",4624],[[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/13onw-m8t1drh.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/39eyhhcdqji59.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/3tddjc7ntk5ue.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"ja\",\"suppressHydrationWarning\":true,\"children\":[[\"$\",\"head\",null,{\"children\":[\"$\",\"script\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"(function(){try{var t=localStorage.getItem('openryoko-theme')||localStorage.getItem('jinn-theme')||'ryoko';if(t==='system'){t=window.matchMedia('(prefers-color-scheme:dark)').matches?'dark':'ryoko'}document.documentElement.setAttribute('data-theme',t)}catch(e){}})()\"}}]}],[\"$\",\"body\",null,{\"children\":[\"$\",\"$L2\",null,{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]}]]}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L5\",null,{\"Component\":\"$6\",\"serverProvidedParams\":{\"searchParams\":{},\"params\":{},\"promises\":[\"$@7\",\"$@8\"]}}],[[\"$\",\"script\",\"script-0\",{\"src\":\"/_next/static/chunks/2qfwwz46jhx3z.js\",\"async\":true,\"nonce\":\"$undefined\"}],[\"$\",\"script\",\"script-1\",{\"src\":\"/_next/static/chunks/0094rdygwixc5.js\",\"async\":true,\"nonce\":\"$undefined\"}]],[\"$\",\"$L9\",null,{\"children\":[\"$\",\"$a\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@b\"}]}]]}],{},null,false,null]},null,false,\"$c\"]},null,false,null],[\"$\",\"$1\",\"h\",{\"children\":[null,[\"$\",\"$Ld\",null,{\"children\":\"$Le\"}],[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$Lf\",null,{\"children\":[\"$\",\"$a\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L10\"}]}]}],null]}],false]],\"m\":\"$undefined\",\"G\":[\"$11\",[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/chunks/13onw-m8t1drh.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]]],\"S\":true,\"h\":null,\"r\":\"$undefined\",\"s\":\"$undefined\",\"a\":\"$undefined\",\"l\":\"$undefined\",\"p\":\"$undefined\",\"d\":\"$undefined\",\"b\":\"ISh1Cwq_yjagxndTluTPc\"}\nc:C\n7:{}\n8:\"$0:f:0:1:1:children:1:children:0:props:children:0:props:serverProvidedParams:params\"\ne:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no\"}]]\n12:I[56045,[\"/_next/static/chunks/39eyhhcdqji59.js\",\"/_next/static/chunks/3tddjc7ntk5ue.js\"],\"IconMark\"]\nb:null\n10:[[\"$\",\"title\",\"0\",{\"children\":\"OpenRyoko\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"OpenRyoko — Slackで空気を読んで働くAIゲートウェイ\"}],[\"$\",\"link\",\"2\",{\"rel\":\"icon\",\"href\":\"/icon.jpg?icon.3fko7w33xarow.jpg\",\"sizes\":\"800x800\",\"type\":\"image/jpeg\"}],[\"$\",\"link\",\"3\",{\"rel\":\"apple-touch-icon\",\"href\":\"/apple-icon.jpg?apple-icon.3fko7w33xarow.jpg\",\"sizes\":\"800x800\",\"type\":\"image/jpeg\"}],[\"$\",\"$L12\",\"4\",{}]]\n"])</script></body></html>
|
package/dist/web/skills.txt
CHANGED
|
@@ -11,7 +11,7 @@ f:I[5437,["/_next/static/chunks/39eyhhcdqji59.js","/_next/static/chunks/3tddjc7n
|
|
|
11
11
|
11:I[56753,["/_next/static/chunks/39eyhhcdqji59.js","/_next/static/chunks/3tddjc7ntk5ue.js"],"default",1]
|
|
12
12
|
:HL["/_next/static/chunks/13onw-m8t1drh.css","style"]
|
|
13
13
|
c:X
|
|
14
|
-
0:{"P":null,"c":["","skills"],"q":"","i":false,"f":[[["",{"children":["skills",{"children":["__PAGE__",{},"$undefined","$undefined",4608]},"$undefined","$undefined",4608]},"$undefined","$undefined",4624],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/13onw-m8t1drh.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/39eyhhcdqji59.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/3tddjc7ntk5ue.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"ja","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"dangerouslySetInnerHTML":{"__html":"(function(){try{var t=localStorage.getItem('openryoko-theme')||localStorage.getItem('jinn-theme')||'ryoko';if(t==='system'){t=window.matchMedia('(prefers-color-scheme:dark)').matches?'dark':'ryoko'}document.documentElement.setAttribute('data-theme',t)}catch(e){}})()"}}]}],["$","body",null,{"children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/2qfwwz46jhx3z.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/0094rdygwixc5.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,null]},null,false,"$c"]},null,false,null],["$","$1","h",{"children":[null,["$","$Ld",null,{"children":"$Le"}],["$","div",null,{"hidden":true,"children":["$","$Lf",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$L10"}]}]}],null]}],false]],"m":"$undefined","G":["$11",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/13onw-m8t1drh.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"
|
|
14
|
+
0:{"P":null,"c":["","skills"],"q":"","i":false,"f":[[["",{"children":["skills",{"children":["__PAGE__",{},"$undefined","$undefined",4608]},"$undefined","$undefined",4608]},"$undefined","$undefined",4624],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/13onw-m8t1drh.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/39eyhhcdqji59.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/3tddjc7ntk5ue.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"ja","suppressHydrationWarning":true,"children":[["$","head",null,{"children":["$","script",null,{"dangerouslySetInnerHTML":{"__html":"(function(){try{var t=localStorage.getItem('openryoko-theme')||localStorage.getItem('jinn-theme')||'ryoko';if(t==='system'){t=window.matchMedia('(prefers-color-scheme:dark)').matches?'dark':'ryoko'}document.documentElement.setAttribute('data-theme',t)}catch(e){}})()"}}]}],["$","body",null,{"children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","serverProvidedParams":{"searchParams":{},"params":{},"promises":["$@7","$@8"]}}],[["$","script","script-0",{"src":"/_next/static/chunks/2qfwwz46jhx3z.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/0094rdygwixc5.js","async":true,"nonce":"$undefined"}]],["$","$L9",null,{"children":["$","$a",null,{"name":"Next.MetadataOutlet","children":"$@b"}]}]]}],{},null,false,null]},null,false,"$c"]},null,false,null],["$","$1","h",{"children":[null,["$","$Ld",null,{"children":"$Le"}],["$","div",null,{"hidden":true,"children":["$","$Lf",null,{"children":["$","$a",null,{"name":"Next.Metadata","children":"$L10"}]}]}],null]}],false]],"m":"$undefined","G":["$11",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/13onw-m8t1drh.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"r":"$undefined","s":"$undefined","a":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"ISh1Cwq_yjagxndTluTPc"}
|
|
15
15
|
c:C
|
|
16
16
|
7:{}
|
|
17
17
|
8:"$0:f:0:1:1:children:1:children:0:props:children:0:props:serverProvidedParams:params"
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openryoko",
|
|
3
|
-
"version": "2026.8.
|
|
3
|
+
"version": "2026.8.28",
|
|
4
4
|
"description": "OpenRyoko — Slackで空気を読んで働くAIアシスタント・ゲートウェイ(Jinnベース、Claude Code/Codex/Gemini CLI対応)",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"template/"
|
|
18
18
|
],
|
|
19
19
|
"scripts": {
|
|
20
|
-
"build": "rm -rf dist && tsc -p tsconfig.build.json && cp -r assets dist/assets",
|
|
20
|
+
"build": "rm -rf dist && tsc -p tsconfig.build.json && cp -r assets dist/assets && cp -r ../web/out dist/web",
|
|
21
21
|
"dev": "tsc && (tsc --watch &) && node --watch-path=dist dist/bin/jimmy.js start",
|
|
22
22
|
"typecheck": "tsc --noEmit",
|
|
23
23
|
"test": "vitest run",
|
package/template/AGENTS.md
CHANGED
|
@@ -7,11 +7,12 @@
|
|
|
7
7
|
|
|
8
8
|
## 自己定義ファイル(必読)
|
|
9
9
|
|
|
10
|
-
セッション開始時、最初のターンで必ず以下
|
|
10
|
+
セッション開始時、最初のターンで必ず以下2ファイルを `~/.ryoko/` から読み込んでください。Codex は `@`-import 構文を解釈しないので、Read で明示的に取得すること。
|
|
11
11
|
|
|
12
12
|
- `~/.ryoko/IDENTITY.md` — 名前・雰囲気・絵文字・由来。あなたが「誰であるか」
|
|
13
13
|
- `~/.ryoko/SOUL.md` — トーン・意見の出し方・ユーモア・境界線。あなたが「どう振る舞うか」
|
|
14
|
-
|
|
14
|
+
|
|
15
|
+
**MEMORY.md(長期記憶)は自分から Read しない**。gateway が信頼相手(private web セッション、または `portal.trustedSpeakers` に Slack ID を載せた相手との DM)とのセッションにだけ system prompt へ注入する。共有チャンネルでは誰が話していても注入されない。個人情報を含むため、必要があって自分で Read した場合も、内容を当人以外に出力で出さないこと。
|
|
15
16
|
|
|
16
17
|
これらの内容は以後のセッション全体に反映してください。
|
|
17
18
|
|
|
@@ -43,7 +44,7 @@
|
|
|
43
44
|
| `AGENTS.md` | Codexセッション向けの指示書(本ファイル) |
|
|
44
45
|
| `IDENTITY.md` | あなたの自己定義(名前・雰囲気・絵文字) |
|
|
45
46
|
| `SOUL.md` | 人格・トーン・境界線 |
|
|
46
|
-
| `MEMORY.md` |
|
|
47
|
+
| `MEMORY.md` | 長期記憶(短く保つ。信頼話者とのセッションに gateway が注入) |
|
|
47
48
|
| `TOOLS.md` | ツール覚書(運用ノウハウ) |
|
|
48
49
|
| `BOOTSTRAP.md` | 初回起動の儀式(完了後に自分で削除) |
|
|
49
50
|
| `memory/` | 日次ノート(`YYYY-MM-DD.md`) |
|
|
@@ -63,9 +64,9 @@
|
|
|
63
64
|
|
|
64
65
|
記憶は**2層**に分離します。混ぜないでください。
|
|
65
66
|
|
|
66
|
-
### 1. 長期記憶 — `MEMORY.md
|
|
67
|
+
### 1. 長期記憶 — `MEMORY.md`(信頼話者とのセッションに毎回注入される)
|
|
67
68
|
|
|
68
|
-
短く重要な「事実・好み・決定」を1
|
|
69
|
+
短く重要な「事実・好み・決定」を1ファイルに集約。gateway が信頼話者とのセッションで常時注入するので、ここに長文を書くと毎ターン トークンを浪費します。
|
|
69
70
|
|
|
70
71
|
書く対象:
|
|
71
72
|
- 変わりにくいユーザー事実(所属、役割、主要言語)
|
package/template/BOOTSTRAP.md
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
|
|
22
22
|
旧バージョンからのアップグレードの場合のみ:
|
|
23
23
|
|
|
24
|
-
1.
|
|
24
|
+
1. `./knowledge/` 配下のファイルを ls で確認(作業ディレクトリは常に自分のホーム)
|
|
25
25
|
2. `user-profile.md` `preferences.md` `projects.md` 等が存在すれば Read
|
|
26
26
|
3. 内容を要約してユーザーに「これらを引き継ぎますか?」と確認
|
|
27
27
|
4. 承認されたら、短い事実は `MEMORY.md` に転記、長文は `knowledge/` に残す
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
|
|
31
31
|
### 1. onboarding スキルを起動
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
`./skills/onboarding/SKILL.md` を読み、書かれた手順を最後まで実行してください。
|
|
34
34
|
このスキルが IDENTITY.md / SOUL.md / MEMORY.md / TOOLS.md を対話で埋めます。
|
|
35
35
|
|
|
36
36
|
ステップ 0 で既知の情報がある場合、onboarding 内のヒアリング質問はその部分をスキップして残りだけ聞いてください。
|
|
@@ -46,7 +46,9 @@
|
|
|
46
46
|
### 3. このファイルを削除
|
|
47
47
|
|
|
48
48
|
```bash
|
|
49
|
-
rm
|
|
49
|
+
rm ./BOOTSTRAP.md
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
+
(作業ディレクトリは常に自分のホーム。`RYOKO_INSTANCE` で別名インスタンスとして動いている場合もこの相対パスなら正しいファイルを消せる)
|
|
53
|
+
|
|
52
54
|
削除後、ユーザーに「セットアップ完了。これから {{portalName}} として動きます」と短く宣言してください。
|
package/template/CLAUDE.md
CHANGED
|
@@ -11,11 +11,10 @@
|
|
|
11
11
|
|
|
12
12
|
@IDENTITY.md
|
|
13
13
|
@SOUL.md
|
|
14
|
-
@MEMORY.md
|
|
15
14
|
|
|
16
15
|
- **IDENTITY.md** — 名前・雰囲気・絵文字・由来。あなたが「誰であるか」
|
|
17
16
|
- **SOUL.md** — トーン・意見の出し方・ユーモア・境界線。あなたが「どう振る舞うか」
|
|
18
|
-
- **MEMORY.md
|
|
17
|
+
- **MEMORY.md**(長期記憶)は **ここで import しない**。gateway が信頼相手(private web セッション、または `portal.trustedSpeakers` に Slack ID を載せた相手との DM)とのセッションにだけ system prompt へ注入する。共有チャンネルでは誰が話していても注入されない。個人情報を含むため、仮に自分で Read した場合も、内容を当人以外に出力で出さないこと
|
|
19
18
|
|
|
20
19
|
---
|
|
21
20
|
|
|
@@ -45,7 +44,7 @@
|
|
|
45
44
|
| `AGENTS.md` | Codexセッション向けの指示書 |
|
|
46
45
|
| `IDENTITY.md` | あなたの自己定義(名前・雰囲気・絵文字) |
|
|
47
46
|
| `SOUL.md` | 人格・トーン・境界線 |
|
|
48
|
-
| `MEMORY.md` |
|
|
47
|
+
| `MEMORY.md` | 長期記憶(短く保つ。信頼話者とのセッションに gateway が注入) |
|
|
49
48
|
| `TOOLS.md` | ツール覚書(運用ノウハウ) |
|
|
50
49
|
| `BOOTSTRAP.md` | 初回起動の儀式(完了後に自分で削除) |
|
|
51
50
|
| `memory/` | 日次ノート(`YYYY-MM-DD.md`) |
|
|
@@ -65,9 +64,9 @@
|
|
|
65
64
|
|
|
66
65
|
記憶は**2層**に分離します。混ぜないでください。
|
|
67
66
|
|
|
68
|
-
### 1. 長期記憶 — `MEMORY.md
|
|
67
|
+
### 1. 長期記憶 — `MEMORY.md`(信頼話者とのセッションに毎回注入される)
|
|
69
68
|
|
|
70
|
-
短く重要な「事実・好み・決定」を1
|
|
69
|
+
短く重要な「事実・好み・決定」を1ファイルに集約。gateway が信頼話者とのセッションで常時注入するので、ここに長文を書くと毎ターン トークンを浪費します。
|
|
71
70
|
|
|
72
71
|
書く対象:
|
|
73
72
|
- 変わりにくいユーザー事実(所属、役割、主要言語)
|
|
@@ -82,16 +82,31 @@ mcp:
|
|
|
82
82
|
# env:
|
|
83
83
|
# API_KEY: ${MY_API_KEY}
|
|
84
84
|
|
|
85
|
-
#
|
|
86
|
-
sessions:
|
|
87
|
-
|
|
88
|
-
|
|
85
|
+
# セッション上限(予約済みキー: 現行ランタイムはまだ参照しない。有効化しても効かない点に注意)
|
|
86
|
+
# sessions:
|
|
87
|
+
# maxDurationMinutes: 30
|
|
88
|
+
# maxCostUsd: 10.00
|
|
89
89
|
|
|
90
90
|
# Cron設定
|
|
91
91
|
cron:
|
|
92
92
|
# alertConnector: slack
|
|
93
93
|
# alertChannel: "#alerts"
|
|
94
94
|
|
|
95
|
+
# portal.operatorSlackId = オペレータ本人の Slack ID。設定すると本人確認が ID の
|
|
96
|
+
# 厳密一致になり、表示名の一致では「オペレータ本人」と扱われなくなる(表示名は
|
|
97
|
+
# 誰でも変更できるため、信頼できないメンバーがいるワークスペースでは必ず設定する)。
|
|
98
|
+
# operatorSlackId: U0XXXXXXX
|
|
99
|
+
#
|
|
100
|
+
# portal.trustedSpeakers = MEMORY.md(長期記憶)を DM で注入してよい「信頼話者」の
|
|
101
|
+
# Slack ID リスト。オペレータ本人の ID も必ずここに入れる(表示名は偽装できるため、
|
|
102
|
+
# 名前ではなく不変の Slack ID だけがゲートを通る)。
|
|
103
|
+
# 注入されるのは private web セッションと、ここに載る相手との DM のみ。
|
|
104
|
+
# 共有チャンネルでは誰が話していても注入されない(スレッドのセッションは参加者を
|
|
105
|
+
# またいで再利用されるため、一度注入した記憶が履歴に残るのを防ぐ)。記入例:
|
|
106
|
+
# trustedSpeakers:
|
|
107
|
+
# - U0XXXXXXX # 表示名(所属・関係のメモ)
|
|
108
|
+
# 注意: portal ブロックの内側にはコメントを書かない(Web オンボーディングの
|
|
109
|
+
# 部分書き換えがブロックを再生成するため、内側のコメントは保持されない)。
|
|
95
110
|
portal:
|
|
96
111
|
portalName: Ryoko
|
|
97
112
|
language: Japanese
|
|
@@ -54,13 +54,13 @@ Modular adapters that implement a standard interface. Each connector translates
|
|
|
54
54
|
Uses `node-cron` to run scheduled AI jobs. Watches `cron/jobs.json` for hot-reload. See `cron.md`.
|
|
55
55
|
|
|
56
56
|
### File Watcher
|
|
57
|
-
Uses `chokidar` to watch `~/.
|
|
57
|
+
Uses `chokidar` to watch `~/.ryoko/` for changes and trigger appropriate reloads:
|
|
58
58
|
- `config.yaml` changes → reload gateway configuration
|
|
59
59
|
- `cron/jobs.json` changes → reschedule cron jobs
|
|
60
60
|
- `org/` changes → rebuild employee registry
|
|
61
61
|
|
|
62
62
|
### SQLite Session Registry
|
|
63
|
-
Stores session metadata (id, engine, employee, connector source, timestamps) in `
|
|
63
|
+
Stores session metadata (id, engine, employee, connector source, timestamps) in `sessions/registry.db`.
|
|
64
64
|
|
|
65
65
|
## Data Flow
|
|
66
66
|
|
package/template/docs/cron.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Cron
|
|
2
2
|
|
|
3
|
-
{{portalName}} supports scheduled AI jobs defined in `~/.
|
|
3
|
+
{{portalName}} supports scheduled AI jobs defined in `~/.ryoko/cron/jobs.json`.
|
|
4
4
|
|
|
5
5
|
## Job Schema
|
|
6
6
|
|
|
@@ -59,7 +59,7 @@ No restart required. Engines can edit `jobs.json` directly to create or modify s
|
|
|
59
59
|
|
|
60
60
|
## Run Logs
|
|
61
61
|
|
|
62
|
-
Each job execution is logged to `~/.
|
|
62
|
+
Each job execution is logged to `~/.ryoko/cron/runs/<jobId>.jsonl`. Each line is a JSON object:
|
|
63
63
|
|
|
64
64
|
```json
|
|
65
65
|
{
|
|
@@ -76,6 +76,8 @@ Each job execution is logged to `~/.jinn/cron/runs/<jobId>.jsonl`. Each line is
|
|
|
76
76
|
|
|
77
77
|
When a cron job produces analytical, reporting, or decision-informing output, it should **always target {{portalSlug}}** (the COO), not the employee directly. {{portalName}} then delegates to the employee via a child session, reviews the output, filters noise, and delivers the final result.
|
|
78
78
|
|
|
79
|
+
> Note: `"employee": "{{portalSlug}}"` here refers to the COO portal session itself — it is NOT an `org/` employee (org.md: `org/` starts empty and {{portalName}} is not defined there). The runner resolves an unknown employee name to a portal session, which is exactly the intended routing.
|
|
80
|
+
|
|
79
81
|
**Correct** — cron → {{portalSlug}} → employee (via child session) → {{portalSlug}} reviews → delivery:
|
|
80
82
|
```json
|
|
81
83
|
{
|
|
@@ -138,7 +140,7 @@ Direct employee-to-user delivery is only acceptable for simple, no-review-needed
|
|
|
138
140
|
"timezone": "America/New_York",
|
|
139
141
|
"engine": "claude",
|
|
140
142
|
"employee": "{{portalSlug}}",
|
|
141
|
-
"prompt": "Review all skills in ~/.
|
|
143
|
+
"prompt": "Review all skills in ~/.ryoko/skills/ and suggest improvements or removals for unused skills."
|
|
142
144
|
}
|
|
143
145
|
]
|
|
144
146
|
```
|
package/template/docs/mcp.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
1. MCP servers are defined in `config.yaml` under the `mcp:` section
|
|
8
8
|
2. When a session starts, {{portalName}} resolves which MCP servers the employee needs
|
|
9
|
-
3. A temporary MCP config JSON file is written to `~/.
|
|
9
|
+
3. A temporary MCP config JSON file is written to `~/.ryoko/tmp/mcp/`
|
|
10
10
|
4. The file is passed to Claude Code via `--mcp-config <path>`
|
|
11
11
|
5. The file is cleaned up after the session completes
|
|
12
12
|
|
package/template/docs/org.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
## Employee Personas
|
|
6
6
|
|
|
7
|
-
Employee files live at `~/.
|
|
7
|
+
Employee files live at `~/.ryoko/org/<department>/<name>.yaml`.
|
|
8
8
|
|
|
9
9
|
```yaml
|
|
10
10
|
name: alice
|
|
@@ -33,10 +33,10 @@ persona: |
|
|
|
33
33
|
|
|
34
34
|
## Departments
|
|
35
35
|
|
|
36
|
-
Each department is a directory under `~/.
|
|
36
|
+
Each department is a directory under `~/.ryoko/org/` containing:
|
|
37
37
|
|
|
38
38
|
```
|
|
39
|
-
~/.
|
|
39
|
+
~/.ryoko/org/engineering/
|
|
40
40
|
department.yaml # Department metadata
|
|
41
41
|
board.json # Shared task board
|
|
42
42
|
alice.yaml # Employee persona
|
|
@@ -90,16 +90,22 @@ Task fields: `id`, `title`, `assignee`, `status` (open, in-progress, done, block
|
|
|
90
90
|
|
|
91
91
|
## Default Organization
|
|
92
92
|
|
|
93
|
-
{{portalName}}
|
|
93
|
+
`org/` starts empty. {{portalName}} itself is the executive (COO) and is not
|
|
94
|
+
defined as an org employee — employees are the workers {{portalName}} delegates to.
|
|
95
|
+
|
|
96
|
+
The onboarding skill proposes a starter scaffold matched to the user's profile
|
|
97
|
+
(e.g. an `engineering/` department with a `dev-assistant` employee for a solo
|
|
98
|
+
developer), and the management skill handles hiring from there. An employee
|
|
99
|
+
file looks like:
|
|
94
100
|
|
|
95
101
|
```yaml
|
|
96
|
-
name:
|
|
97
|
-
displayName:
|
|
98
|
-
department:
|
|
99
|
-
rank:
|
|
102
|
+
name: dev-assistant
|
|
103
|
+
displayName: Dev Assistant
|
|
104
|
+
department: engineering
|
|
105
|
+
rank: employee
|
|
100
106
|
engine: claude
|
|
101
|
-
model: opus
|
|
107
|
+
model: claude-opus-5
|
|
102
108
|
persona: |
|
|
103
|
-
You are
|
|
104
|
-
|
|
109
|
+
You are a careful software engineer. You implement tasks assigned by
|
|
110
|
+
{{portalName}}, report progress on the board, and escalate blockers.
|
|
105
111
|
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# {{portalName}} Overview
|
|
2
2
|
|
|
3
|
-
{{portalName}} is a lightweight AI gateway daemon that wraps professional AI CLI tools as "engines." It is published as `
|
|
3
|
+
{{portalName}} is a lightweight AI gateway daemon that wraps professional AI CLI tools as "engines." It is published as `openryoko`.
|
|
4
4
|
|
|
5
5
|
## Core Principle
|
|
6
6
|
|
|
@@ -22,9 +22,10 @@ Traditional approaches build custom tool-calling loops, manage context windows,
|
|
|
22
22
|
## Directory Structure
|
|
23
23
|
|
|
24
24
|
```
|
|
25
|
-
~/.
|
|
25
|
+
~/.ryoko/
|
|
26
26
|
config.yaml # Gateway configuration
|
|
27
|
-
|
|
27
|
+
sessions/
|
|
28
|
+
registry.db # SQLite session registry
|
|
28
29
|
docs/ # These reference docs
|
|
29
30
|
skills/ # Skill directories with SKILL.md files
|
|
30
31
|
cron/
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Self-Modification
|
|
2
2
|
|
|
3
|
-
{{portalName}}'s engines operate within `~/.
|
|
3
|
+
{{portalName}}'s engines operate within `~/.ryoko/` and can modify any file in that directory. This enables {{portalName}} to update its own configuration, create skills, manage cron jobs, and restructure the organization at runtime.
|
|
4
4
|
|
|
5
5
|
## What {{portalName}} Can Edit
|
|
6
6
|
|
|
@@ -25,7 +25,7 @@ Changes take effect immediately. No restart required.
|
|
|
25
25
|
|
|
26
26
|
## Safety Guidelines
|
|
27
27
|
|
|
28
|
-
Engines have full file access within `~/.
|
|
28
|
+
Engines have full file access within `~/.ryoko/`. To avoid breaking the gateway:
|
|
29
29
|
|
|
30
30
|
### Do
|
|
31
31
|
|
|
@@ -38,28 +38,28 @@ Engines have full file access within `~/.jinn/`. To avoid breaking the gateway:
|
|
|
38
38
|
### Do Not
|
|
39
39
|
|
|
40
40
|
- Break `config.yaml` structure — invalid YAML will prevent config reload
|
|
41
|
-
- Corrupt `
|
|
41
|
+
- Corrupt `sessions/registry.db` — the SQLite database is managed by the gateway process
|
|
42
42
|
- Write invalid JSON to `jobs.json` — this will cancel all cron jobs with nothing to replace them
|
|
43
43
|
- Delete the `docs/` directory — these reference docs are needed for self-awareness
|
|
44
|
-
- Modify files outside `~/.
|
|
44
|
+
- Modify files outside `~/.ryoko/` unless explicitly instructed by the user
|
|
45
45
|
|
|
46
46
|
## Example: Creating a Cron Job at Runtime
|
|
47
47
|
|
|
48
48
|
An engine can create a new cron job by reading `cron/jobs.json`, appending a new entry, and writing it back:
|
|
49
49
|
|
|
50
50
|
```
|
|
51
|
-
1. Read ~/.
|
|
51
|
+
1. Read ~/.ryoko/cron/jobs.json
|
|
52
52
|
2. Parse the JSON array
|
|
53
53
|
3. Append new job object with unique id, schedule, prompt, etc.
|
|
54
54
|
4. Validate the full array
|
|
55
|
-
5. Write back to ~/.
|
|
55
|
+
5. Write back to ~/.ryoko/cron/jobs.json
|
|
56
56
|
6. The file watcher automatically reschedules all jobs
|
|
57
57
|
```
|
|
58
58
|
|
|
59
59
|
## Example: Adding a New Employee
|
|
60
60
|
|
|
61
61
|
```
|
|
62
|
-
1. Create ~/.
|
|
62
|
+
1. Create ~/.ryoko/org/<department>/<name>.yaml with required fields
|
|
63
63
|
2. The file watcher detects the new file and rebuilds the employee registry
|
|
64
64
|
3. The new employee is immediately available for @mention routing
|
|
65
65
|
```
|
package/template/docs/skills.md
CHANGED
|
@@ -4,7 +4,7 @@ Skills are markdown instruction sets that engines read and follow. There is no r
|
|
|
4
4
|
|
|
5
5
|
## How Skills Work
|
|
6
6
|
|
|
7
|
-
Each skill is a directory in `~/.
|
|
7
|
+
Each skill is a directory in `~/.ryoko/skills/` containing at minimum a `SKILL.md` file. When an engine starts a session, it has access to the skills directory and can read any skill's instructions.
|
|
8
8
|
|
|
9
9
|
The `SKILL.md` file contains:
|
|
10
10
|
- **Trigger description**: When this skill should be activated
|
|
@@ -14,7 +14,7 @@ The `SKILL.md` file contains:
|
|
|
14
14
|
## Creating a Skill
|
|
15
15
|
|
|
16
16
|
```
|
|
17
|
-
~/.
|
|
17
|
+
~/.ryoko/skills/
|
|
18
18
|
my-skill/
|
|
19
19
|
SKILL.md # Required: instructions
|
|
20
20
|
data.json # Optional: supporting data
|
|
@@ -41,13 +41,16 @@ When the user says "deploy" or asks about deployment status.
|
|
|
41
41
|
|
|
42
42
|
## Pre-packaged Skills
|
|
43
43
|
|
|
44
|
-
{{portalName}} ships with
|
|
44
|
+
{{portalName}} ships with these default skills (see `~/.ryoko/skills/`):
|
|
45
45
|
|
|
46
|
-
- **
|
|
47
|
-
- **
|
|
48
|
-
- **cron**:
|
|
49
|
-
- **
|
|
50
|
-
- **
|
|
46
|
+
- **onboarding**: First-run setup — fills IDENTITY.md / SOUL.md / MEMORY.md interactively
|
|
47
|
+
- **management**: Hiring, firing, promotions, delegation, and board reviews for the org
|
|
48
|
+
- **cron-manager**: Create, edit, enable/disable, and troubleshoot cron jobs
|
|
49
|
+
- **skill-creator**: Write a SKILL.md playbook to create a new skill
|
|
50
|
+
- **find-and-install**: Discover skills via `npx skills find` and install them
|
|
51
|
+
- **self-heal**: Diagnose and repair {{portalName}}'s own configuration and runtime
|
|
52
|
+
- **migrate**: Apply pending version migrations
|
|
53
|
+
- **sync** / **new** / **status**: Slash-command playbooks (`/sync`, `/new`, `/status`)
|
|
51
54
|
|
|
52
55
|
## Key Points
|
|
53
56
|
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Migration: 2026.8.28 (MEMORY.md のプライバシーゲート付き注入)
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
MEMORY.md(長期記憶)の扱いがコア機能になった。gateway が **private web セッションと、
|
|
6
|
+
`portal.trustedSpeakers` に載る相手との DM に限り** MEMORY.md を system prompt に注入する。
|
|
7
|
+
共有チャンネル・cron・employee セッションには注入されない。
|
|
8
|
+
|
|
9
|
+
これまで MEMORY.md はコードでは一切注入されず、テンプレート CLAUDE.md の `@MEMORY.md`
|
|
10
|
+
import(Claude エンジンのみ・**話者を問わず**)だけが読み込んでいた。この import は
|
|
11
|
+
新ゲートの迂回路になるため、既存インスタンスの指示ファイルから取り除く必要がある。
|
|
12
|
+
|
|
13
|
+
## 既存インスタンスへの適用手順(このファイルを読んだ AI セッションが実行する)
|
|
14
|
+
|
|
15
|
+
1. **`~/.ryoko/CLAUDE.md` から `@MEMORY.md` の行を削除する**(`@IDENTITY.md` `@SOUL.md` は残す)。
|
|
16
|
+
ユーザーが独自に編集している場合も、`@MEMORY.md` の import 行だけをピンポイントで消す
|
|
17
|
+
2. CLAUDE.md / AGENTS.md の自己定義・記憶セクションに「MEMORY.md は毎セッション読む/読まれる」
|
|
18
|
+
という記述があれば、次の内容に沿って書き換える(ユーザーの独自ルールは保持し、該当文だけ更新):
|
|
19
|
+
- MEMORY.md は自分から Read しない。gateway が信頼相手(private web セッション、または
|
|
20
|
+
`portal.trustedSpeakers` に Slack ID を載せた相手との DM)とのセッションにだけ注入する
|
|
21
|
+
- 共有チャンネルでは誰が話していても注入されない
|
|
22
|
+
- 必要があって自分で Read した場合も、内容を当人以外に出力で出さない
|
|
23
|
+
3. **ユーザーに次の設定を推奨として伝える**(config.yaml の `portal:` 直上のコメント参照。
|
|
24
|
+
勝手に値を推測して書き込まない — Slack ID はユーザーに確認する):
|
|
25
|
+
- `portal.operatorSlackId` — オペレータ本人の Slack ID。設定すると本人確認が ID の厳密一致になる
|
|
26
|
+
- `portal.trustedSpeakers` — MEMORY を DM で注入してよい相手(オペレータ自身の ID も入れる)
|
|
27
|
+
4. 適用後、`~/.ryoko/CLAUDE.md` に `@MEMORY.md` が残っていないことを grep で確認する
|
|
28
|
+
|
|
29
|
+
## 互換性メモ
|
|
30
|
+
|
|
31
|
+
- `portal.operatorSlackId` / `portal.trustedSpeakers` 未設定でも動作は安全側
|
|
32
|
+
(MEMORY は web セッションでのみ注入。Slack では一切注入されない)
|
|
33
|
+
- 旧挙動(@MEMORY.md による無差別読み込み)に戻したい場合は import を書き戻せばよいが、
|
|
34
|
+
共有チャンネルでの個人情報露出リスクを理解した上で行うこと
|
|
@@ -11,7 +11,7 @@ This skill activates when the user wants to create, edit, delete, enable, disabl
|
|
|
11
11
|
|
|
12
12
|
## Data File
|
|
13
13
|
|
|
14
|
-
All cron jobs are stored in
|
|
14
|
+
All cron jobs are stored in `cron/jobs.json` (relative to the {{portalName}} home directory, which is always your working directory) as a JSON array of job objects. If the file does not exist, create it with an empty array `[]`.
|
|
15
15
|
|
|
16
16
|
## CronJob Schema
|
|
17
17
|
|
|
@@ -51,7 +51,7 @@ Field details:
|
|
|
51
51
|
|
|
52
52
|
### Creating a Job
|
|
53
53
|
|
|
54
|
-
1. Read the current
|
|
54
|
+
1. Read the current `cron/jobs.json` (or initialize as `[]` if missing).
|
|
55
55
|
2. Ask the user for the required fields: name, schedule, engine, model, and prompt.
|
|
56
56
|
3. Ask about the timezone. Default to `UTC` if not specified.
|
|
57
57
|
4. Ask about the employee persona to use. This is optional.
|
|
@@ -60,12 +60,12 @@ Field details:
|
|
|
60
60
|
7. Generate a UUID for the `id` field.
|
|
61
61
|
8. Set `enabled` to `true` by default.
|
|
62
62
|
9. Append the new job object to the array.
|
|
63
|
-
10. Write the updated array back to
|
|
63
|
+
10. Write the updated array back to `cron/jobs.json`.
|
|
64
64
|
11. Confirm the creation and summarize the schedule in plain English.
|
|
65
65
|
|
|
66
66
|
### Editing a Job
|
|
67
67
|
|
|
68
|
-
1. Read
|
|
68
|
+
1. Read `cron/jobs.json`.
|
|
69
69
|
2. Find the job by name or id.
|
|
70
70
|
3. Show the current values to the user.
|
|
71
71
|
4. Apply the requested changes.
|
|
@@ -74,7 +74,7 @@ Field details:
|
|
|
74
74
|
|
|
75
75
|
### Deleting a Job
|
|
76
76
|
|
|
77
|
-
1. Read
|
|
77
|
+
1. Read `cron/jobs.json`.
|
|
78
78
|
2. Find the job by name or id.
|
|
79
79
|
3. Confirm deletion with the user (show job details).
|
|
80
80
|
4. Remove the job from the array.
|
|
@@ -83,7 +83,7 @@ Field details:
|
|
|
83
83
|
|
|
84
84
|
### Enabling / Disabling a Job
|
|
85
85
|
|
|
86
|
-
1. Read
|
|
86
|
+
1. Read `cron/jobs.json`.
|
|
87
87
|
2. Find the job by name or id.
|
|
88
88
|
3. Set `enabled` to `true` (enable) or `false` (disable).
|
|
89
89
|
4. Write the updated array back.
|
|
@@ -91,7 +91,7 @@ Field details:
|
|
|
91
91
|
|
|
92
92
|
### Listing Jobs
|
|
93
93
|
|
|
94
|
-
1. Read
|
|
94
|
+
1. Read `cron/jobs.json`.
|
|
95
95
|
2. Display jobs in a readable format, grouped by enabled/disabled.
|
|
96
96
|
3. Include name, schedule (with plain-English interpretation), timezone, engine, and delivery info.
|
|
97
97
|
|