@ai.weget.jp/bot 0.1.11 → 0.1.13

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.
@@ -1 +1 @@
1
- import{createGmoCoinSkill as e}from"@ai.weget.jp/skill-gmo-coin";import{createGmoFxSkill as s}from"@ai.weget.jp/skill-gmo-fx";import{createSkillRegistry as t}from"./skills.js";const i=new Set(["active"]);export const createSkillHostState=({gmoFxConfigPath:o,gmoCoinConfigPath:a,log:n})=>{const r=t(),l=[s(o),e(a),{manifest:{name:"@ai.weget.jp/skill-browser",displayName:"Browser Skill",version:"0.1.1",description:"Browser automation skill scaffold",permissions:["browser:read"],tools:["browser.open_url","browser.extract_text","browser.screenshot"],hasUi:!0},createServices:()=>({})}];for(const e of l)r.register(e);let m=new Map;const p=e=>m.get(String(e||"").trim())||null,f=e=>{const s=p(e);return!s||Boolean(s.enabled)&&i.has(String(s.install_status||"").trim().toLowerCase())},g=()=>r.list().filter(e=>f(e.name)).map(e=>e.module.manifest);return{registry:r,getAvailableSkills:()=>r.list().map(e=>e.module.manifest),getActiveSkills:g,getManagedSkills:()=>r.list().map(e=>{const s=p(e.name);return{name:e.module.manifest.name,displayName:e.module.manifest.displayName,version:e.module.manifest.version,description:e.module.manifest.description,permissions:Array.isArray(e.module.manifest.permissions)?e.module.manifest.permissions:[],tools:Array.isArray(e.module.manifest.tools)?e.module.manifest.tools:[],hasUi:Boolean(e.module.manifest.hasUi),enabled:!s||f(e.name),installStatus:s?String(s.install_status||"active"):"builtin",configuredVersion:s?.version??null,configJson:s?.config_json&&"object"==typeof s.config_json?s.config_json:{}}}),getStateForSkill:p,isSkillEnabled:f,applySnapshots:e=>{m=new Map((Array.isArray(e)?e:[]).filter(e=>e&&"object"==typeof e&&String(e.package_name||"").trim()).map(e=>[String(e.package_name||"").trim(),e])),n?.("[skills] host state updated",{available:r.list().length,active:g().map(e=>e.name)})}}};
1
+ const e=new Set(["active"]);export const createSkillHostState=({log:a})=>{let t=new Map,s=new Map;const i=e=>t.get(String(e||"").trim())||null,r=a=>{const t=i(a);return t?Boolean(t.enabled)&&e.has(String(t.install_status||"").trim().toLowerCase()):s.has(String(a||"").trim())},n=()=>Array.from(s.values()).filter(e=>r(e.name));return{setAvailableSkills:e=>{s=new Map((Array.isArray(e)?e:[]).filter(e=>e&&"object"==typeof e&&String(e.name||"").trim()).map(e=>[String(e.name||"").trim(),e])),a?.("[skills] available skills updated",{count:s.size,skills:Array.from(s.keys())})},getAvailableSkills:()=>Array.from(s.values()),getActiveSkills:n,getManagedSkills:()=>{const e=new Set([...Array.from(s.keys()),...Array.from(t.keys())]);return Array.from(e).map(e=>{const a=s.get(e),i=t.get(e);return{name:e,displayName:a?.displayName||i?.skill_id||e,version:a?.version||i?.version||"unknown",description:a?.description,permissions:Array.isArray(a?.permissions)?[...a.permissions]:[],tools:Array.isArray(a?.tools)?[...a.tools]:[],hasUi:Boolean(a?.hasUi),enabled:r(e),installStatus:i?String(i.install_status||"active"):s.has(e)?"active":"uninstalled",configuredVersion:i?.version??a?.version??null,configJson:i?.config_json&&"object"==typeof i.config_json?i.config_json:{},installed:s.has(e)}})},getStateForSkill:i,isSkillEnabled:r,applySnapshots:e=>{t=new Map((Array.isArray(e)?e:[]).filter(e=>e&&"object"==typeof e&&String(e.package_name||"").trim()).map(e=>[String(e.package_name||"").trim(),e])),a?.("[skills] host state updated",{available:s.size,active:n().map(e=>e.name)})}}};
@@ -0,0 +1 @@
1
+ import e from"node:path";import a from"node:fs/promises";import*as t from"@ai.weget.jp/skill-browser";import*as i from"@ai.weget.jp/skill-gmo-coin";import*as n from"@ai.weget.jp/skill-gmo-fx";import*as r from"@ai.weget.jp/skill-macro-economy";const l=async e=>{await a.mkdir(e,{recursive:!0})},o=[t,i,n,r];export const createSkillRuntimeManager=({installRoot:a,botId:t,log:i,api:n,getRuntimeConfig:r,emitSkillEvent:s})=>{let m=new Map;const c=async()=>{await l(a),await l(e.join(a,"data"))},g=t=>{const i=String(t||"").trim().replace(/^@/,"").replace(/[\/\\]/g,"__");return e.join(a,"data",`${i}.json`)},p=t=>{const i=String(t||"").trim().replace(/^@/,"").replace(/[\/\\]/g,"__");return e.join(a,"data",i)},k=async e=>{const a=e.default||e.skill||null;if(!a?.manifest?.name)return null;const o=String(a.manifest.name||"").trim();await l(p(o));const m={packageName:o,packageVersion:String(a.manifest.version||""),botId:t?.(),log:i,api:n,skillDataDir:p(o),configPath:g(o),runtimeConfig:r?.()||{},emitEvent:e=>s?.(o,e)},c="function"==typeof e.createRuntime?e.createRuntime:a.createRuntime,k=c?c(m):{};return{packageName:o,packageDir:"",version:String(a.manifest.version||""),manifest:a.manifest,ui:e.hostUi||a.hostUi||void 0,module:a,runtime:k}},u=async()=>{await c();const e=new Map;for(const a of o){let t=null;try{t=await k(a)}catch(e){i?.("[skills] failed to load bundled skill",{error:e instanceof Error?e.message:String(e)})}t&&e.set(t.packageName,t)}return m=e,Array.from(m.values())};return{ensureInstallRoot:c,installSkill:async({packageName:e,version:a})=>(i?.("[skills] install skipped for bundled skill",{packageName:e,version:a||null}),u()),uninstallSkill:async({packageName:e})=>(i?.("[skills] uninstall skipped for bundled skill",{packageName:e}),u()),refreshLoadedSkills:u,getLoadedSkill:e=>m.get(String(e||"").trim())||null,getLoadedSkills:()=>Array.from(m.values())}};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai.weget.jp/bot",
3
- "version": "0.1.11",
3
+ "version": "0.1.13",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "WeGet bot host for Codex-centered skill runtime ",
@@ -28,10 +28,12 @@
28
28
  "build": "npm run build:ts"
29
29
  },
30
30
  "dependencies": {
31
- "@ai.weget.jp/skill-gmo-coin": ">=0.1.1 <1",
32
- "@ai.weget.jp/skill-gmo-core": ">=0.1.1 <1",
33
- "@ai.weget.jp/skill-gmo-fx": ">=0.1.1 <1",
34
- "@ai.weget.jp/skill-sdk": ">=0.1.1 <1",
31
+ "@ai.weget.jp/skill-browser": ">=0.1.1 <1",
32
+ "@ai.weget.jp/skill-gmo-coin": ">=0.1.3 <1",
33
+ "@ai.weget.jp/skill-gmo-fx": ">=0.1.3 <1",
34
+ "@ai.weget.jp/skill-macro-economy": ">=0.1.1 <1",
35
+ "@ai.weget.jp/skill-sdk": ">=0.1.2 <1",
36
+ "@ai.weget.jp/weget-gateway-mcp": ">=0.1.1 <1",
35
37
  "electron": "^31.7.7",
36
38
  "ws": "^8.18.3"
37
39
  },
@@ -11,6 +11,7 @@ try {
11
11
 
12
12
  const root = process.cwd();
13
13
  const srcDir = path.join(root, 'src');
14
+ const distDir = path.join(root, 'dist');
14
15
  const buildSrcDir = path.join(root, 'dist', 'src');
15
16
 
16
17
  const runTsc = () => {
@@ -86,6 +87,7 @@ const minifyBuildJs = async () => {
86
87
  };
87
88
 
88
89
  const main = async () => {
90
+ await fs.rm(distDir, { recursive: true, force: true });
89
91
  runTsc();
90
92
  await copyRendererAssets();
91
93
  await copyFileIfExists(path.join(srcDir, 'preload.cjs'), path.join(buildSrcDir, 'preload.cjs'));
@@ -1 +0,0 @@
1
- import{createGmoCoinExecutionWsService as e,createGmoGateway as t,createGmoMarketDataService as i,createTradeConfigService as r,createTradeStatusService as o,defaultGmoRuntimeConfig as s}from"@ai.weget.jp/skill-gmo-core";const n=e=>e&&"object"==typeof e?e:{},a=e=>{const t=Number(String(e??"").trim().replace(/,/g,""));return Number.isFinite(t)&&t>0?t:null},c=e=>"SELL"===String(e||"").trim().toUpperCase()?"SELL":"BUY",l=e=>{const t=n(e);return{market:"coin",symbol:String(t.symbol||"").trim().toUpperCase(),side:c(t.side),settleType:String(t.settleType||"").toUpperCase()||"OPEN",executionPrice:t.executionPrice??t.price??"",executionSize:t.executionSize??t.size??"",executionId:t.executionId??null,orderId:t.orderId??null,executionTimestamp:String(t.executionTimestamp||t.timestamp||"")}};export const createGmoCoinRuntime=({configPath:p,emitLog:m,emitTradeExecution:g,emitTradeHistory:u,getRuntimeConfig:d=s})=>{const P=r({configPath:p,emitLog:m}),x=t({cryptoApiBaseUrl:d().cryptoApiBaseUrl,fxApiBaseUrl:d().fxApiBaseUrl,assetsPath:d().assetsPath,fxAssetsPath:d().fxAssetsPath,coinMarginPath:d().coinMarginPath,positionsPath:d().positionsPath,positionSummaryPath:d().positionSummaryPath,fxOrderPath:d().fxOrderPath,coinCloseOrderPath:d().coinCloseOrderPath,fxCloseOrderPath:d().fxCloseOrderPath});x.setRuntimeConfigProvider(d),x.setCredentialsProvider(P.getCredentials),x.setLogEmitter(m);const y=i({getCoinPublicBaseUrl:()=>d().coinPublicBaseUrl,getFxPublicBaseUrl:()=>d().fxPublicBaseUrl}),C=o({gateway:x,env:{getRiskDailyLossLimitJpy:()=>P.get().riskDailyLossLimitJpy},emitLog:m}),S=e({getCoinPrivateApiBaseUrl:()=>d().cryptoApiBaseUrl,getCoinCredentials:()=>P.getCredentials("crypto"),emitLog:m,onExecutionEvent:async e=>{const t=n(e),i=(e=>{const t=n(e);return{category:"trade_history",market:"coin",kind:"CLOSE"===String(t.settleType||"").toUpperCase()?"close":"new",symbol:String(t.symbol||"").trim().toUpperCase(),side:c(t.side),size:String(t.executionSize??t.orderSize??"").trim(),price:a(t.executionPrice??t.price),price_source:null!==a(t.executionPrice??t.price)?"execution_event":"none",result:t,ts:(new Date).toISOString()}})(t);u?.(i),m("[trade] coin execution received",l(t)),g?.(l(t))}});return{tradeConfig:P,gateway:x,marketData:y,status:C,loadConfig:()=>P.load(),getConfig:()=>P.get(),saveConfig:async e=>P.save(e),startExecutionStreams:()=>S.start(),stopExecutionStreams:()=>S.stop(),restartExecutionStreams:()=>S.restart()}};
@@ -1 +0,0 @@
1
- import{createGmoFxExecutionWsService as e,createGmoGateway as t,createGmoMarketDataService as i,createTradeConfigService as r,createTradeStatusService as s,defaultGmoRuntimeConfig as o}from"@ai.weget.jp/skill-gmo-core";const a=e=>e&&"object"==typeof e?e:{},n=e=>{const t=Number(String(e??"").trim().replace(/,/g,""));return Number.isFinite(t)&&t>0?t:null},c=e=>"SELL"===String(e||"").trim().toUpperCase()?"SELL":"BUY",l=e=>{const t=a(e);return{market:"fx",symbol:String(t.symbol||"").trim().toUpperCase(),side:c(t.side),settleType:String(t.settleType||"").toUpperCase()||"OPEN",executionPrice:t.executionPrice??t.price??"",executionSize:t.executionSize??t.size??"",executionId:t.executionId??null,orderId:t.orderId??null,executionTimestamp:String(t.executionTimestamp||t.timestamp||"")}};export const createGmoFxRuntime=({configPath:m,emitLog:p,emitTradeExecution:g,emitTradeHistory:u,getRuntimeConfig:x=o})=>{const d=r({configPath:m,emitLog:p}),P=t({cryptoApiBaseUrl:x().cryptoApiBaseUrl,fxApiBaseUrl:x().fxApiBaseUrl,assetsPath:x().assetsPath,fxAssetsPath:x().fxAssetsPath,coinMarginPath:x().coinMarginPath,positionsPath:x().positionsPath,positionSummaryPath:x().positionSummaryPath,fxOrderPath:x().fxOrderPath,coinCloseOrderPath:x().coinCloseOrderPath,fxCloseOrderPath:x().fxCloseOrderPath});P.setRuntimeConfigProvider(x),P.setCredentialsProvider(d.getCredentials),P.setLogEmitter(p);const f=i({getCoinPublicBaseUrl:()=>x().coinPublicBaseUrl,getFxPublicBaseUrl:()=>x().fxPublicBaseUrl}),y=s({gateway:P,env:{getRiskDailyLossLimitJpy:()=>d.get().riskDailyLossLimitJpy},emitLog:p}),S=e({getFxPrivateApiBaseUrl:()=>x().fxApiBaseUrl,getFxCredentials:()=>d.getCredentials("fx"),emitLog:p,onExecutionEvent:async e=>{const t=a(e),i=(e=>{const t=a(e);return{category:"trade_history",market:"fx",kind:"CLOSE"===String(t.settleType||"").toUpperCase()?"close":"new",symbol:String(t.symbol||"").trim().toUpperCase(),side:c(t.side),size:String(t.executionSize??t.orderSize??"").trim(),price:n(t.executionPrice??t.price),price_source:null!==n(t.executionPrice??t.price)?"execution_event":"none",result:t,ts:(new Date).toISOString()}})(t);u?.(i),p("[trade] fx execution received",l(t)),g?.(l(t))}});return{tradeConfig:d,gateway:P,marketData:f,status:y,loadConfig:()=>d.load(),getConfig:()=>d.get(),saveConfig:async e=>d.save(e),startExecutionStreams:()=>S.start(),stopExecutionStreams:()=>S.stop(),restartExecutionStreams:()=>S.restart()}};